	;  Ötlet: http://wattmep.tvn.hu/PIC_infok/PIC_konfig2.htm

	#include <p18F2550.inc>

	#DEFINE ALL_INT_E_T INTCON,GIEH ; GLOBALIS MEGSZAKITASOK ENGEDELYEZESE_TILTAS (7. bit)
	#DEFINE P_INT_E_T   INTCON,GIEL ; PERIFERIA MEGSZAKITASOK ENGEDELYEZESE_TILTAS (6. bit)
	#DEFINE LED_1 PORTA,4 ; ez az egyik LED 

	CONFIG FOSC=HS ; 20MHz-es kvarc van
	CONFIG WDT=OFF
	CONFIG PWRT=OFF
	CONFIG BOR=OFF
	CONFIG CPD=OFF
	CONFIG LVP=OFF
	CONFIG DEBUG=OFF
	CONFIG MCLRE=OFF
	CONFIG PBADEN=OFF

	CBLOCK 0X0020
	LEDEK
	COUNT
    AKKU_TEMP
    STATUS_TEMP
    BSR_TEMP ; MEGSZAKITASKOR EZEKBE MENTJUK A FONTOS REGISZTEREKET
    ENDC

    ORG 0X0000 ; "RESET belépési pontja. Ha pl. a WDT vagy a RESET gomb aktiválódik, innen folytatódi ill.
    GOTO INI ;  kezdődik a további utasításvégrehajtás.
   
    ORG 0X0008 ; High prioritású megszakítás pont     
    GOTO MEGSZAK

    ORG 0X0018 ; Low priorítású megszakítás pont
    RETFIE ; Erről a megszakítási pontról rögtön visszatérünk, ha véletlenü idetévedne a PIC.
                                                ;( de véletlenek itt nincsenek!)
MEGSZAK    
    MOVWF AKKU_TEMP ; W REGISZTER ELTAROLASA
    MOVFF STATUS,STATUS_TEMP ; STATUS REG TAROLASA
    MOVFF BSR,BSR_TEMP ; BSR REG TAROLASA   

    BTFSS INTCON,TMR0IF ; TIMER0 MEGSZAKÍTÁS?
    BRA MEG_VÉGE  ; Ha nem, akkor itt nincs teendő. Ebben a példában ilyen nem fordulhat elő, mert más egység nem okozhat megszakítást.

    BTFSS LED_1 ; LED_1 BE VAN KAPCSOLVA?
    BRA LED_BE  ; Ha nem, akkor bekapcs
    BCF LED_1   ; Ha igen akkor kikapcs
   ; BSF LED_2   ; másik meg , be
    BRA MEG_VÉGE

LED_BE
    BSF LED_1 ; BEKAPCS
   ; BCF LED_2

;.......................................................................................
MEG_VÉGE
    MOVFF BSR_TEMP, BSR
    MOVF AKKU_TEMP, W
    MOVFF STATUS_TEMP,STATUS ; MENTETT REGISZTEREK VISSZAÁLLÍTÁSA
    BCF INTCON,TMR0IF ; TIMER0 INT Flag Törlése. Erről nekünk kell gondoskodni, mert különben soha nem jutunk ki a megszakításból.
    RETFIE ; Visszatérés a megszakításból

INI
	movlw 0x00
	movwf LEDEK ; ledek kinullázása
	CLRF INTCON
    CLRF INTCON2
    CLRF INTCON3 ; KULSO MEGSZAKITAS FORRASOK LETILTVA, FLAGEK TOROLVE

    CLRF IPR1
    CLRF IPR2
    CLRF PIE1
    CLRF PIE2
    CLRF PIR1
    CLRF PIR2 ; MEGSZAKITASOKAT KEZELO REGISZTEREK ALAPHELYZETBE ALLITVA

    SETF CMCON ; COMPARATOR OFF

    BSF INTCON2,RBPU ; PORTB FELHÚZÓ ELLENALLAS OFF

    MOVLW B'01111011'
    MOVWF OSCCON ; Belső OSC 8MHz, Nincs freki hangolás   

    MOVLW B'00001111'  
    MOVWF ADCON1 ; PORTA DIGIT I/O

    MOVLW B'10000010' ; az előosztót a 0..2 bitek állítják.
    MOVWF T0CON ; TIMER0 BEÁLLÍTÁSA. TIMER0 ON, 32*-es ELŐOSZTÁS, 1 SECENKÉNT MEGSZAKÍTÁS LESZ
	BSF INTCON,TMR0IE
	BSF INTCON2,TMR0IP ; TIMER0 MEGSZAKITAS MAGAS SZINTŰ LEKEZELES. 8-as CÍM
;------------------------- PORTOK BEÁLLÍTÁSA -- 1 -> BEMENET, 0 -> KIMENET ------------------------------------------
    CLRF PORTA
    CLRF LATA
    CLRF PORTB
    CLRF LATB
    CLRF PORTC
    CLRF LATC
    ;CLRF PORTD
    ;CLRF LATD
    ;CLRF PORTE
    ;CLRF LATE ; Ki és bemeneti tárolók törlése
    MOVLW B'11111100'         
    MOVWF TRISB           
    MOVLW B'11111111'          
    MOVWF TRISC
    MOVLW B'11100011' ; RA 0,1 a LED-ekre kapcsolódnak       
    MOVWF TRISA
    ;MOVLW    B'11111111'           
    ;MOVWF    TRISD
    ;MOVLW    B'11101111' ;  RE3 a reset és a Vpp-n van. Gyárilag bemenet lehet csak., Párhuzamos prot (PSP) MODUL OFF !
    ;MOVWF    TRISE ; PORTE csak 4 bites
;************************** FOPROGI ******************************
PROGRAM
    BSF ALL_INT_E_T ; MINDEN MEGSZAK. SZABAD
    BSF P_INT_E_T ; MINDEN PERIFÉRIA MEGSZAK. SZABAD
    BSF INTCON,TMR0IE ; TIMER0 MEGSZAKÍTÁS ENGEDÉLYEZVE
	BSF RCON,IPEN ; Megszakítások engedélyezése
    NOP  
DO                                  ; várakuzunk a megszakításra
    BRA DO                       ; relatív ugrás parancs a DO-ra
  
;*******************************************************************
	END
