EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 621|回复: 0

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

[复制链接]

22

主题

1

回帖

241

E币

技术员

Rank: 2

积分
45
发表于 2017-4-25 14:17:43 | 显示全部楼层 |阅读模式
;           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
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
;'''''''''''''''''''''''''''''''''
        BSF STATUS,RP0
        MOVLW 02H
        MOVWF EEADR
        MOVF SYS_ADDR,0
        MOVWF EEDATA
        BSF EECON1,WREN
        MOVLW 055H
        MOVWF EECON2
        MOVLW 0AAH
        MOVWF EECON2
        BSF EECON1,WR
        BTFSC EECON1,WR
        GOTO $-1
        BCF EECON1,WREN
        BCF STATUS,RP0
;--------------------------------------------
;**************************************
;            Main Sub
;**************************************
MAIN1
;        CLRWDT
        CLRF COMMAND
        CLRF ADDRESS
        MOVLW 070H
        MOVWF SMOKE_DAT
        MOVLW 090H
        MOVWF INTCON
        NOP
MAIN9
        CLRWDT
        NOP
;        SLEEP
        NOP
        NOP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        GOTO MAIN9
;******************************************************
;       System Initialization
;******************************************************
SYS_INIT:
        BSF STATUS,RP0
        CALL 03FFH                ;Get the cal value
        MOVWF OSCCAL        ;Calibrate
        BCF STATUS,RP0
        MOVLW 00H
        MOVWF RA
        MOVLW 00H
        MOVWF RC
        MOVLW 07H
        MOVWF CMCON              ;comp off
;        MOVLW 030H
;        MOVWF T1CON
        MOVLW 080H
        MOVWF ADCON0
        CLRF INTCON
        BSF STATUS,RP0
        MOVLW 03EH
        MOVWF TRISA
        MOVLW 09H
        MOVWF TRISC
        CLRF PIE1
        MOVLW 080H     ;08EH
        MOVWF OPTION_REG
        MOVLW 082H
        MOVWF ANSEL
        MOVWF 00H
        MOVWF WPUA
        MOVLW 00H  ;;;;
        MOVWF IOCA
        MOVLW 060H
        MOVWF ADCON1
;        MOVLW 00H
;        MOVWF VRCON
        BCF STATUS,RP0
;        CLRF SYS_STATUS
        RETURN
;**************************************
;             delay sub
;**************************************
DELAY        CLRWDT
                DECFSZ        CC,1
                GOTO        DELAY
                RETURN
DE360        MOVLW        08H   ;370uS
                MOVWF        CC
                CALL        DELAY
                RETURN
DE250        MOVLW        04H   ;250uS
                MOVWF        CC
                CALL        DELAY
                RETURN
;********************************************
        END
积分规则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-4-25 21:21 , Processed in 0.038727 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表