消毒柜微电脑控制器 附录二 源程序
ORG 0000H LJMP MAIN
;*********************************** ;主程序
;***********************************
MAIN: LCALL CSH8255 LCALL DIR L9: MOV DPTR,#0FF20H MOV A,#0FEH MOVX @DPTR,A
MOV DPTR,#0FF22H MOVX A,@DPTR CJNE A,#0BH,L3 SJMP HEAT L3: MOV DPTR,#0FF20H MOV A,#0FDH MOVX @DPTR,A
MOV DPTR,#0FF22H MOVX A,@DPTR
CJNE A,#0BH,L4 LJMP BAOWEN
L4: MOV DPTR,#0FF20H MOV A,#0FEH MOVX @DPTR,A
MOV DPTR,#0FF22H MOVX A,@DPTR CJNE A,#07H,L5 ACALL STOP ; SJMP L9 L5 : LJMP MAIN
;*************************** ;加热消毒子程序
;*************************** HEAT: MOV DPTR,#0FF20H ; MOV A,#0FDH MOVX @DPTR,A
MOV DPTR,#0FF22H MOVX A,@DPTR
;调8255初始化子程序 ;调显示程序 ;指向8255的A口
;列扫描信号从最低位开始 ;C口行扫描信号 ;读回行扫描信号 ;看是否为加热键 ;判断是否为保温键 ;指向8255的A口
;列扫描信号从最低位开始 ;C口行扫描信号 ;读回行扫描信号 ;判断是否为停止键 调用停止子程序 35
消毒柜微电脑控制器 CJNE A,#0BH,L8 SJMP BAOWEN L8: MOV DPTR,#0FF20H MOV A,#0FEH MOVX @DPTR,A
MOV DPTR,#0FF22H ;判断是否为保温键 ;指向8255的A口
;列扫描信号从最低位开始 ;C口行扫描信号 MOVX A,@DPTR CJNE A,#07H,L7 ACALL STOP LJMP L9 L7: CLR P1.1 SETB P1.4
LCALL ADZH LCALL DIGI MOV R4,#3EH LCALL WSM MOV A,R1 LCALL CBXS LCALL DELAY
MOV R4,#3DH LCALL WSM MOV A,R2 LCALL CBXS LCALL DELAY
MOV R4,#3BH LCALL WSM MOV A,R3 LCALL CBXS LCALL DELAY
PDBF: MOV A,R7
SUBB A,#125
JC HEAT SETB P1.1 CLR P1.2
LCALL JIAN
;****************************
;读回行扫描信号 ;判断是否为停止键 ;调用停止子程序 ;置加热灯 ;调A——D转换 ;显示各位
;显示十位
;显示百位
;小于99继续热
36
消毒柜微电脑控制器 ;保温键子程序
;**************************** BAOWEN: MOV DPTR,#0FF20H MOV A,#0FEH MOVX @DPTR,A
MOV DPTR,#0FF22H MOVX A,@DPTR CJNE A,#07H,L6 ;指向8255的A口
;列扫描信号从最低位开始 ;C口行扫描信号 ;读回行扫描信号 ;判断是否为停止键 ACALL STOP LJMP L9 L6: SETB P1.1 SETB P1.3
SETB P1.4 CLR P1.2 LCALL ADZH LCALL DIGI MOV R4,#3EH LCALL WSM MOV A,R1 LCALL CBXS LCALL DELAY
MOV R4,#3DH LCALL WSM MOV A,R2 LCALL CBXS LCALL DELAY
MOV R4,#3BH LCALL WSM MOV A,R3 LCALL CBXS LCALL DELAY
PDBW: MOV A,R7 SUBB A,#50 JNC BAOWEN LJMP HEATAGAIN
;调用停止子程序
;熄灭加热指示灯
;保温指示灯点亮 ;掉A-D转换子程序 ;掉二十进制转换 ;送显示个位
;显示十位
;显示百位
;将结果送累加器A中 ;与50度比较 ;大于则继续保温
;小于就跳到继续加热子程序
37
消毒柜微电脑控制器 ;*************************** ;继续加热子程序
;*************************** HEATAGAIN: SETB P1.3 CLR P1.1 LCALL ADZH LCALL DIGI MOV R4,#3EH LCALL WSM MOV A,R1 LCALL CBXS LCALL DELAY
MOV R4,#3DH LCALL WSM MOV A,R2 LCALL CBXS LCALL DELAY
MOV R4,#3BH LCALL WSM MOV A,R3 LCALL CBXS LCALL DELAY GAO65:MOV A,R7
SUBB A,#70 jC HEATAGAIN LJMP BAOWEN
DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH ;*************************** ;初始化8255子程序
;*************************** CSH8255: MOV A,#81H MOV DPTR,#0FF23H MOVX @DPTR,A RET
38
消毒柜微电脑控制器 ;*************************** ;AD转换子程序
;*************************** ADZH: MOV DPTR,#0FF80H MOV A,#0
MOVX @DPTR,A MOV R0,#120 ;120微妙延时 DJNZ R0,$ MOV DPTR,#0FF80H MOVX A,@DPTR MOV B,#200 ;最高显示100度 MUL AB MOV A,B MOV R7,A ;R7存放取样的数字量 RET
;***************************** ;二进制转十进制子程序
;***************************** DIGI: MOV B,#10 DIV AB MOV R1,B MOV B,#10 DIV AB MOV R2,B MOV R3,A RET
;****************************** ;8255位扫描子程序
;****************************** WSM: MOV DPTR,#0FF20H MOV A,R4
MOVX @DPTR,A RET
;****************************** ;8255查表显示子程序
;****************************** CBXS: MOV DPTR,#DDFF MOVC A,@A+DPTR MOV DPTR,#0FF21H
39