📄 wd.asm
字号:
SHD BIT 19H
WRM BIT 1AH
CU1 DATA 38H
CU2 DATA 39H
CT2 DATA 3AH
CT1 DATA 3BH
CT0 DATA 3CH
CR1 DATA 3DH
CR2 DATA 3EH
CM1 DATA 40H
CM2 DATA 41H
CM3 DATA 42H
KT DATA 43H
WDS DATA 44H
WDG DATA 45H
CNT DATA 46H
DYM BIT 20H
FW BIT 21H
RX EQU P1.5
TX EQU P1.6
ORG 00H
AJMP MAIN
ORG 0030H
MAIN: MOV TMOD,#01H ;主程序开始.定时器T0方式1.
SETB EA ;开放总中断.
SETB ET0 ;开放T0中断.
CLR DYM
CLR FW
CLR WRM
SETB SHD
MOV CNT,#0
CLR P1.2
MOV KT,#25
START: LCALL FD
LCALL RMCD
LCALL FD
LCALL RCCD
LCALL RMR
LCALL SHA
LCALL WD
JB FW,ST1
CLR P1.2
LCALL ZWD
LCALL WDXS
AJMP START
ST1: SETB P1.2
LCALL FWD
LCALL WDXS
AJMP START
;//放电子程序//
FD: SETB P3.4
SETB P3.7
CLR P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
;//RC充电计时子程序2脚//
RCCD: MOV TH0,#0
MOV TL0,#0
SETB P3.7
CLR P3.4
SETB P1.0
SETB P1.1
SETB P3.6
SETB TR0
CLR DYM
RC1: JNB P3.6,RC2
LCALL WDXS
JB DYM,RC2
JB P3.6,RC1
RC2: CLR TR0
MOV CR1,TL0
MOV CR2,TH0
MOV CNT,#0
CLR DYM
RET
;//RM充电计时子程序1脚//
RMCD: MOV TH0,#0
MOV TL0,#0
CLR P3.7
CLR P3.4
SETB P1.0
SETB P1.1
SETB P3.6
SETB TR0
CLR DYM
RM0: JNB TF0,RM1
INC CNT
CLR TF0
CLR WRM
MOV A,CNT
CJNE A,#3,RM4
RM5: JNB P1.1,RM3
RM1: JNB P3.6,RM2
LCALL WDXS
JB DYM,RM2
JB P3.6,RM0
RM2: CLR TR0
CLR DYM
MOV CM1,TL0
MOV CM2,TH0
MOV CM3,CNT
MOV CNT,#0
RET
RM3: SETB WRM
RET
RM4: JNC RM5
AJMP RM1
;//乘10子程序//
MUL0: MOV A,CM1
MOV B,#10
MUL AB
MOV CM1,A
MOV R3,B
MOV A,CM2
MOV B,#10
MUL AB
MOV R4,#0
ADDC A,R3
MOV CM2,A
JNC MUL1
INC R4
MUL1: MOV A,B
ADDC A,R4
MOV CM3,A
RET
;//RM电阻计算子程序//
RMR: MOV CT0,#0
MOV R0,#30H
MOV R7,#6
RMR0: MOV A,CM1
SUBB A,CR1
MOV R6,A
MOV A,CM2
SUBB A,CR2
MOV R5,A
JC RMR2
RMR1: INC CT0
MOV A,R5
MOV CM2,A
MOV A,R6
MOV CM1,A
AJMP RMR0
RMR2: MOV A,CM3
JZ RMR3
DEC A
MOV CM3,A
INC R6
AJMP RMR1
RMR3: MOV A,CT0
MOV @R0,A
MOV CT0,#0
DJNZ R7,RMR4
LCALL AD1
RET
RMR4: LCALL MUL0
INC R0
AJMP RMR0
;//4舍5入子程序//
AD1: MOV A,R6
RLC A
MOV R6,A
MOV A,R5
RLC A
JC AD3
SUBB A,CR2
JC AD2
JNZ AD3
MOV A,R6
SUBB A,CR1
JNC AD3
AD2: RET
AD3: INC 35H
RET
;//算出3位SHA1,SHA2,SHA3//
SHA: MOV R1,#47H
MOV R0,#30H
MOV R5,#3
SHA0: MOV A,@R0
MOV B,#10
MUL AB
INC R0
ADD A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R5,SHA0
RET
;//求温度正负//
WD: MOV A,47H
CLR FW
CJNE A,#17,WD0
SETB FW ;温度正负标志,为1表示负
RET
WD0: JC WD1 ;大于17,为负
SETB FW
WD1: RET
;//查表求温度正值//
ZWD: MOV CU1,#0
MOV CU2,#80
ZWD0: MOV A,CU1
MOV DPTR,#TAB2
MOVC A,@A+DPTR
CJNE A,47H,ZWD1
LCALL BJ
RET
ZWD1: JNC ZWD2 ;47H大于第一个数
MOV KT,CU1 ;A<47H
RET
ZWD2: INC CU1 ;A>47H
DJNZ CU2,ZWD0
RET
BJ: MOV A,CU1
MOV DPTR,#TAB3
MOVC A,@A+DPTR
CJNE A,48H,BJ0
LCALL BJ2
RET
BJ0: JNC BJ1
MOV KT,CU1 ;A<48H
RET
BJ1: INC CU1 ;A>48H
DJNZ CU2,ZWD0
MOV KT,#80
RET
BJ2: MOV A,CU1
MOV DPTR,#TAB4
MOVC A,@A+DPTR
CJNE A,49H,BJ3
MOV KT,CU1
RET
BJ3: JNC BJ4
MOV KT,CU1 ;A<49H
RET
BJ4: INC CU1
MOV KT,CU1 ;A>49H
RET
;//查表求温度F负值//
FWD: MOV CU1,#0
MOV CU2,#30
FWD0: MOV A,CU1
MOV DPTR,#TAB
MOVC A,@A+DPTR
CJNE A,47H,FWD1
LCALL FWD3 ;A=47H
RET
FWD1: JNC FWD2 ;47H大于第一个数
MOV KT,CU2 ;A<47H
RET
FWD2: INC CU1 ;A>47H
DJNZ CU2,FWD0
RET
FWD3: MOV A,CU1
MOV DPTR,#TAB0
MOVC A,@A+DPTR
CJNE A,48H,FWD4
LCALL FWD6 ;A=48H
FWD4: JNC FWD5
MOV KT,CU2 ;A<48H
RET
FWD5: INC CU1 ;A>48H
DJNZ CU2,FWD0
MOV KT,#1
RET
FWD6: MOV A,CU1
MOV DPTR,#TAB1
MOVC A,@A+DPTR
CJNE A,49H,FWD7
MOV KT,CU2
RET
FWD7: JNC FWD8
MOV KT,CU2 ;A<49H
RET
FWD8: DEC CU2 ;A>49H
MOV KT,CU2
RET
WDXS: JB WRM,WDXS1
MOV A,KT
MOV B,#10
DIV AB
MOV WDS,A
MOV WDG,B
JZ WDXS0
LCALL DIS2
LCALL DIS3
WDXS0: LCALL DIS1
LCALL DIS
RET
WDXS1: SETB P1.4
CLR P3.1
CLR P1.3
CLR P1.2
MOV A,#03H
LCALL DIS5
RET
DIS: MOV A,WDG
CLR P1.4
SETB P1.3
CLR P3.1
MOV DPTR,#TAB5
LCALL DIS4
RET
DIS1: MOV A,WDG
SETB P1.4
CLR P3.1
CLR P1.3
MOV DPTR,#TAB7
LCALL DIS4
RET
DIS2: MOV A,WDS
CLR P1.4
CLR P1.3
SETB P3.1
MOV DPTR,#TAB5
LCALL DIS4
RET
DIS3: MOV A,WDS
SETB P1.4
CLR P3.1
CLR P1.3
MOV DPTR,#TAB6
LCALL DIS4
RET
DIS4: MOVC A,@A+DPTR
DIS5: MOV R3,#08H
TL4: RRC A
MOV RX,C
SETB TX
CLR TX
DJNZ R3,TL4
LCALL DELS
RET
DELS: MOV R6,#20 ;1mS延时子程序.
K1: MOV R7,#25
K2: JNB TF0,K3
INC CNT
CLR TF0
CLR WRM
MOV A,CNT
CJNE A,#3,K0
K5: JB P1.1,K3
SETB WRM
RET
K0: JNC K5
K3: JB P3.6,K4
CLR TR0
SETB DYM
K4: DJNZ R7,K2
DJNZ R6,K1
RET
TAB: DB 96,80,75,71,66,62,58,54,51,48
DB 45,43,40,38,36,35,33,31,29,28
DB 27,25,24,23,21,20,19,18,17,17
TAB0: DB 55,97,80,00,54,39,52,93,58,46
DB 55,17,94,84,87,00,23,56,97,46
DB 02,66,37,14,97,87,82,83,89,00
TAB1: DB 12,97,80,47,09,04,91,47,72,78
DB 94,40,30,74,22,56,82,23,19,19
DB 77,57,24,47,98,49,74,46,42,38
TAB2: DB 16,15,14,13,13,12,11,11,10,10
DB 9,9,8,8,8,7,7,7,6,6,6,5,5,5,5
DB 5,4,4,4,4,4,3,3,3,3,3,3,3,2,2
DB 2,2,2,2,2,2,2,2,1,1,1,1,1,1,1
DB 1,1,1,1,1,1,1,1,1,1,1,1,0,0,0
DB 0,0,0,0,0,0,0,0,0,0,0
TAB3: DB 16,36,60,89,21,58,97,40,86,35
DB 86,41,97,56,17,80,45,12,80,50
DB 22,95,69,45,22,00,78,58,39,21
DB 04,87,71,56,41,28,14,02,90,78
DB 67,57,47,37,28,19,11,03,95,88
DB 81,74,67,61,55,50,44,39,34,30
DB 25,21,17,13,09,05,02,98,95,92
DB 89,86,83,80,78,75,73,70,68,66,64
TAB4: DB 08,30,83,43,90,02,60,46,40,24
DB 83,01,61,51,56,64,64,43,90,92
DB 54,52,83,39,14,00,92,83,68,43
DB 02,41,55,42,97,16,98,38,34,33
DB 83,31,25,63,43,63,22,16,45,08
DB 03,24,79,64,79,20,86,75,87,18
DB 69,37,23,24,41,72,17,76,46,29
DB 23,28,44,70,08,52,07,70,43,24,12
TAB5: DB 03H,9FH,4BH,0FH,97H
DB 27H,23H,8FH,03H,07H
TAB6: DB 0FH,0FH,0BH,0BH,0BH
DB 0BH,0BH,0FH,0BH,0BH
TAB7: DB 0FH,0FH,07H,07H,07H
DB 07H,07H,0FH,07H,07H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -