 LIST P=16F877A
 #INCLUDE "P16F877A.INC"
 __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
	CBLOCK	0x20			;A 0x20 egy szabad memória rész kezdő címe
	T1
	T2
	ENDC

	ORG	0

	MOVLW	B'00000000'
	MOVWF	PORTD
START
	BCF		STATUS,RP1			;BANK1-be átlépünk
	BSF		STATUS,RP0	;PORTA Digitális I/O-vá tétel
	MOVLW	B'00111111'			
	MOVWF	ADCON1			;Mindegyik PORTA digitális
	MOVLW	B'00000001'		;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'11111110'		;Betöltjük az akksiba a TRISD-be valót
	MOVWF	TRISD			;Beletöltjük (mind kimenet a nulla miatt)
	BCF	STATUS,RP0			;BANK0-ba visszalépünk

MAIN
	BTFSC	PORTA,0			;porta 0 vizsgálata,ha 1 végrehajtja a következő sort,
	GOTO	MAIN			;ha 0 átugorja
	CALL	DELAY			;késleltetés
	BTFSC	PORTA,0			;porta 0 újbóli vizsgálata, ha 1 vissza a program elejére
	GOTO	MAIN			;ha 0 átugorja a következő sort
	GOTO	KL				;
KL
	BTFSC	PORTD,0			;portd vizsgálata,ha 1 ledoff,ha 0 ledon
	GOTO	LEDOFF
	GOTO	LEDON
LEDON
	BSF		PORTD,0			;portd 0 1-re állítása
	GOTO	MAIN			;vissza a főprogram elejére
LEDOFF
	BCF		PORTD,0			;portd 0 0-ra állítása
	GOTO	MAIN			;vissza a föprogram elejére
DELAY
	MOVLW	0X3E
	MOVWF	T1
	MOVLW	0X9D
	MOVWF	T2
DELAY_0
	DECFSZ	T1,F
	GOTO	$+2
	DECFSZ	T2,F
	GOTO	DELAY_0
	GOTO	$+1
	NOP
	RETURN					;Visszatér a DELAY szubrutinból
 	END						;Teljes program végét jelentő END