ORG 0000H
SJMP START
ORG 0003H
LJMP WARN
ORG 0030H
START:
SETB IT0
SETB EX0
SETB EA
MOV P1,#0EFH
MOV P3,#0FFH
MAIN:
JNB P3.3,RING
JNB P3.4,WK0
SJMP $
WK0 : MOV P1,#01111110B
ACALL SWITCH2
ACALL SWITCH1
ACALL DELAY
WK1 : MOV P1,#01111101B
ACALL SWITCH2
ACALL SWITCH1
ACALL DELAY
WK2 : MOV P1,#01111011B
ACALL SWITCH2
ACALL SWITCH1
ACALL DELAY
WK3 : MOV P1,#01110111B
ACALL SWITCH2
ACALL SWITCH1
ACALL DELAY
WK4: MOV P1,#01101111B
ACALL SWITCH2
ACALL SWITCH1
ACALL DELAY
WK5: MOV P1,#01011111B
ACALL SWITCH2
ACALL SWITCH1
ACALL DELAY
WK6: MOV P1,#00111111B
ACALL SWITCH2
ACALL SWITCH1
ACALL DELAY
AJMP WK0
SWITCH2:JNB P3.3,RING
RET
SWITCH1:JB P3.4,$
RET
DELAY : MOV R5,#20
DLY0: MOV R7,#100
DLY1: MOV R6,#98
DLY2: DJNZ R6,DLY2
DJNZ R7,DLY1
DJNZ R5,DLY0
RET
RING: SETB P1.7
ACALL DELAY
CPL P1.7
JNB P3.3,RING
RET
WARN:PUSH PSW
PUSH ACC
ACALL RING
POP ACC
POP PSW
RETI
END
DELAY : MOV R5,#20
DLY0: MOV R7,#100
DLY1: MOV R6,#98
DLY2: DJNZ R6,DLY2
DJNZ R7,DLY1
DJNZ R5,DLY0
RET
RING: SETB P1.7
ACALL DELAY
CPL P1.7
JNB P3.3,RING
RET
WARN:PUSH PSW
PUSH ACC
ACALL RING
POP ACC
POP PSW
RETI
END
本文介绍了一个基于51单片机的程序设计,该程序实现了通过P1口显示不同状态,并通过P3口的两个引脚进行外部中断控制和开关检测。通过中断服务子程序和延时子程序的配合,完成了对按键的扫描和响应。

1731

被折叠的 条评论
为什么被折叠?



