📄 led.asm
字号:
SECOND1 EQU 50H
SECOND2 EQU 55H
MINU1 EQU 60H
MINU2 EQU 65H
HOUR1 EQU 70H
HOUR2 EQU 75H
COUT EQU 35H
KEYNO EQU 36H ;显示位判断
BIT1 BIT 25H ;功能设定键
ORG 0000H
LJMP BEGIN
ORG 000BH
LJMP T0INT
ORG 0030H
BEGIN: MOV SP,#40H
MOV 26H,#015H
MOV 27H,#015H
MOV P2,#0F0H
MOV SECOND1,#08H
MOV SECOND2,#00H
MOV MINU1,#08H
MOV MINU2,#00H
MOV HOUR1,#08H
MOV HOUR2,#00H
MOV COUT,#0AH
MOV KEYNO,#01H
SETB BIT1
; MOV TH0,#00H
; MOV TL0,#01H ;T0定时100MS
MOV TMOD,#01H
MOV IE,#02H
SETB EA
SETB TR0
;===========主程序==========
MLOP: LCALL KEYIN
LCALL LED1DISP
LCALL LED2DISP
LCALL LED3DISP
LCALL LED4DISP
LCALL LED5DISP
LCALL LED6DISP
LJMP MLOP
;========KEYPAD================
KEYIN: MOV DPTR,#10H
MOVX A,@DPTR
CPL A
ANL A,#1FH
JZ RET100 ;没有键按下
LCALL DELAY
MOVX A,@DPTR
CPL A
ANL A,#1FH
JZ RET100
PUSH ACC
KEY1: MOVX A,@DPTR
CPL A
ANL A,#1FH
JNZ KEY1
LCALL DELAY
POP ACC
JB ACC.0,PKEY1 ;SET KEY
JB ACC.1,PKEY2 ;<<<<<<
JB ACC.2,PKEY3 ;>>>>>>
JB ACC.3,PKEY4 ;++++++
JB ACC.4,PKEY51 ;------
RET100: RET
PKEY1: CPL BIT1
JB BIT1,RET1
RET
PKEY2: JB BIT1,RET1
MOV A, KEYNO
ADD A,#01H
MOV KEYNO,A
XRL A,#07H
JNZ RET1
MOV KEYNO,#01H
RET
PKEY3: JB BIT1,RET1
MOV A, KEYNO
SUBB A,#01H
MOV KEYNO,A
XRL A,#00H
JNZ RET1
MOV KEYNO,#06H
RET
PKEY4: JB BIT1,RET1
MOV A,KEYNO
XRL A,#01H
JZ LED11
MOV A,KEYNO
XRL A,#02H
JZ LED21
MOV A,KEYNO
XRL A,#03H
JZ LED31
MOV A,KEYNO
XRL A,#04H
JZ LED41
MOV A,KEYNO
XRL A,#05H
JZ LED51
MOV A,KEYNO
XRL A,#06H
JZ LED61
MOV A,KEYNO
RET
RET1: RET
PKEY51:LCALL PKEY5
RET
LED11: MOV A,SECOND1
INC A
MOV SECOND1,A
XRL A,#0AH
JNZ RET1
MOV SECOND1,#00H
RET
LED21: MOV A,SECOND2
INC A
MOV SECOND2,A
XRL A,#06H
JNZ RET1
MOV SECOND2,#00H
RET
LED31: MOV A,MINU1
INC A
MOV MINU1,A
XRL A,#0AH
JNZ RET1
MOV MINU1,#00H
RET
LED41: MOV A,MINU2
INC A
MOV MINU2,A
XRL A,#06H
JNZ RET1
MOV MINU2,#00H
RET
LED51: MOV A,HOUR1
INC A
MOV HOUR1,A
XRL A,#0AH
JNZ RET1
MOV HOUR1,#00H
RET
LED61: MOV A,HOUR2
INC A
MOV HOUR2,A
XRL A,#03H
JNZ RET1
MOV HOUR2,#00H
RET
PKEY5: JB BIT1,RET1
MOV A,KEYNO
XRL A,#01H
JZ LED12
MOV A,KEYNO
XRL A,#02H
JZ LED22
MOV A,KEYNO
XRL A,#03H
JZ LED32
MOV A,KEYNO
XRL A,#04H
JZ LED42
MOV A,KEYNO
XRL A,#05H
JZ LED52
MOV A,KEYNO
XRL A,#06H
JZ LED62
MOV A,KEYNO
RET
LED12: MOV A,SECOND1
XRL A,#00H
JZ LED121
DEC A
MOV SECOND1,A
RET
LED121: MOV SECOND1,#09H
RET
LED22: MOV A,SECOND2
XRL A,#00H
JZ LED221
DEC A
MOV SECOND2,A
RET
LED221: MOV SECOND2,#05H
RET
LED32: MOV A,MINU1
XRL A,#00H
JZ LED321
DEC A
MOV MINU1,A
RET
LED321: MOV MINU1,#09H
RET
LED42: MOV A,MINU2
XRL A,#00H
JZ LED421
DEC A
MOV MINU2,A
RET
LED421: MOV MINU2,#05H
RET
LED52: MOV A,HOUR1
XRL A,#00H
JZ LED521
DEC A
MOV HOUR1,A
RET
LED521: MOV HOUR1,#09H
RET
LED62: MOV A,HOUR2
XRL A,#00H
JZ LED621
DEC A
MOV HOUR2,A
RET
LED621: MOV HOUR2,#02H
RET
;===LED DISPLAY=========
LED1DISP:JB BIT1,L1
MOV A,KEYNO
XRL A,#01H
JNZ L1
DEC 26H
MOV A,26H
JZ H1
LJMP L1
H1: MOV 26H,#01H
DEC 27H
MOV A,27H
JNZ RET2
MOV 26H,#015H
MOV 27H,#015H
L1: MOV DPTR,#MLED
MOV A,SECOND1
MOVC A,@A+DPTR
LCALL CLUP ;送外部LED1数据
MOV P2,#00H
SETB P2.7
LCALL DELAY1
RET2: RET
LED2DISP:JB BIT1,L2
MOV A,KEYNO
XRL A,#02H
JNZ L2
DEC 26H
MOV A,26H
JZ H2
LJMP L2
H2: MOV 26H,#01H
DEC 27H
MOV A,27H
JNZ RET3
MOV 26H,#015H
MOV 27H,#015H
L2: MOV DPTR,#MLED
MOV A,SECOND2
MOVC A,@A+DPTR
LCALL CLUP ;送外部LED2数据
MOV P2,#00H
SETB P2.6
LCALL DELAY1
RET3: RET
LED3DISP:JB BIT1,L3
MOV A,KEYNO
XRL A,#03H
JNZ L3
DEC 26H
MOV A,26H
JZ H3
LJMP L3
H3: MOV 26H,#01H
DEC 27H
MOV A,27H
JNZ RET4
MOV 26H,#015H
MOV 27H,#015H
L3: MOV DPTR,#MLED
MOV A,MINU1
MOVC A,@A+DPTR
LCALL CLUP ;送外部LED3数?
MOV P2,#00H
SETB P2.5
LCALL DELAY1
RET4: RET
LED4DISP:JB BIT1,L4
MOV A,KEYNO
XRL A,#04H
JNZ L4
DEC 26H
MOV A,26H
JZ H4
LJMP L4
H4: MOV 26H,#01H
DEC 27H
MOV A,27H
JNZ RET5
MOV 26H,#015H
MOV 27H,#015H
L4: MOV DPTR,#MLED
MOV A,MINU2
MOVC A,@A+DPTR
LCALL CLUP ;送外部LED4数据
MOV P2,#00H
SETB P2.4
LCALL DELAY1
RET5: RET
LED5DISP:JB BIT1,L5
MOV A,KEYNO
XRL A,#05H
JNZ L5
DEC 26H
MOV A,26H
JZ H5
LJMP L5
H5: MOV 26H,#01H
DEC 27H
MOV A,27H
JNZ RET6
MOV 26H,#015H
MOV 27H,#015H
L5: MOV DPTR,#MLED
MOV A,HOUR1
MOVC A,@A+DPTR
LCALL CLDOWN ;送外部LED5数据
MOV P2,#00H
SETB P2.7
LCALL DELAY1
RET6: RET
LED6DISP:JB BIT1,L6
MOV A,KEYNO
XRL A,#06H
JNZ L6
DEC 26H
MOV A,26H
JZ H6
LJMP L6
H6: MOV 26H,#01H
DEC 27H
MOV A,27H
JNZ RET7
MOV 26H,#015H
MOV 27H,#015H
L6: MOV DPTR,#MLED
MOV A,HOUR2
MOVC A,@A+DPTR
LCALL CLDOWN ;送外部LED6数据
MOV P2,#00H
SETB P2.6
LCALL DELAY1
RET7: RET
CLUP: PUSH ACC
MOV R0,#08H
MOV A,#00H
MOVX @R0,A
POP ACC
MOV R1,#00H
MOVX @R1,A
RET
CLDOWN: PUSH ACC
MOV R0,#00H
MOV A,#00H
MOVX @R0,A
POP ACC
MOV R0,#08H
MOVX @R0,A
RET
;=========延时程序=====
DELAY1: MOV R7,#020H
D11: MOV R6,#010H
D21: DJNZ R6,D21
DJNZ R7,D11
RET
DELAY: MOV R7,#15H
D1: MOV R6,#0FFH
D2: DJNZ R6,D2
DJNZ R7,D1
RET
;========LED寄存器数据更新=======
LED1: PUSH ACC
MOV A,SECOND1
ADD A,#01H
MOV SECOND1,A
XRL A,#0AH
JNZ RET0
LED2: MOV SECOND1,#00H
MOV A,SECOND2
ADD A,#01H
MOV SECOND2,A
XRL A,#06H
JNZ RET0
LED3: MOV SECOND2,#00H
MOV A,MINU1
ADD A,#01H
MOV MINU1,A
XRL A,#0AH
JNZ RET0
LED4: MOV MINU1,#00H
MOV A,MINU2
ADD A,#01H
MOV MINU2,A
XRL A,#06H
JNZ RET0
LED5: MOV MINU2,#00H
MOV A,HOUR1
ADD A,#01H
MOV HOUR1,A
MOV B,A
MOV A,HOUR2
XRL A,#02H
JZ DAY1
XRL A,#0AH
JNZ RET0
LED6: MOV HOUR1,#00H
MOV A,HOUR2
ADD A,#01H
MOV HOUR2,A
XRL A,#02H
JNZ RET0
DAY1: MOV A,B
XRL A,#04H
JNZ RET0
MOV HOUR1,#00H
MOV HOUR2,#00H
RET0: POP ACC
RET
;=======定时中断==========
T0INT: PUSH ACC
MOV TH0,#00H
MOV TL0,#01H
DJNZ COUT, RETI1
MOV COUT,#0AH
LCALL LED1
RETI1: POP ACC
RETI
MLED:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -