;**********************************************************
;*  ora_59_1 - 16F628a
;**********************************************************

                list p=16F628a

                include "P16F628a.INC"

    __CONFIG    _BOREN_OFF & _DATA_CP_OFF & _CP_OFF &  _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT

;------------------------------------------------------------
#define         RELE_PORT   PORTB
#define         RELE        PORTB,0
;------------------------------------------------------------
                cblock      0x70
                saveWREG
                saveSTATUS
                masodperc
                endc
;------------------------------------------------------------

Reset_Vector    org         0x000
                goto        Start

Int_Vector      org         0x004
                ; mas int egyenlore nincs, ugyhogy meg context savings sem kellene igazandiol...
                movwf       saveWREG
                swapf       STATUS,W
                movwf       saveSTATUS

                ; mas interrupt nincs is, ugyhogy meg ellenorizni
                ; sem kellene mi okozta az interruptot...
                banksel     PIR1 
                btfss       PIR1,TMR1IF
                goto        ISR_return

ISR_timer0
                bcf         PIR1,TMR1IF
                incf        masodperc,f

                movf        masodperc,W
                sublw       d'58' /2    ; 2 masodpercenkent van interrupt...
                btfsc       STATUS,Z    ; 58. masodpercben vagyunk?
                bsf         TMR1H,7     ; igen, most mar csak 1 mp-et varunk

                addlw       d'1'        ; 59. masdperc?
                btfsc       STATUS,Z
                goto        rele_be

                addlw       d'1'        ; 60. masodperc?
                btfsc       STATUS,Z
                goto        rele_ki

                goto        ISR_return
                
rele_be
                bsf         TMR1H,7     ; itt is csak 1 mp-et varunk
                banksel     RELE_PORT
                bsf         RELE
                goto        ISR_return

rele_ki
                banksel     RELE_PORT
                bcf         RELE
                clrf        masodperc
                goto        ISR_return

ISR_return
                swapf       saveSTATUS,W
                movwf       STATUS
                swapf       saveWREG,f
                swapf       saveWREG,W
                retfie

Start
                ; PORTA outputra kapcsoljuk hogy keveset fogyasszon
                banksel     PORTA
                clrf        PORTA
                movlw       0x07
                movwf       CMCON
                banksel     TRISA
                clrf        TRISA
                
                banksel     RCSTA    ; turn off USART
                clrf        RCSTA
                banksel     PORTB    ; set all outputs high
                clrf        PORTB
                banksel     TRISB    ; set all of PORTB to outputs
                movlw       b'11000000'
                movwf       TRISB
                clrf        OPTION_REG
                
                ; timer felprogramozasa
                banksel     T1CON
                movlw       b'00001111' ; T1OSCEN:1 T1SYNC:OFF, TMR1CS:External, TMR1ON:1
                movwf       T1CON                
                banksel     TMR1L
                clrf        TMR1L
                clrf        TMR1H
                clrf        masodperc
                ; engedelyezzuk az interruptot
                clrf        INTCON
                banksel     PIR1
                clrf        PIR1
                banksel     PIE1
                clrf        PIE1
                bsf         PIE1,TMR1IE
                bsf         INTCON,PEIE
                bsf         INTCON,GIE

;------------------------------------------------------------
alszunk ; itt szepen sporolunk az energiaval
                sleep
                goto        alszunk
;------------------------------------------------------------
                end
