📄 ke.asm
字号:
ORG 0000H
AJMP 0030H
ORG 000BH
AJMP TIME0
ORG 0023H
AJMP CHUANXIN
ORG 0030H
MAIN:
MOV 60H, #2
MOV 61H, #0
MOV 62H, #0
MOV 63H, #4
MOV 64H, #0
MOV 65H, #6
MOV 66H, #0
MOV 67H, #1
MOV 68H, #0
MOV 69H, #3
MOV 6AH, #0
MOV 6BH, #2
MOV 6CH, #12
MOV 6DH, #12
LCALL DISPLAY2
LCALL QING
MOV TMOD, #21H
MOV TH0, #3CH
MOV TL0, #0B0H
MOV TH1, #0FDH
MOV TL1, #0FDH
MOV SCON, #50H
SETB TR1
SETB EA
SETB ET0
SETB ES
ZHU:
ACALL CHECK
JNZ KEY
LCALL DISPLAY
AJMP ZHU
CHECK:
MOV P1, #0FH
MOV A, P1
CPL A
ANL A, #0FH
RET
KEY: ; 键盘查询
LCALL DISPLAY
LCALL CHECK
JNZ LK1
AJMP KEY_OUT
LK1:
CLR P3.4
LCALL DELAY_20MS
SETB P3.4
MOV P1, #0F0H
NOP
MOV A, P1
CJNE A, #0F0H, LK2
LK2:
MOV R2, A
MOV A, #0FH
MOV P1, A
NOP
MOV A, P1
ANL A, #0FH
ADD A, R2
MOV R2, A
LK3:
LCALL DISPLAY
MOV P1, #0F0H
MOV A, P1
CJNE A, #0F0H, LK3
CJNE R2, #0EEH, ZHI1
MOV A, #0
LCALL SHURU
LJMP ZHU
ZHI1:
CJNE R2, #0EDH, ZHI2
MOV A, #1
LCALL SHURU
LJMP ZHU
ZHI2:
CJNE R2, #0EBH, ZHI3
MOV A, #2
LCALL SHURU
LJMP ZHU
ZHI3:
CJNE R2, #0E7H, ZHI4
MOV A, #3
LCALL SHURU
LJMP ZHU
ZHI4:
CJNE R2, #0DEH, ZHI5
MOV A, #4
LCALL SHURU
LJMP ZHU
ZHI5:
CJNE R2, #0DDH, ZHI6
MOV A, #5
LCALL SHURU
LJMP ZHU
ZHI6:
CJNE R2, #0DBH, ZHI7
MOV A, #6
LCALL SHURU
LJMP ZHU
ZHI7:
CJNE R2, #0D7H, ZHI8
MOV A, #7
LCALL SHURU
LJMP ZHU
ZHI8:
CJNE R2, #0BEH, ZHI9
MOV A, #8
LCALL SHURU
LJMP ZHU
ZHI9:
CJNE R2, #0BDH, ZHI10
MOV A, #9
LCALL SHURU
LJMP ZHU
ZHI10:
CJNE R2, #0BBH, ZHI11
CLR TR0
LJMP ZHU
ZHI11:
CJNE R2, #0B7H, ZHI12
LCALL SJIAN
LJMP ZHU
ZHI12:
CJNE R2, #7EH, ZHI13
LCALL JIAN
LJMP ZHU
ZHI13:
CJNE R2, #7DH, ZHI14
LCALL FUZHI
LJMP ZHU
ZHI14:
CJNE R2, #7BH, ZHI15
LCALL SHIZH
LJMP ZHU
ZHI15:
LCALL CHUAN
KEY_OUT:LJMP ZHU
SHURU: ; 数据输入
PUSH ACC
MOV R3, #7
MOV R0, #70H
MOV R1, #71H
SHU:
MOV A, @R1
MOV @R0, A
INC R0
INC R1
DJNZ R3, SHU
POP ACC
MOV 77H, A
RET
DISPLAY: ;显示
MOV R3, #7
MOV R0, #70H
MOV R4, #01H
DIS0: CJNE @R0, #0, DIS1
INC R0
MOV A, R4
RL A
MOV R4, A
DJNZ R3, DIS0
AJMP DIS1
DISPY: MOV R3, #7
MOV R0, #70H
MOV R4, #01H
DIS1: MOV A, @R0
MOV DPTR, #TAB
MOVC A, @A+DPTR
MOV P0, A
MOV A, R4
MOV P2, A
LCALL DELAY_1MS
INC R0
MOV A, R4
RL A
MOV R4, A
CJNE R0, #78H, DIS1
RET
DISPLAY2:
MOV R0, #60H
YI: MOV R5, #100
YI0:
MOV R4, #01H
MOV A, R0
MOV R1, A
MOV R3, #8
YI1: MOV DPTR, #TAB
MOV A, @R1
MOVC A, @A+DPTR
MOV P0, A
MOV A, R4
MOV P2, A
RL A
MOV R4, A
LCALL DELAY_1MS
ACALL CHECK
JNZ YI3
INC R1
CJNE R1, #6EH, YI2
MOV R1, #60H
YI2: DJNZ R3, YI1
DJNZ R5, YI0
INC R0
CJNE R0, #6EH, YI
MOV R0, #60H
AJMP YI
YI3: RET
DELAY_1MS: ;延时5MS
MOV R7, #2
DE0: MOV R6, #250
DJNZ R6, $
DJNZ R7, DE0
RET
DELAY_20MS: ;延时20MS
MOV R7, #40
DE1: MOV R6, #250
DJNZ R6, $
DJNZ R7, DE1
RET
DELAY_100MS:
MOV R7, #200
DE2: MOV R6, #250
DJNZ R6, $
DJNZ R7, DE2
RET
BAOJING1:
CLR P3.4
LCALL DELAY_20MS
SETB P3.4
LCALL DELAY_20MS
CLR P3.4
LCALL DELAY_100MS
SETB P3.4
RET
BAOJING2:
CLR P3.4
LCALL DELAY_100MS
SETB P3.4
LCALL DELAY_20MS
CLR P3.4
LCALL DELAY_100MS
SETB P3.4
LCALL DELAY_20MS
CLR P3.4
LCALL DELAY_100MS
SETB P3.4
RET
LLK1:
CLR P3.4
LCALL DELAY_20MS
SETB P3.4
MOV P1, #0F0H
MOV A, P1
CJNE A, #0F0H, LLK2
LLK2:
MOV R2, A
ORL A, #0FH
MOV P1, A
MOV A, P1
ANL A, #0FH
ADD A, R2
MOV R2, A
RET
CHUAN: ;串行输出
MOV R2, #8
MOV R1, #70H
CHUAN1: MOV A, @R1
MOV SBUF, A
JNB TI, $
CLR TI
INC R1
DJNZ R2, CHUAN1
RET
TIME0: ;定时器中断
MOV TH0, #3CH
MOV TL0, #0B0H
CJNE R5, #0, TIM0
RETI
TIM0:
DEC R5
RETI
CHUANXIN: ;串行中断
JNB RI, CHOUT
MOV A, SBUF
CLR RI
LCALL SHURU
CHOUT: RETI
QING: ;清0程序
MOV R7, #8
MOV R0, #70H
qi1: MOV @R0, #00H
INC R0
DJNZ R7, qi1
RET
JIAN: ; 减法
MOV R5, #20
JIAN_ST:SETB TR0
JIAN_DS:
LCALL DISPLAY
LCALL CHECK
JNZ JIAN_CH
CJNE R5, #0, JIAN_DS
MOV R5, #20
MOV R0, #77H
MOV R7, #7
JIANK: DEC @R0
CJNE @R0, #0FFH, JIAN_DS
MOV @R0, #9
DEC R0
DJNZ R7, JIANK
DEC @R0
CJNE @R0, #0FFH, JIAN_DS
CLR TR0 ;
LCALL QING
MOV R0, #77H
MOV @R0, #11
LCALL BAOJING1
AJMP JIAN_DS
JIAN_CH:
LCALL LLK1
PUSH ACC
SUBB A, #0BCH
JC JIAN10
POP ACC
LJMP JIAN_DS
JIAN10: POP ACC
CJNE A, #7EH, JIAN_TI
LJMP JIAN_ST
JIAN_TI:CJNE A, #0BBH, JIAN15
CPL TR0
LJMP LLK12
JIAN15: CJNE A, #77H, JIAN_OUT
LCALL CHUAN
LLK12:
MOV P1, #0F0H
LCALL DISPLAY
MOV A, P1
CJNE A, #0F0H, LLK12
LJMP JIAN_DS
JIAN_OUT:
RET
ZH:
MOV 70H, 72H
MOV 71H, 73H
MOV 73H, 74H
MOV 74H, 75H
MOV A, #2
SUBB A, 70H
JC ZH24
MOV A, 70H
CJNE A, #2, ZH0
MOV A, #4
SUBB A, 71H
JNC ZH1
MOV 71H, #4
AJMP ZH1
ZH0:
MOV A, #9
SUBB A, 71H
JNC ZH1
MOV 71H, #9
ZH1:
MOV A, #5
SUBB A, 73H
JNC ZH2
MOV 73H, #5
ZH2:
MOV A, #9
SUBB A, 74H
JNC ZH3
MOV 74H, #9
ZH3:
MOV A, #5
SUBB A, 76H
JNC ZH4
MOV 76H, #5
ZH4:
MOV A, #9
SUBB A, 77H
JNC BIAO
MOV 77H, #9
AJMP BIAO
ZH24:
LCALL QING
MOV 70H, #2
MOV 71H, #4
BIAO:
MOV 72H, #10
MOV 75H, #10
RET
SJIAN:
LCALL ZH
MOV R0, #70H
CJNE @R0, #2, S_ST
MOV R0, #71H
CJNE @R0, #4H, S_ST
MOV 71H, #0
MOV 70H, #0
MOV R5, #20
S_ST: SETB TR0
S_DS:
LCALL DISPY
LCALL CHECK
JNZ S_CH
CJNE R5, #0, S_DS
MOV R5, #20
MOV R0, #77H
INC @R0
CJNE @R0, #0AH, S_DS
MOV 77H, #0
MOV R0, #76H
INC @R0
CJNE @R0, #6, S_DS
MOV 76H, #0
MOV R0, #74H
INC @R0
CJNE @R0, #0AH, S_DS
MOV 74H, #0
MOV R0, #73H
INC @R0
CJNE @R0, #6, S_DS
MOV 73H, #0
MOV R0, #70H
CJNE @R0, #2, SL
MOV R0, #71H
INC @R0
CJNE @R0, #4H, S_DS
MOV 71H, #0
MOV 70H, #0
CLR P3.4
LCALL DELAY_20MS
SETB P3.4
AJMP S_DS
SL: MOV R0, #71H
INC @R0
CJNE @R0, #0AH, S_DS
MOV 71H, #0
INC 70H
AJMP S_DS
S_CH:
LCALL LLK1
PUSH ACC
SUBB A, #0BCH
JC S10
POP ACC
LJMP S_DS
S10: POP ACC
CJNE A, #0B7H, S_TI
LJMP S_ST
S_TI: CJNE A, #0BBH, S15
CPL TR0
LJMP LLK11
S15: CJNE A, #77H, S_OUT
LCALL CHUAN
LLK11:
LCALL DISPLAY
MOV P1, #0F0H
MOV A, P1
CJNE A, #0F0H, LLK11
LJMP S_DS
S_OUT:
RET
FUZHI: ;赋值
LCALL QING
CLR TR0
MOV TH0, #3CH
MOV TL0, #0B0H
RET
SHIZH: ;时钟计时
ACALL ZH
MOV R5, #20
SHI_ST: SETB TR0
SHI_DS:
LCALL DISPY
LCALL CHECK
JNZ SHI_CH
CJNE R5, #0, SHI_DS
MOV R5, #20;
MOV R0, #77H
DEC @R0
CJNE @R0, #0FFH, SHI_DS
MOV 77H, #9;
MOV R0, #76H
DEC @R0
CJNE @R0, #0FFH, SHI_DS
MOV 76H, #5
MOV R0, #74H
DEC @R0
CJNE @R0, #0FFH, SHI_DS
MOV 74H, #9
MOV R0, #73H
DEC @R0
CJNE @R0, #0FFH, SHI_DS
MOV 73H, #5
MOV R0, #71H
DEC @R0
CJNE @R0, #0FFH, SHI_DS
MOV 71H, #9
MOV R0, #70H
DEC @R0
CJNE @R0, #0FFH, SHI_DS
CLR TR0
LCALL QING
MOV 72H, #10
MOV 75H, #10
LCALL BAOJING2
AJMP SHI_DS
SHI_CH:
LCALL LLK1
PUSH ACC
SUBB A, #0BCH
JC SHI10
POP ACC
LJMP SHI_DS
SHI10: POP ACC
CJNE A, #7BH, SHI_TI
LJMP SHI_ST
SHI_TI: CJNE A, #0BBH, SHI15
CPL TR0
LJMP LLK14
SHI15: CJNE A, #77H, SHI_OUT
LCALL CHUAN
LLK14:
LCALL DISPLAY
MOV P1, #0F0H
MOV A, P1
CJNE A, #0F0H, LLK14
LJMP SHI_DS
SHI_OUT:
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,0x92,82H,0F8H,80H,90H,0BFH,86H,0FFH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -