📄 dskeyn.asm
字号:
MOV 4FH, #04H
MOV 34H, #0CBH
MOV 35H, #0C4H
MOV 36H, #0BBH
MOV 37H, #0ADH
MOV 38H, #0C3H
MOV 39H, #0E6H
LCALL LCDSHOW_DATA
LCALL ORDER_SEND
LOOP55: LJMP KEY_SCANRET
KEY_5H6L: MOV TH0, #00H
MOV TL0, #00H
CJNE A, #56H, KEY_5H7L
CLR KEY_DATA_C
JNB SHIFT_LED, LOOP56
MOV 41H, #12H ;键"九画面"
MOV 42H, #0EFH
MOV 4FH, #04H
MOV 34H, #0BEH
MOV 35H, #0C5H
MOV 36H, #0BBH
MOV 37H, #0ADH
MOV 38H, #0C3H
MOV 39H, #0E6H
LCALL LCDSHOW_DATA
LCALL ORDER_SEND
LOOP56: LJMP KEY_SCANRET
KEY_5H7L: MOV TH0, #00H
MOV TL0, #00H
CJNE A, #57H, KEY_SCANRET
CLR KEY_DATA_C
JNB SHIFT_LED, LOOP57
MOV 41H, #12H ;键"十六画面"
MOV 42H, #0EFH
MOV 4FH, #04H
MOV 34H, #0CAH
MOV 35H, #0AEH
MOV 36H, #0C1H
MOV 37H, #0F9H
MOV 38H, #0BBH
MOV 39H, #0ADH
MOV 3AH, #0C3H
MOV 3BH, #0E6H
LCALL LCDSHOW_DATA
LCALL ORDER_SEND
LJMP KEY_SCANRET
LOOP57: MOV 41H, #12H ;键"轮巡"
MOV 42H, #0DFH
MOV 4FH, #04H
MOV 34H, #0C2H
MOV 35H, #0D6H
MOV 36H, #0D1H
MOV 37H, #0B2H
MOV 38H, #20H
MOV 39H, #20H
MOV 3AH, #20H
MOV 3BH, #20H
LCALL LCDSHOW_DATA
LCALL ORDER_SEND
KEY_SCANRET: MOV TH0, #00H
MOV TL0, #00H
MOV P1, #0FFH
MOV P2, #0E0H
CPL WATCH_DOG
MOV A, P1
CJNE A, #0FFH, KEY_SCANRET
JNB P2.5, KEY_SCANRET
MOV 43H, #00H
LCALL ORDER_SEND
SETB EA
SETB EX0
SETB EX1
MOV TH0, #00H
MOV TL0, #00H
NOP
NOP
POP DPL
POP DPH
RETI
;************************************
; 数字合成子程序
;************************************
ADD_NUM: MOV A, KEY_TIMES
CJNE A, #00H, ADD_NUM_N1
MOV 22H, 20H
LJMP ADD_RET
ADD_NUM_N1:MOV A, 20H
MOV B, #0AH
MUL AB
ADD A, 21H
MOV 22H, A ;合成值存入22H
ADD_RET: RET
;****************************************
; 第一行显示子程序
;****************************************
LCDSHOW_MADD: MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
NOP
MOV WORD_NUM, #08H ;字符数
MOV A, #80h
LCALL ORDER_INPUT
NOP
NOP
MOV R0, #30H
LCD_CONTA: MOV A, @R0
PUSH DPH
PUSH DPL
LCALL DATA_INPUT
NOP
POP DPL
POP DPH
INC R0
MOV A, @R0
PUSH DPH
PUSH DPL
LCALL DATA_INPUT
NOP
POP DPL
POP DPH
INC R0
DJNZ WORD_NUM, LCD_CONTA
RET
;****************************************
; 指令动态显示子程序
;***************************************
LCDSHOW_DATA: MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
NOP
MOV WORD_NUM, #08H ;字符数
MOV A, #88h
LCALL ORDER_INPUT
NOP
NOP
MOV R0, #30H
LCD_CONT: MOV A, @R0
PUSH DPH
PUSH DPL
LCALL DATA_INPUT
NOP
POP DPL
POP DPH
INC R0
MOV A, @R0
PUSH DPH
PUSH DPL
LCALL DATA_INPUT
NOP
POP DPL
POP DPH
INC R0
DJNZ WORD_NUM, LCD_CONT
RET
;****************************************
; 录象动态显示子程序
;***************************************
LCDSHOW_REC: MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
NOP
MOV WORD_NUM, #08H ;字符数
MOV A, #90h
LCALL ORDER_INPUT
NOP
NOP
MOV R0, #70H
LCD_REC_CONT: MOV TH0, #00H ;T0清零
MOV TL0, #00H
MOV A, @R0
PUSH DPH
PUSH DPL
LCALL DATA_INPUT
NOP
POP DPL
POP DPH
INC R0
MOV A, @R0
PUSH DPH
PUSH DPL
MOV TH0, #00H ;T0清零
MOV TL0, #00H
LCALL DATA_INPUT
NOP
POP DPL
POP DPH
INC R0
DJNZ WORD_NUM, LCD_REC_CONT
RET
;****************************************
; 串行通讯中断子程序
;****************************************
RS_LINK: PUSH DPH
PUSH DPL
PUSH PSW
JNB RI, RSLINK_RETC
CLR RI
CLR ES
CLR EA
CPL WATCH_DOG
MOV TH0, #00H ;T0清零
MOV TL0, #00H
MOV A, SBUF
CJNE A, #0FFH, RSLINK_RETC
RSLINK_SELFR1:MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
JNB RI, RSLINK_SELFR1
MOV A, SBUF
CLR RI
MOV 5AH, A ;第二字节存入5AH
RSLINK_SELFR2:MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
JNB RI, RSLINK_SELFR2
MOV A, SBUF
CLR RI
MOV 5BH, A ;第三字节存入5BH
RSLINK_SELFR3: MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
JNB RI, RSLINK_SELFR3
MOV A, SBUF
CLR RI
MOV 5CH, A ;第四字节存入5CH
MOV A, 5AH ;取出指令
CJNE A, #0CH, RSLINK_REC
MOV TH0, #00H
MOV TL0, #00H
CPL WATCH_DOG
MOV 40H, #0FFH
MOV 41H, #0CH
MOV 42H, #02H
MOV 43H, #0DH
LCALL ORDER_SEND
LJMP RSLINK_RET
RSLINK_RETC: LJMP RSLINK_RET
RSLINK_REC: MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
CJNE A, #08H, RSLINK_RETC ;录象指示灯
MOV A, 5BH
ANL A, #01H
ADD A, #0F0H
MOV 71H, A
MOV A, 5BH
ANL A, #02H
RR A
ADD A, #0F0H
MOV 73H, A
MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
MOV A, 5BH
ANL A, #04H
RR A
RR A
ADD A, #0F0H
MOV 75H, A
MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
MOV A, 5BH
ANL A, #08H
RR A
RR A
RR A
ADD A, #0F0H
MOV 77H, A
MOV A, 5BH
ANL A, #10H
RR A
RR A
RR A
RR A
ADD A, #0F0H
MOV 79H, A
MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
MOV A, 5BH
ANL A, #20H
RR A
RR A
RR A
RR A
RR A
ADD A, #0F0H
MOV 7BH, A
MOV A, 5BH
ANL A, #40H
RR A
RR A
RR A
RR A
RR A
RR A
ADD A, #0F0H
MOV 7DH, A
MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
MOV A, 5BH
ANL A, #80H
RR A
RR A
RR A
RR A
RR A
RR A
RR A
ADD A, #0F0H
MOV 7FH, A
MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
MOV 70H, #0A1H
MOV 72H, #0A1H
MOV 74H, #0A1H
MOV 76H, #0A1H
MOV 78H, #0A1H
MOV 7AH, #0A1H
MOV 7CH, #0A1H
MOV 7EH, #0A1H
LCALL LCDSHOW_REC
RSLINK_RET: POP PSW
POP DPL
POP DPH
SETB ES
MOV TH0, #00H
MOV TL0, #00H
CPL WATCH_DOG
RETI
;****************************************
; 指令发送子程序
;****************************************
ORDER_SEND: MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
CLR ES
CLR EA
SETB RS485_TR
NOP
NOP
MOV R0, #40H
MOV R3, #04H
ORDER_CONT: MOV A, @R0
MOV SBUF, A
MOV TH0, #00H ;T0清零
MOV TL0, #00H
ORDER_HERE: MOV TH0, #00H ;T0清零
MOV TL0, #00H
CPL WATCH_DOG
JNB TI, ORDER_HERE
CLR TI
INC R0
DJNZ R3, ORDER_CONT
NOP
SEND_RET: CLR RS485_TR
CLR TI
CLR RI
SETB ES
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -