📄 danbai2.asm
字号:
ORG 0000H
LJMP MAIN
ORG 000BH
AJMP T0_INT
ORG 001BH
MOV TL1,#01AH
MOV TH1,#0FCH
AJMP T1_INT
TAB1: DB 0EDH,60H,0A7H,0E6H,6AH,0CEH,0CFH,0E0H,0EFH,0EEH;0,1,....,9
TAB2: DB 0FDH,70H,0B7H,0F6H,7AH,0DEH,0DFH,0F0H,0FFH,0FEH;0.,1.,..,9.
TAB3: DB 00H,00H,00H,60H,00H,0A7H,00H,0E6H,00H,6AH,00H,0CEH
DB 00H,0CFH,00H,0E0H,00H,0EFH,00H,0EEH,60H,0EDH,60H,60H
DB 60H,0A7H,60H,0E6H,60H,06AH,60H,0CEH,60H,0CFH,60H,0E0H
DB 60H,0EFH,60H,0EEH,0A7H,0EDH,0A7H,60H,0A7H,0A7H,0A7H,0E6H
DB 0A7H,6AH,0A7H,0CEH,0A7H,0CFH,0A7H,0E0H,0A7H,0EFH,0A7H,0EEH
DB 0E6H, 0EDH,0E6H,60H,0E6H,0A7H,0E6H,0E6H,0E6H,6AH,0E6H,0CEH
DB 0E6H,0CFH,0E6H,0E0H,0E6H,0EFH,0E6H,0EEH,6AH,0EDH,6AH,60H
DB 6AH,0A7H,6AH,0E6H,6AH,6AH,6AH,0CEH,6AH,0CFH,6AH,0E0H,6AH,0EFH
DB 6AH,0EEH,0CEH,0EDH,0CEH,60H,0CEH,0A7H,0CEH,0E6H,0CEH,6AH
DB 0CEH,0CEH,0CEH,0CFH,0CEH,0E0H,0CEH,0EFH,0CEH,0EEH,0CFH,0EDH
MAIN:
CLR EA
MOV R0,#20H
CLR0:
MOV @R0,#00H
INC R0
CJNE R0,#7FH,CLR0
MOV 21H,#30
MOV SP,#60H
SETB PT0
CLR PT1
MOV IE,#0AH
MOV TMOD,#15H
MOV TL1,#1AH
MOV TH1,#0FCH
LCALL WRITEP1
LCALL DISPLAY
KEY:
MOV P1,#0FFH
MOV A,P1
CJNE A,#0FFH,ONEKEY
AJMP KEY
ONEKEY:
MOV B,A
LCALL DELAY10MS
MOV A,B
CJNE A,P1,KEY
JB P1.0,KDNEXT1 ;有键按下,直接寻址位P1.0为1跳转至KDNEXT1
LCALL KEY_GONGNENG ;P1.0为0电平,则调用功能子程序
KDNEXT1: ; ;置数
JB P1.1,KDNEXT2
LCALL KEY_ZHISHU
KDNEXT2: ; ;上调
JB P1.2,KDNEXT3
LCALL KEY_ST
KDNEXT3: ; ;下调
JB P1.3,KDNEXT4
LCALL KEY_XT
KDNEXT4: ; ;执行
JB P1.4,KDNEXT5
LCALL KEY_ZHIXING
KDNEXT5: ; ;查询
JB P1.5,KDNEXT6
LCALL KEY_CHAXUN
KDNEXT6: ; ;自检
JB P1.6,KDNEXT7
LCALL KEY_ZHIJIAN
KDNEXT7: ; ;返回
JB P1.7,KEY
LCALL KEY_FANHUI
LJMP KEY
KEY_GONGNENG:
JB 07H,KEY1_OUT
LCALL RELL
MOV 20H,#00H
MOV 35H,#0A7H
MOV 34H,#43H
MOV 33H,#06H
MOV 32H,#0E9H
MOV 31H,#02H
MOV 30H,#60H
LCALL DISPLAY
SETB P3.0
KEY1_OUT:
LCALL KEYOUT
RET
KEY_ZHISHU:
JB 07H,KEY2_OUT
LCALL RELL
CLR 04H
JNB 01H,DO_ZHISHU
CLR 01H
MOV 36H,#8BH
MOV 34H,#00H
MOV 33H,#00
MOV 32H,#8FH
MOV 31H,#43H
MOV 30H,#67H
MOV 35H,#60H
MOV 21H,2BH
MOV A,21H
LCALL DISPLAY
MOV R0,#38H
CLRF11:
MOV @R0,#00H
INC R0
CJNE R0,#4AH,CLRF11
LJMP KEY2_OUT
DO_ZHISHU:
SETB 01H
MOV 5CH,#1
MOV 36H,#43H
MOV 35H,#06H
MOV 34H,#00H
MOV 33H,#00
MOV 32H,#00
MOV 31H,#0E6H
MOV 30H,#0EDH
LCALL DISPLAY
MOV 2BH,#30
KEY2_OUT:
LCALL KEYOUT
RET
KEY_ST:
JB 07H,KEY3_OUT
JNB 01H,KEY3_OUT
DO_ZSST:
LCALL RELL
MOV A,5CH
CJNE A,#01H,DO_ZSST1
MOV 2BH,#30
MOV 5CH,#00H
DO_ZSST1:
MOV R0,2BH
CJNE R0,#60,ST_NXUNF
MOV 2BH,#01H
LJMP ST_OEND
ST_NXUNF:
MOV A,2BH
ADD A,#01H
MOV 2BH,A
ST_OEND:
MOV 2CH,2BH
LCALL WRITEZS
LCALL DISPLAY
KEY3_OUT:
LCALL KEYOUT
RET
KEY_XT:
JB 07H,KEY4_OUT
JNB 01H,KEY4_OUT
DO_ZSXT:
LCALL RELL
MOV A,5CH
CJNE A,#01H,DO_ZSXT1
MOV 2BH,#30
MOV 5CH,#00H
DO_ZSXT1:
MOV A,2BH
CJNE A,#01H,XT_NXUNF
MOV 2BH,#60
LJMP XT_OEND
XT_NXUNF:
DEC 2BH
XT_OEND:
MOV 2CH,2BH
LCALL WRITEZS
LCALL DISPLAY
KEY4_OUT:
LCALL KEYOUT
RET
KEY_ZHIXING:
JNB 07H,DO_ZHIXING
LJMP KEY5_OUT
DO_ZHIXING:
CLR 05H
CLR 02H
JB 04H,DO_ZX1
MOV 53H,#00H
SETB 04H
DO_ZX1:
MOV A,53H
CJNE A,#05H,DO_ZXKZ1
MOV 53H,#0
LJMP DO_ZX2
DO_ZXKZ1:CJNE A,#06H,DO_ZXKZ2
MOV 53H,#0
LJMP DO_ZX2
DO_ZXKZ2:CJNE A,#07H,DO_ZXKZ3
MOV 53H,#0
LJMP DO_ZX2
DO_ZXKZ3:CJNE A,#08H,DO_ZX2
MOV 53H,#0
LJMP DO_ZX2
DO_ZX2:
INC 53H
MOV A,53H
CLR 01H
MOV 36H,#0ABH
MOV A,53H
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV 35H,A
MOV 34H,#0EDH
MOV 33H,#0FDH
MOV 32H,#0eDH
MOV 31H,#0EDH
MOV 30H,#0EDH
LCALL DISPLAY
SETB EA
LCALL RELL
SETB 06H
SETB ET0
MOV TH1,#0FCH
MOV TL1,#01AH
MOV 28H,#3
CLR 03H
MOV TL0,#0FFH
MOV TH0,#0FFH
SETB TR0
KEY5_OUT:
LCALL KEYOUT
RET
KEY_CHAXUN:
JB 07H,KEY6_OUT
JB 02H,KEY6_OUT
LCALL RELL
JB 05H,DO_CX1
MOV 53H,#00H
SETB 05H
DO_CX1:
MOV A,53H
ADD A,#01H
MOV 53H,A
MOV A,53H
CJNE A,#06H,DO_CX2
MOV 36H,#8DH; C
MOV 35H,#0EBH;A
MOV 34H,#00H
MOV 53H,#6 ;=
LCALL CHAXUN_SUB
LCALL DISPLAY
LJMP KEY6_OUT
DO_CX2:
MOV A,53H
CJNE A,#07H,DO_CX3
MOV 36H,#43H ; N
MOV 35H,#06H ; =
MOV 34H,#00H
MOV 33H,#00H ;
MOV 32H,#00H ;
MOV 2CH,21H
LCALL WRITEZS
LCALL DISPLAY
CLR 05H
LJMP KEY6_OUT
DO_CX3:
CLR 01H
MOV 36H,#08DH
MOV A,53H
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV 35H,A
MOV 34H,#00H
LCALL CHAXUN_SUB
LCALL DISPLAY
KEY6_OUT:
LCALL KEYOUT
RET
KEY_ZHIJIAN:
JB 07H,KEY7_OUT
LCALL RELL
DO_ZJ:
CLR 05H
CLR 02H
CLR 01H
CLR 00H
LCALL KEY_GONGNENG
LCALL DELAY1S
MOV 36H,#0CEH ;C
MOV 35H,#8DH ;
MOV 34H,#00H
MOV 33H,#0CDH ;
MOV 32H,#47H ;
MOV 31H,#47H ;
MOV 30H,#67H ;
LCALL DISPLAY
LCALL RELL
LCALL DELAY1S
LCALL WRITEP1
LCALL DISPLAY
LCALL RELL
LCALL DELAY1S
KEY7_OUT:
LCALL KEYOUT
RET
KEY_FANHUI:
CLR EA
SETB 03H
CLR TR0
CLR TR1
LCALL RELL
SETB P3.7
CLR 07H
MOV A,20H
ANL A,#00000010B
MOV R0,#23H
CLRF01:
MOV @R0,#00H
INC R0
CJNE R0,#7FH,CLRF01
AJMP FH_OUT
FH_OUT:
LCALL WRITEP1
LCALL DISPLAY
LCALL KEYOUT
RET
KEYOUT:
WAIT_1: JNB P1.0,WAIT_1
WAIT_2: JNB P1.1,WAIT_2
WAIT_3: JNB P1.2,WAIT_3
WAIT_4: JNB P1.3,WAIT_4
WAIT_5: JNB P1.4,WAIT_5
WAIT_6: JNB P1.5,WAIT_6
WAIT_7: JNB P1.6,WAIT_7
WAIT_8: JNB P1.7,WAIT_8
RET
;**********************************************
DISPLAY:
MOV R0,#30H
CLR P3.3
CLR P3.2
DISP1: MOV A,@R0
MOV R1,#8
DISP2: RLC A
MOV P3.5,C
SETB P3.2
CLR P3.2
DJNZ R1,DISP2
INC R0
CJNE R0,#37H,DISP1
SETB P3.3
RET
;**********************************************
DELAY10MS:
SETB RS0
MOV R7,#04H
DEL11: MOV R6,#2FH
DEL10: DJNZ R6,DEL10
DJNZ R7,DEL11
CLR RS0
RET
;**********************************************
DELAY1S:
SETB RS0
MOV R7,#03H
DEL22: MOV R6,#0FFH
DEL21: MOV R5,#0FFH
DEL20: DJNZ R5,DEL20
DJNZ R6,DEL21
DJNZ R7,DEL22
CLR RS0
RET
;**********************************************
RELL:
SETB RS0
CLR P3.1
MOV R0,#7FH
RELLH:
MOV R1,#7FH
RELLH1: DJNZ R1,RELLH1
DJNZ R0,RELLH
SETB P3.1
CLR RS0
RET
;**********************************************
WRITEP1:
MOV 36H,#0ABH
MOV 35H,#60H
MOV R0,#30H
MTLP1:
MOV @R0,#02H
INC R0
CJNE R0,#35H,MTLP1
RET
WRITEZS:
MOV A,2CH
ADDC A,2CH
MOV DPTR,#TAB3
MOVC A,@A+DPTR
MOV 31H,A
MOV A,2CH
ADDC A,2CH
INC A
MOVC A,@A+DPTR
MOV 30H,A
RET
;**********************************************
T1_INTEND:
RETI
T1_INT:
JB 03H,T1_INTEND
JNB 07H,T1_DO1
PUSH ACC
AJMP T1_SUB
T1_DO1:
CLR TR1
PUSH ACC
PUSH PSW
SETB RS1
LCALL SJ_CHULI
MOV R0,#24H
MOV R1,#6
CLR_SBUF:
MOV @R0,#0
INC R0
DJNZ R1,CLR_SBUF
CLR RS1
POP PSW
POP ACC
RETI
T1_SUB:
INC 29H
MOV A,29H
CJNE A,#10,WR_DIS
MOV 29H,#0
INC 28H
MOV A,28H
CJNE A,#10,WR_DIS
MOV 28H,#0
INC 27H
MOV A,27H
CJNE A,#10,WR_DIS
MOV 27H,#0
INC 26H
MOV A,26H
CJNE A,#10,WR_DIS
MOV 26H,#0
INC 25H
MOV A,25H
CJNE A,#10,WR_DIS
MOV 25H,#0
INC 24H
MOV A,24H
CJNE A,#10,WR_DIS
CLR 07H
SETB P3.7
MOV 33H,#8BH ;F
MOV 32H,#6DH ;U
MOV 31H,#0DH ;L
MOV 30H,#0DH ;L
MOV 34H,#00H
LJMP DISPLAY2
WR_DIS:
mov a,24h
jnz wr_dis1
mov a,25h
MOV DPTR,#TAB1
MOV A,29H
MOVC A,@A+DPTR
MOV 30H,A
MOV A,28H
MOVC A,@A+DPTR
MOV 31H,A
MOV A,27H
MOVC A,@A+DPTR
MOV 32H,A
MOV A,25H
MOVC A,@A+DPTR
MOV 34H,A
MOV DPTR,#TAB2
MOV A,26H
MOVC A,@A+DPTR
MOV 33H,A
ljmp display2
wr_dis1:
MOV DPTR,#TAB1
MOV A,28H
MOVC A,@A+DPTR
MOV 30H,A
MOV A,27H
MOVC A,@A+DPTR
MOV 31H,A
MOV A,25H
MOVC A,@A+DPTR
MOV 33H,A
MOV A,24H
MOVC A,@A+DPTR
MOV 34H,A
MOV DPTR,#TAB2
MOV A,26H
MOVC A,@A+DPTR
MOV 32H,A
DISPLAY2:
MOV R0,#30H
CLR P3.3
CLR P3.2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -