定时器T0(工作方式1)
时间:10-02
整理:3721RD
点击:
在定时器T0的数据寄存器TH0,和TL0分别为0xff时,则T0溢出,进入中断服务程序。请问在中断服务程序
执行的过程中,计数器还在继续计数,还是已经停止计数?
执行的过程中,计数器还在继续计数,还是已经停止计数?
是的 进入中断是在计数的!
0xffH再加1时溢出申请中断
0xff时,再来一个脉冲的话就溢出了
进入中断函数时应该还是会计数的
恩,应该是还在计数。如果不计数则会有如下情况发生:
用单片机的定时器和中断功能制作一个秒表,则时间越长,误差越大,不符合实际!
void timer0() interrupt 1
{
static int i=0;
static int n=0;
TH0 = 0x4c;
TL0 = 0x00;
i++;
if(i==20)
{
n++; //n为时间,单位为s
n = n%61; //最多计数1s
lower = n%10; //取时间的低位
high = n/10; //取时间的高位
i=0;
}
}
上面是我写的中断服务程序,在数据寄存器溢出并响应中断之后到单片机执行"TH0 = 0x4c; TL0 = 0x00;"这两句之前,这段时间内计数器还在计数吗?如果是,那利用单片机做定时器不就不准确了吗?
void times() interrupt 1