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

📄 10hz.asm

📁 本资源包含了单片机键盘、a/d、频率测试等源代码
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	       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 + -