计数器怎么跟外部中断联系到了一起?难道把想要触发中断的外部设备脉冲信号接到计数器的引脚端口上也能引发外部中断?的确如此!常言道:孰能生巧!把计数端口当做外部中断引脚来使用属于计数器功能的延展,我们来分析它的设计原理。
在前面我们提到,计数器是对外部引脚的脉冲信号的个数做自动计数的,计数的值保存在计数寄存器里,比如我用的是T0计数器,那计数值就保存在TL0和TH0。我们还知道,计数寄存器是有容量限制的,比如我们选择8位的计数器,那么他的最大可计数的值就是255,同理,16位计数器的最大可计数的值是65535。而且计数寄存器里的初值我们可以通过编程写进去,也就是说单片机不必一定要从0开始计数。而且,在计数过程中一旦到达最大计数值,这时外部如果再来一个脉冲信号,计数器必定溢出,可以产生中断信号让CPU做响应。如果设置了CPU允许中断,那么系统就立刻执行计数器的中断服务程序,从而获得了计数中断的效果。
进一步地,我们一开始就把计数寄存器的初值设置为满值,这样一旦外部发生中断信号,计数器立刻溢出,继而触发计数中断。从表面上来开就表现为和外部中断一样的控制效果。所以,我们按照这样的思路可以把计数器端口扩展为外部中断使用,只不过使用的是另一套逻辑而已。结合这样的设计思路,我基于前面讲解外部中断的一个案例改编成使用计数器端口扩展为外部中断,请大家观看本节视频讲解并做分析和总结。
讲到这里,我突然想到一句话:“压死骆驼的最后一根稻草”!计数器扩展作为外部中断使用,恰恰就是利用了最后一根稻草来触发中断!由此,我认为我们正在学习的单片机课程只是一个工具,大家要熟悉这个工具,灵活使用这个工具,在将来的项目开发中才能做到游刃有余,得心应手。各位,加油!

