佚名通过本文主要向大家介绍了单片机定时器中断程序,单片机定时中断程序,51单片机定时中断程序,51单片机定时器中断,单片机定时器中断等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 51单片机中,正在执行定时器中断程序时,定时器是否还在计数?
描述:
T0_init() //扫描频率为100HZ,即需定时1/100=00.01s
{
TMOD=0x01;
TH0=0x3c; //装定时器初值高8位
TL0=0xb0; //装定时器初值低8位
TR0=1; //启动定时器0
ET0=1; //开定时器0中断
EA=1; //开总中断
}
t0() interrupt 1
{
delay(1000); //8位数码管显示按键值
}
如果我让定时器T0,50ms中断一次,但是我在中断函数里面加上了软件延时1000ms,当正在执行中断函数的时候,计数器还会计数吗?在计数满的话,还会申请中断吗?为什么?
解决方案1:
描述:
单片机
就例如下面的一个例子:T0_init() //扫描频率为100HZ,即需定时1/100=00.01s
{
TMOD=0x01;
TH0=0x3c; //装定时器初值高8位
TL0=0xb0; //装定时器初值低8位
TR0=1; //启动定时器0
ET0=1; //开定时器0中断
EA=1; //开总中断
}
t0() interrupt 1
{
delay(1000); //8位数码管显示按键值
}
如果我让定时器T0,50ms中断一次,但是我在中断函数里面加上了软件延时1000ms,当正在执行中断函数的时候,计数器还会计数吗?在计数满的话,还会申请中断吗?为什么?
解决方案1:
产生定时器中断时,定时器已经溢出,结束了计数。当你在定时器的中断服务例程中延时的时候,定时器是等待状态。
解决方案2: 执行中断函数时定时器不会计数,这时候只会处理中断服务程序,主函数的世界相当于时间静止了,等中断函数处理完后会回到主函数这时由于你之前已经把定时器打开,并没有关闭,因此定时器会继续计数,但在你程序中使用的是 定时器0中断,方式是“16位定时器”,如果你不在中断服务程序中给定时器重装初值的话,定时器此时会从零开始计数,如要保证每次都是50毫秒,你应在中断程序中给定时器重装初值
{TH0=(65535-45872)/256;
TL0=(65535-45872)%256;
delay(1000);}