AVR 延时程序

发布者:Haifeeng最新更新时间:2016-09-29 来源: eefocus关键字:AVR  延时程序 手机看文章 扫描二维码
随时随地手机看文章
1.毫秒级的延时

延时1ms;

void delay_1ms(void)

{

  unsigned int i;

  for(i=1;i<(unsigned int)(xtal*143-2);i++)

 ;

}
在上式中,xtal为晶振频率,单位为MHz.

    当晶振频率为8M时,延时函数软件仿真的结果为1000.25μs.当晶振频率为4M时,延时函数软件仿真结果为999.5μs.

    如果需要准确的1ms延时时间,则本计算公式只供参考,应通过软件仿真后,再确定循环的次数及循环初值,并且循环中还必须关闭全局中断,防止中断影响延时函数的延时时间。

    下面的函数可以获得1ms的整数倍的延时时间:

void delay(unsigned int n)

{

  unsigned int i;

  for(i=0;i

  delay_1ms();

}

     如果需要准确的延时时间,则本计算公式只供参考,应通过软件仿真后,再确定循环的次数及循环初值.

2.微秒延时

晶振4M,编辑器ICCAVR,芯片mega16

//最大延时时间131.072ms

void delay(unsigned int i)        //延时时间T=2*(i+1)us其中1=

{

    while(--i);

}

晶振频率为8MHz时1μs延时函数:

void delay_1us(void)

{

  asm("nop");

}

当然也可以使用宏定义来实现1μs延时:

#define delay_1us(); asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop")

如果小于1μs的延时,只有使用宏定义实现,当然,也可以直接插入在线汇编

asm("nop");

语句实现延时。

在程序中需要微秒级的延时时,可以用以下函数实现。

void delay_us(unsigned int n)

{

  unsigned int i;

  for(i=0;i

  delay_1us();

}

    说明:如果需要准确的延时时间,则还必须关中断,并通过软件仿真后,再确定循环的次数及循环初值.

    强调:在实际应用中一般不直接使用软件进行长时间的延时,因为MCU一直停留延时函数中(称为阻断),不能再干其它的事睛(除了中断外),只有非常简单的应用或者简单的演示时才能使用延时函数实现长时间延时。实际应用中,对长时间(较简单任务一般指几十毫秒以上,对于复杂的应用,一般指几毫秒以上)的延时,应采用非阻断式的延时方式,或者使用定时器中断来完成延时。

关键字:AVR  延时程序 引用地址:AVR 延时程序

上一篇:ATmega32外部中断嵌套
下一篇:ICC AVR 过渡到 AVR STUDIO

推荐阅读最新更新时间:2024-03-16 15:12

AVR Bootloader应用介绍
Bootloader是AVR单片机上最有特色的功能之一。下面就在ATmega328P Xplained mini上开始Bootloader的测试了,当然是AVR通用Bootloader了。 因为AS4中使用avrub已经很方便了,所以就不重复了,这里只介绍AS6中使用avrub的方法。先在AS6中创建新项目,然后将avrub中需要的三个文件复制到项目文件夹下,并删除原来的主程序文 使用过avrub的人都知道,使用avrub主要就是要做好参数配置工作,基本不用修改程序的。先设置一下bootloader的地址,方法和AS4中一样,在项目属性的Memeory Setting中,在Flash segment下添加一行: .tex
[单片机]
<font color='red'>AVR</font> Bootloader应用介绍
AVR单片机搞错熔丝位导致芯片死锁的恢复办法
当你改动了AVR的熔丝位配置,重新加电后,想再用ISP下载,提示:“进入编程模式失败”等,极有可能是你搞错了熔丝位,导致芯片不知道使用何种主频而无法正常工作(仅限于内部RC振荡的情况)。 解决方法为: 1。寄回给芯片服务商,让他们帮忙将芯片恢复 这是最省事,但是最费时间,最无可奈何的方法。 2。使用编程器将芯片恢复到出厂状态 这个方法,需要你有编程器。编程器的具体制作资料,可参考本网站技术论坛红日的帖子:用89S51制作简易并行编程器ATmega16(救活ATmega16) 。 补充:2004-10-27 本网站会员彩虹数码提供了在炜煌系列编程器改熔丝位恢复芯片的办法。详情请到本文最后的后记与补充。 3。通过外加有源
[单片机]
<font color='red'>AVR</font>单片机搞错熔丝位导致芯片死锁的恢复办法
Atmel基于ARM和AVR微控制器助力Secret Labs智能手表
爱特梅尔公司(Atmel® Corporation)宣布Secret Labs最近发布的 “AGENT” 智能手表使用了爱特梅尔的SAM4S 和 tinyAVR®微控制器。 “AGENT” 智能手表结合使用SAM4S和tinyAVR 微控制器,为用户提供更长的电池寿命,其功耗比竞争解决方案减少一半以上。通过使用爱特梅尔tinyAVR微控制器中的专利picoPower® 技术,并且结合SAM4S微控制器的低功率RAM保持功能,实现了极低的功耗。tinyAVR MCU处理维护任务和事件,而SAM4S 基于ARM® MCU则处理操作系统和手表应用。这种组合优化了功率使用,并且使得较大的SAM4S微控制器尽可能长时间保持在睡眠模式。而
[单片机]
基于AVR的铅酸蓄电池管理系统设计
1. 引言 在工业过程或实验室里,经常需要对多种信号进行同时采集及监测,以便实现性能分析、过程控制、系统恢复等目的。目前,常用的数据采集装置,多采用单片机实现,软件多采用单任务顺序机制,这使得系统不仅处理能力有限,而且存在稳定性差的问题。以嵌入式计算机为核心的嵌入式系统由于具有体积小、性能好、功耗低、可靠性高以及面向行业应用的突出特征,成为继 I T网络技术之后,又一个新的技术发展方向 。 本文以嵌入式 S3C2410为核心芯片,设计和实现了一种高速、高精度且具有一定处理能力的数据采集处理系统,并将其应用于工业过程水位和温度的实时监测。 2. 系统总体设计 本设计采用以 ARM9为核心的 S3C2410作为数据采集
[单片机]
建立一个属于自己的AVR的RTOS(第七篇:占先式内核)
第七篇:占先式内核(只带延时服务) 当大家理解时间片轮番调度法的任务调度方式后,占先式的内核的原理,已经伸手可及了。 先想想,占先式内核是在什么地方实现任务调度的呢?对了,它在可以在任务中进行调度,这个在协作式的内核中已经做到了;同时,它也可以在中断结束后进行调度,这个问题,已经在时间片轮番调度法中已经做到了。 由于中断是可以嵌套的,只有当各层嵌套中要求调度,并且中断嵌套返回到最初进入的中断的那一层时,才能进行任务调度。 #include avr/io.h #include avr/Interrupt.h #include avr/signal.h unsignedcharStack ; registerun
[单片机]
AVR学习心得(二)
AVR mega128 I/O控制 下面是我用C语言写的第一个实验:花样流水灯 功能说明: 1. 有四种显示方式,没键按下时为默认的第1种方式:循环点亮 2.当按下K1时,显示第1种方式:循环点亮;当按下K2时,显示第2种方式:逐个点亮;当按下K3时,显示第3种方式:间隔点亮;当按下K4时,显示第4种方式:循环熄灭。 实验中容易出现的问题: 1. 在定义数组时,要区别与51的定义方式: 51:unsigned char code arr = { }; AVR:#program code unsigned char arr = { }; 或 const unsigned char arr = { };
[单片机]
Proteus环境下Avr I/O电平反复变化(看门狗复位)
学习了一个月的avr单片机了,从点亮一个二极管到通信部分,以前都是直接上硬件,下载验证,昨天开始下载了Proteus使用仿真,下载地址是 http://www.verycd.com/topics/2733851/ 发现点亮一个简单的二极管都不成功,cvavr下的程序如下: #include mega16.h void main() { DDRB=0XFF; PORTB=0X00; while(1); } 然而就是这么简单的一个程序得到的仿真结果是: 一会高一会低,非常郁闷,学了这么长时间,居然让一个灯常亮都不行了 于是群里问 可惜没人回答 终于,搜索中找到了以下是原文: 这个问题
[单片机]
avr定时器做的正弦波
实物照片如下 RC电路的电阻为1K与10K时的波形分别如下 仿真图片如下: 程序如下: #include iom16v.h #include macros.h #define uchar unsigned char uchar auc_SinParam = { 128,134,140,147,153,159,165,171,177,182,188,193,198,204,208,213, 218,222,226,230,233,237,240,242,245,247,249,251,252,253,254,254, 254,254,253,252,251,250,248,246,24
[单片机]
<font color='red'>avr</font>定时器做的正弦波
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved