📄 ggj.asm
字号:
ORG 0000H
AJMP START
ORG 0003H
LJMP INT0R
ORG 001BH
LJMP T1
ORG 0050H
START:MOV P0,#0FFH
MOV A,P0 ;检测密码
CJNE A,#55H,WRONG
LCALL DISPLAYHELLO
LCALL DELAY2
LCALL DISPLAYHELLO
LCALL DELAY2
LCALL DISPLAYHELLO
LCALL DELAY2
LCALL COUNTDOWN
MOV DPTR,#TAB0
MOV R0,#0
MOV R1,#0
MOV R2,#0
MOV IE,#81H
SETB IT0
DISPLAYCOUNT:MOV P1,#04H
MOV A,R0
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
MOV P1,#02H
MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
MOV P1,#01H
MOV A,R2
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
AJMP DISPLAYCOUNT
;外部中断0入口
INT0R:INC R0
CJNE R0,#10,G1
MOV R0,#0
INC R1
CJNE R1,#10,G1
MOV R1,#0
INC R2
CJNE R2,#10,G1
MOV R2,#0
G1:
RETI
;定时器1中断入口
T1:INC R7
CJNE R7,#15,G2
MOV R7,#0
INC R6
MOV TH1,#4CH
MOV TL1,#00H
CLR TF1
G2:
RETI
;显示FAULT函数
WRONG:LCALL DISPLAYWRONG
LJMP START
DISPLAYWRONG:
MOV R0,#0AH
D1:MOV R1,#0FH
D2:MOV P1,#01H
MOV P2,#71H
LCALL DELAY
MOV P1,#02H
MOV P2,#77H
LCALL DELAY
MOV P1,#04H
MOV P2,#3EH
LCALL DELAY
MOV P1,#08H
MOV P2,#38H
LCALL DELAY
MOV P1,#10H
MOV P2,#07H
LCALL DELAY
DJNZ R1,D2
DJNZ R0,D1
MOV P1,#00H
MOV P2,#00H
LCALL DELAY
RET
;显示HELLO函数
DISPLAYHELLO:
MOV R0,#0AH
ONE:MOV R1,#0FH
TWO:MOV P1,#01H
MOV P2,#76H
LCALL DELAY
MOV P1,#02H
MOV P2,#79H
LCALL DELAY
MOV P1,#04H
MOV P2,#38H
LCALL DELAY
MOV P1,#08H
MOV P2,#38H
LCALL DELAY
MOV P1,#10H
MOV P2,#3FH
LCALL DELAY
DJNZ R1,TWO
DJNZ R0,ONE
MOV P1,#00H
MOV P2,#00H
LCALL DELAY
LCALL DELAY2
RET
;倒数开始进入中断统计
COUNTDOWN:MOV DPTR,#TAB1
MOV R6,#0
MOV R7,#0
MOV TMOD,#10H
MOV IE,#88H
MOV TH1,#4CH
MOV TL1,#00H
SETB TR1
MOV P1,#04H
LOOP: MOV A,R6
MOVC A,@A+DPTR
MOV P2,A
CJNE R6,#3,LOOP
MOV P1,#00H
MOV P2,#00H
RET
;延时子程序
DELAY:MOV R3,#0FFH
DJNZ R3,$
RET
DELAY1:
MOV R4,#0FFH
FIRST:MOV R5,#0FFH
DJNZ R5,$
DJNZ R4,FIRST
RET
DELAY2:
MOV R7,#4
DD:DJNZ R7,K1
K2:AJMP BACK
K1:LCALL DELAY1
AJMP DD
BACK:
RET
;数码管字符表示
TAB0:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
TAB1:DB 4FH,5BH,06H,3FH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -