51单片机2个外部中断的应用

;51单片机的P1口上接有8只LED。
;在外部中断0输入引脚P3.2接有一只按钮开关K1。
;在外部中断1输入引脚P3.3接有一只按钮开关K2。
;要求K1和K2都未按下时,P1口的8只LED呈流水灯显示,
;仅K1(P3.2)按下时,左右4只LED交替闪烁。
;仅按下K2(P3.3)时,P1口的8只LED全部闪亮。
;两个外中断的优先级相同。
;=============================================
;用 PROTSUE 仿真界面如下:

51单片机2个外部中断的应用 - 非著名博主 - 电子信息角落
;图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/50c618c5f08ba9f48026ac6a.html#
;下列程序,可以满足要求.

      ORG  0000H
      SJMP MAIN
      ORG  0003H
      SJMP X0_INT
      ORG  0013H
      SJMP X1_INT
;------------------------------------
MAIN:
      MOV  SP, #60H
      MOV  IE, #85H
      MOV  A,  #254
M_LOOP:
      MOV  P1, A
      RL   A
      CALL DL_500MS
      SJMP M_LOOP
;------------------------------------
X0_INT:
      PUSH PSW
      SETB RS1
      MOV  P1, #0FH
SH_0:
      XRL  P1, #255
      CALL DL_500MS
      JNB  P3.2, SH_0
      POP  PSW
      RETI
;------------------------------------
X1_INT:
      PUSH PSW
      SETB RS0
      MOV  P1, #0
SH_1:
      XRL  P1, #255
      CALL DL_500MS
      JNB  P3.3, SH_1
      POP  PSW
      RETI
;-------------------------------延时子程序
DL_500MS:
      MOV  R5, #9      ;1T
DL1:  MOV  R6, #128    ;1T
DL2:  MOV  R7, #215    ;1T
      NOP              ;1T
DL3:  DJNZ R7, DL3     ;2T   2 * 215 = 430 T
      DJNZ R6, DL2     ;2T   [1+1+430+2] * 128 = 55552 T
      DJNZ R5, DL1     ;2T   [1+55552+2] * 9 = 499995 T
      RET              ;2T   1 + 499995 + 2 = 499998 T
;------------------------------------
END

;原题网址:http://zhidao.baidu.com/question/277006880.html#here

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值