单片机延时计算方法
用延时函数就可以实现;
首先,设置定时器工作方式,也就是TMOD,在设置TH0/1,TL0/1的初值,也就是定时时间的设置,然后设置中断允许,并开中断就可以;
参考例子如下:
#include
void main()
{
TMOD=0X01;
TH0=0X3C;
TL0=0XB0;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void timer0() interrupt 1
{
TH0=0X3F;
TL0=0XB0;
}
以C51为例,12MHZ晶振的话,1个时钟周期为1/12微秒,1个机器周期=12个时钟周期,定时器每个机器周期可延时12*1/12微秒=1微秒。如果晶振为8MHZ的话,定时器每个机器周期可延时12*1/8微秒=1.5微秒
按12Mhz来讲的话
12Mhz 系统周期 =1/12uS
二分频之后就是 时钟周期 = 1/6uS 是完成一种微机操作的周期
六分频之后就是 机器周期=1uS 是完成一种基本操作的周期 也是指令周期;
也就是说每执行一条语句最少需要1uS,就这样来算
我的百度空间有详细的很精确地延时说明
有兴趣 去看下