
	LIST	P=16F877
	#INCLUDE	"P16F877.INC"
		
	__CONFIG _XT_OSC&_CP_OFF&_WDT_OFF	;Watchdog timer kikacsolása
		CBLOCK	0X20			;a memória 20 címétől foglalja le a helyet !!!!!!!!!!!!!!
		TIM1			;változók deklarálása
		TIM2
		ADAT
		SEG
		CIKL
		ENDC


		ORG	0
	
START	
	BSF	STATUS,RP0	;BANK1
	MOVLW 0X1F		;W-be 1F-et töltök
	MOVWF TRISA		;bemeneti portnak A-t állítom
	MOVLW 0X00
	MOVWF TRISB		;kimeneti portnak B-t állítom és kinullázom
	BCF	STATUS,RP0	;BANK0
	BCF	STATUS,C	;Carry flag-et kinullázom
	BCF	STATUS,Z	;Zero flag-et kinullázom
			
	MOVLW	0X00
	MOVWF	ADAT		;adatregisztert kinullázom	
	MOVLW	0X05		;W-t kezdőértékre töltöm fel(05h)

;random feltöltés megkezdése

RANDOM
	BCF	STATUS,Z
	MOVWF ADAT		;adatregiszterbe betöltöm W aktuális értékét
	RLF ADAT,0		;az adatregisztert Carry-n keresztül balra rotálom,eredmény W-ben keletkezik	
	XORLW 0X5B		;W és k(5Bh) kizáró-vagy logikai művelet,eredmény W-ben keletkezik
	MOVWF PORTB		;KIJELZÉS--W tartalmát kiküldöm a kimeneti portra
			
	CALL DELAY				;késleltetés hívása
	MOVFW PORTB		;késleltetés után a kimeneti portról visszamozgatom az értéket W-be 
	
	GOTO RANDOM				;kezdődhet újra a feltöltés	
	
;késleltetés megoldása SW-időzítéssel(327.680 mikro-secundum)

DELAY
	MOVLW	0XFF
	MOVWF	TIM1		;Timer1-be kezdőértéket(FFh) töltök
	MOVLW	0XFF
	MOVWF	TIM2		;Timer2-be kezdőértéket(FFh) töltök
	MOVLW	0X05
	MOVWF	CIKL		;a ciklusszámlálóba 5-öt(05h) töltök
			
SZAMOL
	DECFSZ	TIM1,1		;csökkentem Timer1-et 1-el,amikor 0 lesz az értéke átugorja a GOTO sort
	GOTO	SZAMOL
	DECFSZ	TIM2,1		;csökkentem Timer2-őt 1-el,amikor 0 lesz az értéke átugorja a GOTO sort
	GOTO	SZAMOL
	DECFSZ	CIKL,1		;csökkentem a ciklusszámlálót 1-el,amikor 0 lesz az értéke átugorja a GOTO sort	
	GOTO	SZAMOL
	
	RETURN
	




	END	