关于时钟、中断的理解

来自百度网友的解释,通俗易懂:

 对于单片机的硬件,你熟悉吗?时钟和CPU是独立的,时钟中断程序时这样的:在CPU执行指令时,计数器(计时器)同时在计时,当计时器溢出时,就向CPU申请中断,如果允许响应中断,CPU就转到中断服务程序执行相关的程序。
单片机的时钟中断相应要满足两个条件:第一,允许中断源申请中断。第二,允许cpu响应中断。二者缺一不可。 EA=1;//开总中断
ET0=1;//开定时器0中断
ET1=1;
TR0=1;//启动定时器0
TR1=1;
你这些语句,就允许了中断响应,所以,当你的程序跑起来时,时钟时间到了,CPU就转入中断服务程序了,执行完了再返回主程序。你可以在编译器中用DEBUG查看执行过程的。如果你用汇编语言写,就更清楚了,可以看清每一步的操作的。
硬件部分是这样:在每个机器周期的S5P2,单片机会来采样,判断是否有中断申请。所以一旦时钟计数溢出,就会转入中断服务程序
这个打个比方吧,你在上课,相当于主程序,这时时间到了,打铃下课了,你就不读书了,跑出去玩了。这其实是一样的道理。你在上课,这和打铃不相关,并不是你让打铃的,学校的时钟在不停地走,到了时间自动打铃,这不受你上课的影响的。但是如果你把耳朵堵上了(不允许响应中断),就是把铃打碎了你也不知道下课了,所以你就一直读书。不知你明白没?

猜你喜欢

转载自blog.csdn.net/lsg_down/article/details/81074672