📄 铅酸电池修复程序.asm
字号:
WEI EQU 20H
ORG 0000H
SJMP MAIN
ORG 000BH
AJMP ZHONG
MAIN: MOV P3,#7FH
MOV P2,#00H
MOV P1,#7FH
MOV 20H,#0
MOV 21H,#15
MOV 22H,#11
MOV 23H,#3
MOV 24H,#10
MOV 25H,#5
MOV 26H,#3
MOV 27H,#12
MOV 28H,#0
MOV 29H,#0
MOV 2AH,#0
MOV 2BH,#0
MOV 2CH,#0
MOV 2DH,#3
MOV 2EH,#5
MOV 2FH,#01H
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV 33H,#0
MOV 34H,#0
MOV R0,#20H
MOV R1,#0
MOV R2,#0
MOV R3,#0
MOV R4,#0
MOV R5,#0
MOV R6,#0
MOV R7,#0
MOV TMOD,#01H
MOV TH0,#0FEH
MOV TL0,#0CH
MOV IE,#82H
SETB TR0
JIAN: JNB P3.3,JIAN1 ; (P3.3=放电)
JNB P3.4,JIAN1 ; 检测按键是否按下(P3.4=充电)
JNB P3.5,JIAN1 ; (P3.5=显示)
JB 47H,U1
U: SJMP JIAN
U1: AJMP U3
D10MS: SETB 42H
D10MS1: CJNE R1,#6,$
MOV R1,#0
CLR 42H
RET
W1: MOV P1,#7FH
MOV P3,#7FH
CLR 7DH
CLR 79H
CLR 7AH
CLR 43H
MOV R5,#0
MOV R6,#0
SJMP W2
JIAN1: ACALL D10MS
MOV A,P3
ORL A,#11000111B
CPL A
MOV R2,A
JZ U
D10MS2: ACALL D10MS
MOV A,P3
ORL A,#11000111B
CPL A
JNZ D10MS2
JB 47H,W1
W2: CJNE R2,#08H,JIAN2;放电
JB 47H,JIA2
AJMP FANG
JIAN2: CJNE R2,#10H,JIAN3;充电
JB 47H,JIA3
AJMP CHONG
JIAN3: CJNE R2,#20H,JIAN4;修复
JB 47H,JIA4
AJMP XIU
JIAN4: CJNE R2,#30H,JIAN5;设定
JB 47H,JIA5
AJMP SHE
JIAN5: CJNE R2,#18H,JIAN6;起动
JB 47H,JIA6
AJMP QI
JIAN6: CJNE R2,#28H,U;调试
AJMP TIAO
FANG: MOV A,25H ; 放电显示5A,6A,7A
CJNE A,#7,FANG1
MOV 25H,#5
SJMP U
FANG1: INC 25H
MOV 2EH,25H
SJMP U
CHONG: MOV A,26H
CJNE A,#5,CHONG1 ; 充电显示3A,5A
MOV 26H,#3
SJMP U
CHONG1: ADD A,#2
MOV 26H,A
MOV 2DH,26H
AJMP U
XIU: MOV 26H,#5 ;5安培充电7安培放电显示
MOV 2DH,26H
MOV 25H,#7
MOV 2EH,25H
SETB 7BH
SETB 7DH
SETB 7AH
SETB 79H
AJMP MIAO
SHE: INC WEI+3; 显示[1],[2],[3],[4],[5]
MOV R3,WEI+3
MOV A,WEI+3
CJNE A,#6,SHE1
MOV WEI+3,#1
SHE1: MOV WEI+4,#10
MOV WEI+2,#11
AJMP U
TIAO: SETB 47H
AJMP U
JIA2: MOV 2EH,#6;放电6A
SJMP FANGA
JIA3: MOV 2EH,#5;放电5A
SJMP FANGA
JIA4: MOV 2DH,#5;充电5A
SJMP QI
JIA5: MOV 2DH,#3;充电3A
SJMP QI
JIA6: MOV 2EH,#7;放电7A
SJMP FANGA
QI: MOV 26H,2DH
MOV 25H,2EH
MOV WEI,#0
MOV WEI+1,#15
SETB 7DH
SETB 79H
CLR 7AH
SETB 43H
MOV P3,#0BFH
MOV A,26H
CJNE A,#3,CHONGA ;充电3A
MOV P1,#77H
AJMP MIAO
CHONGA: MOV P1,#6FH ;充电5A
AJMP MIAO
FANGA: SETB 7DH
MOV 26H,2DH
MOV 25H,2EH
MOV WEI+2,#0
MOV WEI+3,#0
MOV WEI+4,#0
SETB 7AH
CLR 79H
SETB 43H
MOV R3,25H
CJNE R3,#5,FANGB ;5安培放电
CLR P1.0
SJMP MIAO
FANGB: CJNE R3,#6, FANGG ;6安培放电
CLR P1.1
SJMP MIAO
FANGG: CLR P1.2 ;7安培放电
SJMP MIAO
QI1: MOV P3,#7FH
MOV P1,#7FH
CLR 44H
DEC R2
CJNE R2,#0,QI
MOV 2FH,#01H
SJMP FEN
QI2: CLR 45H
MOV P1,#7FH
MOV P3,#7FH
CLR 44H
DEC R2
CJNE R2,#0,FANGA
MOV 2FH,#01H
SJMP FEN
QI3: AJMP MIAO
FEN: MOV P1,#0FFH
MOV P3,#7FH
SETB 43H
JB 44H,FEN2
SJMP FEN
FEN2: CLR 44H
CLR P1.7
AJMP U
XIU3: CPL 7CH
MOV R4,#0
JB 7CH,XIU4
XIU5: JNB 7CH,XIU6
SJMP XIU7
XIU4: MOV P1,#6FH
MOV P3,#0BFH
SJMP XIU5
XIU6: JB 7FH,XIU8
MOV P1,#7FH
MOV P3,#7FH
MOV P1,#7BH
SJMP XIU7
XIU8: MOV P1,#7FH
MOV P3,#7FH
SJMP XIU7
STOP: MOV A,33H
CJNE A,#60,STOP1
MOV 33H,#0
CLR 43H
AJMP QI2
U2: AJMP U
MIAO: JB 47H,U2
U3: JB 45H,STOP
STOP1: JB 7BH,XIU1
XIU2: JB 79H,CHONGB
CHONGC: JB 7AH,FANGC
FANGD: CJNE R5,#250,MIAO
MOV R5,#0
INC R6
CJNE R6,#2,MIAO
MOV R6,#0
SJMP XIAN
XIU1: CJNE R4,#10,XIU7
SJMP XIU3
XIU7: MOV A,WEI+4
CJNE A,#1,XIU2
SETB 7FH
MOV A,WEI+3
CJNE A,#8,XIU2
MOV WEI+1,#0
MOV WEI,#0
CLR 7BH
CLR 79H
CLR 7AH
CLR 7FH
AJMP QI
CHONGB: MOV A,29H
CJNE A,#200,CHONGC
MOV 29H,#0
INC 2AH
MOV A,2AH
CJNE A,#180,CHONGC
MOV 2AH,#0
INC 34H
MOV A,34H
CJNE A,#10,CHONGC
MOV 34H,#0
INC 20H
MOV A,20H
CJNE A,#10,CHONGC
MOV 20H,#0
INC 21H
SJMP CHONGC
FANGC: MOV A,2BH
CJNE A,#250,FANGD
MOV 2BH,#0
INC 2CH
MOV A,2CH
CJNE A,#240,FANGD
MOV 2CH,#0
INC 22H
MOV A,22H
CJNE A,#10,FANGD
MOV 22H,#0
INC 23H
MOV A,23H
CJNE A,#10,FANGD
MOV 23H,#0
INC 24H
AJMP FANGD
FANGF: AJMP QI1
CHONGE: CLR 44H
SETB 43H
SETB 45H
XIAN: CPL 78H
MOV R6,#0
JB 78H,XIAN1
XIANA: JB 7AH,XIANB
SJMP XIANC
XIANB: MOV 25H,2EH
MOV 26H,#12
MOV 27H,#14
JB 44H,FANGE
AJMP MIAO
FANGE: JNB P1.6,FANGF ;(P1.6=放电结束信号)
AJMP MIAO
XIANC: MOV 25H,#12
MOV 26H,#12
MOV 27H,#12
AJMP MIAO
XIAN1: JB 79H,XIAN2
SJMP XIANC
XIAN2: MOV 26H,2DH
MOV 25H,#12
MOV 27H,#13
JB 44H,CHONGD
AJMP MIAO
CHONGD: JNB P1.5,CHONGE ;(P1.5=充电结束信号)
AJMP MIAO
ZHONG: PUSH ACC ;中断程序
PUSH PSW
PUSH 2FH
MOV TH0,#0FEH
MOV TL0,#0CH
MOV P2,#00H
MOV DPTR,#SHU
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
CJNE R0,#20H,D2
MOV P2,#10H ;显示第一位信号
D2: CJNE R0,#21H,G3
MOV P2,#08H ;显示第二位信号
G3: CJNE R0,#22H,D4
MOV P2,#80H ;显示第三位信号
D4: CJNE R0,#23H,D5
MOV P2,#40H ;显示第四位信号
D5: CJNE R0,#24H,D6
MOV P2,#20H ;显示第五位信号
D6: CJNE R0,#25H,D7
MOV P2,#04H ;显示第6位信号
D7: CJNE R0,#26H,D8
MOV P2,#02H ;显示第7位信号
D8: CJNE R0,#27H,D9
MOV P2,#01H ;显示第8位信号
MOV R0,#1fH
D9: INC R0
JB 43H,D10
SJMP D11
D10: INC R6
CJNE R6,#250,D11
MOV R6,#0
INC 32H
MOV A,32H
CJNE A,#240,D11
MOV 32H,#0
SETB 44H
JB 45H,D12
CLR 43H
SJMP D11
D12: INC 33H
D11: JB 40H,SAN
JB 41H,SAN1
MOV WEI+2,#12
MOV WEI+4,#12
SJMP SAN2
SAN1: MOV WEI+2,#11
MOV WEI+4,#10
SAN2: INC R7
CJNE R7,#250,SAN
MOV R7,#0
INC 30H
MOV A,30H
CJNE A,#2,SAN
CPL 41H
MOV 30H,#0
INC 31H
MOV A,31H
CJNE A,#20,SAN
MOV 31H,#0
MOV WEI+2,#0
MOV WEI+3,#0
MOV WEI+4,#0
SETB 40H
SAN: JNB 42H,QIN
INC R1
QIN: JB 7DH,QIN1
SJMP QINA
QIN1: JB 7BH,QIN2
SJMP QIN3
QIN2: INC R4
QIN3: INC R5
JB 79H,QIN4
QIN4: INC 29H
JB 7AH,QIN5
SJMP QINA
QIN5: INC 2BH
QINA: POP 2FH
POP PSW
POP ACC
RETI
SHU: DB 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h,0C6H,0F0H,0FFH,0FDH,0FEH,40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -