单片机定时器工作原理(细节问题)

时间:2022-06-08 00:09:41
 各位前辈,小弟刚接触单片机,刚刚学到定时器中断,但对其工作原理搞不明白,上网也查看了很多的资料,但说的都不大清楚。我不明白含有定时器中断程序的执行过程,当定时器启动时,开始定时,当定时溢出时向cpu申请中断,进入中断程序执行,执行完后返回。但是当定时器定时的过程中还未进入中断程序,那么主程序是否还在继续执行呢?如果主程序还在继续执行的话,它会执行到哪里,岂不乱套了。
 还有如果我启动定时器0(setb tr0)而没有打开定时器0的中断(setb et0)定时器会工作吗,怎么工作?
上面只是我的想法,我不明白,望大虾指点。

6 个解决方案

#1


主代码运行的同时,定时器也在同时工作,两者并行。

#2


建议你做一个单步运行的代码,

开启中断后,主函数运行

here:
 nop
 jmp here
看看结果就知道了

#3


1.同时进行,正如你说的那样,的确不知道程序执行到哪儿了。所以中断程序的一个重要功能就是必须保证中断返回后,主程序能从被中断的地方继续往下执行,就好像主程序不知道中断发生了似的。
2.定时器会工作,但由于没有中断产生,所以不会对程序产生影响。就好像它没工作似的。

#4


该回复于2010-11-13 09:55:14被版主删除

#5


打个比方,教师在教室讲课相当于主程序,校长有事找教师相当于中断请求,教师回答校长的问题相当于执行中断服务程序,教师回答完问题继续讲课相当于中断返回。什么时候请求中断由定时器初值决定。主程序执行到哪是不确定的。

#6


谢谢大家,我明白了

#1


主代码运行的同时,定时器也在同时工作,两者并行。

#2


建议你做一个单步运行的代码,

开启中断后,主函数运行

here:
 nop
 jmp here
看看结果就知道了

#3


1.同时进行,正如你说的那样,的确不知道程序执行到哪儿了。所以中断程序的一个重要功能就是必须保证中断返回后,主程序能从被中断的地方继续往下执行,就好像主程序不知道中断发生了似的。
2.定时器会工作,但由于没有中断产生,所以不会对程序产生影响。就好像它没工作似的。

#4


该回复于2010-11-13 09:55:14被版主删除

#5


打个比方,教师在教室讲课相当于主程序,校长有事找教师相当于中断请求,教师回答校长的问题相当于执行中断服务程序,教师回答完问题继续讲课相当于中断返回。什么时候请求中断由定时器初值决定。主程序执行到哪是不确定的。

#6


谢谢大家,我明白了