AVR单片机延时程序

来源:本站
导读:目前正在解读《AVR单片机延时程序》的相关信息,《AVR单片机延时程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《AVR单片机延时程序》的详细说明。
简介:AVR单片机延时程序

AVR单片机延时程序:

1.毫秒级的延时

延时1ms;

void delay_1ms(void)

{

unsigned int i;

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

;

}

在上式中,xtal为晶振频率,单位为MHz. AVR 延时程序

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

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

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

void delay(unsigned int n)

{

unsigned int i;

for(i=0;i

delay_1ms();

}

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

2.微秒延时

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

//最大延时时间131.072ms

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

{

while(--i);

}

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

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");

语句实现延时。

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

void delay_us(unsigned int n)

{

unsigned int i;

for(i=0;i

delay_1us();

}

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

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

提醒:《AVR单片机延时程序》最后刷新时间 2024-03-14 00:57:06,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《AVR单片机延时程序》该内容的真实性请自行鉴别。