STC15系列单片机最多有4个外部中断,有时还是觉得不够用, 如我们用它做自动机的限位保护时就需要多个中断.例如点胶机三轴限位就要6个中断.加上点胶阀操控,上料控制共十几个也不算多。外部中断扩展大致有以下几种方法:
1. 使用专用芯片,如8259A。
2. 将内部定时/计数器做计数器使用,设置使其当计数值为1时即触发中断,就可当外部中断用.
3. 用2的方法可将3路CCP/PCA当成外部中断使用。
4. 外部中断端口二极管并接输入再加软件查询定位输入源法。由于这种方法占用资源比较少,本人比较喜欢使用,下面用一个实例来简单介绍一下。
原理图如下:
4 个I/O口外加一片CD4051与8只1开关二极管将INT0由一个扩展为八个。
软件实现:首选使能中断及INT0中断,将INT0设置成下降沿触发中断,在中断函数中写出扫描触发中断源的代码,对不同的中断源,写出相应的响应代码。注意:方法4的实时性相对较差,因为输入源扫描,需要一些时间,要求高时,因谨慎选用。