单片机如何管理多个外部中断基于中断控制器82C59A的多个中断源管理,c51程序及proteus电路

本文介绍了如何使用8259中断控制器管理单片机的多个中断源,通过Proteus绘制电路图,C51编程实现按键控制P3.3~P3.5状态反转,并扩展中断源,按键按下数码管计数。重点讨论了8259与单片机的连接、中断信号的处理以及中断结束指令的重要性。
摘要由CSDN通过智能技术生成

##中断控制器8259
在课本和其他大佬文章中已经将8259工作方式分析很清晰,本文章分享应用效果展示。
1、在proteus中绘制单片机和可编程中断控制器8259的连接电路图
2、编写C51程序,实现通过三个按键,来控制单片机P3.3~P3.5的状态反转。
3、实现增加按键,作为8259的中断源输入IR7,每按下一次按键,数码管计数器的值加1,直到显示数字9,重新回0计数。
分析:
只需要四个中断源,那么只需一片8259即可,再采取间隔乘以4方式将中断号传输给单片机,单片机通过读取高5位数据和低3位数据乘以4在构成一个16位数据,在单片机中断程序中读取中断号,并编写对应的程序实现要求。期间注意按键残剩的信号为下降沿,而8259以及单片机中断源的识别不同,需要加入反相器管理,同时要控制8259的intr非信号和rd非信号不同同时有效,避免造成错误。
按键1按下,实现第一个灯改变
按键1按下,实现第一个灯改变
实现第二个灯改变
实现第二个灯改变
实现第三个灯改变
实现第3个灯改变
数码管值改变
按键按下数码管值改变
若没有写中断结束指令,那么低优先级中断将不能被响应,相当于中断阻塞,不能结束中断。
总线连接需要标号识别。
单片机通过总线方式和8259接口。P0口数据总线和8259的数据总线连接,P0口经过74LS373地址锁存器锁存低8位地址,其中低位地址线A0与8259的A0连接,表示用最低位地址区分不同的命令字端口。单片机的读控制/RD和写控制/WR分别与8259的/RD和/WR信号相连。8259的片选信号/CS直接接地,表示不论任何地址都可以选中8259。只使用一片8259,所以SP/EN接高电平表示主片。由于8259的中断触发逻辑是上升沿,所以按键需要接反相后再接入8259。另外,单片机外部中断是下降沿触发,而8259的中断请求INT信号是上升沿有效,所以INT需要加反相再接入单片机的外部中断引脚。8259的中断响应/INTA信号由单片机的/RD信号来产生,但前提条件是INT信号为高电平。另外8259的/INTA信号有效时,其/RD信号不能有效,即/INTA和/RD信号不能同时有效,否则8259的中断响应周期不能正确执行。

#include<reg52.h>	  //51单片机库函数
#include<absacc.h> 	  //宏定义库函数
#define uint unsigned int
//-----引脚定义-----------------------
sbit LED1=P3^3;		  
sbit LED2=P3^4;
sbit LED3=P3^
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值