微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 定时器T0(工作方式1)

定时器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

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

网站地图

Top