51单片机应用——中断扩展

利用MCS51外部中断0和P1口扩展成支持4个外设的中断系统,设计电路并编写程序。

分析:设外设代号为4,3,2,1,把四个外设的中断用与门连接起来,输出接单片机的INT0,再从四个外设的中断引出线路分别接P1.0、P1.1、P1.2、P1.3,设4个外设的中断服务程序为IR4~IR1。当有外设请求中断时,都会触发外部事件INT0中断,然后通过程序按照优先度依次查询P1.0~P1.3的状态,确定是哪个外设触发的中断,从而执行相应的中断处理程序。

ORG 0000H;上电跳转
LJMP MAIN

ORG 0003H;中断入口
LJMP P_INT0

ORG 0030H;主程序存放地址
MAIN:
MOV SP,#60H;开堆栈
CLR IT0;设置外部事件0中断为低电平触发
SETB EA;开CPU中断
SETB PX0;设INT0为高优先级(可不用)

LOOP:SJMP LOOP;模拟一段很长的程序

P_INT0:
CLR EA;关中断
PUSH ACC;保护现场
PUSH PSW
SETB EA;开中断
JNB P1.0,IR4;开始查询
JNB P1.1,IR3
JNB P1.2,IR2
JNB P1.3,IR1
RETURN:CLR EA;返回程序
POP PSW
POP ACC
SETB EA
RETI;中断返回

IR4:...
    LJMP RETURN
IR3:...
    LJMP RETURN
IR2:...
    LJMP RETURN
IR1:...
    LJMP RETURN

总结: 本程序综合了中断和查询,实现了利用外部中断0和P1口扩展成支持四个外设的终端系统,理论上可扩展更多个。通过与门综合起所有的外设请求,通过P口查询具体是谁触发的,进而跳转到相应的中断处理程序。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值