  LIST P=18F458
 #INCLUDE "P18F458.INC"
 CONFIG OSC = XT 
 CONFIG WDT = OFF 
 CONFIG LVP = OFF
 CONFIG BOR = OFF

	CBLOCK	0x20
		T1
		T2
		T3
	ENDC
	ORG	0
goto START

    ORG 0x2a
    
START
;	BCF	STATUS,RP1			;BANK 2. bit törlés

;	BSF	STATUS,RP0			;BANK1

	;PORTA Digitális I/O-vá tétel
	MOVLW	0x06			
	MOVWF	ADCON1			;Mindegyik PORTA digitális
    MOVWF    CMCON          ;Analóg komparátorok kikapcsolása

	;TRIS-ek állítása
	MOVLW	B'00011111'
	MOVWF	TRISA			;PORTA bemenet
	MOVLW	B'00000000'
	MOVWF	TRISD			;PORTD kimenet
;	BCF		STATUS,RP0		;BANK0

	;LED init
	MOVLW	B'00000001'		;Bekapcsoljuk az első LED-et
	MOVWF	PORTD			;Minden LED Kikapcs

	clrc					;Töröljük a rotate segét bitjét
	
MAIN
	BTFSS   PORTA,0			;Következő sor végrehajtása ha lenyomva S1
	RLNCF	PORTD,F			;Balra forgatja a biteket (F most egyenlő a PORTD-vel)
	BTFSS   PORTA,1			;Következő sor végrehajtása ha lenyomva S2
	RRcF	PORTD,F			;Jobbra forgatja a biteket
	CALL	DELAY
	GOTO	MAIN			;Visszaugrunk a legelejére

DELAY						;Delay labelje
	MOVLW	d'100'			
	MOVWF	T1				;T1-be bekerül a 200
DEL
	MOVLW	d'255'
	MOVWF	T2				;T2-be bekerül a 255
DEL1
	MOVLW	d'20'
	MOVWF	T3				;T3-ba bekerült a 10
DEL2
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DECFSZ	T3,f			;Csökkenti a T3-at, addíg, amig nem nulla
	GOTO	DEL2			; mindig visszaugruk a DEL2-re, vagyis a sok NOP-ra
	DECFSZ	T2,f			;Ha már nulla, akkor ugyanez eljátszódik a T2-vel
	GOTO	DEL1
	DECFSZ	T1,f			;Majd a T1-el is
	GOTO	DEL
	RETURN					;Visszatér a DELAY szubrutinból

 	END						;Teljes program végét jelentő END