📄 jiancepan.asm
字号:
ORG 0000H
LJMP START
ORG 000BH ;TR0中断入口地址
LJMP RUN
ORG 001BH ;TR1中断入口地址
LJMP UARTE
ORG 0023H ;串行通信中断入口地址
LJMP UART
START: MOV SP,#60H ;设置堆栈指针为60H
SETB P1.2
SETB P1.3
SETB P1.4
SETB P1.5
MOV R1,#10H
MOV R0,#20H
CLR0: MOV @R0,#00H
INC R0
DJNZ R1,CLR0
MOV R1,#10H
MOV R0,#80H
CLR1: MOV @R0,#00H
INC R0
DJNZ R1,CLR1
MOV TCON,#00H ;TR0初始化程序
MOV TMOD,#11H
MOV TH0,#3CH
MOV TL0,#0B0H
CLR P1.0
CLR P1.1
SETB EA ;开中断
SETB ET0 ;允许TR0中断
SETB TR0
MOV 20H,#0AH
;*******************************************************
; 串行通信初始化程序
;*******************************************************
MOV TL1,#00H
MOV TH1,#0EFH
MOV SCON,#0F0H
SETB ES
SETB PS
SETB ET1
MOV 0CAH,#0DCH
MOV 0CBH,#0FFH
MOV 0CCH,#0DCH
MOV 0CDH,#0FFH
SETB 0CCH
SETB 0CDH
SETB 0CAH
MOV 24H,#00H
START0: MOV R1,#30H
MOV R0,#30H
MOV 28H,#00H
CR: MOV @R0,#00H
INC R0
DJNZ R1,CR
LCALL BOARD
LCALL TRUBTEST
LCALL DELAY500MS
LCALL TEST
LCALL STORE
SETB P1.2
LJMP START0
;****************************************************
; 故障检测服务程序
;****************************************************
TRUBTEST: MOV R5,#03H
LOP1: MOV R4,#03H
LOP0: MOV R3,#0FH
LOOP: MOV R1,#10H
MOV R0,#30H
CR0: MOV @R0,#00H
INC R0
DJNZ R1,CR0
MOV DPTR,#8100H
MOV R1,#0FH
RDR: MOVX A,@DPTR
ANL A,#0FH
ORL A,#30H
MOV R0,A
INC @R0
DJNZ R1,RDR
MOV R2,#08H
MOV R1,#30H
MOV R0,#40H
MOV B,R0
LCALL COMPARE
MOV R2,#04H
MOV R1,#40H
MOV R0,#40H
MOV B,R0
LCALL COMPARE
MOV R2,#03H
MOV R1,#40H
MOV R0,#40H
MOV B,R0
LCALL COMPARE
MOV R2,#01H
MOV R1,#40H
MOV R0,#40H
MOV B,R0
LCALL COMPARE
MOV R1,#10H
MOV R0,#2FH
FD1: INC R0
MOV A,@R0
CLR PSW.6
CLR PSW.7
SUBB A,40H
JZ XIANGD1
DJNZ R1,FD1
XIANGD1: MOV A,R0
ANL A,#0FH
ORL A,#50H
MOV R0,A
INC @R0
DJNZ R3,LOOP
MOV R2,#08H
MOV R1,#50H
MOV R0,#50H
MOV B,R0
LCALL COMPARE
MOV R2,#04H
MOV R1,#50H
MOV R0,#50H
MOV B,R0
LCALL COMPARE
MOV R2,#02H
MOV R1,#50H
MOV R0,#50H
MOV B,R0
LCALL COMPARE
MOV R2,#01H
MOV R1,#50H
MOV R0,#50H
MOV B,R0
LCALL COMPARE
MOV R1,#10H
MOV R0,#2FH
FD0: INC R0
MOV A,@R0
CLR PSW.6
CLR PSW.7
SUBB A,40H
JZ XIANGD0
DJNZ R1,FD0
XIANGD0: MOV A,R0
CLR PSW.6
CLR PSW.7
MOV B,A
MOV A,R4
ADD A,#4CH
MOV R0,A
MOV @R0,B
MOV A,B
DJNZ R4,KG1
AJMP KG2
KG1: LJMP LOP0
KG2: XRL A,4EH
JZ KG0
LJMP LOP1
KG0: MOV A,B
XRL A,4FH
JZ KG3
LJMP LOP1
KG3: MOV A,B
CLR PSW.6
CLR PSW.7
MOV B,A
MOV A,R5
ADD A,#48H
MOV R0,A
MOV @R0,B
MOV A,B
DJNZ R5,KG5
AJMP KG6
KG5: LJMP LOP1
KG6: MOV A,B
XRL A,4AH
JZ KG7
RET
KG7: MOV A,B
XRL A,4BH
JZ KG8
RET
KG8: MOV A,4BH
LCALL CHK
RET
CHK: MOV B,A
MOV R0,#2CH
ANL A,#00000001B ;检测RING
JZ TT0
SETB 40H
TT0: MOV A,B ;检测24V
ANL A,#00000010B
JNZ TT1
SETB 41H
TT1: MOV A,B ;检测TONE
ANL A,#00000100B
JZ TT2
SETB 42H
TT2: MOV A,B ;AC交流检测
ANL A,#00001000B
JZ TT3
SETB 43H
TT3: MOV A,28H
MOV B,A
XRL A,#00H ;检测是否为无故障
JZ TT4
LJMP TT5
TT4: LJMP EXIT0
TT5: MOV A,B ;是否为 RING
CLR PSW.7
CLR PSW.6
SUBB A,#01H
JZ TMP0
LJMP TMP1
TMP0: LJMP STROE0
TMP1: MOV A,B ;是否为 24V
CLR PSW.7
CLR PSW.6
SUBB A,#02H
JZ TMP2
LJMP TMP3
TMP2: LJMP STROE1
TMP3: MOV A,B ;是否为 24V+RING
CLR PSW.7
CLR PSW.6
SUBB A,#03H
JZ TMP4
LJMP TMP5
TMP4: LJMP STROE2
TMP5: MOV A,B ;是否为 450HZ
CLR PSW.7
CLR PSW.6
SUBB A,#04H
JZ TMP6
LJMP TMP7
TMP6: LJMP STROE3
TMP7: MOV A,B ;是否为 450HZ+RING
CLR PSW.7
CLR PSW.6
SUBB A,#05H
JZ TMP8
LJMP TMP9
TMP8: LJMP STROE4
TMP9: MOV A,B ;是否为 450HZ+24V
CLR PSW.7
CLR PSW.6
SUBB A,#06H
JZ TMP10
LJMP TMP11
TMP10: LJMP STROE5
TMP11: MOV A,B ;是否为 450HZ+24V+RING
CLR PSW.7
CLR PSW.6
SUBB A,#07H
JZ TMP12
LJMP TMP13
TMP12: LJMP STROE6
TMP13: MOV A,B ;是否为无AC
CLR PSW.7
CLR PSW.6
SUBB A,#08H
JZ TMP14
LJMP TMP15
TMP14: LJMP STROE7
TMP15: MOV A,B ;是否为 AC+RING
CLR PSW.7
CLR PSW.6
SUBB A,#09H
JZ TMP16
LJMP TMP17
TMP16: LJMP STROE8
TMP17: MOV A,B ;是否为 AC+24V
CLR PSW.7
CLR PSW.6
SUBB A,#0AH
JZ TMP18
LJMP TMP19
TMP18: LJMP STROE9
TMP19: MOV A,B ;是否为 AC+24V+RING
CLR PSW.7
CLR PSW.6
SUBB A,#0BH
JZ TMP20
LJMP TMP21
TMP20: LJMP STROE10
TMP21: MOV A,B ;是否为 AC+450HZ
CLR PSW.7
CLR PSW.6
SUBB A,#0CH
JZ TMP22
LJMP TMP23
TMP22: LJMP STROE11
TMP23: MOV A,B ;是否为 AC+450HZ+RING
CLR PSW.7
CLR PSW.6
SUBB A,#0DH
JZ TMP24
LJMP TMP25
TMP24: LJMP STROE12
TMP25: MOV A,B ;是否为 AC+450HZ+24V
CLR PSW.7
CLR PSW.6
SUBB A,#0EH
JZ TMP26
LJMP TMP27
TMP26: LJMP STROE13
TMP27: MOV A,B ;是否为 AC+450HZ+24V+RING
CLR PSW.7
CLR PSW.6
SUBB A,#0FH
JZ TMP28
LJMP TMP29
TMP28: LJMP STROE14
TMP29: LJMP EXIT0
STROE0: MOV @R0,#0D4H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
SETB P1.3
SETB P1.4
MOV 29H,#03H
MOV A,B
XRL A,27H
JNZ REP0
JB 30H,TIME0
REP0: 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
TIME0: RET
STROE1: MOV @R0,#0D1H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
SETB P1.3
CLR P1.4
MOV 29H,#03H
MOV DPTR,#7FFAH
MOV A,#0FFH
MOVX @DPTR,A
LCALL DELAY10MS
MOV A,B
XRL A,27H
JNZ REP1
JB 30H,TIME1
REP1: 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
TIME1: RET
STROE2: MOV @R0,#0D4H
INC R0
MOV @R0,#0D1H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
SETB P1.3
CLR P1.4
MOV 29H,#04H
MOV A,B
XRL A,27H
JNZ REP2
JB 30H,TIME2
REP2: 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
TIME2: RET
STROE3: MOV @R0,#0D3H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
SETB P1.3
SETB P1.4
MOV 29H,#03H
MOV A,B
XRL A,27H
JNZ REP3
JB 30H,TIME3
REP3: 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
TIME3: RET
STROE4: MOV @R0,#0D4H
INC R0
MOV @R0,#0D3H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
SETB P1.3
SETB P1.4
MOV 29H,#04H
MOV A,B
XRL A,27H
JNZ REP4
JB 30H,TIME4
REP4: 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
TIME4: RET
STROE5: MOV @R0,#0D1H
INC R0
MOV @R0,#0D3H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
SETB P1.3
CLR P1.4
MOV 29H,#04H
MOV A,B
XRL A,27H
JNZ REP5
JB 30H,TIME5
REP5: 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
TIME5: RET
STROE6: MOV @R0,#0D4H
INC R0
MOV @R0,#0D1H
INC R0
MOV @R0,#0D3H
INC R0
MOV @R0,#00H
SETB P1.3
CLR P1.4
MOV 29H,#05H
MOV A,B
XRL A,27H
JNZ REP6
JB 30H,TIME6
REP6: 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
TIME6: RET
STROE7: MOV @R0,#0D2H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
CLR P1.3
SETB P1.4
MOV 29H,#03H
MOV A,B
XRL A,27H
JNZ REP7
JB 30H,TIME7
REP7: 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
TIME7: RET
STROE8: MOV @R0,#0D4H
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 REP8
JB 30H,TIME8
REP8: 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
TIME8: RET
STROE9: MOV @R0,#0D1H
INC R0
MOV @R0,#0D2H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
CLR P1.3
CLR P1.4
MOV 29H,#04H
MOV A,B
XRL A,27H
JNZ REP9
JB 30H,TIME9
REP9: 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
TIME9: RET
STROE10: MOV @R0,#0D4H
INC R0
MOV @R0,#0D1H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -