浅谈51单片机2个外部中断的应用案例

浅谈51单片机2个外部中断的应用案例,第1张

;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个外部中断的应用案例,浅谈51单片机2个外部中断的应用案例,第2张

;下列程序,可以满足要求。

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://outofmemory.cn/dianzi/2640705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-12
下一篇 2022-08-12

发表评论

登录后才能评论

评论列表(0条)

保存