📄 jiancepan.asm
字号:
INC R0
MOV @R0,#0D2H
INC R0
MOV @R0,#00H
CLR P1.3
CLR P1.4
MOV 29H,#05H
MOV A,B
XRL A,27H
JNZ REP10
JB 30H,TIME10
REP10: CLR P1.5
SETB 30H
MOV 21H,#0AH
MOV 22H,#0AH
MOV 27H,B
MOV DPTR,#7FFAH
MOV A,#0FFH
MOVX @DPTR,A
LCALL DELAY10MS
TIME10: RET
STROE11: MOV @R0,0D3H
INC R0
MOV @R0,0D2H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
CLR P1.3
SETB P1.4
MOV 29H,#04H
MOV A,B
XRL A,27H
JNZ REP11
JB 30H,TIME11
REP11: CLR P1.5
SETB 30H
MOV 21H,#0AH
MOV 22H,#0AH
MOV 27H,B
MOV DPTR,#7FFAH
MOV A,#0FFH
MOVX @DPTR,A
LCALL DELAY10MS
TIME11: RET
STROE12: MOV @R0,#0D4H
INC R0
MOV @R0,#0D3H
INC R0
MOV @R0,#0D2H
INC R0
MOV @R0,#00H
CLR P1.3
SETB P1.4
MOV 29H,#05H
MOV A,B
XRL A,27H
JNZ REP12
JB 30H,TIME12
REP12: CLR P1.5
SETB 30H
MOV 21H,#0AH
MOV 22H,#0AH
MOV 27H,B
MOV DPTR,#7FFAH
MOV A,#0FFH
MOVX @DPTR,A
LCALL DELAY10MS
TIME12: RET
STROE13: MOV @R0,#0D1H
INC R0
MOV @R0,#0D3H
INC R0
MOV @R0,#0D2H
INC R0
MOV @R0,#00H
CLR P1.3
CLR P1.4
MOV 29H,#05H
MOV A,B
XRL A,27H
JNZ REP13
JB 30H,TIME13
REP13: CLR P1.5
SETB 30H
MOV 21H,#0AH
MOV 22H,#0AH
MOV 27H,B
MOV DPTR,#7FFAH
MOV A,#0FFH
MOVX @DPTR,A
LCALL DELAY10MS
TIME13: RET
STROE14: MOV @R0,#0D4H
INC R0
MOV @R0,#0D1H
INC R0
MOV @R0,#0D3H
INC R0
MOV @R0,#0D2H
CLR P1.3
CLR P1.4
MOV 29H,#06H
MOV A,B
XRL A,27H
JNZ REP14
JB 30H,TIME14
REP14: CLR P1.5
SETB 30H
MOV 21H,#0AH
MOV 22H,#0AH
MOV 27H,B
MOV DPTR,#7FFAH
MOV A,#0FFH
MOVX @DPTR,A
LCALL DELAY10MS
TIME14: RET
EXIT0: SETB P1.2
SETB P1.3
SETB P1.4
SETB P1.5
MOV @R0,#00H
MOV 2CH,#00H
MOV 29H,#03H
CLR C
MOV 30H,C
MOV A,B
XRL A,27H
JNZ REP15
LJMP TIME15
REP15: MOV DPTR,#7FFAH
MOV A,#0FFH
MOVX @DPTR,A
LCALL DELAY10MS
MOV 27H,B
TIME15: RET
;***************************************************
; 读取板位信息服务程序
;***************************************************
BOARD: MOV DPTR,#8500H
MOVX A,@DPTR
MOV DPTR,#8500H
MOVX A,@DPTR
MOV 2BH,A
MOV DPTR,#8100H
MOVX A,@DPTR
MOV DPTR,#8100H
MOVX A,@DPTR
RR A
RR A
RR A
RR A
ANL A,#03H
MOV 2AH,A
RET
COMPARE: MOV A,@R1
INC R1
CLR PSW.6
CLR PSW.7
SUBB A,@R1
JZ EN
JNC EN
MOV A,@R1
EN: MOV @R0,A
INC R0
INC R1
DJNZ R2,COMPARE
MOV R0,B
MOV A,@R0
RET
;****************************************************
; RUNLED服务程序
;****************************************************
RUN: CLR TR0
DJNZ 20H,CNU0
CPL P1.0 ;喂狗
CPL P1.0
CPL P1.1 ;点亮RUNLED
MOV 20H,#0AH
MOV TH0,#3CH
MOV TL0,#0B0H
JNB 30H,CNU0
DJNZ 21H,CNU0
SETB P1.5
MOV 21H,#0AH
DJNZ 22H,CNU0
CLR C
MOV 30H,C
CNU0: SETB TR0
RETI
;****************************************************
; 串行通信服务程序
;****************************************************
UART: PUSH ACC
PUSH PSW
PUSH 0F0H
PUSH DPL
PUSH DPH
SETB RS0
CLR RS1
SETB 26H.1
JBC RI,REV0
JBC TI,SED0
LJMP EXIT1
SED0: JB 24H.2,SE0 ;发送数据块长度标识
JB 24H.3,SE1 ;发送数据块内容标识
JB 24H.4,SE2
JB 24H.5,SE4
JB 24H.6,SE5
LJMP EXIT1
SE0: LJMP SED1 ;发送数据块长度
SE1: LJMP SED2 ;发送数据块内容
SE2: JNB 24H.6,SE3
LJMP EXIT2
SE3: LJMP SED3 ;发送校验和低字节
SE4: LJMP SED4 ;发送校验和高字节
SE5: LJMP EXIT2
REV0: JB 24H.0,REV2 ;接收数据块长度标识
JB 24H.1,RE3 ;接收数据块内容标识
LJMP RE4
RE3: LJMP REV3
RE4: JNB RB8,RE0
LJMP RE1
RE0: LJMP EXIT1
RE1: MOV A,SBUF
CJNE A,#00H,RE6
LJMP RE5
RE6: LJMP REV1
RE5: CLR SM2
SETB 24H.0
MOV R0,#80H
MOV R6,#00H
MOV R7,#00H
MOV TL1,#00H
MOV TH1,#0EFH
SETB TR1
LJMP EXIT1
REV2: CLR TR1
MOV @R0,SBUF
MOV A,SBUF
LCALL CHECKOUT
MOV A,SBUF
ADD A,#01H
MOV R5,A
CLR 24H.0
SETB 24H.1
MOV TL1,#00H
MOV TH1,#0EFH
SETB TR1
LJMP EXIT1
REV4: CLR TR1
MOV A,SBUF
MOV @R0,A
MOV A,SBUF
LCALL CHECKOUT
MOV R4,#02H
MOV TL1,#00H
MOV TH1,#0EFH
SETB TR1
CLR P1.2
TEMP: LJMP EXIT1
REV1: CJNE A,#0FFH,RE2
LJMP REV5
RE2: LJMP REV5
REV5: SETB SM2
MOV 24H,#00H
CLR TR1
SETB P3.4
LJMP EXIT1
REV3: JB RB8,REV5
CLR TR1
MOV A,R5
XRL A,#01H
JZ REV6
INC R0
DJNZ R5,REV4
REV6: CLR TR1
INC R0
MOV A,SBUF
MOV @R0,A
MOV TL1,#00H
MOV TH1,#0EFH
SETB TR1
DJNZ R4,TEMP
MOV A,@R0
MOV 23H,R7
CJNE A,23H,TEMP
DEC R0
MOV A,@R0
MOV 23H,R6
CJNE A,23H,TEMP
CLR REN
SETB SM2
CLR P3.4
CLR 24H.1
SETB 24H.2
MOV R6,#00H
MOV R7,#00H
SETB TB8
MOV SBUF,#00H
MOV TL1,#00H
MOV TH1,#0EFH
SETB TR1
LJMP EXIT1
SED1: CLR TB8
CLR TR1
MOV SBUF,29H
MOV A,29H
LCALL CHECKOUT
CLR 24H.2
SETB 24H.3
MOV R5,29H
MOV R0,#29H
MOV TL1,#00H
MOV TH1,#0EFH
SETB TR1
LJMP EXIT1
SED2: CLR TR1
INC R0
MOV SBUF,@R0
MOV A,@R0
LCALL CHECKOUT
DJNZ R5,SE6
CLR 24H.3
SETB 24H.4
SE6: MOV TL1,#00H
MOV TH1,#0EFH
SETB TR1
LJMP EXIT1
SED3: CLR TR1
MOV SBUF,R6
CLR 24H.4
SETB 24H.5
MOV TL1,#00H
MOV TH1,#0EFH
SETB TR1
LJMP EXIT1
SED4: CLR TR1
MOV SBUF,R7
CLR 24H.5
SETB 24H.6
MOV TL1,#00H
MOV TH1,#0EFH
SETB TR1
SETB REN
LJMP EXIT1
;*************************************************
; 接收或发送中断退出服务程序
;*************************************************
EXIT1: CLR TI
CLR RI
POP DPH
POP DPL
POP 0F0H
POP PSW
POP ACC
RETI
;***********************************************
; 最后一次中断服务程序
;***********************************************
EXIT2: CLR TR1
MOV 24H,#00H
SETB REN
SETB P3.4
POP DPH
POP DPL
POP 0F0H
POP PSW
POP ACC
RETI
;************************************************
; 通信超时服务程序
;************************************************
UARTE: CLR TR1
CLR TI
CLR RI
MOV 24H,#00H
SETB REN
SETB P3.4
POP DPH
POP DPL
POP 0F0H
POP PSW
POP ACC
RETI
;************************************************
; 计算校验和服务程序
;************************************************
CHECKOUT: CLR PSW.6
CLR PSW.7
ADD A,R6
MOV R6,A
MOV A,R7
ADDC A,#00H
MOV R7,A
RET
;*************************************************
; 故障信息存储服务程序
;*************************************************
STORE: PUSH ACC
PUSH 0F0H
PUSH PSW
PUSH DPL
PUSH DPH
CLR RS0
SETB RS1
MOV A,25H
JNZ UAT
MOV R0,#87H
MOV A,@R0
JNZ UA
MOV A,2CH
JNZ UA
MOV DPTR,#7FFAH
MOVX A,@DPTR
JZ REPET0
LJMP REPET
REPET0: LJMP EXIT
UA: LJMP UNT0
UAT: MOV DPTR,#7FFAH
MOVX A,@DPTR
JZ UAT1
AJMP UAT0
UAT1: LJMP EXIT
UAT0: MOV A,29H
SUBB A,#02H
JC UAT2
LJMP UAT3
UAT2: LJMP EXIT
UAT3: ADD A,#01H
MOV B,A
LCALL STORETEST
MOV A,#0D5H
MOVX @DPTR,A
LCALL DELAY10MS
MOV A,29H
CLR PSW.6
CLR PSW.7
SUBB A,#02H
JC QQ0
JZ QQ0
LJMP QQ1
QQ0: LJMP EXIT
QQ1: MOV R1,A
MOV R0,#2CH
INC DPTR
CU0: MOV A,@R0
MOVX @DPTR,A
LCALL DELAY10MS
INC R0
INC DPTR
DJNZ R1,CU0
LJMP EXIT
UNT0: MOV DPTR,#7FFAH
MOVX A,@DPTR
JZ EXIT
MOV B,#00H
MOV R0,#87H
MOV A,@R0
JZ NT0
MOV B,#01H
NT0: MOV A,29H
CLR PSW.6
CLR PSW.7
SUBB A,#02H
JC EXIT
ADD A,B
ADD A,#06H
XCH A,0F0H
LCALL STORETEST
ADD A,#06H
MOV R1,A
MOV R0,#81H
CU1: MOV A,@R0
MOVX @DPTR,A
LCALL DELAY10MS
INC R0
INC DPTR
DJNZ R1,CU1
MOV A,29H
CLR PSW.6
CLR PSW.7
SUBB A,#03H
JC EXIT
JZ CU4
MOV R1,A
MOV R0,#2CH
INC R1
CU2: MOV A,@R0
MOVX @DPTR,A
LCALL DELAY10MS
INC R0
INC DPTR
DJNZ R1,CU2
LJMP EXIT
CU4: MOV A,2CH
MOVX @DPTR,A
LCALL DELAY10MS
INC DPTR
LJMP EXIT
REPET: MOV B,#07H
LCALL STORETEST
MOV R1,#06H
MOV R0,#81H
CU3: MOV A,@R0
MOVX @DPTR,A
LCALL DELAY10MS
INC R0
INC DPTR
DJNZ R1,CU3
MOV A,#00H
MOVX @DPTR,A
LCALL DELAY10MS
EXIT: MOV DPTR,#7FFAH
CLR A
MOVX @DPTR,A
LCALL DELAY10MS
POP DPH
POP DPL
POP PSW
POP 0F0H
POP ACC
RET
STORETEST: PUSH ACC
PUSH 0F0H
MOV DPTR,#7FF8H
MOVX A,@DPTR
CLR PSW.6
CLR PSW.7
ADD A,B
MOV R2,A
INC DPTR
MOVX A,@DPTR
ADDC A,#00H
MOV R3,A
CLR PSW.6
CLR PSW.7
MOV A,#0F7H
SUBB A,R2
MOV A,#7FH
SUBB A,R3
JC REDPTR
MOV DPTR,#7FF8H
MOVX A,@DPTR
MOV R4,A
MOV A,R2
MOVX @DPTR,A
LCALL DELAY10MS
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV A,R3
MOVX @DPTR,A
LCALL DELAY10MS
MOV DPL,R4
MOV DPH,R5
INC DPTR
LJMP STOREX
REDPTR: CLR PSW.6
CLR PSW.7
CLR A
ADD A,B
MOV B,A
MOV DPTR,#7FF8H
MOV A,B
MOVX @DPTR,A
LCALL DELAY10MS
INC DPTR
MOV A,#00H
MOVX @DPTR,A
LCALL DELAY10MS
MOV DPTR,#0000H
STOREX: POP 0F0H
POP ACC
RET
;******************************************************
; 故障实时监测服务程序
;******************************************************
TEST: PUSH ACC
PUSH 0F0H
JBC 26H.1,CONTIU0
MOV 25H,#0D5H
SETB 26H.4
LJMP CONTIU1
CONTIU0: MOV 25H,#00H
CLR 26H.4
CONTIU1: MOV R0,#87H
MOV A,@R0
JZ CONTIU2
SETB 26H.5
LJMP CONTIU5
CONTIU2: CLR 26H.5
CONTIU5: MOV A,26H
ANL A,#0F0H
MOV B,A
MOV DPTR,#7FFBH
MOVX A,@DPTR
CJNE A,0F0H,CONTIU3
LJMP CONTIU4
CONTIU3: MOV DPTR,#7FFAH
MOV A,#0FFH
MOVX @DPTR,A
LCALL DELAY10MS
CONTIU4: MOV DPTR,#7FFBH
MOV A,B
MOVX @DPTR,A
LCALL DELAY10MS
POP 0F0H
POP ACC
RET
;**************************************************
; 延时500MS子程序
;**************************************************
DELAY500MS: MOV R5,#38H
DELAY2: LCALL DELAY10MS
DJNZ R5,DELAY2
RET
;**************************************************
; 延时10MS子程序
;**************************************************
DELAY10MS: MOV R7,#0AH
DELOP0: MOV R6,#0FFH
DELOP1: NOP
NOP
DJNZ R6,DELOP1
DJNZ R7,DELOP0
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -