    ;*******************************************************************************
    ;*                         Kikapcsolás késleltető                              *
    ;*******************************************************************************       
     
            LIST    P=PIC16F716 ; lista megadása
            RADIX   hex                ; alapértelmezet számrendszer megadása
            #include "p16F716.inc"
     
     
     __CONFIG _FOSC_HS & _BOREN_OFF & _WDTE_OFF 
     
        CBLOCK  0x20
CIKLUS
        ENDC
     
        org     0x0000
        nop
       
INICIALIZALAS
        CLRF    PORTA             ;Kimenetek törlése
		clrf	PORTB
        CLRF    ADCON0			 ; A/D kikapcsolása
	banksel	TRISA
		movlw	0x07
		movwf	ADCON1           ;Digitális mód
        MOVLW   B'11110111'
        MOVWF   TRISB            ;RB3 kivételével minden port kimenetnek állítva
        MOVLW   B'00000111'
        MOVWF   OPTION_REG       ;Timer 0 beállítása kb 1 másodpercre.
        MOVLW   .249               ;(ami valójában 25) így a PWM frekvencia kb 
        MOVWF   PR2               ;250Hz.
	banksel	T2CON
        MOVLW   B'00000100'       ;T2 bekapcsolása. Elő és utóosztó nincs.
        MOVWF   T2CON             ;T2 időzítő(PWM periódus ideje) 249-re állítva,

        MOVLW   B'00001100'       ;PWM kiválasztása, bekapcsolása (RB3-es láb)
        MOVWF   CCP1CON
        MOVLW   .240              ;Kitöltés beállítása 96%-ra (induló érték)
        MOVWF   CCPR1L
        ;---------------
        MOVLW   .15               ;Ciklus számlálóba 15-öt tölt. Azért ennyit,mert
        MOVWF   CIKLUS            ;15 másodpercenként kell 1-el csükkenteni a kitöltést.
MAIN
        BTFSS   INTCON,2          ;Ezen a ponton egyhelyben pörög a program, amíg
        GOTO    MAIN              ;timer0 le nem jár.
        BCF     INTCON,2          ;Töröljük timer0 jelzőbitjét.
        DECFSZ  CIKLUS,f          ;1-et levon ciklus számlálóból. Ha még nem járt le
        GOTO    MAIN              ;visszaugrik MAIN-re. Ha lejárt újra feltölti
        MOVLW   .15               ;ciklus számlálót és levon 1-et a
        MOVWF   CIKLUS            ;kitöltésből, majd ismét MAIN ugrik.
        DECFSZ  CCPR1L,f          ;Ha a kitöltés 0%, elugrik VEGE rutinra
        GOTO    MAIN         
VEGE
        CLRF    CCP1CON           ;Itt teljesen kikapcsol a PWM generátor és
        CLRF    PORTA              ;törlődik az összes kimenet.
        GOTO    $-0               ;Itt gyakorlatilag újraindításig egy végtelen
                                  ;ciklusba megy a processzor.
        END
