

LIST	P=16F887
	INCLUDE	P16F887.INC
		

		TIM1	EQU	20H			;változók deklarálása
		TIM2	EQU	21H
		ADAT	EQU	23H
		SEG	EQU	22H
		CIKL	EQU	24H

		ORG	0X000		
START		BANKSEL TRISD		;BANK1
		CLRF	TRISD		;PORTC MIND KIMENET
		BANKSEL PORTD		;BANK0

	
		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		MOVWF	ADAT		;adatregiszterbe betöltöm W aktuális értékét
		RLF	ADAT		;az adatregisztert Carry-n keresztül balra rotálom,eredmény W-ben keletkezik	
		MOVFW	ADAT
		XORLW	0X5B		;W és k(5Bh) kizáró-vagy logikai művelet,eredmény W-ben keletkezik
		MOVWF	PORTD		;KIJELZÉS--W tartalmát kiküldöm a kimeneti portra
			
CALL		DELAY				;késleltetés hívása
		MOVFW	PORTD		;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		;csökkentem Timer1-et 1-el,amikor 0 lesz az értéke átugorja a GOTO sort
		GOTO	SZAMOL
		DECFSZ	TIM2		;csökkentem Timer2-őt 1-el,amikor 0 lesz az értéke átugorja a GOTO sort
		GOTO	SZAMOL
		DECFSZ	CIKL		;csökkentem a ciklusszámlálót 1-el,amikor 0 lesz az értéke átugorja a GOTO sort	
		GOTO	SZAMOL
			
		RETURN
		END