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

📄 wendu.asm

📁 wendushangxiaxian baohu
💻 ASM
字号:
	ORG	0000H
	FSW	EQU	32H	;分钟十位
	FGW	EQU	33H	;分钟个位
	SSW	EQU	34H	;秒钟十位
	SGW	EQU	35H	;秒钟个位
	SZH	EQU	2FH	;时钟
	FZH	EQU	2EH	;分钟
	DFZH	EQU	20H	;设定分钟
	;30H,31H,时间显示单元
	;36H,37H,设定时间小时显示单元
	;38H,39H,设定时间分钟显示单元
	;40H,41H,42H中设定继电器启动温度
	DSZH	EQU	2CH	;设定时钟
	LJMP	STA
	ORG	000BH
	LJMP	DING
	ORG	0100H
STA:	MOV	40H,#00H
	MOV	41H,#02H
	MOV	42H,#01H
	MOV	SZH,#00H
	MOV	SSW,#00H
	MOV	SGW,#00H
	MOV	FSW,#00H
	MOV	FGW,#00H
	MOV	FZH,#00H
	MOV	DFZH,#00H
	MOV	DSZH,#00H
	MOV	36H,#01H
	MOV	37H,#02H
	MOV	38H,#03H
	MOV	39H,#00H
	MOV	R4,#00H
	MOV	R5,#00H
	MOV	TMOD,#01H
	MOV	TH0,#4CH
	MOV	TL0,#00H
	MOV	IE,#82H
	SETB	TR0
START:	JNB	P1.3,JIANPAN
	JNB	P1.1,QWE
GOON:	LCALL	ADC
	LCALL	CMPAA
	LJMP	START
	;***************************************
;切换到时间程序:	;***************************************
QWE:	LCALL	DELAY
	JB	P1.1,START
	JNB	P1.1,$
	LJMP	LOOP
	;***************************************
;键盘程序:	;***************************************
JIANPAN:	LCALL	DELAY	;由P1.3口键入键盘程序
	JB	P1.3,STAR
	JNB	P1.3,$
	LCALL	JIAN12
	LJMP	GOON
JIAN12:	MOV	R0,#00H
	MOV	R1,#3FH
	MOV	R3,#7FH
STAR:	JNB	P1.0,J1	;位选键
	JNB	P1.1,J2	;增加键
	JNB	P1.2,J3	;减少键
	JNB	P1.3,NEXT	;退出键
	SJMP	STAR
NEXT:	LCALL	DELAY
	JB	P1.3,STAR
	JNB	P1.3,$
	MOV	70H,40H
	MOV	71H,41H
	MOV	72H,42H
	LCALL	SSXS
	MOV	R0,#00H
	MOV	R3,#7FH
	MOV	R1,#3FH
	RET
J1:	LCALL	DELAY	;去抖
	JB	P1.0,STAR
	JNB	P1.0,$
	CJNE	R0,#03H,QRT
	MOV	R3,#7FH
	MOV	R0,#00H
	MOV	R1,#3FH
	LJMP	STAR
QRT:	INC	R0
	INC	R1
	MOV	A,R3
	RL	A
	MOV	R3,A
	LCALL	XS
	LJMP	STAR
J2:	MOV	A,R0	;未选中字位时,退出(无效按键)
	JZ	TUI
	LCALL	DELAY
	JB	P1.1,STAR
	JNB	P1.1,$
	MOV	A,@R1
	CLR	C
	SUBB	A,#09H
	JNC	FU1	;判断数据是否大于9
	INC	@R1
	LCALL	XS
	LJMP	STAR
FU1:	MOV	@R1,#00H
	LCALL	XS
	LJMP	STAR
J3:	MOV	A,R0	;判断数据是否为零
	JZ	TUI
	LCALL	DELAY
	JB	P1.2,STAR1
	JNB	P1.2,$
	MOV	A,@R1
	JZ	FU2
	DEC	@R1
	LCALL	XS
	LJMP	STAR
FU2:	MOV	@R1,#00H
	LCALL	XS
	LJMP	STAR
TUI:	LJMP	STAR
STAR1:	LJMP	STAR
XS:	MOV	A,@R1	;键盘显示
	MOV	DPTR,#TAB
	MOVC	A,@A+DPTR
	MOV	P2,R3
	MOV	DPTR,#0EFFFH
	MOVX	@DPTR,A
	LCALL	DELAY
	RET
	;***************************************
;比较报警程序:	;***************************************
CMPAA:	MOV	R0,#70H
	MOV	R1,#40H
	MOV	R2,#03H
BJ:	MOV	A,@R1
	CLR	C
	SUBB	A,@R0
	JC	BAJ	;读入数据比预设的值大跳转
	JNZ	OUT
	INC	R1
	INC	R0
	DJNZ	R2,BJ
OUT:	MOV	P1,#0FFH
	RET
BAJ:	MOV	P1,#6FH	;启动继电器
	RET
	;***************************************
;AD转换程序:	;***************************************
ADC:	MOV	70H,#00H	;显示单元
	MOV	71H,#00H
	MOV	72H,#00H
	MOV	R7,#00H
	MOV	R6,#00H
	MOV	R3,#00H
ST:	MOV	DPTR,#0FFFFH	;启动AD转换
	MOVX	@DPTR,A
	JB	P3.2,$
	INC	R7
	MOVX	A,@DPTR
	MOV	P2,#7FH
	MOV	DPTR,#07FFFH
	MOVX	A,@DPTR	;读入转换数据
	ADD	A,R3
	MOV	R3,A
	MOV	A,R6
	ADDC	A,#00
	MOV	R6,A	;将转换的数据先存入R,R6中
	CJNE	R7,#80H,ST
	;MOV	R4,#08H	;128次采集处理一次
;CHU:	CLR	C
	;MOV	A,R6
	;RRC	A
	;MOV	R6,A
	;MOV	A,R3
	;RRC	A
	;MOV	R3,A
	;DJNZ	R4,CHU
	;MOV	A,R6	;温度不超过100度,R6取平均后会为零
	MOV	B,#64H	;转换成10进制
	DIV	AB
	MOV	70H,A
	MOV	A,B
	MOV	B,#0AH
	DIV	AB
	MOV	71H,A
	MOV	72H,B	;AD转换结束后将数据存入70H,71H,72H中。
	LCALL	SSXS
	RET
	;***************************************
;显示程序:	;***************************************
SSXS:	MOV	R4,#0C6H
LP2:	MOV	R1,#70H
	MOV	R0,#0FEH
	MOV	A,#0C6H
	MOV	P2,#0D7H
	MOV	DPTR,#0EFFFH
	MOVX	@DPTR,A
	LCALL	DELAY	;固定显示`C
	MOV	R2,#03H
LP1:	MOV	DPTR,#TAB
	MOV	A,R0
	MOV	P2,A
	MOV	A,@R1
	MOVC	A,@A+DPTR
	MOV	DPTR,#0EFFFH
	MOVX	@DPTR,A
	LCALL	DELAY
	INC	R1
	MOV	A,R0
	RL	A
	MOV	R0,A
	DJNZ	R2,LP1
	DJNZ	R4,LP2
	RET
	;***************************************
;时间程序:	;***************************************
LOOP:	MOV	60H,30H
	MOV	61H,31H
	MOV	62H,32H
	MOV	63H,33H
	JNB	P1.0,JIA1	;变换成分钟显示程序
	JNB	P1.1,QH1
	JNB	P1.2,DING
	JNB	P1.3,JIAN11
XIAOQ:	LCALL	SSXS
	LCALL	CMPAA
	LJMP	LOOP
JIAN11:	CJMP	JIANPAN
	;***************************************
	;切换回温度程序
	;***************************************
QH1:	LCALL	DELAY
	JB	P1.1,LOOP
	JNB	P1.1,$
	LJMP	START
	;***************************************
	;切换到分钟显示
	;***************************************
JIA1:	LCALL	DELAY	;去抖
	JB	P1.0,XIAOQ
	JNB	P1.0,$
LOOP1:	MOV	60H,32H
	MOV	61H,33H
	MOV	62H,34H
	MOV	63H,35H
	JNB	P1.2,DING
	JNB	P1.0,JIA2	;变换回小时显示程序
	JNB	P1.1,QH1
	JNB	P1.3,JIAN11
FEN:	LCALL	SSXS
	LCALL	CMPAA
	LJMP	LOOP1
	;**************************************
;切换回小时显示:	;***************************************
JIA2:	LCALL	DELAY	;去抖
	JB	P1.0,FEN
	JNB	P1.0,$
	LJMP	LOOP
	;***************************************
;定时程序:	;***************************************
DING:	LCALL	DELAY	;去抖
	JB	P1.2,XIAOQ
	JNB	P1.2,$
	LCALL	DINGSHI
	LJMP	LOOP
XUN:	JNB	P1.0,JIAN1	;
	JNB	P1.1,JIAN2	;
	JNB	P1.2,NEXT2	;退出
	MOV	60H,36H
	MOV	61H,37H
	MOV	62H,38H
	MOV	63H,39H
	LCALL	SSXS
	SJMP	XUN
JIAN1:	LCALL	DELAY	;去抖
	JB	P1.0,XUN
	JNB	P1.0,$
	INC	DSZH
	MOV	A,DSZH
	CJNE	A,#18H,GOOON
	MOV	DSZH,#00H
GOOON:	MOV	A,DSZH
	MOV	B,#0AH
	DIV	AB
	MOV	36H,A
	MOV	37H,B
	LJMP	XUN
JIAN2:	LCALL	DELAY	;去抖
	JB	P1.1,XUN
	JNB	P1.1,$
	INC	DFZH
	MOV	A,DFZH
	CJNE	A,#3CH,GN1
	MOV	DFZH,#00H
GN1:	MOV	A,DFZH
	MOV	B,#0AH
	DIV	AB
	MOV	38H,A
	MOV	39H,B
	LJMP	XUN
NEXT2:	LCALL	DELAY
	JB	P1.2,XUN
	JNB	P1.2,$
	MOV	60H,36H
	MOV	61H,37H
	MOV	62H,38H
	MOV	63H,39H
	LCALL	SSXS
	RET
	;***************************************
;时钟键盘程序:	;***************************************
LOOP11:	CJMP	LOOP
JIAN:	LCALL	DELAY	;由P1.3口键入键盘程序
	JB	P1.3,LOOP11
	JNB	P1.3,$
	LCALL	JIANPAN
	MOV	SSW,#00H
	MOV	SGW,#00H
	LJMP	LOOP	;键盘输入后直接返回到小时显示程序
SM:	JNB	P1.0,JI1	;
	JNB	P1.1,JI2	;
	JNB	P1.3,NEXT1	;退出键
	MOV	60H,30H
	MOV	61H,31H
	MOV	62H,32H
	MOV	63H,33H
	LCALL	SSXS
	SJMP	SM
JI1:	LCALL	DELAY	;去抖
	JB	P1.0,SM
	JNB	P1.0,$
	INC	SZH
	MOV	A,SZH
	CJNE	A,#18H,GN
	MOV	SZH,#00H
GN:	MOV	A,SZH
	MOV	B,#0AH
	DIV	AB
	MOV	30H,A
	MOV	31H,B
	LJMP	SM
JI2:	LCALL	DELAY	;去抖
	JB	P1.1,SM
	JNB	P1.1,$
	INC	FZH
	MOV	A,FZH
	CJNE	A,#3CH,GT1
	MOV	FZH,#00H
GT1:	MOV	A,FZH
	MOV	B,#0AH
	DIV	AB
	MOV	32H,A
	MOV	33H,B
	LJMP	SM
NEXT1:	LCALL	DELAY
	JB	P1.3,SM
	JNB	P1.3,$
	MOV	60H,30H
	MOV	61H,31H
	MOV	62H,32H
	MOV	63H,33H
	LCALL	SSXS
	RET
DELAY:	MOV	R7,#010H
DEL1:	MOV	R6,#20H
DEL2:	DJNZ	R6,DEL2
	DJNZ	R7,DEL1
	RET
TAB:	DB	01H,02H,03H,04H
	END

⌨️ 快捷键说明

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