📄 10hz.asm
字号:
CALL DISP_2
CALL DISP_3
CLRWDT
BTFSS PORTB,7
GOTO MADD
CLRF BJ15S
INCF MI,1
MOVLW 0X60
SUBWF MI,0
BTFSC STATUS,0
GOTO MADD1
MOVLW 0X0F
ANDWF MI,0
MOVWF R1
MOVLW 0XF0
ANDWF MI,0
MOVWF R2
MOVLW 0X0A
SUBWF R1,0
BTFSS STATUS,0
RETURN
MOVLW 0XF0
ANDWF MI,1
MOVLW 0X10
ADDWF MI,1
MOVLW 0X60
SUBWF MI,0
BTFSC STATUS,0
GOTO MADD1
RETURN
MADD1 CLRF MI
RETURN
;================================================================================================
;-------------------------------------------------a/d-----------------
;----------AD--------------------
AD BCF INTCON,GIE
CLRWDT
BSF STATUS,RP0
MOVLW 0X00
MOVWF ADCON1
BSF TRISA,0
BCF STATUS,RP0
BSF ADCON0 , ADON
MOVLW 0x40
MOVWF 0x22
AD1 DECFSZ 0x22 , f
GOTO AD1
BSF ADCON0,GO
AD2 CLRWDT
BTFSC ADCON0 ,GO
GOTO AD2
MOVF ADRES ,0
MOVWF WENDU1
BCF ADCON0 ,ADON;;;关闭AD
CALL TABLE_T
MOVWF WENDU2
BSF STATUS,RP0
MOVLW 0XFF
MOVWF ADCON1
BSF TRISA,4
BCF TRISA,2
BCF STATUS,RP0
BSF INTCON,GIE
CALL DELAY4US;;;;;
RETURN
;======================================读2401中设定的温度值==========================================
RD24 CLRWDT
MOVWF ADDR ;地址暂存于F4中
CALL START4 ;启动I2C
MOVLW 0A0H
CALL SUBS4 ;写器件地址1010000+最后一位0写操作
MOVFW ADDR ;载入地址
CLRWDT
CALL SUBS4 ;写地址
CALL START4 ;再发开始信号
MOVLW 0A1H ;写器件地址1010000+最后一位1读操作
CALL SUBS4
BSF STATUS ,RP0
BSF TRISA ,1 ;设SDA脚为输入,准备读
BCF STATUS ,RP0
MOVLW 08H ;共读8位数据
MOVWF COUNT
RD000 CLRWDT
BCF SDA
CALL DELAY4US;;;;
BSF SDA ;读数据
CALL DELAY4US
BSF STATUS,C
BTFSS SCLK
BCF STATUS,C
RLF TEMP ,1
DECFSZ COUNT ,1 ;循环读完8位
GOTO RD000
CALL DELAY4US
BCF SDA
BSF SCLK
BSF STATUS ,RP0
BCF TRISA ,1 ;恢复SDA脚为输出
BCF STATUS ,RP0
CALL DELAY4US
BSF SCLK ;应答毕,SDA置1
CALL DELAY4US
BSF SDA
CALL DELAY4US
CALL STOP4 ;送停止信号
MOVFW TEMP ;将读的数据送入W中
CLRWDT
RETURN
;******************************写入24C02程序
WT24 CLRWDT
MOVWF ADDR ; 先将地址暂存于F4
CALL START4 ;开始条件
MOVLW 0A0H
CALL SUBS4 ;写器件地址1010000+最后一位0写操作
MOVFW ADDR ;载入地址
CLRWDT
CALL SUBS4 ;写地址
MOVFW DAT ;载入数据
CALL SUBS4 ;写数据
CLRWDT
CALL STOP4 ;停止信号
RETURN
;===============================================================================
;====================================温度显示程序====================
DISP_1 MOVF WENDU,0
MOVLW 0X0F
ANDWF WENDU,0
MOVWF R1
MOVLW 0XF0
ANDWF WENDU,0
MOVWF R2
SWAPF R2,1
MOVF R1,0
CALL TABLE
MOVWF PORTC
BCF PORTB,1
CALL DELAY5MS
CLRWDT
BSF PORTB,1
MOVF R2,0
CALL TABLE
MOVWF PORTC
BCF PORTB,0
CALL DELAY5MS
BSF PORTB,0
CLRWDT
RETURN
;====================================XIAOSHI显示程序====================
DISP_2 MOVF TI,0
MOVLW 0X0F
ANDWF TI,0
MOVWF R1
MOVLW 0XF0
ANDWF TI,0
MOVWF R2
SWAPF R2,1
MOVF R1,0
CALL TABLE
MOVWF PORTC
BCF PORTB,3
CALL DELAY5MS
CLRWDT
BSF PORTB,3
MOVF R2,0
CALL TABLE
MOVWF PORTC
BCF PORTB,2
CALL DELAY5MS
BSF PORTB,2
CLRWDT
RETURN
;===================================FENZHONG显示程序====================
DISP_3 MOVF MI,0
MOVLW 0X0F
ANDWF MI,0
MOVWF R1
MOVLW 0XF0
ANDWF MI,0
MOVWF R2
SWAPF R2,1
MOVF R1,0
CALL TABLE
MOVWF PORTC
BCF PORTC,7
CALL DELAY5MS
CLRWDT
BSF PORTC,7
MOVF R2,0
CALL TABLE
MOVWF PORTC
BCF PORTB,4
CALL DELAY5MS
BSF PORTB,4
CLRWDT
RETURN
;----------------------------------------------------------
HZ10HZ BCF PIR1,TMR1IF
MOVLW 0X2F
MOVWF TMR1L
MOVLW 0XF8
MOVWF TMR1H
BTFSS HZFLAG,ST
GOTO JCQSW
INCF CONT,1
BTFSC STATUS,Z
DECF COUNT,1
BTFSS PORTA,4
GOTO HZDFH
BTFSS HZFLAG,LOWF
GOTO HZGFH
MOVF CONT,0
MOVWF F1
CLRF CONT
HZGFH BCF HZFLAG,LOWF
RETURN
HZDFH BSF HZFLAG,LOWF
RETURN
JCQSW BTFSS PORTA,4
GOTO HZDFH
BTFSS HZFLAG,LOWF
GOTO HZGFH
BSF HZFLAG,ST
BCF HZFLAG,LOWF
RETURN
; INCF R100,1
; BTFSS PORTA,4
; GOTO HZ10HZ_1
; BTFSC 0X70,1
; GOTO HZ10HZ_2
; MOVLW 0X32
; SUBWF R100,0
; BTFSS STATUS,0
; RETURN
; CLRF R100
; BCF 0X70,1
; BCF 0X70,0
; RETURN
;HZ10HZ_2 MOVLW 0X32
; SUBWF R100,0
; BCF 0X70,0
; BTFSS STATUS,0
; BSF 0X70,0
; CLRF R100
; BCF 0X70,1
; RETURN
;HZ10HZ_1 BSF 0X70,1
; MOVLW 0X32
; SUBWF R100,0
; BTFSS STATUS,0
; RETURN
; CLRF R100
; BCF 0X70,1
; BCF 0X70,0
; RETURN
;=========================INT READ2401===============
INT CLRWDT
MOVLW 0X13
CALL RD24
MOVWF SHUWD
MOVLW 0X9A
SUBWF SHUWD,0
BTFSS STATUS,0
GOTO RY1
MOVLW 0X27
MOVWF SHUWD
RY1
CLRWDT
MOVLW 0X01
CALL RD24
MOVWF SHU1OT
MOVLW 0X9A
SUBWF SHU1OT,0
BTFSC STATUS,0
CLRF SHU1OT
CLRWDT
MOVLW 0X02
CALL RD24
MOVWF SHU1OM
MOVLW 0X9A
SUBWF SHU1OM,0
BTFSC STATUS,0
CLRF SHU1OM
CLRWDT
MOVLW 0X03
CALL RD24
MOVWF SHU1FT
MOVLW 0X9A
SUBWF SHU1FT,0
BTFSC STATUS,0
CLRF SHU1FT
CLRWDT
MOVLW 0X04
CALL RD24
MOVWF SHU1FM
MOVLW 0X9A
SUBWF SHU1FM,0
BTFSC STATUS,0
CLRF SHU1FM
CLRWDT
MOVLW 0X05
CALL RD24
MOVWF SHU2OT
MOVLW 0X9A
SUBWF SHU2OT,0
BTFSC STATUS,0
CLRF SHU2OT
MOVLW 0X06
CALL RD24
MOVWF SHU2OM
MOVLW 0X9A
SUBWF SHU2OM,0
BTFSC STATUS,0
CLRF SHU2OM
MOVLW 0X07
CALL RD24
MOVWF SHU2FT
MOVLW 0X9A
SUBWF SHU2FT,0
BTFSC STATUS,0
CLRF SHU2FT
MOVLW 0X08
CALL RD24
MOVWF SHU2FM
MOVLW 0X9A
SUBWF SHU2FM,0
BTFSC STATUS,0
CLRF SHU2FM
MOVLW 0X09
CALL RD24
MOVWF SHU3OT
MOVLW 0X9A
SUBWF SHU3OT,0
BTFSC STATUS,0
CLRF SHU3OT
MOVLW 0X0A
CALL RD24
MOVWF SHU3OM
MOVLW 0X9A
SUBWF SHU3OM,0
BTFSC STATUS,0
CLRF SHU3OM
MOVLW 0X0B
CALL RD24
MOVWF SHU3FT
MOVLW 0X9A
SUBWF SHU3FT,0
BTFSC STATUS,0
CLRF SHU3FT
MOVLW 0X0C
CALL RD24
MOVWF SHU3FM
MOVLW 0X9A
SUBWF SHU3FM,0
BTFSC STATUS,0
CLRF SHU3FM
MOVLW 0X20
SUBWF SHU1OT,0
BTFSC STATUS,0
GOTO QUXIAO
MOVLW 0X20
SUBWF SHU1FT,0
BTFSC STATUS,0
GOTO QUXIAO
GOTO USA1
QUXIAO CLRWDT
BSF BZD1,BZD1ALL
USA1 MOVF SHU1OT,0
SUBWF SHU1FT,0
BTFSC STATUS,2
GOTO USA11
BTFSS STATUS,0
GOTO USA12
BSF BZD1,BZD1F
GOTO USA2
USA11 MOVF SHU1OM,0
SUBWF SHU1FM,0
BTFSC STATUS,0
GOTO USA12
BSF BZD1,BZD1F
GOTO USA2
USA12 BCF BZD1,BZD1F
USA2 MOVF SHU2OT,0
SUBWF SHU2FT,0
BTFSC STATUS,2
GOTO USA21
BTFSS STATUS,0
GOTO USA22
BSF BZD1,BZD1S
GOTO USA3
USA21 MOVF SHU2OM,0
SUBWF SHU2FM,0
BTFSC STATUS,0
GOTO USA22
BSF BZD1,BZD1S
GOTO USA3
USA22 BCF BZD1,BZD1S
USA3 MOVF SHU3OT,0
SUBWF SHU3FT,0
BTFSC STATUS,2
GOTO USA31
BTFSS STATUS,0
GOTO USA32
BSF BZD1,BZD1T
GOTO USA4
USA31 MOVF SHU3OM,0
SUBWF SHU3FM,0
BTFSC STATUS,0
GOTO USA32
BSF BZD1,BZD1T
GOTO USA4
USA32 BCF BZD1,BZD1T
USA4 RETURN
WD_PD CLRWDT
BCF BZD1,WDXIAO
MOVLW 0X05
SUBWF SHUWD,0
BTFSC STATUS,0
GOTO WD_PD1
BCF BZD1,WDBJ
BCF PORTA,2
BSF BZD1,WDXIAO
RETURN
WD_PD1 MOVF WENDU2,0
SUBWF SHUWD,0
BTFSC STATUS,0
GOTO WD_PD2
BCF BZD1,WDBJ
BCF PORTA,2
BSF BZD1,WDXIAO
RETURN
WD_PD2 MOVLW 0X04
ADDWF WENDU2,0
MOVWF TSP
MOVLW 0XF0
ANDWF TSP,0
MOVWF R1
MOVLW 0X0F
ANDWF TSP,0
MOVWF R2
MOVLW 0X0A
SUBWF R2,0
BTFSC STATUS,0
GOTO WD_PD5
WD_PD4 MOVF TSP,0
SUBWF SHUWD,0
BTFSC STATUS,0
GOTO WD_PD3
;--------------------------------
;BCF BZD1,WDBJ
;BCF PORTA,2
;BSF BZD1,WDXIAO
;---------------------------------
RETURN
WD_PD3 BSF BZD1,WDBJ
;--------
BCF BZD1,WDXIAO
;BSF PORTA,2
;--------
RETURN
WD_PD5 MOVLW 0X0A
SUBWF R2,1
MOVLW 0X10
ADDWF R1,1
MOVF R2,0
ADDWF R1,0
MOVWF TSP
GOTO WD_PD4
DELAY5MS ;CLRF TMR1L
;CLRF TMR1H
CLRF TMR2
BSF T1CON,TMR2ON
DEL1 MOVLW 0X05
SUBWF TMR2,0
BTFSS STATUS,0
GOTO DEL1
BCF T2CON,TMR2ON
;CLRF TMR1L
CLRF TMR2
RETURN
;DELAY5MS MOVLW 0X64
; MOVWF 0X66
;D52 MOVLW 0X09
; MOVWF 0X67
;D51 NOP
; DECFSZ 0X67,1
; GOTO D51
; DECFSZ 0X66,1
; GOTO D52
; CLRWDT
; RETURN
DELAY1S MOVLW 0X50
MOVWF 0X7D
INTD MOVWF 0XF0
MOVWF 0X7E
INTD1 CLRWDT
CALL DELAY4US
CALL DELAY4US
DECFSZ 0X7E,1
GOTO INTD1
DECFSZ 0X7D,1
GOTO INTD
RETURN
START4 BCF SDA;;;; ;开始条件
CALL DELAY4US
BSF SCLK
CALL DELAY4US
BSF SDA
CALL DELAY4US
BCF SCLK
CALL DELAY4US
BCF SDA
CALL DELAY4US;;;;;
RETURN
STOP4 BCF SDA ;;;;;
CALL DELAY4US
BCF SCLK ;停止条件
CALL DELAY4US
BSF SDA
CALL DELAY4US
BSF SCLK
CALL DELAY4US;;;;;;;
BCF SDA;;;;;
RETURN
SUBS4 ;写数据
MOVWF TEMP ;将要写的数据存于F2中
MOVLW 08H
MOVWF COUNT ;写8位数据
BCF SDA;;;
SH04
CALL DELAY4US;;;;
RLF TEMP ,1
BSF SCLK
BTFSS STATUS ,C
BCF SCLK
CALL DELAY4US ;;;;
BSF SDA
CALL DELAY4US
BCF SDA
DECFSZ COUNT ,1 ;循环写完8位
GOTO SH04
BSF SCLK
CALL DELAY4US
BSF SDA
BSF STATUS,RP0
BSF TRISA ,1
BCF STATUS,RP0
CALL DELAY4US;;;;;;;
REP4
BTFSC SCLK ;判应答到否,未到则等待
GOTO REP4
CALL DELAY4US
BCF SDA
BSF STATUS,RP0
BCF TRISA ,1
BCF STATUS,RP0
CALL DELAY4US
RETURN
;;温度地址2401中00H为温度值,01H为小时;02H为分钟,03H为第一段标志,04,05H为小时分钟,06H为第二段标志
; 07,08H为小时分钟,09H为第三段标志
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -