;       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ŐKÖN SORBAN KIÍRATJUK AZ 1,2,3,4 - ET
;
;		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)	

;-------------------------------------------------------------------------------------------


	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
	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

;--------------------KIJELZŐ REGISZTEREINEK MEGADÁSA-------------------------


MAIN
	MOVLW	D'1'			
	MOVWF	DISP1			;1-ES KIJELZŐ ÉRTÉKÉNEK MEGADÁSA
	MOVLW	D'2'
	MOVWF	DISP2
	MOVLW	D'3'
	MOVWF 	DISP3
	MOVLW	D'4'
	MOVWF 	DISP4

	GOTO	MAIN

;-----------------------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
	RETURN			

	END						;PROGRAM VÉGE

