微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 8051单片机精确延时程序

8051单片机精确延时程序

时间:11-24 来源:互联网 点击:
各种教材都喜欢用for循环再嵌套一个for循环来实现延时,下列是通过定时器来延时;

delay(t)表示延时t ms;

也可以通过定时器中断的方式来延时,但是每次延时的时间非常有限,对于11.0592MHz的晶振,每次中断延时只有约71ms.

延时函数

void delay(unsigned int t)//延时t ms

{

TMOD=0x01;//设置工作模式

TR0=1; //启动定时器0

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; //启动定时器0

ET0=0x00;//禁止定时中断

while(t!=0)//循环次数t

{

TH0=0xFC;

TL0=0x66;//设置计数初值

while(TF0!=1);//查询计数器溢出标志位

TF0=0;//溢出后清零

t--;

}

}

此外,还用excel制作了一个计算计数初值的的小工具,输入晶振和需要延时的最小单位,就自动计算出计算初值,并转换为16进制(用DEC2HEX函数)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top