📄 10hz.asm
字号:
MOVLW 0X7F
ANDWF SHUMIN,0
MOVWF SHUMIN
MOVWF MI
CALL DISP_3 ;分钟显示子程序
;----------------------------------------
;BTFSC 0X70,0
MOVLW 0X32
SUBWF F1,0
BTFSS STATUS,C
GOTO PYP
BCF PORTA,2
GOTO PPK
;----------------------------------------------------
;;;GOTO CS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PYP CALL WD_PD
BTFSS BZD1,WDBJ
GOTO JX_1
;=====================================================
BTFSC BZD1,YYD
GOTO JX_1
CALL LK_1
BTFSC BZD1,YYD
GOTO JX_1
CALL LK_2
BTFSC BZD1,YYD
GOTO JX_1
CALL LK_3
GOTO JX_1
;=====================================================
BTFSC BZD1,BZD1ALL
GOTO OPEN
BTFSS BZD1,BZD1F
CALL LK_1
BTFSS BZD1,BZD1S
CALL LK_2
BTFSS BZD1,BZD1T
CALL LK_3
;BSF BZD1,BZD3ALL
JX_1 BTFSC BZD1,WDXIAO
GOTO JX_2
BTFSC BZD1,BZD3ALL
GOTO OPEN
JX_2 INCF BJ15S,1 ;15秒内未设置完自动返回
MOVLW 0X05
SUBWF BJ15S,0
BTFSS STATUS,0
GOTO PPK
CLRF BJ15S
INCF BJ15SH,1
MOVLW 0X01
SUBWF BJ15SH,0
BTFSS STATUS,0
GOTO PPK
CLRF BJ15SH
CLRF BJ15S
CLRF SS50
GOTO POP1
OPEN BSF PORTA,2
GOTO JX_2
LK_1 BCF BZD1,BZD3ALL
;BCF BZD1,YYD
MOVF SHUTIME,0
SUBWF SHU1OT,0
BTFSC STATUS,2
GOTO LK_11
BTFSC STATUS,0
GOTO LK_14
BSF PORTA,2
BSF BZD1,YYD
GOTO LK_12
LK_11 MOVF SHUMIN,0
SUBWF SHU1OM,0
BTFSC STATUS,0
GOTO LK_14
BSF PORTA,2
LK_12 BSF BZD1,YYD
BSF PORTA,2
MOVF SHUTIME,0
SUBWF SHU1FT,0
BTFSC STATUS,2
GOTO LK_13
BTFSS STATUS,0
GOTO LK_14
;---------------------------------
BSF PORTA,2
;----------------------------------
BSF BZD1,YYD
RETURN
LK_13 MOVF SHUMIN,0
SUBWF SHU1FM,0
BTFSC STATUS,0
RETURN
LK_14 BCF PORTA,2
BCF BZD1,YYD
RETURN
LK_2 BCF BZD1,BZD3ALL
;BCF BZD1,YYD
MOVF SHUTIME,0
SUBWF SHU2OT,0
BTFSC STATUS,2
GOTO LK_21
BTFSC STATUS,0
GOTO LK_24
BSF PORTA,2
BSF BZD1,YYD
GOTO LK_22
LK_21 MOVF SHUMIN,0
SUBWF SHU2OM,0
BTFSC STATUS,0
GOTO LK_24
BSF PORTA,2
LK_22 BSF BZD1,YYD
BSF PORTA,2
MOVF SHUTIME,0
SUBWF SHU2FT,0
BTFSC STATUS,2
GOTO LK_23
BTFSS STATUS,0
GOTO LK_24
BSF PORTA,2
BSF BZD1,YYD
RETURN
LK_23 MOVF SHUMIN,0
SUBWF SHU1FM,0
BTFSC STATUS,0
RETURN
LK_24 BCF PORTA,2
BCF BZD1,YYD
RETURN
LK_3 BCF BZD1,BZD3ALL
;BCF BZD1,YYD
MOVF SHUTIME,0
SUBWF SHU3OT,0
BTFSC STATUS,2
GOTO LK_31
BTFSC STATUS,0
GOTO LK_34
BSF PORTA,2
BSF BZD1,YYD
GOTO LK_32
LK_31 MOVF SHUMIN,0
SUBWF SHU3OM,0
BTFSC STATUS,0
GOTO LK_34
BSF PORTA,2
LK_32 BSF BZD1,YYD
BSF PORTA,2
MOVF SHUTIME,0
SUBWF SHU3FT,0
BTFSC STATUS,2
GOTO LK_33
BTFSS STATUS,0
GOTO LK_34
BSF PORTA,2
BSF BZD1,YYD
RETURN
LK_33 MOVF SHUMIN,0
SUBWF SHU3FM,0
BTFSC STATUS,0
RETURN
LK_34 BCF PORTA,2
BCF BZD1,YYD
RETURN
;==========================RD8653===========================
RD8563 CLRWDT
MOVWF ADDR ;地址暂存于F4中
CALL START8 ;启动I2C
MOVLW 0A2H
CALL SUBS8 ;写器件地址1010000+最后一位0写操作
MOVFW ADDR ;载入地址
CALL SUBS8 ;写地址
CLRWDT
NOP
CALL START8 ;再发开始信号
MOVLW 0A3H ;写器件地址1010000+最后一位1读操作
CALL SUBS8
BSF STATUS ,RP0
BSF TRISA ,3 ;设SDA脚为输入,准备读
BCF STATUS ,RP0
MOVLW 08H ;共读8位数据
MOVWF COUNT
BCF SCLK;;;
NOP;;;;;;;
BSF SDA;;;;;;;;;
RDT000
CALL DELAY4US
BSF SCLK ;读数据
CALL DELAY4US
BSF STATUS,C
BTFSS SDA
BCF STATUS,C
RLF TEMP ,1
CALL DELAY4US;;;;
BCF SCLK
DECFSZ COUNT ,1 ;循环读完8位
GOTO RDT000
BSF STATUS ,RP0
BCF TRISA ,3 ;恢复SDA脚为输出
BCF STATUS ,RP0
CALL DELAY4US
BSF SDA ;应答毕,SDA置1
CALL DELAY4US
BSF SCLK
CALL DELAY4US
BCF SCLK;;;;;;;;;
CALL DELAY4US;;;;;;;;;;;;;;;;;
CLRWDT
CALL STOP8 ;送停止信号
MOVFW TEMP ;将读的数据送入W中
RETURN
;******************************写入24C02程序
WT8563 CLRWDT
MOVWF ADDR ; 先将地址暂存于F4
CALL START8 ;开始条件
MOVLW 0A2H
CALL SUBS8 ;写器件地址1010000+最后一位0写操作
MOVF ADDR,0 ;载入地址
CALL SUBS8 ;写地址
CLRWDT
MOVF DAT,0 ;载入数据
CALL SUBS8 ;写数据
CLRWDT
CALL STOP8 ;停止信号
RETURN
START8 ;------------------
BSF SDA;;;;;;;;;;;;;;;;;;;;;
NOP;;;;;;;;;;;;;;;;;;;;;;;;;
BSF SCLK;;;;;;;;;;;;;;;;;;;;
CALL DELAY4US;;;;;;;;;;;;;;;
BCF SDA
CALL DELAY4US
BCF SCLK
CALL DELAY4US
;---------------------
; BCF SCLK;;;; ;开始条件
; CALL DELAY4US
; BSF SDA
; CALL DELAY4US
; BSF SCLK
; CALL DELAY4US
; BCF SDA
; CALL DELAY4US
; BCF SCLK
; CALL DELAY4US;;;;;
; BSF SDA;;;;;;;;;;;;;;;;;;;
RETURN
STOP8 ;--------------
BCF SDA
NOP
NOP
BSF SCLK
CALL DELAY4US
BSF SDA
CALL DELAY4US
;----------------------------------
; BCF SCLK ;;;;;
; CALL DELAY4US
; BCF SDA ;停止条件
; CALL DELAY4US
; BSF SCLK
; CALL DELAY4US
; CALL DELAY4US
; BSF SDA
; CALL DELAY4US;;;;;;;
; BCF SCLK;;;;;
RETURN
SUBS8 ;写数据
MOVWF TEMP ;将要写的数据存于F2中
MOVLW 08H
MOVWF COUNT ;写8位数据
BCF SCLK;;;
SH08
CALL DELAY4US;;;;
RLF TEMP ,1
BSF SDA
BTFSS STATUS ,C
BCF SDA
CALL DELAY4US ;;;;
BSF SCLK
CALL DELAY4US
BCF SCLK
DECFSZ COUNT ,1 ;循环写完8位
GOTO SH08
CALL DELAY4US;;;;;;;;;;;;;;
BSF SDA
CALL DELAY4US
BSF SCLK
BSF STATUS,RP0
BSF TRISA ,3
BCF STATUS,RP0
CALL DELAY4US;;;;;;;
REP8
BTFSC SDA ;判应答到否,未到则等待
GOTO REP8
CALL DELAY4US
BCF SCLK
BSF STATUS,RP0
BCF TRISA ,3
BCF STATUS,RP0
CALL DELAY4US
RETURN
DELAY4US NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RETURN
;============================设置程序===================================
SET1 CLRF BJ15S
CLRF BJ15SH
CALL DISP_1
CALL DISP_2
CALL DISP_3
CLRWDT
BTFSS PORTB,5
GOTO SET1
BCF BZD,BZSET
BCF BZD ,BZSET1
BCF BZD1,YYD
MOVF SHUWD ,0
MOVWF WENDU
SET11
CLRWDT
INCF SS50,1
MOVLW 0X55
SUBWF SS50,0
BTFSS STATUS,0
GOTO QF1
CALL DISP_1 ;设置温度
MOVF SHUTIME,0
MOVWF TI
CALL DISP_2
MOVF SHUMIN,0
MOVWF MI
CALL DISP_3
MOVLW 0XAA
SUBWF SS50,0
BTFSS STATUS,0
GOTO QF0
CLRF SS50
QF1 MOVF SHUTIME,0
MOVWF TI
CALL DISP_2
MOVF SHUMIN,0
MOVWF MI
CALL DISP_3
QF0 BTFSS PORTB,6 ;UP?
CALL TEADD ;温度增加
BTFSS PORTB,7
CALL TESUB ;温度减小
;防止设置按键去抖功能,BZSET进入正常设置子程序,BZSET1是按键预设置
BTFSS PORTB,5
GOTO SET1O
PNP1 INCF BJ15S,1 ;15秒内未设置完自动返回
MOVLW 0XFE
SUBWF BJ15S,0
BTFSS STATUS,0
GOTO SET11
CLRF BJ15S
INCF BJ15SH,1
MOVLW 0X07
SUBWF BJ15SH,0
BTFSS STATUS,0
GOTO SET11
CLRF BJ15SH
CLRF BJ15S
CLRF SS50
BTFSC BZD,BZOK
GOTO YF1
CLRF BZD
RETURN
YF1 CLRF BZD
CLRF SS50
MOVF WENDU,0
MOVWF SHUWD
MOVWF DAT
CLRWDT
CALL WT24
CALL DISP_1
CALL DISP_2
CALL DISP_3
RETURN
;=================================第一次时间设置ON==================================
SET1O CLRF SS50
CALL DISP_1
CALL DISP_2
CALL DISP_3
CLRWDT
BTFSS PORTB,5
GOTO SET1O
BCF BZD,BZSET
BCF BZD,BZSET1
CLRF BJ15S
CLRF BJ15SH
BTFSS BZD,BZOK
GOTO OK0
MOVF WENDU,0
MOVWF SHUWD
MOVWF DAT
BCF BZD,BZOK
CLRWDT
MOVLW 0X13
CALL WT24
OK0 MOVF SHU1OT,0
MOVWF TI
MOVF SHU1OM,0
MOVWF MI
MOVF FIRON,0 ;设置第一次开机时间
MOVWF WENDU
LOOP1 CLRWDT
INCF SS50,1
CALL DISP_1
CALL DISP_2
CALL DISP_3
CLRWDT
CLRF SS50
QF20 BTFSS PORTB,6 ;UP?
CALL TADD ;小时加
BTFSS PORTB,7
CALL MADD ;分钟加
;BTFSC BZD,BZSET ;防止设置按键去抖功能,BZSET进入正常设置子程序,BZSET1是按键预设置
BTFSS PORTB,5
GOTO SET1F
PNP2 INCF BJ15S,1 ;15秒内未设置完自动返回
MOVLW 0XFE
SUBWF BJ15S,0
BTFSS STATUS,0
GOTO LOOP1
CLRF BJ15S
INCF BJ15SH,1
MOVLW 0X07
SUBWF BJ15SH,0
BTFSS STATUS,0
GOTO LOOP1
CLRF BJ15SH
CLRF BJ15S
CLRF BZD
CLRF SS50
RETURN
;=================================第一次时间设置OFF==================================
SET1F CLRF SS50
CALL DISP_1
CALL DISP_2
CALL DISP_3
CLRWDT
BTFSS PORTB,5
GOTO SET1F
BCF BZD,BZSET
BCF BZD,BZSET1
CLRF BJ15S
CLRF BJ15SH
BTFSS BZD,BZOK
GOTO OK1A
MOVF TI,0
MOVWF SHU1OT
MOVF MI,0
MOVWF SHU1OM
BCF BZD,BZOK
MOVF SHU1OT,0
MOVWF DAT
MOVLW 0X01
CALL WT24
CALL DISP_1
CALL DISP_2
CALL DISP_3
MOVF SHU1OM,0
MOVWF DAT
MOVLW 0X02
CALL WT24
CALL DISP_1
CALL DISP_2
CALL DISP_3
MOVF SHU1OT,0
SUBWF SHU1FT,0
BTFSC STATUS,2
GOTO VICT1
MOVF SHU1OT,0
SUBWF SHU1FT,0
BTFSS STATUS,0
GOTO VICT11
BSF BZD1,BZD1F
GOTO OK1
VICT1 MOVF SHU1OM,0
SUBWF SHU1FM,0
BTFSS STATUS,0
GOTO VICT11
BSF BZD1,BZD1F
GOTO OK1
VICT11 BCF BZD1,BZD1F
OK1 MOVLW 0X20
SUBWF SHU1OT,0
BTFSC STATUS,0
GOTO OK1B
BSF BZD1,BZD1ALL
GOTO OK1A
OK1B BCF BZD1,BZD1ALL
OK1A MOVF SHU1FT,0
MOVWF TI
MOVF SHU1FM,0
MOVWF MI
MOVF FIROFF,0 ;设置第1次关机时间
MOVWF WENDU
LOOP2 CLRWDT
INCF SS50,1
CALL DISP_1
CALL DISP_2
CALL DISP_3
CLRWDT
CLRF SS50
QF30 CLRWDT
BTFSS PORTB,6 ;?UP?
CALL TADD ;小时加
BTFSS PORTB,7
CALL MADD ;分钟加
;防止设置按键去抖功能,BZSET进入正常设置子程序,BZSET1是按键预设置
BTFSS PORTB,5
GOTO SET2O
PNP3 INCF BJ15S,1 ;15秒内未设置完自动返回
CLRWDT
MOVLW 0XFE
SUBWF BJ15S,0
BTFSS STATUS,0
GOTO LOOP2
CLRF BJ15S
INCF BJ15SH,1
MOVLW 0X07
SUBWF BJ15SH,0
BTFSS STATUS,0
GOTO LOOP2
CLRF BJ15SH
CLRF BJ15S
CLRF BZD
CLRF SS50
RETURN
;=================================第二次时间设置ON====================================
SET2O CLRF SS50
CALL DISP_1
CALL DISP_2
CALL DISP_3
CLRWDT
BTFSS PORTB,5
GOTO SET2O
BCF BZD,BZSET
BCF BZD,BZSET1
CLRF BJ15S
CLRF BJ15SH
BTFSS BZD,BZOK
GOTO OK2A
MOVF TI,0
MOVWF SHU1FT
MOVF MI,0
MOVWF SHU1FM
BCF BZD,BZOK
MOVF SHU1FT,0
MOVWF DAT
MOVLW 0X03
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -