定时中断,搞不懂。初学者。

2020-02-04 09:10发布

[img][/img][img][/img]其实原理是知道的。但是在程序里面的运行流程,过程是怎样的有点含糊。你们看看这个图片里面的程序我看的懂。意思也理解一点。也知道那个原理意思;就是说在做主程序时突然计数器溢出就执行中断函数,中断函数做完后再返回刚才主程序断点的地方又开始做、我虽然知道这些,但是还是迷糊的很、、、迷迷糊糊的。。执行完中断函数后是否返回到主程序我好想听说不再执行主程序其他的,就是从断点开始运行。我是想问TMOD EA ET0 TR0 这些是否都要运行一边啊?我的意思是想问问中断函数做完后是否还要运行一遍TMOD EA ET0 TR0 这些东西。
我希望个位老师们为我细细解说一下。我就要知道流程过程。。好想知道。、、详细详细,。,。。麻烦把程序运行过程说三次以上、、、不然我还是不明白的。麻烦啦。。好急好急啊、、、一直被困扰着 虽然很多网友都为我解释啦。但还是有点生。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
davidd
2020-02-04 22:22
程序的注释已经很清楚了。不知楼主是怎么学习的。要多做实验,再不济就在keil仿真运行试试。
主程序while(1)前面的语句只执行一遍,负责定时器的初始化及打开中断,这个只要执行一次就够了。
主程序运行到while(1)进入死循环,等待定时器的中断。50ms定时到,定时器发出中断请求,CPU收到该请求,就会中断当前的while(1),并将断点地址入栈,然后转到对应的中断入口,再跳到中断服务程序。
由于是C语言编程,有关的断点地址入栈、跳转到中断服务程序,从程序里你是看不到的。
目前你知道定时器中断请求发生,CPU响应并停止当前的while(1), 跳到T0_time(), 就行了。在中断服务程序结束后CPU会返回到while(1),继续那个断点运行(断点地址是从栈里弹出的),等待下一次的定时器中断。

一周热门 更多>