标题: 关于单片定时器中断的工作有点不理解的地方 [打印本页]

作者: GeorgeTam    时间: 2020-4-19 12:50
标题: 关于单片定时器中断的工作有点不理解的地方
void T0_time() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        num++;
        if(num=10)
        num=0;
}
上面是我的定时器中断程序,我是想要延时0.5s

我想问下
在主程序TR0=1之后,定时器开始运作,到时间了之后响应中断进入中断程序,那cpu到底是怎样运作的呢
1、   cpu是重装初值,然后一直num+1,一直等待定时器计数完成后再跳出中断返回执行主程序。还是
2、   cpu重装初值,num+1,就直接跳出中断程序,返回执行主程序,知道下一次的中断来临,再去响应进入中断程序。

希望大佬可以教教小白


作者: 我未曾来过    时间: 2020-4-19 17:34
第二个没错。中断服务从上到下依次执行完了就跳到主程序记录的地方。直到你下一次开启中断
作者: wulin    时间: 2020-4-19 17:36
在主程序TR0=1之后,定时器开始运作,CPU与其各干各的事,50ms时间到,定时器向CPU打个招呼(中断请求),CPU做个标记,放下手上的事,执行下面中断任务:
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        num++;
        if(num=10)
                num=0;

CPU完成中断任务后回到标记处接着干原来的事。如此反复持续到掉电或TR0=0。

作者: csmyldl    时间: 2020-4-19 21:03
第2条基本正确,但跳出中断是该中断程序执行完而又未响应新的中断




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1