3.12 INT0及INT1中断计数 |
|
8501单片机的两种外部中断可以同时启用,本例同时使能INT0和INT1中断,当连接P3.2和P3.3的两个计数按键触发中断时,对应的中断例程会分别进行计数,两组计数值将分别显示在左右各三位数码管上,另外两个按键则分别用于两组计数的清零操作,对它们的判断仍使用查询法实现。INT0与INT1中断计数电路如图3-13所示。
图3-13 INT0与INT1中断计数电路
为同时允许INT0和INT1中断,主程序设置IE = 0x85(即10000101),两个中断触发方式均要设为下降沿触发,故IT0,IT1均置为1。
两个中断例程分别对相应的计数变量Count_A与Count_B累加,要注意外部中断0和外部中断1的中断号为0,2(不要误写成0和1),由于主程序while内有对显示计数函数Show_Counts的循环调用,因此中断例程不需要处理计数值的显示,只需要累加计数。
显示计数函数Show_Counts首先完成两个计数值的数位分解,计数器Count_A分解后放入显示缓冲数组disp_buff的高3位,Count_B分解后放入disp_buff的低3位,共计6个数位分别刷新显示在6位数码管上。
① 源程序中两组计数值的分解均使用整除及取余运算符实现,完成调试后重新改用循环递减的方法实现数位分解。
② 改用位码表实现6位集成式数码管的扫描显示。