 LIST P=16F877
 #INCLUDE "P16F877.INC"
 __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
	CBLOCK	0x20
		T1
		T2
		T3
	ENDC
	ORG	0

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

	;TRIS-ek állítása
	MOVLW	B'00011111'		;Betöltjük az akksiba a TRISA-ba irandót
	MOVWF	TRISA			;Beállítjuk a PORTA-t bemenetre (beírjuk a TRISA-ba)
	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
	RLF		PORTD,F			;Balra forgatja a biteket (F most egyenlő a PORTD-vel)
	BTFSS   PORTA,1			;Következő sor végrehajtása ha lenyomva S2
	RRF		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