求教下 定时中断服务程序的定时器重新开始计时.是赋值完之后就开始重新计时? 还是退

2020-02-04 09:35发布

void Timer0Interrupt(void) interrupt 1
{
    TH0 =0x63;
    TL0 =0x18;
        timer++;
    //add your code here!
}
有没有必要 先关闭定时器 重新赋值 然后开启定时器
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
wuzhisheng2007
1楼-- · 2020-02-05 08:45
回复【7楼】wuzhisheng2007
-----------------------------------------------------------------------

是的 验证也是个方法 不过我还是选择先问问再自己验证 毕竟听听大家的观点是很好的
LZW520
2楼-- · 2020-02-05 14:44
EA=1;
ET0=1;
TR0=1;此时定时器就开始计时
emsl
3楼-- · 2020-02-05 18:28
应该是赋完值就计时的

楼主可以做个试验,让定时周期是2毫秒,然后中断服务程序的执行时间大于2毫秒,比如5毫秒

楼主会看到程序一直卡在中断服务里。我当年刚学单片机时就犯过这个错误。

这说明程序不用返回就开始计时了
wuzhisheng2007
4楼-- · 2020-02-05 20:46
 精彩回答 2  元偷偷看……
diandaomx
5楼-- · 2020-02-06 00:26
无所谓的。。。
kiracl
6楼-- · 2020-02-06 05:40
回复【7楼】wuzhisheng2007
回复【5楼】lwen512  
-----------------------------------------------------------------------
嗯 我问题问的不好 有点离题了 我重新发下
void timer0interrupt(void) interrupt 1  
{  
    th0 =0x63;  
    tl0 =0x18;   /*********//这里赋值好了 就开始计时吗?????
     timer++;  
}                /*********//还是退出了才开始计时??????

-----------------------------------------------------------------------

只要你没关定时器,他就一直在计时,直到溢出,溢出后再从TH0和TL0从装载计数初值开始新一轮计数。精度不高的场合不需要计较这些

一周热门 更多>