📄 plj100.asm
字号:
MOV TL0,#058H
MOV TH1,#0fdH
MOV TL1,#0fdH
CLR LBJDQ
MOV R0,#BCD1
MOV R6,#40
PLJK: MOV A,#00H
MOV @R0,A
INC R0
DJNZ R6,PLJK
CLR CLRD
CLR START
MOV KDIG,#0FFH
MOV DS_TIME,#20
CLR CLRD;计数器清零
NOP
MOV GDIG,#04H
MOV FYDIG,#00H
MOV LBDIG,#00H
;================
MOV KEYFUN,#00H
MOV XSDIG,#00H
CLR JS_BZ
CLR KEY_BZ
CLR FY_BZ
CLR LB_BZ
;================
SETB START;启动计数器
SETB TR0
SETB TR1
SETB ET0
SETB EA
SETB ES
CLR EX1
CLR EX0
SETB RECE_BZ
CLR RECE_1
CLR RECE_2
CLR RECE_3
CLR RECE_4
CLR RECE_5
CLR SEND_BZ
RET
;===========================================
;=============看门狗电路====================
WDT_DOG: MOV B,A
MOV A,#01EH
MOV 0A6H,A
NOP
MOV A,#0E1H
MOV 0A6H,A
MOV A,B
RET
;===========================================
DELAY10: NOP
DELAY5: MOV R6,#0FFH
LCALL wdt_dog
DJNZ R6,$
RET
DELAY101: MOV R3,#6
IUR: LCALL DELAY5
DJNZ R3,IUR
RET
;===========================================
/*
RD_TX: PUSH ACC
PUSH DPH
PUSH DPL
PUSH 00H
PUSH B
PUSH PSW
JBC RI,RECEDATA
JBC TI,KTH
KTH: POP PSW
POP B
POP 00H
POP DPL
POP DPH
POP ACC
RETI
RECE_END: LJMP KTH
RECEDATA: JNB RECE_BZ,RECE_END
RECE_READ: MOV A,SBUF
CLR C
SUBB A,#33H;40H为起始数据
JNZ RECE_END
SETB RECE_1
clr ea
clr tr0
mov sbuf,#33h
CLR 9DH
clr ri
S99: LCALL wdt_dog
jnb ti,S99
clr ti
CLR RI
; MOV RECEDATA2,#0FFH
kjh10: ; lcall wdt_dog
; MOV A,RECEDATA2
; JZ FDS
; DEC RECEDATA2
LCALL DELAY40
; JNB RI,kjh10
; jnb ri,KJH
FDS: ; MOV A,SBUF
; clr ri
; CJNE A,#3FH,SENDD1
;LJMP SENDC9
SENDD1: LCALL SENDRD;回传读数据
TTY: SETB RECE_BZ
CLR RECE_1
CLR RECE_2
CLR RECE_3;
CLR RECE_4
CLR RECE_5;1
SETB RECE_BZ
SETB 9DH
SETB ES
SETB EA
SETB TR0
SETB TR1
clr ri
MOV DS_TIME,#60
CLR CLRD
SETB START
MOV TH0,#0FBH
MOV TL0,#18H
lcall wdt_dog
LJMP RECE_END
*/
RD_TX: PUSH ACC
PUSH DPH
PUSH DPL
PUSH 00H
PUSH B
PUSH PSW
JBC RI,RECEDATA
JBC TI,KTH
KTH: POP PSW
POP B
POP 00H
POP DPL
POP DPH
POP ACC
RETI
RECE_END: CLR RECE_1
CLR RECE_2
CLR RECE_3
CLR RECE_4
CLR RECE_5
LJMP KTH
RECEDATA: ;ljmp recedata
JNB RECE_BZ,RECE_END
RECE_READ: JB RECE_1,RECE_READ1
MOV A,SBUF
CLR C
SUBB A,#33H;
JNZ RECE_END
mov TX_TIME,#200
SETB RECE_1
LJMP KTH
RECE_READ1: JB RECE_2,RECE_READ2
MOV A,SBUF
CLR C
SUBB A,#52H;40H为起始数据
JNZ RECE_END
SETB RECE_2
LJMP KTH
RECE_READ2: JB RECE_3,RECE_READ3
MOV A,SBUF
CLR C
SUBB A,#00H;40H为起始数据
JNZ RECE_END
SETB RECE_3
; LJMP SENDD1
LJMP KTH
RECE_READ3: JB RECE_4,RECE_READ4
MOV A,SBUF
CLR C
SUBB A,#02H;40H为起始数据
JNZ RECE_END
SETB RECE_4
; LJMP SENDD1
LJMP KTH
RECE_READ4: JB RECE_5,RECE_READ5
MOV A,SBUF
CLR C
SUBB A,#87H;40H为起始数据
JNZ RECE_END
SETB RECE_5
LJMP SENDD1
LJMP KTH
RECE_READ5:
SENDD1: LCALL SENDRD;回传读数据
SETB RT485
CLR EA
TTY: SETB RECE_BZ
CLR RECE_1
CLR RECE_2
CLR RECE_3;
CLR RECE_4
CLR RECE_5;1
SETB RECE_BZ
; SETB 9DH
SETB ES
SETB EA
LJMP RECE_END
WRDATA: ; MOV RECE_BYE1,#15
LJMP tty
PDERR2: LCALL PDERR
LJMP TTY
SENDC9: LCALL SENDC
LJMP TTY
;=====================================
;入口R2->R6低,r7高
HASCIA: MOV A,R2
ANL A,#0FH
ADD A,#0F6H
MOV A,R2
ANL A,#0FH
JNC AD30
ADD A,#07H
AD30: ADD A,#30H
MOV R6,A
HASCIB: MOV A,R2
ANL A,#0F0H
SWAP A
ADD A,#0F6H
MOV A,R2
ANL A,#0F0H
SWAP A
JNC AD31
ADD A,#07H
AD31: ADD A,#30H
MOV R7,A
RET
;============
ASCHEX: MOV A,R2
CLR C
SUBB A,#30H
MOV R2,A
SUBB A,#0AH
JC RETY
MOV A,R2
SUBB A,#07H
MOV R2,A
RETY: MOV A,R3
CLR C
SUBB A,#30H
MOV R3,A
SUBB A,#0AH
JC RETT
MOV A,R3
SUBB A,#07H
MOV R3,A
RETT: MOV A,R3
ANL A,#0FH
MOV R3,A
MOV A,R2
SWAP A
ANL A,#0F0H
ORL A,R3
MOV R3,A
RET
;=======================================
DELAY40: MOV R5,#10
LCALL wdt_dog
DJNZ R5,$
RET
sendc: RET
;=======================================
SENDRD: ; CLR ES
SETB RT485
MOV KKKK,#0
CLR RECE_BZ
SEDADD: MOV A,#33H
MOV SBUF,A
ADD A,KKKK
MOV KKKK,A
SEDCOM: ;LCALL WDOG
JNB TI,SEDCOM
CLR TI
LCALL DELAY40
MOV A,#08H
MOV SBUF,A
ADD A,KKKK
MOV KKKK,A
SEDDAT: ;LCALL WDOG
JNB TI,SEDDAT
CLR TI
LCALL DELAY40
mov r3,#7
;MOV R0,#MA1_DATAH
MOV R0,#DSPLA_ADD3
YIP: MOV A,@R0
MOV SBUF,A
ADD A,KKKK
MOV KKKK,A
PPPA: ; LCALL WDOG
JNB TI,PPPA
CLR TI
INC R0
tyu: ; lcall rst_wdog
; jnb ri,TYU
; clr ri
LCALL DELAY40
DJNZ R3,YIP
SEDXSD: ;LCALL WDOG
;MOV A,#00H; XSDIG1
MOV A,XSDIG1
MOV SBUF,A
ADD A,KKKK
MOV KKKK,A
SEDSUM: ; LCALL WDOG
JNB TI,SEDSUM
CLR TI
MOV A,KKKK
MOV SBUF,A
SEDSUM1: JNB TI,SEDSUM1
CLR TI
LCALL DELAY40
MOV TX_TIME,#30
SETB RECE_BZ
CLR RT485
SETB ES
RET
/*
SENDRD: CLR ES
SETB RT485
CLR RECE_BZ
plh: lcall wdt_dog
; jnb ri,plh
clr ri
mov r3,#9
MOV R0,#DSPLA_ADD1
YIP: MOV A,@R0
MOV SBUF,A
PPPA: LCALL wdt_dog
JNB TI,PPPA
CLR TI
tyu: lcall wdt_dog
; jnb ri,TYU
clr ri
INC R0
LCALL DELAY40
DJNZ R3,YIP
mov sbuf,xsdig1
d888: lcall wdt_dog
jnb ti,d888
clr ti
MOV TX_TIME,#30
SETB RECE_BZ
CLR RT485
RET
;.........................
SENDTX: CLR ES
SETB RT485
CLR SEND_BZ
MOV A,#40H
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,ADDH
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,ADDL
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,#23H
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,#23H
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,ADDH
XRL A,ADDL
MOV R2,A
LCALL HASCIA
MOV A,R7
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,R6
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,#0DH
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
SETB RECE_BZ
CLR RT485
;SETB ES
RET
*/
PDERR: CLR ES
SETB RT485
CLR RECE_BZ
MOV A,#40H
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,ADDH
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,ADDL
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,#2AH
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,#2AH
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
MOV A,ADDH
XRL A,ADDL
MOV R2,A
LCALL HASCIA
MOV A,R7
MOV SBUF,A
JNB TI,$
CLR TI
LCALL DELAY40
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -