×
单片机 > 单片机程序设计 > 详情

PIC单片机驱动NB358烟雾报警器汇编程序

发布时间:2020-06-17 发布时间:
|

;           NB358 software v1.0 

                LIST      P=16F676 

                INCLUDE   "16F676.INC" 

                __CONFIG _CP_OFF & _WDT_ON & _BODEN & _PWRTE_ON & _XT_OSC & _MCLRE_ON & _CPD_OFF 

; ********************************* 

;       Variable Define 

; ********************************* 

;------------------------------------ 

                        CBLOCK 20H 

;W_TEMP 

;STATUS_TEMP 

;TEMP 

;SYS_STATUS 

;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

;| Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | 

;|Smoke | heat | Totle|      |      | heat | smoke| Heat | 

;|Retest|retest| Alarm|      |      | alarm| alarm| Rise | 

;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

CC 

;------------------ 

TMR0_TEMP 

SMOKE_DAT 

;------------------ 

;LED_COUNT 

;------------------ 

COUNT 

COMMAND 

SYS_ADDR 

ADDRESS 

                        ENDC 

;======================================= 

#DEFINE SERIAL_IN RC,0 

#DEFINE POWER RC,1 

#DEFINE RED_LED RC,2 

#DEFINE SMOKE_AD_IN RC,3 

#DEFINE SIGNAL_OUT RC,4 

#DEFINE REMOTE_LED RC,5 

#DEFINE INFRARED_SEND RA,0 

#DEFINE HEAT__AD_IN RA,1 

#DEFINE SIGNAL_IN RA,2 

;####################################### 

;####################################### 

        ORG       00H 

        GOTO      MAIN 

        ORG       04H 

        GOTO      INT_SERVICE 

;************************************** 

;       Interrupt Sub 

;************************************** 

INT_SERVICE 

        CLRWDT 

        MOVLW 0AH 

        MOVWF COUNT 

        MOVLW 027H 

        MOVWF FSR 

READ_INIT_PULSE 

        BCF RED_LED 

        CLRWDT 

        BTFSC RA,2 

        GOTO $-2 

        CLRF TMR0 

        CLRWDT 

        BTFSS RA,2 

        GOTO $-2 

        MOVF TMR0,0 

        MOVWF TMR0_TEMP 

        CLRF TMR0 

        MOVLW 050H   ;04CH 

        SUBWF TMR0_TEMP,0 

        BTFSS STATUS,C 

        GOTO EXIT_READ 

        MOVLW 060H   ;;;;;0EBH 

        SUBWF TMR0_TEMP,0 

        BTFSC STATUS,C 

        GOTO EXIT_READ 

        MOVF TMR0_TEMP,0 

        MOVWF INDF 

        INCF FSR 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PPPPPPPPPPP 

READ_SIGNAL_DATA 

        CLRWDT 

        BTFSC RA,2 

        GOTO $-2 

        MOVF TMR0,0 

        MOVWF TMR0_TEMP 

        MOVWF INDF 

        CLRF TMR0 

        INCF FSR,1 

        MOVLW 0F0H 

        ANDWF TMR0_TEMP,0 

        BSF STATUS,C 

        BTFSC STATUS,Z 

        BCF STATUS,C 

        RLF ADDRESS,1 

        RLF COMMAND,1 

        CLRWDT 

        BTFSS RA,2 

        GOTO $-2 

        CLRF TMR0 

        DECFSZ COUNT,1 

        GOTO READ_SIGNAL_DATA 

        BCF STATUS,C 

        RLF ADDRESS,1 

        RLF COMMAND,1 

        MOVF SYS_ADDR,0 

        SUBWF ADDRESS,0 

        BSF RED_LED    ;;;;;;;;;;;;;;;;;;;;;;;; 

        BTFSS STATUS,Z 

        GOTO EXIT_READ 


        RLF COMMAND,1 

        RLF COMMAND,1 

        RLF COMMAND,1 

        MOVLW 038H 

        ANDWF COMMAND,1 

        MOVLW 03H 

        IORWF COMMAND,1 

        BCF STATUS,C 

        RLF ADDRESS,1 

        RLF COMMAND,1 

        RLF ADDRESS,1 

        RLF COMMAND,1 

        MOVLW 014H 

        MOVWF COUNT 

;;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL 

LINE_TO_PANEL 

        CLRWDT 

        BTFSC RA,2 

        GOTO $-2 


        CALL DE360 

        RLF ADDRESS,1 

        RLF COMMAND,1 

        RLF SMOKE_DAT,1 

        BTFSS STATUS,C 

        GOTO $+3 

        BSF SIGNAL_OUT 

        CALL DE250 

        BCF SIGNAL_OUT 

        CLRWDT 

        BTFSS RA,2 

        GOTO $-2 

        CLRF TMR0 

        DECFSZ COUNT,1 

        GOTO LINE_TO_PANEL 

SAVE 

        MOVLW 024H 

        MOVWF FSR 

        MOVLW 033H 

        MOVWF COUNT 

        BSF RED_LED 

;;;;;;;;;;;; 

SAVE_DATA 

        CLRWDT 

        BSF STATUS,RP0 

        MOVF FSR,0 

        MOVWF EEADR 

        MOVF INDF,0 

        MOVWF EEDATA 

        BSF EECON1,WREN 

        MOVLW 055H 

        MOVWF EECON2 

        MOVLW 0AAH 

        MOVWF EECON2 

        BSF EECON1,WR 

        CLRWDT 

        BTFSC EECON1,WR 

        GOTO $-2 

        INCF FSR,1 

        DECFSZ COUNT,1 

        GOTO SAVE_DATA 

        BCF EECON1,WREN 

        BCF STATUS,RP0 

        NOP 

        CLRWDT 

        NOP 

        NOP 

        GOTO $-4 

EXIT_READ 

        BCF RED_LED 

        RETFIE 

;************************************ 

;        Main 

;************************************ 

MAIN: 

        CALL SYS_INIT 

        NOP 

        SLEEP 

        SLEEP 

        SLEEP 

        NOP 

        NOP 

;*********************************** 

;          System Setup 

;*********************************** 


;-------------------- 

NORMAL_MODE 

;---------read system address------------------------ 

        BCF RA,1 

        BSF STATUS,RP0 

        BCF ANSEL,1 

        BCF TRISA,1 

        BCF STATUS,RP0 

        NOP 

        BSF POWER 

        GOTO $+1 

        BSF RA,0 

        MOVLW 08H 

        MOVWF COUNT 

        BCF RA,0 

        NOP 

READ_ADDRESS 

        BSF RA,1 

        GOTO $+1 

        BCF RA,1 

        BSF STATUS,C 

        BTFSS RC,0 

        BCF STATUS,C 

        RRF SYS_ADDR,1 

        DECFSZ COUNT,1 

        GOTO READ_ADDRESS 

        BSF STATUS,RP0 

        BSF TRISA,1 

        BSF ANSEL,1 

        BCF STATUS,RP0 

        BCF POWER 

        BCF STATUS,C 

        RLF SYS_ADDR,1 

;''''''''''''''''''''''


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil(MDK-ARM)系列教程(七)_菜单