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

📄 温度控制.txt

📁 智能温度显示PIC单片机课程设计
💻 TXT
字号:
温度显示器

AD_STATUS	EQU	20H;定义寄存器地址
DELAY1		EQU	21H
DELAY2		EQU	22H
AD_STATUS1	EQU	23H
M1		EQU	24H
MUXHIGH	EQU	25H
MUXLOW		EQU	26H
M2		EQU	27H
MSD		EQU	28H
LSD		EQU	29H
VALUE_REG	EQU	30H
AD_STATUSPLY	EQU	31H
BCD_STATUS	EQU	32H
*************************************************************
*************************************************************
ORG	0000H
NOP
GOTO	MAIN;
ORG	0004H
BCF	PIR1	1
RETFIE

TABLE	MOVF	AD_STATUSPLY,	W;
ANDLW	B"00001111"
ADDWF	PCL,	F
RETLW	B'01111110';	0
RETLW	B'00001100'
RETLW	B'10110110'
RETLW	B'10011110'
RETLW	B'11001100'
RETLW	B'11011010'
RETLW	B'11111010'
RETLW	B'00001110'
RETLW	B'11111110'
RETLW	B'11011110'
RETURN
**********************
	ZHUCHENGXU
	*********************
MAINLINE	
	CALL	LNITIAL
MAINLOOP
	CALL	AD_COVERT;		调用AD转化子程序
                MOVF	AD_STATUS,	W
	MOVWF	BCD_STATUS
	CALL	BCD_CONVERT
	CALL	DISPLAYVALUE;	     	调用显示子程序
	CALL	CMP
BTFSC	PORTB,	0
GOTO	MAINLOOP	
CALL	DELAY4MS
CALL	DELAY4MS			防抖
BTFSC	PORTB,	0			按键1未按下,进入主循环

*****************************
INITIAL
	BANKSEL		PORTC;初始化
	CLRF		PORTC
	BANKSEL		TRISC
	CLRF		TRISC;设为输出口
	BANKSEL		TRISB
	MOVLW		0FF
MOVWF	TRISB;b设为输入
CLRF	TRISD
BANKSEL		ADCON1;设A口A0为转换接入口
MOVLW		B'00001110'

MOVWF		ADCON1
BSF		TRISA,0
BANKSEL		ADCON0
MOVLW		B'10000001'
MOVWF		ADCON0
BANKSEL		INTCON
BSF		INTCON,		GIE
CALL		READ
RETURN

***********************
AD转化子程序
************************
AD_CONVERT
	BANKSEL		ADCON0
	BSF	ADCON0,	GO
WAIT
	BTFSC	ADCON0,	GO
	GOTO	WAIT
	MOVF	ADRESH,	W
	MOVWF	AD_STATUSL
MUXAB					乘法子程序

	CLRF	MUXHIGH
	MOVLW	98
	MOVWF	M1
  	CLRW
LOOP1
	ADDWF	AD_STATUS,	W	自加98次
	BTFSC	STATUS,C
	INCF	MUXHIGH,	F
	DECFSZ	M1,F
	GOTO	LOOP1

	MOVWF	MUXLOW
	
	MOVLW	128
	SUBWF	MUXLOW,	W
	BTFSC	STATUS,C
	INCF	MUXHIGH
	MOVLW	2
	ADDWF	MUXHIGH,F
	MOVF	MUXHIGH,W
	MOVWF	AD_STATUS
	CALL	DELAY4MS
	CALL	DELAY4MS
	RETURN
***********************************
BCD转化程序
***********************************
BCD_CONVERT
	CLRW
	MOVF	BCD_STATUS,W
	MOOVWF	LSD
	CLRF	MSD
LOOP
	MOVLW	10
	SUBWF	LSD,W
	BTFSS	STATUS,C
	GOTO	OVER
	MOVWF	LSD
	INCF	MSD
	GOTO	LOOP
OVER
	RETURN
********************************
4m延时程序
****************************
DELAY4MS
	MOVLW	80H
	MOVWF	DELAY1
	CLRF	DELAY2
LOOP4MS
	DECFSZ	DELAY2,F
	GOTO	LOOP4MS
	DECFSZ	DELAY1,F
	GOTO	LOOP4MS
RETURN
	*************************
	显示子程序
*************************************
DISPLAYVALUE

DISPLAY_MSD
MOVF	MSD,W
MOVWF	AD_STATUSPLY
CALL	TABLE
MOVWF	PORTC

DISPLAY_LSD显示低位

MOVWF	AD_STATUSPLY
CALL	TABLE
MOVWF	PORTD

RETURN

************************************
UPDATAVALUE
	CALL	INITIATSET
	CALL	BCD_COVERT
	CALL	DISPLAYVALUE

ADDSUBLOOP
	BANKSEL		PORTD
	BSF	PORTD,0
	CALL	DELAY4MS;	去抖
	CALL	DELAY4MS
	BTFSS	PORTB,0;	未更改按键,结束	
	GOTO	STOPADD

 	MOVLW	100;	否则进入更改,判断设置值与100的大小
 	SUBWF	VALUE_REG,W;	大于进入ABOVE100子程序
	BTFSC	STATUS,	Z
	GOTO	ABOVE100
	BTFSC	PORTB,1		否则,判断是否按下加1键
	CALL	DELAY4MS	并去抖动
	CALL	DELAY4MS	
	BTFSC	PORTB,1		若按下,则设定值加1
	INCF	VALUE_REG,F
	MOVLW	01H		否则,判断是否小于1
	SUBWF	VALUE_REG,W
	BTFSS	STATUS,C
	GOTO	ADDSUBLOOP
ABOVE100
	BTFSC	PORTB,2
	CALL	DELAY4MS
	CALL	DELAY4MS
	BTFSC	PORTB,2
	DECF	VALUE_REG,F
	CLRW
	MOVF	VALUE_REG,F
	MOVWF	BCD_STATUS
	CALL	BCD_CONVERT
	
	CALL	DISPALYVALUE
	GOTO	ADDSUBLOOP
STOPADD
	MOVF	VALUE_REG,W
	BCF	PORTD,0
	CALL	WRITE		调用写子程序
	RETURN
******************************************
INITIALSET
	CALL	READ
	RETURN
********************************************
WRITE
	BANKSEL		EEADR
	MOVLW		35H
	MOVWF		EEDAR
	BANKSEL		VALUE_REG
	MOVF		VALUE_REG,W
	BANKSEL		EEDATA
	MOVWF		EEDATA
	BANKSEL		EECON1
	BCF		EECON1,EEPGD
	BSF		EECON1,WREN	
	BCF		INTCON,GIE
	MOVLW		55H
	MOVWF		EECON2
	MOVLW		AAH
	MOVWF		EECON2
	BSF		EECON1,WR
	BSF		INTCON,GIE
	BANKSEL		PIR2
WAIT_EEIF
	BTFSC		PIR2,EEIF
	GOTO		WAITT_EEIF
	BCF		PIR2,EEIF
	BCF		INTCON,GIE
	BCF		EECON1,WREN
	BANKSEL		M1
	RETURN
READ
	BANKSEL 	EEADR
	MOVLW		35H
	MOVWF		EEADR
	BANKSEL		EECON1
	BCF		EECON1,EEPGD
	BSF		EECON1,RD
	BANKSEL		EEDATA
	MOVF		EEDATA,W
	
	BANKSEL		VALUE_REG
	MOVWF		VALUE_REG
	RETURN

		
CMP
	BANKSEL		TRISE
	CLRF		TRISE
	
	BANKSEL		VALUE_REG
	CLRF		PORTE
	MOVF		VALUE_REG,W
	
	SUBWF		AD_STATUS,W
	
	BTFSC		STATUS,Z	若相等进入cmp2
	GOTO		CMP2
	BTFSC		STATUS,C	否则判断是否大于
	GOTO		CMP1
	
	BTFSC		STATUS,C
	GOTO		CMP3
CMP1
	BSF		PORTE,0
	RETURN
CMP2
	BSF		PORTE,1
	RETURN
CMP3
	BSF		PORTRE,2
	RETURN
	END

	

⌨️ 快捷键说明

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