8051单片机精确延时程序
delay(t)表示延时t ms;
也可以通过定时器中断的方式来延时,但是每次延时的时间非常有限,对于11.0592MHz的晶振,每次中断延时只有约71ms.
延时函数
void delay(unsigned int t)//延时t ms
{
TMOD=0x01;//设置工作模式
TR0=1;
ET0=0x00;//禁止定时中断
while(t!=0)//循环次数t
{
TH0=0xFC;
TL0=0x66;//设置计数初值
while(TF0!=1);//查询计数器溢出标志位
TF0=0;//溢出后清零
t--;
}
}
此外,还用excel制作了一个计算计数初值的的小工具,输入晶振和需要延时的最小单位,就自动计算出计算初值,并转换为16进制(用DEC2HEX函数)
各种教材都喜欢用for循环再嵌套一个for循环来实现延时,下列是通过定时器来延时;
delay(t)表示延时t ms;
也可以通过定时器中断的方式来延时,但是每次延时的时间非常有限,对于11.0592MHz的晶振,每次中断延时只有约71ms.
延时函数
void delay(unsigned int t)//延时t ms
{
TMOD=0x01;//设置工作模式
TR0=1;
ET0=0x00;//禁止定时中断
while(t!=0)//循环次数t
{
TH0=0xFC;
TL0=0x66;//设置计数初值
while(TF0!=1);//查询计数器溢出标志位
TF0=0;//溢出后清零
t--;
}
}
此外,还用excel制作了一个计算计数初值的的小工具,输入晶振和需要延时的最小单位,就自动计算出计算初值,并转换为16进制(用DEC2HEX函数)
8051单片机精确延 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)