⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiayongreshuiqi.txt

📁 家用热水器
💻 TXT
字号:
附系统具体汇编语言源程序:
		ORG	0000H
		JMP	START
		ORG	000BH					;定时器中断子程序入口
		JMP	TIME0
START:	MOV	SP,#60H					;初始化
		MOV	TMOD,#01H		
		MOV	TH0,#HIGH(65536-50000)	;定时50ms
		MOV	TL0,#LOW(65536-50000)
		SETB	TR0
		MOV	IE,#82H
		SETB	P3.3						;电源状态灯亮
		CLR		P3.2						;加热状态灯灭
		MOV	R4,#06H
		MOV	R0,#30H
CLEAR:	MOV	@R0,#00H				;清温度显示缓冲区
		INC	R0
		DJNZ	R4,CLEAR
START0:	MOVX	@R0,A					;启动ADC
WAIT:	MOV	A,#0F0H					;判断有无键按下
		MOV	P2,A
		MOV	A,P2
		XRL	A,#0F0H
		JZ	NEXT0
		ACALL	KEYSCAN				;有键按下转键盘扫描子程序
NEXT0:	JB	P1.4,ADC					;无键按下等待ADC转换
		JMP	WAIT
		
ADC:	MOVX	A,@R0					;读转换的温度数据
		ACALL	L1						;十进制调整转换
		MOV	21H,#10H
DISP1:	MOV	R1,#32H					;当前温度显示地址
		ACALL	DISP					;调显示子程序
		DJNZ	21H,DISP1
		JMP	START0
		
L1:		CLR	C							;十进制调整转换子程序
		MOV	R5,#00H
		MOV	R4,#00H
		MOV	R3,#08H
NEXT:	RLC	A
		MOV	R2,A
		MOV	A,R5
		ADDC	A,R5
		DA	A
		MOV	R5,A
		MOV	A,R4
		ADDC	A,R4
		MOV	R4,A
		MOV	A,R2
		DJNZ	R3,NEXT
		MOV	R7,#02
L2:		MOV	A,R5
		ADD	A,R5
		DA	A
		MOV	R5,A
		MOV	A,R4
		ADDC	A,R4
		DA	A
		MOV	R4,A
		DJNZ	R7,L2
		MOV	A,R5
		ANL	A,#0F0H
		SWAP	A
		MOV	30H,A
		MOV	A,R4
		ANL	A,#0FH
		MOV	31H,A
		MOV	A,R4
		ANL	A,#0F0H
		SWAP	A
		MOV	32H,A
		CLR	A
		RET
		
KEYSCAN:	MOV	R3,#0F7H			;键盘扫描处理子程序
		MOV	23H,#00H				;23H为键码指针地址
S1:		MOV	A,R3
		MOV	P2,A
		MOV	A,P2
		MOV	R4,A
		SETB	C
		MOV	R5,#03H
S2:		RLC	A
		JNC	KEYIN					
		INC	23H
		DJNZ	R5,S2
		MOV	A,R3
		SETB	C
		RRC	A
		MOV	R3,A
		JC	S1
		RET
		
KEYIN:	MOV	R7,#60H					;延时消抖
D2:		MOV	R6,#248
		DJNZ	R6,$
		DJNZ	R7,D2
D3:		MOV	A,P2
		XRL	A,R4
		JZ	D3
		MOV	A,23H			
		MOV	DPTR,#TABLE
		MOVC	A,@A+DPTR				;查表取键码
		XRL	A,#0AH					;是*号键否?
		JZ	TSET						;是则跳至温度设定模式
		JMP	START0

TSET:	MOV	R1,#35H					;设定温度显示地址
		ACALL	DISP					;显示设定温度
		MOV	A,#0F0H
		MOV	P2,A
		MOV	A,P2
		XRL	A,#0F0H					;有按键否?
		JZ	TSET
		
KEYSCAN2:	MOV	R3,#0F7H			;有则进入温度设定模式的键盘扫描
		MOV	23H,#00H
SCAN1:	MOV	A,R3
		MOV	P2,A
		MOV	A,P2
		MOV	R4,A
		SETB	C
		MOV	R5,#03H
SCAN2:	RLC	A
		JNC	KEYIN1
		INC	23H
		DJNZ	R5,SCAN2
		MOV	A,R3
		SETB	C
		RRC	A
		MOV	R3,A
		JC	SCAN1
		RET
		
KEYIN1:	MOV	R7,#60H					;延时消抖
DL2:	MOV	R6,#248
		DJNZ	R6,$
		DJNZ	R7,DL2
DL3:	MOV	A,P2
		XRL	A,R4
		JZ	DL3
		MOV	A,23H
		MOV	DPTR,#TABLE
		MOVC	A,@A+DPTR	;取键码
		MOV	20H,A
		XRL	A,#0AH			
		JZ	START0						;是*号键,说明设定完成,回主程序
		MOV	A,20H
		XRL	A,#0BH		
		JZ	TSET						;#号键没有定义
		MOV	A,20H					;不是“*”、“#”其余为数字键,键值存33H-35H
		XCH	A,33H
		XCH	A,34H
		XCH	A,35H		
		JMP	TSET	
		
		
DISP:	MOV	A,@R1					;载入百位数
		ADD	A,#80H					;位选D3
		MOV	P1,A					;输出显示百位数
		ACALL	DELAY
		DEC	R1
		MOV	A,@R1
		ADD	A,#40H
		MOV	P1,A					;输出显示十位数
		ACALL	DELAY
		DEC	R1
		MOV	A,@R1
		ADD	A,#20H
		MOV	P1,A					;输出显示个位数
		ACALL	DELAY
		RET
		
TIME0:	PUSH	ACC					;保护现场
		PUSH	PSW
		MOV	TH0,#HIGH(65536-50000)	;重设50ms计数值
		MOV	TL0,#LOW(65536-50000)
		MOV	A,35H					;比较测量的温度和设定的温度
		CJNE	A,32H,T
		MOV	A,34H
		CJNE	A,31H,T
		MOV	A,33H
		CJNE	A,30H,T
		JMP	OFF
T:		JC	OFF						;c=1测量温度大于设定温度,c=0则小于
		CLR	P3.1						;测量温度<设定温度,开始加热
		SETB	P3.2					;加热状态灯亮
		JMP	RETURN
OFF:	SETB	P3.1					;测量温度>=设定温度,停止加热
		CLR	P3.2						;加热状态灯灭

RETURN:	POP	PSW
		POP	ACC
		RETI		
		
DELAY:	MOV	R7,#06				;延时子程序
D1:		MOV	R6,#248
		DJNZ	R6,$
		DJNZ	R7,D1
		RET

TABLE:	DB	01H,02H,03H				;键盘码	1 , 2 , 3
		DB	04H,05H,06H				;		4 , 5 , 6
		DB	07H,08H,09H				;		7 , 8 , 9
		DB	0AH,00H,0BH			;		* , 0 , #
		END
		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -