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

📄 nb358.asm

📁 PIC烟雾报警器例程
💻 ASM
字号:
;           NB358 software v1.0
		LIST      P=16F676
		INCLUDE   "P16F676.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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PPPPPPPPPPPP
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

⌨️ 快捷键说明

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