
LIST	P=16F887
	#INCLUDE	"P16F887.INC"
		
	_CONFIG_XT_OSC&_CP_OFF&_WDT_OFF	;Watchdog timer kikacsolása
		CBLOCK	0X0C			;a memória 0 címétől foglalja le a helyet
		TIM1	EQU	20H			;változók deklarálása
		TIM2	EQU	21H
		ADAT	EQU	23H
		SEG	EQU	22H
		CIKL	EQU	24H
		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	