LIST P=18F4550
#include <P18F4550.inc>
	
	CONFIG WDT = OFF
	CONFIG LVP = OFF
	CONFIG FOSC = HS

	CBLOCK	0x80
	T1
	T2
	T3
	ENDC

	ORG	0

START
	;PORTA Digitális I/O-vá tétel
	MOVLW	0x0F			
	MOVWF	ADCON1			;Mindegyik PORTA digitális
	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'		;Betöltjük az akksiba a TRISD-be valót
	MOVWF	TRISD			;Beletöltjük (mind kimenet a nulla miatt)

FUTOFENY					;Ez egy label
	MOVLW	B'10000000'		;Betöltjük a W-be (akkumulátorba) a kirandó adatot
	MOVWF	PORTD			;Akkumulátorból kiírjuk a PORTD-re
	CALL	DELAY			;Várunk
	MOVLW	B'01000000'		;Újra betöltjük a W-be az új adatot
	MOVWF	PORTD			;stbstb.
	CALL	DELAY
	MOVLW	B'00100000'
	MOVWF	PORTD
	CALL	DELAY
	MOVLW	B'00010000'
	MOVWF	PORTD
	CALL	DELAY
	MOVLW	B'00001000'
	MOVWF	PORTD
	CALL	DELAY
	MOVLW	B'00000100'
	MOVWF	PORTD
	CALL	DELAY
	MOVLW	B'00000010'
	MOVWF	PORTD
	CALL	DELAY
	MOVLW	B'00000001'
	MOVWF	PORTD
	CALL	DELAY
	MOVLW	B'00000010'
	MOVWF	PORTD
	CALL	DELAY
	MOVLW	B'00000100'
	MOVWF	PORTD
	CALL	DELAY
	MOVLW	B'00001000'
	MOVWF	PORTD
	CALL	DELAY
	MOVLW	B'00010000'
	MOVWF	PORTD
	CALL	DELAY
	MOVLW	B'00100000'
	MOVWF	PORTD
	CALL	DELAY
	MOVLW	B'01000000'
	MOVWF	PORTD
	CALL	DELAY
	GOTO	FUTOFENY		;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