  					
											;KIVEZÉRLÉSJELZŐ
					
									

	LIST P=PIC18F45K20, F=INHX32	
	#include <P18F45K20.INC>	
	ERRORLEVEL -230

	__CONFIG	_CONFIG1H,	B'00001000'		;BELSŐ OSZCILLÁTOR KIVÁLASZTVA,FAIL-SAFE CLOCK MONITOR TILTVA,IESO TILTVA
	__CONFIG	_CONFIG2L,	B'00000110'		;BOREN ENGEDÉLYEZVE,PWRTEN TILTVA,BORV 3V
 	__CONFIG	_CONFIG2H,	B'00000000'		;WDT TILTVA
 	__CONFIG	_CONFIG3H,	B'00000000'		;CCP2 RB3 LÁBON,PORTB A/D TILTVA,MCLR TILTVA
 	__CONFIG	_CONFIG4L,	B'10000001'		;STVR ENGEDÉLYEZVE,LVP TILTVA,KÜLSŐ DEBUGGER TILTVA,                                                                               
 	__CONFIG	_CONFIG5L,	B'00001111'		;CODE PROTECT TILTVA
 	__CONFIG	_CONFIG5H,	B'11000000'		;CPB TILTVA,CPD TILTVA
 	__CONFIG	_CONFIG6L,	B'00001111'		;WRITE PROTECT TILTVA
 	__CONFIG	_CONFIG6H,	B'11100000'		;EEPROM WRITE,BOOT WRITE,CONF REG WRITE PROTECT TILTVA
 	__CONFIG	_CONFIG7L,  B'00001111'		;TABLE READ PROTECTION TILTVA
 	__CONFIG	_CONFIG7H,	B'01000000'		;BOOT READ PROTECT TILTVA
                                         
;***ID LOCATION DEFINE

    __IDLOCS _IDLOC0, 'K'
    __IDLOCS _IDLOC1, 'R'
    __IDLOCS _IDLOC2, 'I'
    __IDLOCS _IDLOC3, 'S'
    __IDLOCS _IDLOC4, 'S'

;............................................ VÁLTOZÓ DEKLARÁLÁS ..................................................
    	
    CBLOCK	0X0020

	SZAML						;BITFORGATÁS VÁLTOZÓJA
	SZAMLTMP					;FORGATANDÓ BITEK SZÁMÁT TÁROLJA
	FULL						;BITSZÁMLÁLÓ VÁLTOZÓJA
	FULLTMP						;MAXLED BITSZÁMLÁLÓ VÁLTOZÓJA
	MAXLED						;MAXIMÁLIS SZINTET JELZŐ LED
	PORTATMP					;PORTA ÉRTÉKÉT TÁROLJA
	PORTBTMP					;PORTB ÉRTÉKÉT TÁROLJA
	PORTCTMP					;PORTC ÉRTÉKÉT TÁROLJA
	PORTDTMP					;PORTD ÉRTÉKÉT TÁROLJA
	PORTETMP					;PORTE ÉRTÉKÉT TÁROLJA
	DEL2TMP						;KÉSLELTETÉS IDEJÉT TÁROLJA
	DEL3TMP						;KÉSLELTETÉS IDEJÉT TÁROLJA
	DEL4TMP						;KÉSLELTETÉS IDEJÉT TÁROLJA
	DEL0						;KÉSLELTETÉS VÁLTOZÓJA
	DEL1						;KÉSLELTETÉS VÁLTOZÓJA
	DEL2						;KÉSLELTETÉS VÁLTOZÓJA		
	DEL3						;ZUHANÁS MEGKEZDÉSÉNEK KÉSLELTETÉSE
	DEL4						;ZUHANÁS SEBESSÉGE
	DEL5						;ZUHANÁS MEGKEZDÉSÉNEK KÉSLELTETÉSE
	DEL6						;STROBOSZKÓP VILLANÁSI IDEJE
	OSZTO						;A/D ÉRTÉKÉNEK OSZTÓJA
	UGR							;TÁBLA UGRÁS ÉRTÉKE
	SZINT						;LEDEK MAXIMÁLIS SZINTJE
	FLAG						;JELZŐBIT
	IRSZAML						;HA BETELIK EGY BÁJT UGRIK A KÖVETKEZŐRE
	TMR1ET						;TIMER1 LEFUTÁSÁNAK SZÁMA
	JELTMP						;IR JEL EGY BÁJTJA
	JELTMP1:4					;IR JEL
	JEL:4						;AZ ELLEŐRZÉS IDEJÉIG TÁROLT IRJEL 32 BITJE
	JELSTROB:4					;1.GOMBHOZ TARTOZÓ IR JEL
	JELKIV:4					;2.GOMBHOZ TARTOZÓ IR JEL
	
	ENDC
		
;................................................ RESET PONT ......................................................   
    
	ORG	0X0000
   	BRA		INI					;INICIALIZÁLÁSOK

    ORG	0X0008 		  			;HIGH PRIORITÁSÚ MEGSZAKÍTÁS
	BRA		HPM

    ORG	0X0018					;LOW PRIORITÁSÚ MEGSZAKÍTÁS
  	BRA		LPM

;............................................. INICIALIZÁLÁSOK ....................................................

INI

	MOVLW	B'10000000'			;PORTA,PORTE DIGITÁLIS I/O, RE2 ANALÓG
	MOVWF	ANSEL

	MOVLW	B'00000000'			;PORTB DIGITÁLIS I/O
	MOVWF	ANSELH

	MOVLW	B'00011101'			;A/D ENGEDÉLYEZVE
	MOVWF	ADCON0

	MOVLW	B'00000000'			;A/D VREF KONFIGURÁLÁSA
	MOVWF	ADCON1

	MOVLW	B'10000001'			;A/D RIGHT JUSTIFIED BEÁLLÍTVA
	MOVWF	ADCON2

	MOVLW	B'01010000'
	MOVWF	OSCCON				;BELSŐ OSC 8MHZ, NINCS FREKI HANGOLÁS   

	MOVLW	B'11100000'			
	MOVWF	INTCON				;GIE,PEIE,TMR0IE ENGEDÉLYEZVE

	MOVLW	B'00000001'
	MOVWF	IPR1				;TIMER1 HIGH PRIORITÁSÚ MEGSZAKÍTÁS KIVÁLASZTÁSA

	MOVLW	B'00000001'
	MOVWF	PIE1				;TIMER1,MEGSZAKÍTÁS ENGEDÉLYEZÁSE

	MOVLW	B'11000000'			;TIMER0 KONFIGURÁLÁSA
	MOVWF	T0CON

	MOVLW	B'00000001'
	MOVWF	T1CON				;TIMER1 BEKAPCSOLVA,8 BITES MÓD,ELŐOSZTÁS 1:1

    CLRF	PORTA
    CLRF	LATA
    CLRF	PORTB
    CLRF	LATB		
    CLRF	PORTC				;KI ÉS BEMENETI TÁROLÓK TÖRLÉSE
    CLRF	LATC
    CLRF	PORTD
    CLRF	LATD
	CLRF	PORTE
    CLRF	LATE
                           
    MOVLW	B'00000000'         
    MOVWF	TRISA           
    MOVLW	B'00000000'
    MOVWF	TRISB
    MOVLW	B'00000000'        ;I/O PORTOK BEÁLLÍTÁSA
    MOVWF	TRISC
	MOVLW	B'00000000'        
    MOVWF	TRISD
 	MOVLW	B'00001100'        
    MOVWF	TRISE

;.................................................. ÉRTÉKADÁSOK ...................................................

	SETF	TMR1H				;TIMER1 KÉSLELTETÉS BEÁLLÍTÁSA BEJÖVŐ IR JELNÉL

	MOVLW	B'01001011'
	MOVWF	JELSTROB
	MOVLW	B'00101010'
	MOVWF	JELSTROB+1
	MOVLW	B'10110100'
	MOVWF	JELSTROB+2
	MOVLW	B'10111111'
	MOVWF	JELSTROB+3

	MOVLW	B'01010011'
	MOVWF	JELKIV
	MOVLW	B'00101011'
	MOVWF	JELKIV+1
	MOVLW	B'00101010'
	MOVWF	JELKIV+2
	MOVLW	B'10111111'
	MOVWF	JELKIV+3

	MOVLW	D'7'
	MOVWF	OSZTO

	MOVLW	D'5'				;ZUHANÁS MEGKEZDÉSÉNEK KÉSLELTETÉSE
	MOVWF	DEL3TMP
	MOVWF	DEL3

	MOVLW	D'80'				;ZUHANÁS SEBESSÉGE
	MOVWF	DEL4TMP

	MOVLW	D'25'
	MOVWF	DEL1
	MOVLW	D'15'
	MOVWF	DEL2TMP				;KÉSLELTETÉS LEFELÉ
	MOVWF	DEL2

	CLRF	ADRESL	
	CLRF	ADRESH				
	CLRF	FULL
	CLRF	UGR
	CLRF	SZINT
	CLRF	DEL0
	CLRF	DEL4	
	CLRF	DEL5
	CLRF	DEL6
	CLRF	SZAML
	CLRF	SZAMLTMP
	CLRF	FULLTMP
	CLRF	MAXLED
	CLRF	PORTATMP			;VÁLTOZÓK ALAPHELYZETBE ÁLLÍTVA
	CLRF	PORTBTMP
	CLRF	PORTCTMP
	CLRF	PORTDTMP
	CLRF	PORTETMP	
	CLRF	FLAG
	CLRF	IRSZAML
	CLRF	TMR1ET
	CLRF	JELTMP						
	CLRF	JELTMP1
	CLRF	JELTMP1+1
	CLRF	JELTMP1+2
	CLRF	JELTMP1+3				
	CLRF	JEL					
	CLRF	JEL+1
	CLRF	JEL+2	
	CLRF	JEL+3	

	BRA		PRG

;.......................................... HIGH PRIORITÁSÚ MEGSZAKÍTÁS ...........................................

HPM

	BTFSC	PIR1,TMR1IF
	GOTO	TIMER1				;TIMER2 MEGSZAKÍTÁS AZONOSÍTÁSA

	BCF		INTCON,TMR0IF

	BTFSS	FLAG,1
	BRA		F0

	DECFSZ	DEL5
	RETFIE
	DECFSZ	DEL3				;ZUHANÁS MEGKEZDÉSÉNEK KÉSLELTETÉSE
	RETFIE	FAST
	
	MOVFF	DEL3TMP,DEL3
	BCF		FLAG,1

F0

	DECFSZ	DEL4				;ZUHANÁS KÉSLELTETÉSE
	RETFIE	FAST

	MOVFF	DEL4TMP,DEL4

	MOVF	FULLTMP,W			;HA FULLTMP < = FULL AKKOR KILÉPÉS A SZUBRUTINBÓL
	CPFSLT	FULL
	RETFIE	FAST
	
	DECF	FULLTMP
	RRNCF	MAXLED

	MOVLW	D'32'
	CPFSGT	FULLTMP				;HA FULLTEMP > 32 AKKOR MAXLED KIÍRÓDIK PORTE-RE
	BRA		F1

	MOVFF	PORTETMP,PORTE
	MOVF	MAXLED,W
	IORWF	PORTE
	RETFIE	FAST

F1

	MOVLW	D'24'
	CPFSGT	FULLTMP				;HA FULLTEMP > 24 AKKOR MAXLED KIÍRÓDIK PORTD-RE
	BRA		F2

	CLRF	PORTE
	MOVFF	PORTDTMP,PORTD
	MOVF	MAXLED,W
	IORWF	PORTD
	RETFIE	FAST

F2

	MOVLW	D'16'
	CPFSGT	FULLTMP				;HA FULLTEMP > 16 AKKOR MAXLED KIÍRÓDIK PORTC-RE
	BRA		F3

	CLRF	PORTD
	MOVFF	PORTCTMP,PORTC
	MOVF	MAXLED,W
	IORWF	PORTC
	RETFIE	FAST

F3

	MOVLW	D'8'
	CPFSGT	FULLTMP				;HA FULLTEMP > 8 AKKOR MAXLED KIÍRÓDIK PORTB-RE
	BRA		F4
	
	CLRF	PORTC	
	MOVFF	PORTBTMP,PORTB
	MOVF	MAXLED,W
	IORWF	PORTB
	RETFIE	FAST

F4

	CLRF	PORTB
	MOVFF	PORTATMP,PORTA		;HA FULLTEMP NEM > 8 AKKOR MAXLED KIÍRÓDIK PORTA-RA
	MOVF	MAXLED,W
	IORWF	PORTA

	TSTFSZ	FULLTMP
	RETFIE	FAST
	CLRF	PORTA				;HA FULLTMP 0 AKKOR PORTA IS 0

	RETFIE	FAST

;............................................... IR JELFELISMERÉS .................................................

TIMER1
	
	BCF		PIR1,TMR1IF

	SETF	TMR1H
	BTFSC	FLAG,2
	BRA		IR0

	BTFSC	PORTE,3
	RETFIE	FAST
		
	MOVLW	D'33'				;TIMER1 MÁSODSZORI LEFUTÁSÁNAK KÉSLELTETÉSE
	MOVWF	TMR1ET

	BSF		FLAG,2
	RETFIE	FAST

IR0
	
	DCFSNZ	TMR1ET
	BRA		KI0		
	
	BTFSC	PORTE,3
	BSF		JELTMP,0			;TÁROLJA AZ IR JEL LOGIKAI SZINTJÉT
	BTFSS	PORTE,3
	BCF		JELTMP,0

	INCF	IRSZAML,F			;SZAML NÖVELÉSE

	MOVLW	D'8'
	CPFSEQ	IRSZAML,W			;HA BETELIK A JEL 8 BITJE UGRÁS A TÁROLÁSHOZ						 
	BRA		A0
	MOVFF	JELTMP,JELTMP1

A0
	
	MOVLW	D'16'
	CPFSEQ	IRSZAML,W			;HA BETELIK A JEL 8 BITJE UGRÁS A TÁROLÁSHOZ
	BRA		A1
	MOVFF	JELTMP,JELTMP1+1

A1

	MOVLW	D'24'
	CPFSEQ	IRSZAML,W			;HA BETELIK A JEL 8 BITJE UGRÁS A TÁROLÁSHOZ
	BRA		A2
	MOVFF	JELTMP,JELTMP1+2

A2

	MOVLW	D'32'
	CPFSEQ	IRSZAML,W			;HA BETELIK A JEL 8 BITJE UGRÁS A TÁROLÁSHOZ
	BRA		A3
	MOVFF	JELTMP,JELTMP1+3

	BCF		FLAG,3				;IRJEL ELLENŐRZÉS TILTÁSA
	MOVFF	JELTMP1,JEL
	MOVFF	JELTMP1+1,JEL+1
	MOVFF	JELTMP1+2,JEL+2		;IR JEL MÁSOLÁSA ELLENŐRZÉSHEZ
	MOVFF	JELTMP1+3,JEL+3

	BCF		FLAG,2
	BSF		FLAG,3				;IRJEL ELLENŐRZÉS ENGEDÉLYEZÉSE	
	CLRF	TMR1ET
	BRA		KI0

A3

	RLNCF	JELTMP,F			;BALRA FORGATJA A JEL BITJEIT MIELŐTT BEÍRÁSRA KERÜL A KÖVETKEZŐ SZINT ÉRTÉKE

	MOVLW	D'252'
	MOVWF	TMR1H				;KÉSLELTETÉS BEÁLLÍTÁSA
	MOVLW	D'195'
	MOVWF	TMR1L

	RETFIE	FAST

KI0

	CLRF	IRSZAML	
	BTFSS	FLAG,3
	BCF		FLAG,2
	RETFIE	FAST

;.......................................... LOW PRIORITÁSÚ MEGSZAKÍTÁS ............................................

LPM

	RETFIE

;................................................... FŐPROGRAM ....................................................

PRG

	BTFSC	FLAG,3				;IR JEL ELLENŐRZÉSRE KÉSZ
	CALL	ELL0
	
	BSF		ADCON0,1
	BTFSC	ADCON0,1			;A/D MINTAVÉTELEZÉS INDÍTÁSA, VÁRÁS A BEFEJEZÉSIG
	BRA		$-2
	MOVFF	ADRESL,SZAMLTMP

	BTFSC	FLAG,4
	GOTO	STROBI

	MOVLW	B'00000000'
	CPFSGT	ADRESH
	BRA		IDE	
	MOVLW	D'48'
	ADDWF	UGR
	MOVLW	D'23'
	ADDWF	SZINT

	MOVLW	B'00000001'
	CPFSGT	ADRESH
	BRA		IDE	
	MOVLW	D'16'
	ADDWF	UGR
	MOVLW	D'7'
	ADDWF	SZINT

	MOVLW	B'00000010'
	CPFSGT	ADRESH
	BRA		IDE	
	MOVLW	D'6'
	ADDWF	UGR
	MOVLW	D'2'
	ADDWF	SZINT

IDE

	MOVLW	D'255'
	CPFSEQ	SZAMLTMP
	BRA		ERTEK
	DECF	SZAMLTMP

;............................................... SZINTEK MEGADÁSA .................................................

ERTEK
	
	MOVLW	HIGH	TABLA		;UGRÓTÁBLA LÉTREHOZÁSA
	MOVWF	PCLATH
	INCF	UGR,F
	INCF	UGR,F
	MOVLW	LOW		TABLA
	ADDWF	UGR,W
	BTFSC	STATUS,C
	INCF	PCLATH,F	
	CALL	TABLA
	CPFSLT	SZAMLTMP
	INCF	SZINT
	CPFSLT	SZAMLTMP
	BRA		ERTEK
	MOVFF	SZINT,SZAMLTMP
	CLRF	SZINT
	CLRF	UGR

	BRA		TESZT	

TABLA

	MOVWF	PCL

;00

	RETLW D'2'
	RETLW D'9'
	RETLW D'16'
	RETLW D'23'
	RETLW D'31'
	RETLW D'39'
	RETLW D'47'
	RETLW D'55'
	RETLW D'64'
	RETLW D'73'
	RETLW D'82'
	RETLW D'92'
	RETLW D'103'
	RETLW D'114'
	RETLW D'125'
	RETLW D'137'
	RETLW D'150'
	RETLW D'163'
	RETLW D'178'
	RETLW D'193'
	RETLW D'209'
	RETLW D'227'
	RETLW D'245'
	RETLW D'255'	;23

;01

	RETLW D'13'
	RETLW D'36'
	RETLW D'62'
	RETLW D'92'
	RETLW D'126'
	RETLW D'167'
	RETLW D'225'
	RETLW D'255'	;30

;10

	RETLW D'25'
	RETLW D'200'
	RETLW D'255'	;32

;11

	RETLW D'2'
	RETLW D'70'
	RETLW D'255'	;34

;............................................ BEMENETI FESZÜLTSÉG KIÉRTÉKELÉSE ....................................

TESZT

	MOVF	SZAML,W
	CPFSEQ	SZAMLTMP			;HA SZAML ÉS SZAMLTMP EGYENLŐEK UGRÁS PRG
	BRA		NAGYOBB
	BRA		PRG

NAGYOBB

	MOVF	SZAML,W
	CPFSGT	SZAMLTMP			;HA SZAMLTMP NAGYOBB KIVON
	BRA		LEDKI
	BRA		KIVON

KIVON

	MOVF	SZAML,W	
	SUBWF	SZAMLTMP,W			;SZAMLTEMP-SZAML=SZAML
	MOVWF	SZAML

	MOVLW	D'32'
	CPFSLT	FULL				;HA PORTD TELE UGRÁS PORTE
	BRA		PRTE

	MOVLW	D'24'
	CPFSLT	FULL				;HA PORTC TELE UGRÁS PORTD
	BRA		PRTD

	MOVLW	D'16'
	CPFSLT	FULL				;HA PORTB TELE UGRÁS PORTC
	BRA		PRTC	

	MOVLW	D'8'
	CPFSLT	FULL				;HA PORTA TELE UGRÁS PORTB
	BRA		PRTB

;................................................... LEDEK BEKAPCSOLÁSA .............................................

PRTA

	MOVLW	D'8'
	CPFSLT	FULL				;HA FULL=8 PORTA TELE UGRÁS PORTB
	BRA		PRTB

	INCF	FULL,F				;FULL+1

	BSF		STATUS,C
	RLCF	PORTATMP,F			;+1 LED KIGYULLAD
	MOVF	PORTATMP,W
	IORWF	PORTA
	
	MOVF	FULL,W
	CPFSEQ	FULLTMP
	CALL	DELAY				;KÉSLELTETÉS
	
	DECFSZ	SZAML,F				;SZAML-1 HA 0 UGRÁS PRG
	BRA		PRTA
	MOVFF	SZAMLTMP,SZAML		;SZAMLTMP=SZAML
	BRA		PRG

PRTB

	MOVLW	D'16'
	CPFSLT	FULL				;HA FULL=16 PORTB TELE UGRÁS PORTC
	BRA		PRTC

	INCF	FULL,F				;FULL+1
		
	BSF		STATUS,C
	RLCF	PORTBTMP,F			;+1 LED KIGYULLAD
	MOVF	PORTBTMP,W
	IORWF	PORTB

	MOVF	FULL,W
	CPFSEQ	FULLTMP
	CALL	DELAY				;KÉSLELTETÉS
	
	DECFSZ	SZAML,F				;SZAML-1 HA 0 UGRÁS PRG
	BRA		PRTB
	MOVFF	SZAMLTMP,SZAML		;SZAMLTMP=SZAML
	BRA		PRG

PRTC

	MOVLW	D'24'
	CPFSLT	FULL				;HA FULL=16 PORTC TELE UGRÁS PORTD
	BRA		PRTD

	INCF	FULL,F				;FULL+1
		
	BSF		STATUS,C
	RLCF	PORTCTMP,F			;+1 LED KIGYULLAD
	MOVF	PORTCTMP,W
	IORWF	PORTC

	MOVF	FULL,W
	CPFSEQ	FULLTMP
	CALL	DELAY				;KÉSLELTETÉS
	
	DECFSZ	SZAML,F				;SZAML-1 HA 0 UGRÁS PRG
	BRA		PRTC
	MOVFF	SZAMLTMP,SZAML		;SZAMLTMP=SZAML
	BRA		PRG

PRTD

	MOVLW	D'32'
	CPFSLT	FULL				;HA FULL=32 PORTD TELE UGRÁS PORTE
	BRA		PRTE

	INCF	FULL,F				;FULL+1
		
	BSF		STATUS,C
	RLCF	PORTDTMP,F			;+1 LED KIGYULLAD
	MOVF	PORTDTMP,W
	IORWF	PORTD
	
	MOVF	FULL,W
	CPFSEQ	FULLTMP
	CALL	DELAY				;KÉSLELTETÉS
	
	DECFSZ	SZAML,F				;SZAML-1 HA 0 UGRÁS PRG
	BRA		PRTD
	MOVFF	SZAMLTMP,SZAML		;SZAMLTMP=SZAML
	BRA		PRG

PRTE

	MOVLW	D'34'
	CPFSLT	FULL				;HA FULL=40 PORTD TELE UGRÁS LEDKI
	MOVWF	SZAML
	CPFSLT	FULL				;HA FULL=40 PORTD TELE UGRÁS LEDKI
	BRA		PRG

	INCF	FULL,F				;FULL+1
		
	BSF		STATUS,C
	RLCF	PORTETMP,F			;+1 LED KIGYULLAD
	MOVF	PORTETMP,W
	IORWF	PORTE

	CALL	DELAY				;KÉSLELTETÉS
	
	DECFSZ	SZAML,F				;SZAML-1 HA 0 UGRÁS PRG
	BRA		PRTD
	MOVFF	SZAMLTMP,SZAML		;SZAMLTMP=SZAML
	BRA		PRG

;................................................... LEDEK KIKAPCSOLÁSA .............................................

LEDKI

	DECFSZ	DEL1
	BRA		PRG
	MOVLW	D'25'
	MOVWF	DEL1

	DECFSZ	DEL2				;KÉSLELTETÉS LEFELÉ
	BRA		PRG
	MOVFF	DEL2TMP,DEL2

	BCF		STATUS,C			;CARRY TÖRLÉSE

	MOVLW	D'8'
	CPFSGT	FULL				;HA FULL < = 8 +1 LED ELALSZIK PORTA-N
	CALL	LEDSTOPA
	MOVLW	D'8'
	CPFSGT	FULL				;HA FULL > 8 UGRIK	
	BRA		L1

	MOVLW	D'16'
	CPFSGT	FULL				;HA FULL > 8 ÉS < = 16 AKKOR +1 LED ELALSZIK PORTB-N
	CALL	LEDSTOPB
	MOVLW	D'16'
	CPFSGT	FULL				;HA FULL > 16 UGRIK
	BRA		L1
	
	MOVLW	D'24'
	CPFSGT	FULL				;HA FULL > 16 ÉS < = 24 AKKOR +1 LED ELALSZIK PORTC-N		
	CALL	LEDSTOPC
	MOVLW	D'24'
	CPFSGT	FULL				;HA FULL > 24 UGRIK	
	BRA		L1

	MOVLW	D'32'
	CPFSGT	FULL				;HA FULL > 24 ÉS < = 32 AKKOR +1 LED ELALSZIK PORTD-N	
	CALL	LEDSTOPD
	MOVLW	D'32'
	CPFSGT	FULL				;HA FULL > 32 UGRIK	
	BRA		L1

	MOVLW	D'34'
	CPFSGT	FULL				;HA FULL > 32 ÉS < = 34 AKKOR +1 LED ELALSZIK PORTE-N			
	CALL	LEDSTOPE

L1

	DECF	FULL,F				;FULL-1
	DECF	SZAML,F				;SZAML-1
			
	BRA		PRG

;.............................................. ZUHANÓ LED KEZDŐ POZÍCIÓJA ..........................................

LEDSTOPA

	MOVF	FULL,W
	CPFSGT	FULLTMP				;HA ALACSONYABB SZINT JÖN UGRÁS ALEDKI
	BCF		FLAG,0
	BTFSC	FLAG,0				;HA MAGASABB SZINT JÖN MAXLED BEKAPCSOLÁSA
	BRA		ALEDKI
	
	MOVFF	PORTATMP,MAXLED
	BCF		STATUS,C							
	RRCF	PORTATMP,W			;MAXIMÁLIS SZINTET JELZŐ LED MEGHATÁROZÁSA
	XORWF	MAXLED,F
	BSF		FLAG,0				;MAXIMÁLIS SZINTET JELZŐ LED DETEKTÁLVA
	BSF		FLAG,1				;ZUHANÓ LED VÁRAKOZTATÁSA
	MOVFF	FULL,FULLTMP

ALEDKI

	BCF		STATUS,C
	RRCF	PORTATMP,F			;+1 LED ELALSZIK PORTA-N
	MOVFF	PORTATMP,PORTA
	MOVF	MAXLED,W

	BTFSC	PORTE,0
	RETURN
	BTFSC	PORTE,1
	RETURN
	TSTFSZ	PORTD
	RETURN
	TSTFSZ	PORTC				;ZUHANÓ LED ENGEDÉLYEZÉSE CSAK AKKOR HA AZ ELŐZŐ PORTOK MÁR ÜRESEK
	RETURN
	TSTFSZ	PORTB
	RETURN
	IORWF	PORTA,F
	RETURN

LEDSTOPB
	
	MOVF	FULL,W
	CPFSGT	FULLTMP				;HA ALACSONYABB SZINT JÖN UGRÁS BLEDKI
	BCF		FLAG,0
	BTFSC	FLAG,0				;HA MAGASABB SZINT JÖN MAXLED BEKAPCSOLÁSA
	BRA		BLEDKI
	
	MOVFF	PORTBTMP,MAXLED
	BCF		STATUS,C							
	RRCF	PORTBTMP,W			;MAXIMÁLIS SZINTET JELZŐ LED MEGHATÁROZÁSA
	XORWF	MAXLED,F
	BSF		FLAG,0				;MAXIMÁLIS SZINTET JELZŐ LED DETEKTÁLVA
	BSF		FLAG,1				;ZUHANÓ LED VÁRAKOZTATÁSA
	MOVFF	FULL,FULLTMP

BLEDKI

	BCF		STATUS,C
	RRCF	PORTBTMP,F			;+1 LED ELALSZIK PORTB-N
	MOVFF	PORTBTMP,PORTB
	MOVF	MAXLED,W

	BTFSC	PORTE,0
	RETURN
	BTFSC	PORTE,1
	RETURN
	TSTFSZ	PORTD
	RETURN
	TSTFSZ	PORTC				;ZUHANÓ LED ENGEDÉLYEZÉSE CSAK AKKOR HA AZ ELŐZŐ PORTOK MÁR ÜRESEK
	RETURN
	IORWF	PORTB,F
	RETURN

LEDSTOPC
	
	MOVF	FULL,W
	CPFSGT	FULLTMP				;HA ALACSONYABB SZINT JÖN UGRÁS CLEDKI
	BCF		FLAG,0
	BTFSC	FLAG,0				;HA MAGASABB SZINT JÖN MAXLED BEKAPCSOLÁSA
	BRA		CLEDKI
	
	MOVFF	PORTCTMP,MAXLED
	BCF		STATUS,C							
	RRCF	PORTCTMP,W			;MAXIMÁLIS SZINTET JELZŐ LED MEGHATÁROZÁSA
	XORWF	MAXLED,F
	BSF		FLAG,0				;MAXIMÁLIS SZINTET JELZŐ LED DETEKTÁLVA
	BSF		FLAG,1				;ZUHANÓ LED VÁRAKOZTATÁSA
	MOVFF	FULL,FULLTMP

CLEDKI

	BCF		STATUS,C
	RRCF	PORTCTMP,F			;+1 LED ELALSZIK PORTC-N
	MOVFF	PORTCTMP,PORTC
	MOVF	MAXLED,W
	
	BTFSC	PORTE,0
	RETURN
	BTFSC	PORTE,1
	RETURN
	TSTFSZ	PORTD				;ZUHANÓ LED ENGEDÉLYEZÉSE CSAK AKKOR HA AZ ELŐZŐ PORTOK MÁR ÜRESEK
	RETURN
	IORWF	PORTC,F
	RETURN


LEDSTOPD

	MOVF	FULL,W
	CPFSGT	FULLTMP				;HA ALACSONYABB SZINT JÖN UGRÁS DLEDKI
	BCF		FLAG,0
	BTFSC	FLAG,0				;HA MAGASABB SZINT JÖN MAXLED BEKAPCSOLÁSA
	BRA		DLEDKI
	
	MOVFF	PORTDTMP,MAXLED
	BCF		STATUS,C							
	RRCF	PORTDTMP,W			;MAXIMÁLIS SZINTET JELZŐ LED MEGHATÁROZÁSA
	XORWF	MAXLED,F
	BSF		FLAG,0				;MAXIMÁLIS SZINTET JELZŐ LED DETEKTÁLVA
	BSF		FLAG,1				;ZUHANÓ LED VÁRAKOZTATÁSA
	MOVFF	FULL,FULLTMP

DLEDKI

	BCF		STATUS,C
	RRCF	PORTDTMP,F			;+1 LED ELALSZIK PORTD-N
	MOVFF	PORTDTMP,PORTD
	MOVF	MAXLED,W
	
	BTFSC	PORTE,0
	RETURN
	BTFSC	PORTE,1				;ZUHANÓ LED ENGEDÉLYEZÉSE CSAK AKKOR HA AZ ELŐZŐ PORT MÁR ÜRES
	RETURN
	IORWF	PORTD,F
	RETURN

LEDSTOPE

	MOVF	FULL,W
	CPFSGT	FULLTMP				;HA ALACSONYABB SZINT JÖN UGRÁS ELEDKI
	BCF		FLAG,0
	BTFSC	FLAG,0				;HA MAGASABB SZINT JÖN MAXLED BEKAPCSOLÁSA
	BRA		ELEDKI
	
	MOVFF	PORTETMP,MAXLED
	BCF		STATUS,C							
	RRCF	PORTETMP,W			;MAXIMÁLIS SZINTET JELZŐ LED MEGHATÁROZÁSA
	XORWF	MAXLED,F
	BSF		FLAG,0				;MAXIMÁLIS SZINTET JELZŐ LED DETEKTÁLVA
	BSF		FLAG,1				;ZUHANÓ LED VÁRAKOZTATÁSA
	MOVFF	FULL,FULLTMP

ELEDKI

	BCF		STATUS,C
	RRCF	PORTETMP,F			;+1 LED ELALSZIK PORTE-N
	MOVFF	PORTETMP,PORTE
	MOVF	MAXLED,W
	IORWF	PORTE,F
	RETURN

;....................................................... ZUHANÓ LED .................................................

DELAY
	
	DECFSZ	DEL0
	BRA		DELAY

	RETURN


;........................................................ STROBOSZKÓP ...............................................

STROBI

	MOVLW	D'0'
	CPFSGT	ADRESH
	GOTO	PRG	

	SETF	PORTA
	SETF	PORTB
	SETF	PORTC
	SETF	PORTD
	SETF	PORTE

	MOVLW	D'30'
	MOVWF	DEL6
	CALL	DELAY1

	CLRF	PORTA
	CLRF	PORTB
	CLRF	PORTC
	CLRF	PORTD
	CLRF	PORTE

	MOVLW	D'50'
	MOVWF	DEL6
	CALL	DELAY1

	GOTO	PRG


DELAY1

	DECFSZ	DEL0
	BRA		DELAY1
	DECFSZ	DEL6
	BRA		DELAY1
	
	RETURN

;............................................... IR JELELLENŐRZÉS .................................................

ELL0

	MOVF	JEL,W
	CPFSEQ	JELSTROB
	BRA		E1
	BRA		E2

E1

	BTG		WREG,3
	BTG		WREG,4				;IRJEL 3.ÉS 4.BITJÉNEK KOMPLEMENTÁLÁSA HOGY A GOMB MINDEN MÁSODIK MEGNYOMÁSA IS FELISMERÉSRE KERÜLJÖN
	CPFSEQ	JELSTROB
	BRA		ELL1

E2

	MOVF	JEL+1,W
	CPFSEQ	JELSTROB+1
	BRA		ELL1			
	MOVF	JEL+2,W
	CPFSEQ	JELSTROB+2			;MAX.GOMBHOZ TARTOZÓ IRJEL ELLENŐRZÉSE
	BRA		ELL1
	MOVF	JEL+3,W
	CPFSEQ	JELSTROB+3
	BRA		ELL1

	BSF		FLAG,4				;STROBOSZKÓP ÜZEMMÓD
	
	CLRF	PORTA
	CLRF	PORTB
	CLRF	PORTC
	CLRF	PORTD				;KIMENETEK NULLÁZÁSA
	CLRF	PORTE
	CLRF	FULLTMP				;ZUHANÓ LED TILTVA

ELL1

	MOVF	JEL,W
	CPFSEQ	JELKIV
	BRA		E3
	BRA		E4

E3

	BTG		WREG,3
	BTG		WREG,4				;IRJEL 3.ÉS 4.BITJÉNEK KOMPLEMENTÁLÁSA HOGY A GOMB MINDEN MÁSODIK MEGNYOMÁSA IS FELISMERÉSRE KERÜLJÖN
	CPFSEQ	JELKIV
	BRA		ELL2

E4

	MOVF	JEL+1,W
	CPFSEQ	JELKIV+1
	BRA		ELL2			
	MOVF	JEL+2,W
	CPFSEQ	JELKIV+2			;MAX.GOMBHOZ TARTOZÓ IRJEL ELLENŐRZÉSE
	BRA		ELL2
	MOVF	JEL+3,W
	CPFSEQ	JELKIV+3
	BRA		ELL2

	BCF		FLAG,4				;KIVEZÉRLÉSJELZŐ ÜZEMMÓD

	MOVFF	PORTATMP,PORTA
	MOVFF	PORTBTMP,PORTB
	MOVFF	PORTCTMP,PORTC		;ÉRTÉKEK VISSZAÁLLÍTÁSA A KIMENETEKRE
	MOVFF	PORTDTMP,PORTD
	MOVFF	PORTETMP,PORTE

ELL2

	BCF		FLAG,3				;IR JEL ELLENŐRIZVE
	RETURN

	END


