;       EZ A PROGRAM A GYŐRI MIKROVEZÉRLŐ ALKALMAZÓI VERSENYEN
;		HASZNÁLT PRÓBAPANELHEZ KÉSZÜLT
;		EBBEN A PROGRAMBAN MULTIPLEXELVE KEZELJÜK LE A 
;		PRÓBAPANELEN TALÁLHATÓ 4 KIJELZŐT
;		A KIJELZŐRE KIÍRATNI KÍVÁNT ÉRTÉKET KIKÜLDJÜK A C-PORTRA ÉS
;		MINDIG BEKAPCSOLJUK A MEGFELELŐ KIJELZŐT (B-PORT)	

;		EZ A MINTAPROGRAM EGY SZÁMOLÓGÉPET MUTAT BE
;		EZZEL A PROGRAMMAL MEG LEHET HATÁROZNI KÉT SZÁM, "A" SZÁM ÉS "B" SZÁM
;		ÖSSZEGÉT, KÜLÖNBSÉGÉT, SZORZATÁT, HÁNYADOSÁT
;		AZ "A" SZÁM EGY ÁLTALUNK A HEXKAPCSOLÓN MEGADOTT SZÁM (0-F)
;		A "B" SZÁM PEDIG EGY VÉLETLEN SZÁM
;		A PROGRAM ALAPBÓL AZ "A" SZÁM MEGADÁSÁVAL KEZDŐDIK
;		(DISP1=A-EZ JELENTI, HOGY AZ "A" SZÁMRÓL VAN SZÓ, DISP4=? IDE KERÜL AZ "A" SZÁM / PIROS LED VILÁGÍT)
;		INNEN A PB2 MEGNYOMÁSÁVAL ÉS ELENGEDÉSÉVEL TUDUNK TOVÁBBLÉPNI
;		A PROGRAM KÖVETKEZŐ RÉSZE A "B" SZÁM LÉTREHOZÁSA
;		(DISP1=b-EZ JELENTI, HOGY AZ "B" SZÁMRÓL VAN SZÓ, DISP4=? IDE KERÜL A "B" SZÁM / SÁRGA LED VILÁGÍT)
;		INNEN A PB2 MEGNYOMÁSÁVAL ÉS ELENGEDÉSÉVEL TUDUNK TOVÁBBLÉPNI
;		A PROGRAM TOVÁBBI RÉSZÉBEN AUTOMATIKUSAN VÁLTOZIK A KIJELZÉS ÁLLANDÓ IDŐKÖZÖNKÉNT
;		A DISP1-EN MINDIG A KIJELZÉSKÓD DISP3,DISP4-EN AZ ÉRTÉK (ZÖLD LED VILÁGÍT)
;		(KIJELZÉSI KÓDOK: A="A"SZÁM, b="B"SZÁM, 1=ÖSSZEADÁS EREDMÉNYE, 2=KIVONÁS EREDMÉNYE, 
;		3=SZORZÁS EREDMÉNYE, 4=OSZTÁS EREDMÉNYE !EGÉSZ ÉRTÉKE!)
;		PB1 MEGNYOMÁSÁVAL ÉS ELENGEDÉSÉVEL VISSZA LEHET TÉRNI SZÁMBEKÉRŐ RÉSZRE		
;
;		!A GOMBOKAT HOSSZAN ÉRDEMES NYOMNI!
;
;		!!! A TELJES PROGRAM ALATT HEXADECIMÁLIS ÉRTÉKEK JELENNEK MEG !!!   

;-------------------------------------------------------------------------------------------

	LIST	P=16F877					;A HASZNÁLT PIC TÍPUS MEGADÁSA 
#INCLUDE	<P16F877.INC>					;SZIMBÓLUMHALMAZ MEGADÁSA
	__CONFIG _CP_OFF & _WDT_OFF & _LVP_OFF & _HS_OSC	;BEÁLLÍTÁSOK MEGADÁSA


;-------------------------------------------------------------------------------------------

	CBLOCK	0X20			;FELHASZNÁLÓI REGISZTEREK MEGADÁSA
	DISP1
	DISP2
	DISP3
	DISP4
	VAR1
	VAR2
	VAR3
	SZAMA
	SZAMB
	OSSZEG
	KULOMBSEG
	SZORZAT
	HANYADOS
	TEMP
	W_TEMP
	STATUS_TEMP
	MELYDISP
	ENDC				;REGISZTERBLOKK VÉGE



	ORG		0		;KEZDŐCÍM
	GOTO	START
	ORG		4		;MEGSZAKÍTÁSI CÍM
	

PUSH					;MEGSZAKÍTÁS
	MOVWF	W_TEMP			;W REGISZTER ELTÁROLÁSA
	SWAPF	STATUS,W		
	MOVWF 	STATUS_TEMP		;STATUS REGISZTER ELTÁROLÁSA

	BTFSC	INTCON,T0IF		;TMR0 MEGSZAKÍTÁS ELLENŐRZÉSE
	GOTO	T0INT			;UGRÁS A TMR0 MEGSZAKÍTÁSRA

POP
	SWAPF	STATUS_TEMP,W	
	MOVWF 	STATUS			;AZ ELMENTETT STATUS REGISZTER VISSZAÁLLÍTÁSA
	SWAPF	W_TEMP,F
	SWAPF	W_TEMP,W		;AZ ELMENTETT W REGISZTER VISSZAÁLLÍTÁSA
	BSF		INTCON,GIE	;ÁLTALÁNOS MEGSZAKÍTÁS ENGEDÉLYEZÉSE
	RETFIE				;VISSZATÉRÉS A MEGSZAKÍTÁSBÓL

;--------------------------------------------------------------------------

START		
	MOVLW	0X20			;REGISZTEREK TÖRLÉSE
	MOVWF	FSR
TOROL
	CLRF	INDF
	INCF	FSR,F
	BTFSS	FSR,7
	GOTO	TOROL

;--------------------------------------------------------------------------

	BANKSEL	TRISA			;ABBA A BANKBA LÉPÉS AHOL A TRISA REGISZTER VAN (BANK1)
	MOVLW	B'11111100'		
	MOVWF 	TRISA			;A-PORT IRÁNYAINAK MEGADÁSA
	MOVLW	B'10000001'
	MOVWF	TRISB			;B-PORT IRÁNYAINAK MEGADÁSA
	MOVLW	B'00000000'
	MOVWF	TRISC			;C-PORT IRÁNYAINAK MEGADÁSA
	
	MOVLW	B'10000100'
	MOVWF 	OPTION_REG		;OPTION_REG BEÁLLÍTÁSA(TMR0 ELŐOSZTÓ)
	
	MOVLW	.006
	MOVWF 	ADCON1			;PORT DIGITIÓ BEÁLLÍTÁSA
	
	BANKSEL	PORTA			;ABBA A BANKBA LÉPÉS AHOL A PORTA REGISZTER VAN (BANK0)
	
	MOVLW	HIGH	TABLA		;UGRÓTÁBLA LÉTREHOZÁSA
	MOVWF	PCLATH

	BSF	INTCON,T0IE		;TMR0 MEGSZAKÍTÁS ENGEDÉLYEZÉSE
	BSF	INTCON,GIE		;ÁLTALÁNOS MEGSZAKÍTÁS ENGEDÉLYEZÉSE

;-------------------------FŐPROGRAM----------------------------------------


	MOVLW	D'16'			;KIJELZŐK LETÖRLÉSE
	MOVWF	DISP1
	MOVWF	DISP2
	MOVWF	DISP3
	MOVWF	DISP4
	BCF	PORTB,5			;LEDEK ÉS A ZÜMMER KIKAPCSOLÁSA
	BCF	PORTB,6
	BCF	PORTA,0
	BCF	PORTA,1

MAIN
;-------------------------"A" SZÁM MEGADÁSA (BEKÉRT)---------------------

	BSF	PORTB,6			;PIROS LED BEKAPCSOLÁSA
	MOVLW	D'10'			;"A" KIÍRATÁSA AZ EGYES KIJELZŐRE
	MOVWF	DISP1			;EZ JELENTI AZ "A" SZÁMOT

	MOVF	PORTA,W			;ITT OLVASSUK BE AZ ÉRTÉKÉT A HEX KAPCSOLÓNAK	
	MOVWF	SZAMA			 
	RRF	SZAMA,F			;MIVEL A KAPCSOLÓ A PORTA 2-5 LÁBAIN VAN EZÉRT
	RRF	SZAMA,F			;A BEOLVASOTT ÉRTÉKET 2-VEL JOBBRA KELL FOGATNI
	MOVLW	B'00001111'		;NEM KELLŐ FELSŐ 4 BIT KIMASZKOLÁSA
	ANDWF	SZAMA,F
	MOVF	SZAMA,W			;AZ "A" SZÁM ELMENTÉSE
	MOVWF	DISP4			;AZ "A" SZÁM MEGJELENÍTÉSE A KIJELZŐN

	CALL	PRELL
	BTFSS	PORTB,0			;A PROGRAM CSAK AKKOR LÉP TOVÁBB HA MEGNYOMJUK
	GOTO	MAIN			;A PB2-T ADDIG LEHET ÁLLÍTANI A SZÁMOT
	
	BCF	PORTB,6			;PIROS LED KIKAPCSOLÁSA
	CALL	PRELL			;PERGÉSGÁTLÁS ÉRDEKÉBEN A PROGRAM AKKOR FUT TOVÁBB
	BTFSC	PORTB,0			;HA A GOMBOLT ELENGEDTÉK
	GOTO	$-2

;---------------------------"B" SZÁM MEGADÁSA (VÉLETLEN)-----------------
	
	BSF	PORTB,5			;SÁRGA LED BEKAPCSOLÁSA
	MOVLW	D'11'			;"B" KIÍRATÁSA AZ EGYES KIJELZŐRE	
	MOVWF	DISP1			;EZ JELENTI A "B" SZÁMOT

	MOVF	TMR0,W			;VÉLETLEN SZÁMOT PL. ÚGY LEHET GENERÁLNI, HOGY KIOLVASSUK A TMR0 ÉRTÉKÉT
	ANDLW	B'00001111'		;NEM KELLŐ FELSŐ 4 BIT KIMASZKOLÁSA
	MOVWF	SZAMB			;A "B" SZÁM ELMENTÉSE
	MOVWF	DISP4			;A "B" SZÁM MEGJELENÍTÉSE A KIJELZŐN

	CALL	PRELL
	BTFSS	PORTB,0
	GOTO	$-2			;UGRÁS A KETTŐVEL EZELŐTTI PARANCSRA
	
	BCF	PORTB,5			;SÁRGA LED KIKAPCSOLÁSA
	CALL	PRELL
	BTFSC	PORTB,0
	GOTO	$-2

;---------------------------MŰVELETEK ELVÉGZÉSE-----------------------------

	CALL	OSSZEAD			;ÖSSZEADÓ RUTIN MEGHÍVÁSA
	CALL	KIVON			;KIVONÓ RUTIN MEGHÍVÁSA
	CALL	SZOROZ			;SZORZÓ RUTIN MEGHÍVÁSA
	CALL	ELOSZT			;OSZTÓ RUTIN MEGHÍVÁSA

;----------------------EREDMÉNYEK KIÍRATÁSA A KIJELZŐKRE---------------------	
KIIRATAS

	BSF	PORTA,1			;ZÖLD LED BEKAPCSOLÁSA
	MOVLW	D'10'			;AZ EGYES KIJELZŐRE KIKERÜL AZ "A" BETŰ
	MOVWF	DISP1
	MOVF	SZAMA,W			;A NÉGYES KIJELZŐRE KIKERÜL AZ "A" SZÁM ÉRTÉKE
	MOVWF	DISP4
	CALL	DELAY			;VÁRAKOZÁS A LÁTHATÓSÁG ÉRDEKÉBEN 
	
	CALL	PRELL			;MINDEN KIÍRATÁS UTÁN TESZTELJÜK A PB1-ET, HOGY 
	BTFSC	PORTB,7			;BÁRMIKOR VISSZA LEHESSEN TÉRNI A PROGRAM ELEJÉRE
	GOTO	VISSZA			;ÉS ÚJ SZÁMOT LEHESSEN MEGADNI
;-----------------------
	MOVLW	D'11'			;AZ EGYES KIJELZŐRE KIKERÜL A "B" BETŰ
	MOVWF	DISP1		
	MOVF	SZAMB,W			;A NÉGYES KIJELZŐRE KIKERÜL A "B" SZÁM ÉRTÉKE
	MOVWF	DISP4			
	CALL	DELAY			;VÁRAKOZÁS
	
	CALL	PRELL			;NYOMÓGOMBTESZT
	BTFSC	PORTB,7
	GOTO	VISSZA
;-----------------------	
	MOVLW	D'1'			;AZ EGYES KIJELZŐRE KIKERÜL AZ "1" SZÁM EZ JELENI AZ ELSŐ
	MOVWF	DISP1			;MŰVELETET AZ ÖSSZEADÁST
	MOVF	OSSZEG,W		;MIVEL AZ ÖSSZEADÁS EREDMÉNYE KÉT JEGYŰ IS LEHET EZÉRT 
	ANDLW	B'00001111'		;A KÉT SZÁMJEGYET SZÉT KEL SZEDNI ÚGY, HOGY ELŐSZÖR KIMASZKOLJUK AZ ÖSSZEG FELSŐ 4 BITJÉT 
	MOVWF	DISP4			;MAJD AZ ALSÓ 4 BIT ÉRTÉKÉT KIÍRATJUK
	SWAPF	OSSZEG,W		;EZUTÁN FELCSERÉJÜK AZ ÖSSZEG ALSÓ ÉS FELSŐ 4 BITJÉT 
	ANDLW	B'00001111'		;MAJD KIMASZKOLJUK A SZÁMUNKRA NEM KELLŐ RÉSZT 
	BTFSS	STATUS,Z		;MEGVIZSGÁLJUK, HOGY A FELSŐ SZÁMJEGY NULLA-E MERT A CÉLUNK AZ, HOGY A VEZETŐ NULLÁT
	MOVWF	DISP3			;NE ÍRASSUK KI, HA NEM NULLA KIÍRATJUK A SZÁMOT
	CALL	DELAY			;VÁRAKOZÁS

	CALL	PRELL			;NYOMÓGOMBTESZT
	BTFSC	PORTB,7
	GOTO	VISSZA
;------------------------------
	MOVLW	D'16'			;LETÖRÖLJÜK A HÁRMAS KIJELZŐ ÉRTÉKÉT, MERT ARRA NEM BIZTOS, HOGY ÚJRA KIÍRATUNK
	MOVWF	DISP3
	MOVLW	D'2'			;AZ EGYES KIJELZŐRE KIÍRATJUK A "2" SZÁMOT EZ JELENTI A KIVONÁST
	MOVWF	DISP1
	MOVF	KULOMBSEG,W		;KIMASZKOLJUK A KÜLÖNBSÉG FELSŐ 4 BITJÉT MERT OTT JELEZTÜK, HOGY NEGATÍV-E A SZÁM
	ANDLW	B'00001111'		
	MOVWF	DISP4			;KIÍRATJUK A KÜLÖNBSÉGET A KIJELZŐRE
	BTFSS	KULOMBSEG,7		;MEGNÉZZÜK, HOGY NEGATÍV-E A KÜLÖNBSÉG
	GOTO	$+3				;HA NEM NEGATÍV AKKOR ÁTUGORJUK A KÖVETKEZŐ KÉT SORT
	MOVLW	D'17'			;HA NEGATÍV A KÜLÖNBSÉG A HÁRMAS KIJELZŐRE KITESZÜNK EGY "-" JELET 
	MOVWF	DISP3
	CALL	DELAY			;VÁRAKOZÁS
	
	CALL	PRELL			;NYOMÓGOMBTESZT
	BTFSC	PORTB,7
	GOTO	VISSZA
;-------------------------------	
	MOVLW	D'16'			;LETÖRÖLJÜK A HÁRMAS KIJELZŐ ÉRTÉKÉT
	MOVWF	DISP3
	MOVLW	D'3'			;AZ EGYES KIJELZŐRE KIÍRATJUK A "3" SZÁMOT EZ JELENTI A SZORZÁST
	MOVWF	DISP1
	MOVF	SZORZAT,W		;A KIÍRATÁS UGYANÚGY TÖRTÉNIK MINT AZ ÖSSZEADÁSNÁL
	ANDLW	B'00001111'
	MOVWF	DISP4
	SWAPF	SZORZAT,W
	ANDLW	B'00001111'
	BTFSS	STATUS,Z
	MOVWF	DISP3
	CALL	DELAY			;VÁRAKOZÁS
	
	CALL	PRELL			;NYOMÓGOMBTESZT
	BTFSC	PORTB,7
	GOTO	VISSZA
;-------------------------------	
	MOVLW	D'16'			;LETÖRÖLJÜK A HÁRMAS KIJELZŐ ÉRTÉKÉT
	MOVWF	DISP3
	MOVLW	D'4'			;AZ EGYES KIJELZŐRE KIÍRATJUK A "4" SZÁMOT EZ JELENTI AZ OSZTÁST
	MOVWF	DISP1
	MOVF	HANYADOS,W		;NORMÁL KIÍRATÁS
	MOVWF	DISP4
	CALL	DELAY			;VÁRAKOZÁS

	CALL	PRELL			;NYOMÓGOMBTESZT
	BTFSC	PORTB,7
	GOTO	VISSZA
	GOTO	KIIRATAS		;HA NEM NYOMJÁK MEG A GOMBOT AKKOR A KIÍRATÁS ELŐRÖL KEZDŐDIK

VISSZA					;HA MEGNYOMTÁK A PB1-ET AKKOR IDE UGRIK A PROGRAM
	BCF	PORTA,1			;ZÖLD LED KIKAPCSOLÁSA
	CALL	PRELL
	BTFSC	PORTB,7			;NYOMÓGOMB ELENGEDÉSÉNEK FIGYELÉSE, PERGÉSGÁTLÁS 
	GOTO	VISSZA
	MOVLW	D'16'			;KIJELZŐK TÖRLÉSE
	MOVWF	DISP1
	MOVWF	DISP2
	MOVWF	DISP3
	MOVWF	DISP4
	GOTO	MAIN			;VISSZAÉRÉS A FŐPROGRAM LEGELEJÉRE


;-------------------------SZUBRUTINOK---------------------------------------

OSSZEAD						;ÖSSZEADÓ RUTIN
	CLRF	OSSZEG			;ESETLEGES ELŐZŐ ÖSSZEG KITÖRLÉSE
	MOVF	SZAMA,W			;A KÉT SZÁM ÖSSZEADÁSA
	ADDWF	SZAMB,W			
	MOVWF	OSSZEG			;AZ ÖSSZEG ELTÁROLÁSA
	RETURN					;VISSZATÉRÉS A RUTINBÓL
;-----------------------------------------------------------------------
KIVON						;KIVONÓ RUTIN
	CLRF	KULOMBSEG		;ESETLEGES ELŐZŐ KÜLÖNBSÉG KITÖRLÉSE
	MOVF	SZAMB,W			;"B" SZÁM KIVONÁSA AZ "A" SZÁMBÓL
	SUBWF	SZAMA,W
	BTFSS	STATUS,C		;TÚLCSORDULÁS VIZSGÁLATA HA A "B" SZÁM NAGYOBB AZ "A" SZÁMNÁL
	GOTO 	FORDIT			;HA "B>A" AKKOR MEG KELL FORDÍTANI A MŰVELETE
	MOVWF	KULOMBSEG		;HA	"A>B" AKKOR AZ EREDMÉNY ELMENTÉSE
	RETURN
FORDIT
	MOVF	SZAMA,W			;MŰVELET MEGFORDÍTÁSA AZ "A" SZÁM KIVONÁSA A "B" SZÁMBÓL
	SUBWF	SZAMB,W
	MOVWF	KULOMBSEG		;AZ EREDMÉNY ELMENTÉSE, A KAPOTT EREDMÉNY NEGATÍV SZÁM
	BSF	KULOMBSEG,7		;A KULONBSEG REGISZTER 7 BITJÉN JELEZHETJÜK, HOGY A SZÁM NEGATÍV
	RETURN					;VISSZATÉRÉS A RUTINBÓL
;----------------------------------------------------------------------
SZOROZ						;SZORZÓ RUTIN
	CLRF	SZORZAT			;AZ ESETLEGES ELŐZŐ SZORZAT KITÖRLÉSE
	MOVF	SZAMA,W			;AZ "A" SZÁM ÁTMÁSOLÁSA EGY IDEIGLENES REGISZTERBE
	MOVWF	TEMP
SZORZAS
	MOVF	SZAMB,W			;A "B" SZÁMOT ADDIG ADOGATJUK HOZZÁ A SZORZATHOZ AMÍG AZ 
	ADDWF	SZORZAT,F		;IDEIGLENES REGISZTER ÉRTÉKE NULLA NEM LESZ
	DECFSZ	TEMP,F			;ITT CSÖKKENTJÜK AZ IDEIGLENES REGISZTERT
	GOTO	SZORZAS			;VISSZAUGRUNK A SZORZAS-RA AMÍG AZ IDEIGLENES REGISZTER ÉRTÉKE NEM NULLA
	RETURN					;VISSZATÉRÉS A RUTINBÓL
;------------------------------------------------------------------------
ELOSZT						;OSZTÓ RUTIN
	CLRF	HANYADOS		;AZ ESETLEGES ELŐZŐ HÁNYADOS ÉRTÉKÉNEK KITÖRLÉSE
	MOVF	SZAMA,W			;AZ "A" SZÁM ÁTMÁSOLÁSA EGY IDEIGLENES REGISZTERBE
	MOVWF	TEMP
	MOVF	SZAMB,W			;ITT MEGVIZSGÁLJUK, HOGY A "B" SZÁM NULLA-E
	BTFSC	STATUS,Z		;HA IGEN UGRUNK A NULLA CIMKÉRE HISZEN NULLÁVAL ÉRTELMETLEN AZ OSZTÁS
	GOTO	NULLA
OSZT
	INCF	HANYADOS,F		;A HÁNYADOS ÉRTÉKÉT ADDIG NÖVELJÜK AMÍG AZ IDEIGLENES REGISZTER ÉRTÉKE ALUL NEM CSORDUL
	MOVF	SZAMB,W			;AZ IDEIGLENES REGISZTERBŐL FOLYAMATOSAN KIVONJUK A "B" SZÁMOT
	SUBWF	TEMP,F
	BTFSC	STATUS,C		;ITT VIZSGÁLJUK AZ ALULCSORDULÁST
	GOTO	OSZT			;AMÍG NEM CSORDULT ALUL ADDIG VISSZAUGRUNK AZ OSZT-RA
	
							;MIVEL CSAK AKKOR JÖVÜNK KI AZ OSZTÁSBÓL AMIKOR MÁR ALULCSORDULÁS MEGTÖRTÉNT EZÉRT A HÁNYADOSUK ÉRTÉKE 
	DECF	HANYADOS,F		;EGYEL NAGYOBB EZT VONJUK LE ITT
	RETURN					;VISSZATÉRÉS A RUTINBÓL

NULLA
	MOVLW	D'17'			;"B" SZÁM ÉRTÉKE NULLA EZÉRT A HÁNYADOST A "-" JEL ÉRTÉKÉVEL TÖLTJÜK FEL
	MOVWF	HANYADOS
	RETURN					;VISSZATÉRÉS A RUTINBÓL


;-----------------------------------------------------------------------

DELAY					;VÁRAKOZÓ RUTIN
	MOVLW	D'255'		;EBBEN A RUTINBA SEMMI A PROGRAM RÉSZÉRE LÉNYEGES DOLOG NEM TÖRTÉNIK
	MOVWF	VAR1		;EZ A RUTIN AZÉRT FONTOS SZÁMUNKRA MERT HA NEM LENNE BENNE A PROGRAMBAN NEM LÁTNÁNK PL.
DEL1					;A LEDEK VILLOGÁSÁT
	MOVLW	D'255'		
	MOVWF	VAR2		;A RUTIN MŰKÖDÉSE: KÜLÖNBÖZŐ REGISZTEREKET FELTÖLTÜNK BIZONYOS ÉRTÉKEKKEL (EZEKKEL
DEL2					;AZ ÉRTÉKEKKEL SZABÁLYOZHATJUK A RUTIN HOSSZÁT) MAJD ADDIG CSÖKKENTJÜK A REGISZTEREK ÉRTÉKÉT 
	MOVLW	D'020'		;AMÍG AZ ÖSSZES ÉRTÉKE NULLA NEM LESZ, JELEN ESETBE AMÍG EZ A RUTIN VÉGREHAJTÓDIK
	MOVWF	VAR3		;AZALATT 255x255x10-SZER FUT LE A NOP UTASÍTÁS  
DEL3
	NOP
	DECFSZ	VAR3,F
	GOTO	DEL3
	DECFSZ	VAR2,F
	GOTO	DEL2
	DECFSZ	VAR1,F
	GOTO	DEL1
	RETURN

PRELL					;EZ SZINTÉN EGY VÁRAKOZÓ RUTIN
	MOVLW	D'100'		;ENNEK A RUTINNAK AZ A LÉNYEGE HOGY KISZŰRJÜK AZ ESETLEGES "KÓBOR" JELEKET 
	MOVWF	VAR1
PRE1
	MOVLW	D'100'
	MOVWF	VAR2
PRE2
	NOP
	DECFSZ	VAR2,F
	GOTO	PRE2	
	DECFSZ	VAR1,F
	GOTO	PRE1
	RETURN

;-----------------------KIJELZŐ MULTIPLEXELÉS-------------------------------

T0INT						;TMR0 MEGSZAKÍTÁS
	BCF	INTCON,GIE		;ÁLTALÁNOS MEGSZAKÍTÁS TILTÁSA
	BCF	INTCON,T0IF		;TMR0 MEGSZAKÍTÁST JELZŐ BIT TÖRLÉSE
	BTFSC	MELYDISP,0		;KIJELZŐ KIVÁLASZTÁSA
	GOTO	KIIR1
	BTFSC	MELYDISP,1
	GOTO	KIIR2
	BTFSC	MELYDISP,2
	GOTO	KIIR3
	BTFSC	MELYDISP,3
	GOTO	KIIR4
;---------------------------
KIIR1						;1-ES KIJELZŐRE VALÓ KIÍRATÁS
	MOVF	DISP1,W			;AZ 1-ES KIJELZŐRE KIÍRATNI KÍVÁNT ÉRTÉK BERAKÁSA A W-BE	
	CALL	TABLA			;UGRÓTÁBLA MEGHÍVÁSA
	MOVWF 	PORTC			;A KÍVÁNT ÉRTÉK KIRAKÁSA A KIJELZŐKRE
	CLRF	MELYDISP
	BSF	MELYDISP,1		;KIJELZŐ VÁLASZTÓ BIT ÉRTÉKÉNEK MEGVÁLTOZTATÁSA
	BSF	PORTB,4			;AZ 1-ES KIJELZŐ BEKAPCSOLÁSA
	BCF	PORTB,3			;A 2-ES KIJELZŐ KIKAPCSOLÁSA
	BCF	PORTB,2			;A 3-MAS KIJELZŐ KIKAPCSOLÁSA
	BCF	PORTB,1			;A 4-ES KIJELZŐ KIKAPCSOLÁSA
	GOTO	POP
;---------------------------
KIIR2
	MOVF	DISP2,W
	CALL	TABLA
	MOVWF 	PORTC
	CLRF	MELYDISP
	BSF	MELYDISP,2
	BCF	PORTB,4			;AZ 1-ES KIJELZŐ KIKAPCSOLÁSA
	BSF	PORTB,3			;A 2-ES KIJELZŐ BEKAPCSOLÁSA
	BCF	PORTB,2			;A 3-MAS KIJELZŐ KIKAPCSOLÁSA
	BCF	PORTB,1			;A 4-ES KIJELZŐ KIKAPCSOLÁSA
	GOTO	POP
;---------------------------
KIIR3
	MOVF	DISP3,W
	CALL	TABLA
	MOVWF 	PORTC
	CLRF	MELYDISP
	BSF	MELYDISP,3
	BCF	PORTB,4
	BCF	PORTB,3
	BSF	PORTB,2
	BCF	PORTB,1
	GOTO	POP
;---------------------------
KIIR4
	MOVF	DISP4,W
	CALL	TABLA
	MOVWF 	PORTC
	CLRF	MELYDISP
	BSF	MELYDISP,0
	BCF	PORTB,4
	BCF	PORTB,3
	BCF	PORTB,2
	BSF	PORTB,1
	GOTO	POP

;------------------------UGRÓTÁBLA----------------------------

	ORG		600
	

TABLA						;UGRÓTÁBLA
	ADDWF	PCL,F			;W HOZZÁADÁSA A PROGRAMSZÁMLÁLÓ ALSÓ BYTE-JÁHOZ
	RETLW	B'00111111'		;0
	RETLW	B'00000110'		;1
	RETLW	B'01011011'		;2
	RETLW	B'01001111'		;3
	RETLW	B'01100110'		;4
	RETLW	B'01101101'		;5
	RETLW	B'01111101'		;6
	RETLW	B'00000111'		;7
	RETLW	B'01111111'		;8
	RETLW	B'01101111'		;9
	RETLW	B'01110111'		;A
	RETLW	B'01111100'		;B
	RETLW	B'00111001'		;C
	RETLW	B'01011110'		;D
	RETLW	B'01111001'		;E
	RETLW	B'01110001'		;F
	RETLW	B'00000000'		;SEMMI
	RETLW	B'01000000'		;-

	END						;PROGRAM VÉGE

