📄 vdr2(0829).asm
字号:
SETB P1.1
MOV P0,#0FFH
CLR P2.0
MOV P0,#7FH
SETB P2.1
NOP
NOP
NOP
LCALL DELAYSHORT
NOP
NOP
NOP
CLR P1.1
SETB P1.1
CLR P1.1
SETB P1.1
NOP
NOP
MOV P0,#0FFH
CLR P2.1
MOV P0,#7FH
SETB P2.2
NOP
NOP
NOP
LCALL DOG
NOP
NOP
NOP
LCALL DELAYSHORT
NOP
NOP
NOP
CLR P1.1
SETB P1.1
CLR P1.1
SETB P1.1
MOV P0,#0FFH
CLR P2.2
MOV P0,#7FH
SETB P2.3
NOP
NOP
NOP
LCALL DELAYSHORT
NOP
NOP
NOP
CLR P1.1
SETB P1.1
CLR P1.1
SETB P1.1
MOV P0,#0FFH
CLR P2.3
MOV P0,#7FH
SETB P2.4
NOP
NOP
NOP
LCALL DELAYSHORT
NOP
NOP
NOP
CLR P1.1
SETB P1.1
CLR P1.1
SETB P1.1
NOP
NOP
NOP
LCALL DELAYSHORT
NOP
NOP
NOP
MOV P0,#0FFH
CLR P2.4
MOV P0,#7FH
CLR P1.1
SETB P1.1
CLR P1.1
SETB P1.1
MOV P0,#7FH
SETB P2.0
NOP
NOP
NOP
LCALL DELAYSHORT
NOP
NOP
NOP
CLR P1.1
SETB P1.1
CLR P1.1
SETB P1.1
MOV P0,#0FFH
CLR P2.0
MOV P0,#7FH
SETB P2.1
NOP
NOP
NOP
LCALL DELAYSHORT
NOP
NOP
NOP
CLR P1.1
SETB P1.1
CLR P1.1
SETB P1.1
MOV P0,#0FFH
CLR P2.1
MOV P0,#7FH
SETB P2.2
NOP
NOP
NOP
LCALL DOG
NOP
NOP
NOP
LCALL DELAYSHORT
NOP
NOP
NOP
CLR P1.1
SETB P1.1
CLR P1.1
SETB P1.1
MOV P0,#0FFH
CLR P2.2
MOV P0,#7FH
SETB P2.3
NOP
NOP
NOP
LCALL DELAYSHORT
NOP
NOP
NOP
CLR P1.1
SETB P1.1
CLR P1.1
SETB P1.1
MOV P0,#0FFH
CLR P2.3
MOV P0,#7FH
SETB P2.4
NOP
NOP
NOP
LCALL DELAYSHORT
NOP
NOP
NOP
NOP
MOV P0,#0FFH
CLR P2.4
CLR P1.1
SETB P1.1
CLR P1.1
SETB P1.1
NOP
NOP
NOP
LCALL DELAYSHORT
NOP
NOP
NOP
LCALL DOG
NOP
NOP
NOP
RET
;*****************************************************************************************
;******************************************************************************************
TIME0: NOP
PUSH A
MOV TH0,#03CH
MOV TL0,#0AFH
INC SWITCHTIME ;每次0。05秒,4秒报警,即SWITCHTIME大于80
MOV A,SWITCHTIME
CJNE A,#0FFH,RE1
MOV A,#051H
MOV SWITCHTIME,A
RE1: POP A
RETI
;*****************************************************************************************
;**********LANC RECEIVE INI SERVE PROGRAM*************************************************
RECEIVE: NOP
PUSH PSW
PUSH A
RETN: JNB RI,RETN
CLR RI
MOV A, SBUF
RECE1: CJNE A,#24H,RECE2
MOV R6,#00H
MOV SWITCHDATA,#00H
MOV R1,#ADRECDATA ;FIRST CHAR $?
MOV @R1,A
LJMP RETURN
RECE2: CJNE R6,#01H,RECE3
CJNE A,#4CH,RETN1
MOV @R1,#4CH ;SECORD CHAR L?
LJMP RETURN
RECE3: CJNE R6,#02H,RECE4
CJNE A,#45H,RETN1
MOV @R1,#45H ;THRID CHAR E?
LJMP RETURN
RECE4: CJNE R6,#03H,RECE13
CJNE A,#44H,RETN1
MOV @R1,#44H ;FOUR CHAR D?
LJMP RETURN
RECE13: CJNE R6,#0CH,RECE14
CJNE A,#0DH,RETN1
MOV @R1,#0DH ;13 CHAR <CR> ?
LJMP RETURN
RECE14: CJNE R6,#0DH,OTHER
CJNE A,#0AH,RETN1
MOV @R1,#0AH ; CHAR <LF>?
LCALL SAVEDATA ;如果接受正常,将数据存入显示RAM,否则不管
LJMP RETURN
OTHER: MOV @R1,A
LJMP RETURN
RETN1: MOV SWITCHDATA,#0FFH
RETURN: NOP
INC R6
INC R1
CJNE R6,#0EH,RELOOP
MOV R6,#00H
MOV R1,#ADRECDATA
RELOOP:
POP A
POP PSW
RETI
;****************************************************************************************
;****************************************************************************************
SAVEDATA:
MOV R0,SWITCHDATA
CJNE R0,#00H,NOTSAVE
MOV 60H,70H
MOV 61H,71H
MOV 62H,72H
MOV 63H,73H
MOV 64H,74H
MOV 65H,75H
MOV 66H,76H
MOV 67H,77H
MOV 68H,78H
MOV 69H,79H
MOV 6AH,7AH
MOV 6BH,7BH
MOV 6CH,7CH
MOV 6DH,7DH ;接受到正确数据SWITCHTIME归0
MOV SWITCHTIME,#00H ;没有收到数据和收到无效的数据看作一种情况。
MOV NEWDATA,#0FFH ;>于4秒均报警
NOTSAVE:NOP
MOV SWITCHDATA,#00H
RET
;*****************************************************************************************
;*****************************************************************************************
DELAYSHORT:
NOP
NOP
MOV R4,#01H
DELY0: MOV R3,#0A0H
DELY1: MOV R2,#0FFH
DELY2: NOP
DJNZ R2,DELY2
DJNZ R3,DELY1
DJNZ R4,DELY0
RET
;****************************************************************************************
;*****************************************************************************************
DELAY:
NOP
NOP
MOV R4,#03H
DEL0: MOV R3,#0FFH
DEL1: MOV R2,#0FFH
DEL2: NOP
DJNZ R2,DEL2
DJNZ R3,DEL1
DJNZ R4,DEL0
RET
;***********WATCHDOG****************
DOG: CPL P1.7
NOP
CPL P1.7
RET
TABNUM: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -