|
; 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
|
|