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

📄 02.asm

📁 无源蜂鸣器驱动
💻 ASM
📖 第 1 页 / 共 2 页
字号:
 	GOTO   START
	GOTO   START
	ORG    0004H
;****************************************************
	
	
;###################################################按键检测程序
ADAJ                                 ;按键模拟转换
        BCF     STATUS,5	
	 CLRF    ANJZ                 ;清按键值
        CLRF    ADRES
	 BSF     STATUS,5           ;重新定义模拟口
	 MOVLW   B'11001011'
	 MOVWF   TRISA
	 MOVLW   B'100'
	 MOVWF   ADCON1
	 BCF     STATUS,5
	 MOVLW   B'10011001'          ;32分频,选中RA3
	 MOVWF   ADCON0
	 MOVLW   D'8'
	 MOVWF   DCOUNT1              ;延时2TAD
DLOOP1
        DECFSZ  DCOUNT1
        GOTO    DLOOP1
        MOVLW   D'4'
        MOVWF   DCOUNT1              ;延时14微秒,采样时间
DLOOP2
        DECFSZ  DCOUNT1
        GOTO    DLOOP2
        BSF     ADCON0,GO
        NOP
        NOP
        BTFSC   ADCON0,GO
        GOTO    $-1
        MOVF    ADRES,0
	 MOVWF   ANJZ                  ;按键值保护
	 RETLW   0
;###################################################排风检测	 
ADP                                   ;排风模拟转换	
;	 CLRF    PAIFZ                 ;清排风值
        CLRF    ADRES
	 BSF     STATUS,RP0            ;重新定义模拟口
	 MOVLW   B'100'
	 MOVWF   ADCON1
	 BCF     STATUS,RP0
	 MOVLW   B'10000001'           ;32分频,选中RA0
	 MOVWF   ADCON0
	 MOVLW   D'8'
	 MOVWF   DCOUNT1               ;延时2TAD
DLOOP3
        DECFSZ  DCOUNT1
        GOTO    DLOOP3
        MOVLW   D'4'
        MOVWF   DCOUNT1               ;延时14微秒,采样时间
DLOOP4
        DECFSZ  DCOUNT1
        GOTO    DLOOP4
        BSF     ADCON0,GO
        NOP
        BTFSC   ADCON0,GO
        GOTO    $-1
        MOVF    ADRES,0
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	 ADDWF   PAIFZ1,1                  ;排风值保护
	 BTFSC   STATUS,C
	 INCF    PAIFZ2                  ;保存进位值
	 DECFSZ  PAIFZ3,1
	 RETLW   0                       ;不到16次,不做处理
	 MOVLW   D'16'
	 MOVWF   PAIFZ3                  ;16次求平均值
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	 BCF     STATUS,C
	 NOP
	 RRF     PAIFZ2,1
	 RRF     PAIFZ1,1                   ;右移一次
	 BCF     STATUS,C
	 NOP
	 RRF     PAIFZ2,1
	 RRF     PAIFZ1,1                   ;右移二次
        BCF     STATUS,C
	 NOP
	 RRF     PAIFZ2,1
	 RRF     PAIFZ1,1                   ;右移三次
        BCF     STATUS,C
	 NOP
	 RRF     PAIFZ2,1
	 RRF     PAIFZ1,1                   ;右移四次
	 NOP
	 NOP
        MOVF    PAIFZ1,0
        MOVWF   PAIFZ                    ;确认排风值
        CLRF    PAIFZ1
        CLRF    PAIFZ2
        RETLW   0
;###################################################送风检测	 
ADS                                   ;送风模拟转换	
;	 CLRF    SONGFZ                ;清送风值
        CLRF    ADRES
	 BSF     STATUS,RP0            ;重新定义模拟口
	 MOVLW   B'100'
	 MOVWF   ADCON1
	 BCF     STATUS,RP0
	 MOVLW   B'10001001'           ;32分频,选中RA1
	 MOVWF   ADCON0
	 MOVLW   D'8'
	 MOVWF   DCOUNT1               ;延时2TAD
DLOOP5
        DECFSZ  DCOUNT1
        GOTO    DLOOP5
        MOVLW   D'4'
        MOVWF   DCOUNT1               ;延时14微秒,采样时间
DLOOP6
        DECFSZ  DCOUNT1
        GOTO    DLOOP6
        BSF     ADCON0,GO
        NOP
        BTFSC   ADCON0,GO
        GOTO    $-1
        MOVF    ADRES,0
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	 ADDWF   SONGFZ1,1                  ;排风值保护
	 BTFSC   STATUS,C
	 INCF    SONGFZ2                  ;保存进位值
	 DECFSZ  SONGFZ3,1
	 RETLW   0                       ;不到16次,不做处理
	 MOVLW   D'16'
	 MOVWF   SONGFZ3                  ;16次求平均值
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	 BCF     STATUS,C
	 NOP
	 RRF     SONGFZ2,1
	 RRF     SONGFZ1,1                   ;右移一次
	 BCF     STATUS,C
	 NOP
	 RRF     SONGFZ2,1
	 RRF     SONGFZ1,1                   ;右移二次
        BCF     STATUS,C
	 NOP
	 RRF     SONGFZ2,1
	 RRF     SONGFZ1,1                   ;右移三次
        BCF     STATUS,C
	 NOP
	 RRF     SONGFZ2,1
	 RRF     SONGFZ1,1                   ;右移四次
	 NOP
	 NOP
        MOVF    SONGFZ1,0
        MOVWF   SONGFZ                    ;确认排风值
        CLRF    SONGFZ1
        CLRF    SONGFZ2
        RETLW   0

;###################################################
BCD                                     ;显示十进制转换
	 MOVLW    D'8'
	 MOVWF    DCOUNT2                ;转换8次
	 CLRF     R1                     ;清理百位
	 CLRF     R2                     ;清理个位
BCD1
        RLF      DCOUNT3                ;被转换值
        RLF      R2
        RLF      R1
        RLF      R0
        DECFSZ   DCOUNT2
        GOTO     BCD2
        RETLW    0
BCD2
        MOVLW    R2
        MOVWF    FSR                    ;间接寄存器
        CALL     BCD3                   ;调整3个位
        MOVLW    R1
        MOVWF    FSR                    ;间接寄存器
        CALL     BCD3                   ;调整百位
        NOP
	 GOTO     BCD1
BCD3                                     ;BCD调整
        MOVLW    D'3'
        ADDWF    0,W                     ;间接寄存器运算
        MOVWF    TEMP
        BTFSC    TEMP,3
        MOVWF    0
        MOVLW    H'30'
        ADDWF    0,W
        MOVWF    TEMP
        BTFSC    TEMP,7
        MOVWF    0
        RETLW    0
;###################################################          	
FENGM                                   ;蜂鸣器子程序
        MOVLW    D'10'
        MOVWF    R3
        BSF      PORTA,2                 ;共10次
FENGM1
        CALL     YANS                    ;频率2.4KHZ
        DECFSZ   R3,1
        GOTO     FENGM4
        BCF      PORTA,2
        RETLW    0
FENGM4
        BTFSS     XIANGF,0
        GOTO      FENG
        BSF       PORTA,2
        BCF       XIANGF,0
        ;COMF     PORTA,2
        GOTO     FENGM1
FENG
        BCF      PORTA,2
        BSF      XIANGF,0
        GOTO    FENGM1        
               
;###################################################         
YANS                                    ;延时250微秒
        MOVLW    D'65'
        MOVWF    R0	
DLOOP7
        DECFSZ   R0,1
        GOTO     DLOOP7
        NOP
        RETLW    0
;###################################################         
FENGM5                                   ;间歇5毫秒	
	 MOVLW    D'10'
	 MOVWF    R3
FENGM2
        CALL     YANS
        DECFSZ   R3,1
        GOTO     FENGM2
        RETLW    0
;###################################################
FENGM3
        BTFSC    BAOJ2,0 
        GOTO     FENGM6
        CALL     FENGM5             ;无报警要求
        RETLW    0
FENGM6                               ;有报警要求
        BTFSC    BAOJ3,0             ;判断是否为报警时间
        GOTO     FENGM7              ;报警时间段
        BSF      STATUS,5
        MOVLW    B'00001011'
        MOVF     TRISA
        BCF      STATUS,5
        BCF      PORTA,2
        DECFSZ   BAOJ4               ;报警的静止时间段
        GOTO     FENGM8
        CALL     FENGM5
        MOVLW    D'100'              ;响100次,500毫秒
        MOVWF    BAOJ4
        BSF      BAOJ3,0 
        RETLW    0
FENGM8
        CALL     FENGM5
        RETLW    0 
;*****************************************************************           
FENGM7                               ;报警时间段
        BSF      STATUS,5
        MOVLW    B'00001011'
        MOVF     TRISA
        BCF      STATUS,5
        BSF      PORTA,2
        DECFSZ   BAOJ4               ;报警时间段
        GOTO     FENGM9
        CALL     FENGM5
        MOVLW    D'100'              ;响100次,500毫秒
        MOVWF    BAOJ4
        CLRF     BAOJ3
        BCF      PORTA,2
        RETLW    0
FENGM9
        CALL     FENGM5              ;报警时间段,A2口一直为高
        RETLW    0
;################################################### 
       
TABLE                               ;显示转换
        ADDWF    PCL
        RETLW    H'F3'              ;0
        RETLW    H'90'              ;1
        RETLW    H'C7'              ;2
        RETLW    H'D5'              ;3
        RETLW    H'B4'              ;4
        RETLW    H'75'              ;5
        RETLW    H'77'              ;6
        RETLW    H'D0'              ;7
        RETLW    H'F7'              ;8
        RETLW    H'F5'              ;9       
;-----------------------主程序开始-----------------------------------
START
	CLRF   PORTA
	CLRF   PORTB
	CLRF   PORTC
	BSF    STATUS,5
	MOVLW  B'11001011'
	MOVWF  TRISA            ;定义端口A
	MOVLW  B'100'
	MOVWF  ADCON1           ;定义A/D端口           
	MOVLW  B'00000000'
	MOVWF  TRISB            ;定义端口B
	MOVLW  B'00000001'
	MOVWF  TRISC            ;定义端口C
	BCF    STATUS,5
	MOVLW  0
	MOVWF  PORTC	
	     MOVLW    H'20'
       MOVWF    FSR
NEXT
       CLRF     INDF
       INCF     FSR,1         ;指针加1
       MOVLW    H'3B'
       SUBWF    FSR,0
       BTFSS    STATUS,Z
       GOTO     NEXT 
       BSF      BAOJ2,0
       MOVLW    D'140'
       MOVWF    R5
;################################################### 
BAOJING
       BTFSS    BAOJ2,0
       GOTO     BUBAOJ      ;去不报警处理
       BTFSS    BAOJ3,0
       GOTO     BUBAOJ05S   ;停止报警0.5s
       CALL     FENGM
       DECFSZ   R5,1
       GOTO     BAOJING
       MOVLW    D'140'
       MOVWF    R5
       BCF      BAOJ3,0
       BCF      PORTA,2
       GOTO     BAOJING
BUBAOJ05S
       CALL     FENGM5
       DECFSZ   R5,1
       GOTO     BAOJING
       MOVLW    D'140'
       MOVWF    R5
       BSF      BAOJ3,0
       GOTO     BAOJING       
BUBAOJ
      BCF      PORTA,2
      BSF      BAOJ3,0
      RETLW    0       
	NOP
	NOP	
	END
	
	
	
	
	
	
	
	
	
	

⌨️ 快捷键说明

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