定时器中断是通过定时器计数器不断地计数,当计数器的值达到预设值时触发中断。因此,定时器的预设值越小,中断触发的频率越高,执行时间也越短。而时钟频率越高,定时器计数的速度就越快,中断触发的频率也就越高,执行时间也就越短。
另外,中断程序的执行时间还受到中断响应时间的影响。当中断触发后,单片机需要一定的时间来响应中断,并跳转到中断服务程序执行。如果中断响应时间较长,那么中断程序的执行时间也会相应地变长。
因此,要确定单片机定时器中断程序的执行时间,需要考虑定时器的预设值、时钟频率和中断响应时间等因素。
再次重新启动。
用C语言实现的,先要定义好定时器的初值,不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期,机器周期=12/n(n指晶振频率),假设你要定时的时间为M,那么定时的初值为:M/机器周期=初值;
TH0=(65536-初值)%256;
TL0=(65536-初值)/256;
将(65536-初值)所得的值化成16进制,其高位就是TH0的值,低位为TL0的值,例如用12M晶振做1ms定时计算如下:
机器周期=12/12*10^6=1us(微秒)
定时初值=(1*10^-3)/(1*10^-6)=1000
所以:TH0=(65536-1000)%256;
TL0=(65536-1000)/256;
将65536-1000=64536化为16进制为:0xFC18,TH0=0xFC,TL0=0X18
定好初值后要延迟一秒就定一个延时参数,这里使用1000就行了(定时为1ms)中断程序为:timer0() interrupt 1 // 1ms延时(12.0MHz)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)