 LIST P=16F877
 #INCLUDE "P16F877.INC"
 __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
	CBLOCK	0x20			;memóriaszelet lefoglalása
	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'
	MOVWF	TRISA			;PORTA bemenet
	MOVLW	B'00000000'
	MOVWF	TRISD			;PORTD kimenet
	BCF		STATUS,RP0		;BANK0-ba lépés

	MOVLW   B'00000000'		;LED-ek kikapcsolva
MAIN
	BTFSS   PORTA,0			;megvizsgálva PORTA 0-dik bite
	MOVLW   B'00001111'		;ha 1-es akkor bekapcsolom a LED-eket
	MOVWF   PORTD			;Ki a PORTD-re
	CALL	DELAY			;Késleltetés rutin
	BTFSS	PORTA,0			;megvizsgálva PORTA 0-dik bite
	MOVLW	B'00000000'		;ha 1-es akkor kikapcsolom a LED-eket
	MOVWF	PORTD			;Ki a PORTD-re
	CALL	DELAY			;Késleltetés rutin
	GOTO	MAIN			;Vissza a legelejére

DELAY
	MOVLW	d'100'			
	MOVWF	T1				;T1-be bekerül a 200
DEL
	MOVLW	d'200'
	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
	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