; PORTA,0 pergésmentesen egyesével lépteti a ledeket, nyomvatartva futnak    



	LIST P=16F877
 #include "P16F877.INC"
	ERRORLEVEL 1, -302  ; suppress bank selection messages
 __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
				

	extern  pergesmentesites        ; itt megmondjuk a forditonak, hogy ez a cimke valahol egy masik modulban lesz globalisnak deklaralva, szoval majd a linker meg fogja talalni
mainValtozok    udata 			  ; majd ha kell ide teszed a valtozokat a res dierektivaval

rvec    code    0       ; reset vektor
	NOP             ; ICD debuggolashoz kellhet ide ez a NOP
	GOTO    main

ivec    code    4       ; interrupt vektor
	GOTO    isr

isr	code    ; itt az 'isr' nem cimke, hanem a code szekcio neve...
isr                             ; itt az 'isr' mar ugye cimke
         ; interrupt kezelo rutin ide...
	RETFIE  



main    code			    ; itt figyeld meg, hogy a 'main' az nem cimke, hanem a szekcio neve!
main 			   ; na ez cimke, es mivel nem makro igy nem csupa nagybetuzunk...
  

	
	;PORTA Digitális I/O-vá tétel
	MOVLW	0x06			
	banksel	ADCON1			;Mindegyik PORTA digitális
	MOVWF   ADCON1
	;TRIS-ek állítása
	MOVLW	B'00000001'		;Betöltjük az akksiba a TRISA-ba írandót    RA0. labra kapcsolot tenni
	MOVWF	TRISA			;Beállítjuk a PORTA-t bemenetre (beírjuk a TRISA-ba)
	MOVLW	B'00000000'		;Betöltjük az akksiba a TRISD-be valót
	MOVWF	TRISD			;PORTD mind kimenet a nulla miatt

	banksel PORTD

	CLRC					;Töröljük a rotate segét bitjét
	MOVLW	B'00000001'		;Bekapcsoljuk az első led-et
	MOVWF	PORTD		

kapcsolofigyeles
	BTFSS	PORTA,0			;Következő sor végrehajtása ha lenyomva
	CALL	tovabb_leptetes
	GOTO	kapcsolofigyeles

tovabb_leptetes
	RLF	PORTD,F			;Balra forgatja a biteket (F most egyenlő a PORTD-vel)
	CALL    pergesmentesites
	RETURN 	

	END

