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

控制/MCU

1878人已加入

描述

;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单片机

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

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分