微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机外部中断应用

51单片机外部中断应用

时间:10-02 整理:3721RD 点击:

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 仿真界面如下:


下列程序,可以满足要求.
      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

呵呵 ,谢谢,支持下。

好的,很简洁的内容,心平气和的看完,就更好的理解中断了。

这是汇编语言吧。只会C语言,不会汇编语言哎,,没法看懂

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top