; PORTA,0 pergésmentesen egyesével lépteti a ledeket, nyomvatartva futnak    



	LIST P=16F877
#include "P16F877.INC" ; az #include direktiva kisbetu! Azonkivul konvencionalisan sor elejere rakjuk
	ERRORLEVEL 1, -302  ; suppress bank selection messages

 __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF

; mivel a MAIN nem hasznal valtozokat, ezert teljesen felesleges volt a CBLOCK, raadasul ugyanoda volt
; deklaralva mint a 'modulodban' - ugye a CBLOCK nagy hatranya a linker scriptes udataval szemben,
; hogy nem figyelmeztet a valtozok felul definialasara - mivel a CBLOCK nem valtozo definialasara lett kitalalva!

	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


; na hat ez ide akkor nem kell mivel linkelunk... #include "m_bank.asm"				; BANK selection forrasfile


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...
; ez itt mi akart lenni? van nekunk a banksel makro, ne talaljuk fel a spanyol viaszkot!	BANK1	


	;PORTA Digitális I/O-vá tétel
	MOVLW	0x06			
	banksel	ADCON1	; itt a banksel! A TRSI-ek es az ADCON1 ugyanazon a bankon van, szoval elegendo egyszer kiadni itt
	MOVWF	ADCON1			;Mindegyik PORTA digitális
	;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

; nem kell ez ide akkor....	BANK0
	banksel PORTD	; ugyanis helyette van a banksel...

	CLRC					;Töröljük a rotate segét bitjét
	MOVLW	B'00000001'		;Bekapcsoljuk az első led-et
	MOVWF	PORTD		

kapcsolofigyeles ; nem nagybetuzgetunk...
	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		; pergesmentesíto macro meghívása - macro-t nem hivunk, hanem beillesztunk - viszont a kulso modul rutint mar hivjuk!
; HEY!!! Ha valamit CALL-lal hivsz meg illik RETURN-nel vissza terni kulonben lesz egy jokora stack overflow-d!	GOTO	kapcsolofigyeles
	RETURN

	END

