;************************************************************************** ;* Bestandsnaam : Alarm2.asm ;************************************************************************** ;* Versie : 1.0 ;************************************************************************** ;* Datum : 02.05.2004 ;************************************************************************** ;* Functie : Huisalarm ;* ;* PORTA inputs alarm ;* RA0 = SW1 = PIN 17 = Inschakelen ;* RA1 = SW2 = PIN 18 = Alarm met Vertraging ;* RA2 = SW3 = PIN 1 = Onmiddellijk alarm ;* RA3 = SW4 = PIN 2 = Reset alarm ;* ;* PORTB output alarm ;* ;* RB0 = LED1 = PIN 6 = Alarm scherp ;* RB1 = LED2 = PIN 7 = Zoneled Onmiddellijk ;* RB2 = LED3 = PIN 8 = (Zoneled vertraging) ;* RB3 = BUZ1 = PIN 9 = Buzzer instaptijd ;* RB4 = LED5 = PIN10 = Sirene ;* RB5 = LED6 = PIN11 = LED 3X Alarm geweest ;* ;************************************************************************** ;* Auteur : Gerry Laureys ;************************************************************************** ;* PIC : 16F627 ;************************************************************************** ;* OSC : XT 4MHz ;************************************************************************** ;* Programmer : K8048 Microchip PIC(tm) Programmer ;************************************************************************** ; W EQU H'0000' F EQU H'0001' ;----- Register Files------------------------------------------------------ INDF EQU H'0000' TMR0 EQU H'0001' PCL EQU H'0002' STATUS EQU H'0003' FSR EQU H'0004' PORTA EQU H'0005' PORTB EQU H'0006' PCLATH EQU H'000A' INTCON EQU H'000B' PIR1 EQU H'000C' TMR1L EQU H'000E' TMR1H EQU H'000F' T1CON EQU H'0010' TMR2 EQU H'0011' T2CON EQU H'0012' CCPR1L EQU H'0015' CCPR1H EQU H'0016' CCP1CON EQU H'0017' RCSTA EQU H'0018' TXREG EQU H'0019' RCREG EQU H'001A' CMCON EQU H'001F' OPTION_REG EQU H'0081' TRISA EQU H'0085' TRISB EQU H'0086' PIE1 EQU H'008C' PCON EQU H'008E' PR2 EQU H'0092' TXSTA EQU H'0098' SPBRG EQU H'0099' EEDATA EQU H'009A' EEADR EQU H'009B' EECON1 EQU H'009C' EECON2 EQU H'009D' VRCON EQU H'009F' ;----- STATUS Bits -------------------------------------------------------- IRP EQU H'0007' RP1 EQU H'0006' RP0 EQU H'0005' NOT_TO EQU H'0004' NOT_PD EQU H'0003' Z EQU H'0002' DC EQU H'0001' C EQU H'0000' ;----- INTCON Bits -------------------------------------------------------- GIE EQU H'0007' PEIE EQU H'0006' T0IE EQU H'0005' INTE EQU H'0004' RBIE EQU H'0003' T0IF EQU H'0002' INTF EQU H'0001' RBIF EQU H'0000' ;----- PIR1 Bits ---------------------------------------------------------- EEIF EQU H'0007' CMIF EQU H'0006' RCIF EQU H'0005' TXIF EQU H'0004' CCP1IF EQU H'0002' TMR2IF EQU H'0001' TMR1IF EQU H'0000' ;----- T1CON Bits --------------------------------------------------------- T1CKPS1 EQU H'0005' T1CKPS0 EQU H'0004' T1OSCEN EQU H'0003' NOT_T1SYNC EQU H'0002' TMR1CS EQU H'0001' TMR1ON EQU H'0000' ;----- T2CON Bits --------------------------------------------------------- TOUTPS3 EQU H'0006' TOUTPS2 EQU H'0005' TOUTPS1 EQU H'0004' TOUTPS0 EQU H'0003' TMR2ON EQU H'0002' T2CKPS1 EQU H'0001' T2CKPS0 EQU H'0000' ;----- CCP1CON Bits --------------------------------------------------------- CCP1X EQU H'0005' CCP1Y EQU H'0004' CCP1M3 EQU H'0003' CCP1M2 EQU H'0002' CCP1M1 EQU H'0001' CCP1M0 EQU H'0000' ;----- RCSTA Bits --------------------------------------------------------- SPEN EQU H'0007' RX9 EQU H'0006' SREN EQU H'0005' CREN EQU H'0004' ADEN EQU H'0003' FERR EQU H'0002' OERR EQU H'0001' RX9D EQU H'0000' ;----- CMCON Bits --------------------------------------------------------- C2OUT EQU H'0007' C1OUT EQU H'0006' C2INV EQU H'0005' C1INV EQU H'0004' CIS EQU H'0003' CM2 EQU H'0002' CM1 EQU H'0001' CM0 EQU H'0000' ;----- OPTION Bits -------------------------------------------------------- NOT_RBPU EQU H'0007' INTEDG EQU H'0006' T0CS EQU H'0005' T0SE EQU H'0004' PSA EQU H'0003' PS2 EQU H'0002' PS1 EQU H'0001' PS0 EQU H'0000' ;----- PIE1 Bits ---------------------------------------------------------- EEIE EQU H'0007' CMIE EQU H'0006' RCIE EQU H'0005' TXIE EQU H'0004' CCP1IE EQU H'0002' TMR2IE EQU H'0001' TMR1IE EQU H'0000' ;----- PCON Bits ---------------------------------------------------------- OSCF EQU H'0003' NOT_POR EQU H'0001' NOT_BO EQU H'0000' NOT_BOR EQU H'0000' NOT_BOD EQU H'0000' ;----- TXSTA Bits ---------------------------------------------------------- CSRC EQU H'0007' TX9 EQU H'0006' TXEN EQU H'0005' SYNC EQU H'0004' BRGH EQU H'0002' TRMT EQU H'0001' TX9D EQU H'0000' ;----- EECON1 Bits --------------------------------------------------------- WRERR EQU H'0003' WREN EQU H'0002' WR EQU H'0001' RD EQU H'0000' ;----- VRCON Bits --------------------------------------------------------- VREN EQU H'0007' VROE EQU H'0006' VRR EQU H'0005' VR3 EQU H'0003' VR2 EQU H'0002' VR1 EQU H'0001' VR0 EQU H'0000' ;************************************************************************** ; RAM Definition ;************************************************************************** __MAXRAM H'01FF' __BADRAM H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E' __BADRAM H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E' __BADRAM H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F' __BADRAM H'185', H'187'-H'189', H'18C'-H'1EF' ;************************************************************************** ; Configuration Bits ;************************************************************************** _BODEN_ON EQU H'3FFF' _BODEN_OFF EQU H'3FBF' _CP_ALL EQU H'03FF' _CP_75 EQU H'17FF' _CP_50 EQU H'2BFF' _CP_OFF EQU H'3FFF' _DATA_CP_ON EQU H'3EFF' _DATA_CP_OFF EQU H'3FFF' _PWRTE_OFF EQU H'3FFF' _PWRTE_ON EQU H'3FF7' _WDT_ON EQU H'3FFF' _WDT_OFF EQU H'3FFB' _LVP_ON EQU H'3FFF' _LVP_OFF EQU H'3F7F' _MCLRE_ON EQU H'3FFF' _MCLRE_OFF EQU H'3FDF' _ER_OSC_CLKOUT EQU H'3FFF' _ER_OSC_NOCLKOUT EQU H'3FFE' _INTRC_OSC_CLKOUT EQU H'3FFD' _INTRC_OSC_NOCLKOUT EQU H'3FFC' _EXTCLK_OSC EQU H'3FEF' _LP_OSC EQU H'3FEC' _XT_OSC EQU H'3FED' _HS_OSC EQU H'3FEE' __CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ; ;========================================================================== ; Variable Definition ;========================================================================== ; TIMER1 EQU H'20' ;Used in delay routine TIMER2 EQU H'21' ; " " " COUNTER EQU H'22' COUNTER1 EQU H'23' MAX3 EQU H'24' ;Alarm max 3 X ; ;************************************************************************** ;* ;************************************************************************** ; INIT ORG 0 ;Reset vector address GOTO OPSTART ;goto RESET routine when boot. ;************************************************************************** ;* RESET : main boot routine ;************************************************************************** OPSTART MOVLW B'00000111' ;Disable Comparator module's MOVWF CMCON ; BSF STATUS,RP0 ;Switch to register bank 1 ;Disable pull-ups ;INT on rising edge ;TMR0 to CLKOUT ;TMR0 Incr low2high trans. ;Prescaler assign to Timer0 ;Prescaler rate is 1:256 MOVLW B'11010111' ;Set PIC options (See datasheet). MOVWF OPTION_REG ;Write the OPTION register. ; CLRF INTCON ;Disable interrupts MOVLW B'00000000' MOVWF TRISB ;RB7...RB0 are outputs. MOVLW B'11111111' ;all RA ports are inputs MOVWF TRISA BCF STATUS,RP0 ;Switch Back to reg. Bank 0 CLRF PORTB INSCHAKEL CLRF MAX3 MOVLW D'3' MOVWF MAX3 BTFSS PORTA,0 ;SW1 is ingedrukt ? GOTO INSCHAKEL DELAY0 MOVLW B'00001000' ;BUZZER UITSTAPTIJD +- 5 SEC MOVWF PORTB CLRF COUNTER1 MOVLW D'15' MOVWF COUNTER1 MOVLW D'255' MOVWF TIMER2 TIJD10 BTFSC PORTA,3 GOTO EXIT MOVLW D'255' MOVWF TIMER1 TIJD20 BTFSC PORTA,3 GOTO EXIT DECFSZ TIMER1,F GOTO TIJD20 DECFSZ TIMER2,F GOTO TIJD10 BTFSC PORTA,3 GOTO EXIT DECFSZ COUNTER1,F GOTO TIJD10 LED1 MOVLW B'00000001' ;BUZZER UIT - LED1 ALARM SCHERP AAN MOVWF PORTB SW3 CLRF PORTA ;SW3 INGEDRUKT ? =ALARM BTFSS PORTA,2 ;INDIEN NIET GA NAAR SW4 GOTO SW4 MOVLW B'00010011' ;LED1+LED2+SIRENE AAN MOVWF PORTB DELAY CLRF COUNTER1 ;SIRENE VOOR +- 90 SEC MOVLW D'255' MOVWF COUNTER1 MOVLW D'255' MOVWF TIMER2 TIJD1 BTFSC PORTA,3 GOTO EXIT MOVLW D'255' MOVWF TIMER1 TIJD2 BTFSC PORTA,3 GOTO EXIT DECFSZ TIMER1,F GOTO TIJD2 DECFSZ TIMER2,F GOTO TIJD1 BTFSC PORTA,3 GOTO EXIT DECFSZ COUNTER1,F GOTO TIJD1 MOVLW B'00000011' ;SIRENE UIT - ZONELED ONMIDD. + SCHERP AAN MOVWF PORTB CLRF COUNTER1 ;DELAY +- 5 sec tussen 2 sirenes MOVLW D'15' MOVWF COUNTER1 MOVLW D'255' MOVWF TIMER2 TIJD100 BTFSC PORTA,3 GOTO EXIT MOVLW D'255' MOVWF TIMER1 TIJD200 BTFSC PORTA,3 GOTO EXIT DECFSZ TIMER1,F GOTO TIJD200 DECFSZ TIMER2,F GOTO TIJD100 BTFSC PORTA,3 GOTO EXIT DECFSZ COUNTER1,F GOTO TIJD100 DECFSZ MAX3,F ;max 3 X sirene GOTO SW4 CLRF PORTA ;LOOP na max 3x alarm CHECK VOOR RESET MOVLW B'00100010' ;Alarm niet meer scherp LED 6 = 3x alarm geweest MOVWF PORTB ALARM3 BTFSS PORTA,3 GOTO ALARM3 GOTO EXIT SW4 CLRF PORTA ;CHECK VOOR RESET BTFSS PORTA,3 GOTO SW3 EXIT MOVLW B'00000000' ;RESET MOVWF PORTB GOTO INSCHAKEL ;STANDBY NA RESET END