; 18F2321-al vezérelt Logic Gate FET meghajtással felépített Kürt.
; Riasztó programrész kihagyva, 12 szirénahanggal

	LIST P=18F2321, F=INHX32	
	#include <P18F2321.INC>	
	ERRORLEVEL -230 


;	__CONFIG	_CONFIG1L   Nem használt regiszter
	;__CONFIG	_CONFIG1H, 	b'10000010'		; HS Osc
	
	__CONFIG	_CONFIG1H, 	b'00001000'		; INTERNAL RC OSC, Fail-Safe Clock Monitor disabled, Internal External Switch Over mode disabled
	__CONFIG	_CONFIG2L, 	b'00000100'		; Brown-out Reset dis enabled 4,2V, PWRT enabled
	__CONFIG	_CONFIG2H, 	b'00001101'		; WDT ON 64*4ms=0,256 => ~4Hz
;	__CONFIG	_CONFIG3L,  Nem használt regiszter
	__CONFIG	_CONFIG3H, 	b'00000001'		; RE3 input pin enabled; MCLR disabled, PortB <4:0> digit I/O ;CCP2 input/output is multiplexed with RC1
	__CONFIG	_CONFIG4L, 	b'10000001'		; Background Debugger disabled, STACK FULL - RESET
;	__CONFIG	_CONFIG4H,  Nem használt regiszter	
	__CONFIG	_CONFIG5L, 	b'00000011'		; CODE PROTECT OFF 
	__CONFIG	_CONFIG5H, 	b'11000000'		; EEPROM, BOOTBLOCK PROTECT OFF
	__CONFIG	_CONFIG6L,  b'00000011'		; WRITE PROTECT OFF 
	__CONFIG	_CONFIG6H, 	b'11100000'		; EEPROM WRITE, BOOT WRITE, CONF REG WRITE PROTECT OFF
	__CONFIG	_CONFIG7L,  b'00000011'		; TABLE READ PROTECTION OFF
	__CONFIG	_CONFIG7H, 	b'01000000'		; BOOT READ PROTECT OFF

;***ID Location Define

	__IDLOCS _IDLOC0, 'K'
	__IDLOCS _IDLOC1, 'Ü'
	__IDLOCS _IDLOC2, 'R'
	__IDLOCS _IDLOC3, 'T'
	__IDLOCS _IDLOC4, 'W'
	__IDLOCS _IDLOC5, 'A'
	__IDLOCS _IDLOC6, 'T'
	__IDLOCS _IDLOC7, 'T'	 


;............................. ALAP DEKLARÁLÁSOK  ............................

	#DEFINE		TMR1_INT_E_T	PIE1,0
	#DEFINE		TMR1_INT_FLAG	PIR1,0
	
	#DEFINE		TMR0_INT_E_T	INTCON,5		; TIMER0 MEGSZAKITAS ENGEDELYEZES/TILTAS BIT
	#DEFINE		TMR0_INT_FLAG	INTCON,2		; TIMER0 MEGSZAKITAS JELZO BIT.
	
	#DEFINE		ALL_INT_E_T		INTCON,7		; GLOBALIS MEGSZAKITASOK ENGEDELYEZESE_TILTAS
	#DEFINE		ALL_PINT_E_T	INTCON,6		; PERIFERIA MEGSZAKITASOK ENGEDELYEZESE_TILTAS

	#DEFINE		FREKI_KI_INV		PORTC,4			; Invertált freki kimenet
	#DEFINE		FREKI_KI_NINV		PORTC,5			; Nem Invertált freki kimenet
	
	#DEFINE		SPI_IO_E		SSPCON1,SSPEN	; SPI PIC ENGEDÉLYEZÉS
	
	
	#DEFINE		EFFEKT_1_GOMB	PORTB,5
	#DEFINE		EFFEKT_2_GOMB	PORTB,4
	#DEFINE		EFFEKT_3_GOMB	PORTB,3
	#DEFINE		EFFEKT_4_GOMB	PORTB,2
	#DEFINE		EFFEKT_5_GOMB	PORTB,1
	#DEFINE		EFFEKT_6_GOMB	PORTB,0	
	#DEFINE		EFFEKT_7_GOMB	PORTA,0
	#DEFINE		EFFEKT_8_GOMB	PORTA,1
	#DEFINE		EFFEKT_9_GOMB	PORTA,2
	#DEFINE		EFFEKT_10_GOMB	PORTA,3
	#DEFINE		EFFEKT_11_GOMB	PORTA,4
	#DEFINE		EFFEKT_12_GOMB	PORTA,5

;................................ VALTOZÓ DEKLARALAS ........................................
					
	CBLOCK		0X0070
		AKKU_TEMP
		STATUS_TEMP
		BSR_TEMP
		
		FREKI_L		; EZ HATÁROZZA MEG A KIMENETI FREKVENCIÁT.
		FREKI_H		; 
		
		LÉPÉS_ÜTEM
		LÉPÉS_ÜTEM_H
		
		FREKI_KEZDŐ_H
		FREKI_KEZDŐ_L
		FREKI_BEFEJEZŐ_H
		FREKI_BEFEJEZŐ_L
		VÁLTOZÁS_SEBESSÉGE	; EFFEKT SZUBRUTINOK BEMENŐ PARAMÉTEREI.
		
		FREKI_KITARTÁS_L
		FREKI_KITARTÁS_H	; KITARTÁS IDŐTARTAMÁT SZÁMOLJA
		
		CIKLUS
		CIKLUS_B
		
		SZÜNET_L
		SZÜNET_H			; SZÜNET KÉRÉS SZÁMLÁLÓ (10KHz ÜTEMMEL)

		GOMB_PRELL			; PRELL MENTESÍTÉS
		
		KÜRT_PER_L
		KÜRT_PER_H			; KÜRT HORN PERIÓDUS IDŐ SZÜNETNEK
		
		FLAG_1
	ENDC

;	------------------------- FLAG DEKRALÁLÁSOK -----------------------------

	#DEFINE		SZÜNET_KÉRÉS	FLAG_1,0
	#DEFINE 	LÉPÉS_ÜTEM_JEL	FLAG_1,1
	#DEFINE		FR_KITARTÁS_KÉRÉS	FLAG_1,2
	#DEFINE		BREAK			FLAG_1,3
	#DEFINE		GOMB_ENG		FLAG_1,4
	#DEFINE		GOMB_LENYOMVA	FLAG_1,5
	#DEFINE		KÜRT_PERIOD_KÉRÉS	FLAG_1,6
	#DEFINE		RIASZTÁS_JEL	FLAG_1,7	
	
;*******************************************************************************
;.......................RESET PONT.............................................	
	ORG	0X0000
	BRA 	INI
	ORG	0X0008
	GOTO 	MEGSZAK
	ORG	0X0018
	RETFIE

; -------------------- INICIALIZALASOK --------------------------------------------
INI

	CLRF	INTCON
	CLRF	PIE1
	MOVLW	B'00001111'			; PORTA DIGIT I/O
	MOVWF	ADCON1	

	MOVLW	B'11111011'
	MOVWF	OSCCON				; Belső OSC 8MHz, freki hangolás, 
	MOVLW	B'11000111'			; CENTER: XX000000	 MIN: XX111111...XX100000  MAX: XX000001...XX011111  
	MOVWF	OSCTUNE				; FREKI HANGOLÁS

;------------------------- PORTOK BEÁLLÍTÁSA --------------------------------------------
	MOVLW	B'11111111'			; MINDEN BEMENET
	MOVWF	TRISA				; PORTA BEALLITASA
	MOVLW	B'11111111'			; MINDEN BEMENET
	MOVWF	TRISB				; PORTB BEALLITASA
 	MOVLW	B'11000111'			; RC4, RC5 FREKI KI, RC3 LED, TÖBBI BEMENET
	MOVWF	TRISC				; PORTC BEALLITASA!!

	BCF		FREKI_KI_INV
	BCF		FREKI_KI_NINV 			; ALAPHELYZET


	BCF		INTCON2,7			; PORTB FELHÚZÓ ELLENALLAS ON

; ------------------------- MEGSZAKITASOK BEALLITASAI -----------------------------------------------

	MOVLW	B'00000100'			; TIMER0 MEGSZAKITAS MAGAS SZINTŰ LEKEZELES
	MOVWF	INTCON2
	CLRF	INTCON3				; KULSO MEGSZAKITAS FORRASOK LETILTVA, FLAGEK TOROLVE
	CLRF	IPR1
	CLRF	IPR2
	CLRF	PIE1
	CLRF	PIE2
	CLRF	PIR1
	CLRF	PIR2				; MEGSZAKITASOKAT KEZELO REGISZTEREK ALAPHELYZETBE ALLITVA
	BSF		IPR1,0				; TIMER1 HIGHT MEGSZAKÍTÁS LEKEZELÉS

; ------------------------- TIMEREK BEÁLLÍTÁSA -------------------------------------
	MOVLW	B'11000010'			; TIMER0 BEALLITASA. TIMER0 ON
								; 8 bites mód. ELŐOSZTÓ 1:8 
								; 8MHz nél a megszakítás: KB 1000Hz
	MOVWF	T0CON
	MOVLW	B'10000001'			; T1 ON, T1 START, ELŐOSZTÓ 1:1, 16bit MÓD, KÜLSŐ OSZCI OFF
	MOVWF	T1CON
	BSF		TMR1_INT_E_T		; T1 INT EN
	BSF		TMR0_INT_E_T		; T0 INT EN

;-------------------- SPI Beállítása -------------------------------------------------------------
 	
	BCF		SSPCON1,SSPEN				; SSP OFF
		
;--------------- VÁLTOZÓK CONSTANSOK ÉRTÉKADÁSOK-----------------------------------------
	#DEFINE		KEZDŐ_FREKI(X) 	(.65536-.2000000/X)
	#DEFINE		BEFEJEZŐ_FREKI(X) 	(.65536-.2000000/X)
	#DEFINE		SEBESSÉG(X)			(X)
	CONSTANT	y =	2			; SZORZÓ A FREKIHEZ!! 
	
	MOVLW		.30				; msec-BEN
	MOVWF		GOMB_PRELL		; PRELLMENTESÍTŐ ÉRTÉK FELTÖLTÉSE

	CLRF	TMR1H
	CLRF	TMR1L
	BCF		BREAK
	BSF		GOMB_ENG	
	BCF		RIASZTÁS_JEL
		
;************************ PROGRAM MAG ******************************

	BSF		ALL_INT_E_T
	BSF		ALL_PINT_E_T
	BSF		WDTCON,SWDTEN	; watch dog bekapcsolva

; .... FŐ CIKLUS ....

DO
	BTFSS	GOMB_ENG			; HA A GOMB KEZELÉS ENGEDÉLYEZVE VAN, UGRIK			
	BRA		DO
	
EFF_SKIP_1	
	BTFSC	EFFEKT_1_GOMB		; 		
	BRA		EFF_SKIP_2
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA		
	CALL	EFFEKT_1
	BRA  EFF_SKIP_1
EFF_SKIP_2	
	BTFSC	EFFEKT_2_GOMB
	BRA		EFF_SKIP_3
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA
	CALL	EFFEKT_2
	BRA  EFF_SKIP_2	
EFF_SKIP_3
	BTFSC	EFFEKT_3_GOMB
	BRA		EFF_SKIP_4
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA
	CALL	EFFEKT_3
	BRA  EFF_SKIP_3
EFF_SKIP_4
	BTFSC	EFFEKT_4_GOMB
	BRA		EFF_SKIP_5
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA
	CALL	EFFEKT_4
	BRA  EFF_SKIP_4	
EFF_SKIP_5
	BTFSC	EFFEKT_5_GOMB
	BRA		EFF_SKIP_6
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA
	CALL	EFFEKT_5
	BRA  EFF_SKIP_5	
EFF_SKIP_6
	BTFSC	EFFEKT_6_GOMB
	BRA		EFF_SKIP_7
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA
	CALL	EFFEKT_6
	BRA  EFF_SKIP_6		
EFF_SKIP_7
	BTFSC	EFFEKT_7_GOMB
	BRA		EFF_SKIP_8
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA
	CALL	EFFEKT_7
	BRA  EFF_SKIP_7		
EFF_SKIP_8
	BTFSC	EFFEKT_8_GOMB
	BRA		EFF_SKIP_9
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA
	CALL	EFFEKT_8
	BRA  EFF_SKIP_8		
EFF_SKIP_9
	BTFSC	EFFEKT_9_GOMB
	BRA		EFF_SKIP_10
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA
	CALL	EFFEKT_9
	BRA  EFF_SKIP_9		
EFF_SKIP_10
	BTFSC	EFFEKT_10_GOMB
	BRA		EFF_SKIP_11
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA
	CALL	EFFEKT_10
	BRA  EFF_SKIP_10		
EFF_SKIP_11
	BTFSC	EFFEKT_11_GOMB
	BRA		EFF_SKIP_12
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA
	CALL	EFFEKT_11
	BRA  EFF_SKIP_11		
EFF_SKIP_12
	BTFSC	EFFEKT_12_GOMB
	BRA		EFF_SKIP
	BSF		GOMB_LENYOMVA		; JELZÉS BEÁLLÍTVA
	CALL	EFFEKT_12
	BRA  EFF_SKIP_12
EFF_SKIP
	BTFSS	GOMB_LENYOMVA
	BRA	 DO
	BCF		GOMB_LENYOMVA
	BCF		GOMB_ENG
	BRA  DO	

;*******************************************************************
;*******************************************************************











;...................... ELJÁRÁSOK ...... HANG EFFEKTEK ............................
	ORG 0X200
; ......... ERISTON 150 "HI-LO" KÜRT hang ........	
EFFEKT_1
	#DEFINE	E1_IDŐ_1	.690	
	
	
	;FREKI_KITARTÁSA
	MOVLW	HIGH(E1_IDŐ_1)		; (msec-ben!!)
	MOVWF	FREKI_KITARTÁS_H
	MOVLW	LOW(E1_IDŐ_1)
	MOVWF	FREKI_KITARTÁS_L
	MOVLW	HIGH(KEZDŐ_FREKI((.450*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.450*y)))
	MOVWF	FREKI_KEZDŐ_L	
	CALL	FREKI_KITART_SUB
	
	;FREKI_KITARTÁSA
	MOVLW	HIGH(E1_IDŐ_1)		; (msec-ben!!)
	MOVWF	FREKI_KITARTÁS_H
	MOVLW	LOW(E1_IDŐ_1)
	MOVWF	FREKI_KITARTÁS_L
	MOVLW	HIGH(KEZDŐ_FREKI((.626*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.626*y)))
	MOVWF	FREKI_KEZDŐ_L	
	CALL	FREKI_KITART_SUB
	RETURN

	
; ......... ERISTON 150 "YELP" kürthang ........	
	ORG	0X300
EFFEKT_2
 	MOVLW	HIGH(KEZDŐ_FREKI((.760*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.760*y)))
	MOVWF	FREKI_KEZDŐ_L	
	MOVLW	HIGH(BEFEJEZŐ_FREKI((.550*y)))
	MOVWF	FREKI_BEFEJEZŐ_H
	MOVLW	LOW(BEFEJEZŐ_FREKI((.550*y)))
	MOVWF	FREKI_BEFEJEZŐ_L	
	MOVLW	SEBESSÉG(.85)
	MOVWF	VÁLTOZÁS_SEBESSÉGE
	CALL	LEFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB
	RETURN

; .... ...  ERISTON 150 "WAIL" kürthang ..........	
	ORG 0X500
EFFEKT_3
	; LEFUTÁS 
	MOVLW	HIGH(KEZDŐ_FREKI((.900*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.900*y)))
	MOVWF	FREKI_KEZDŐ_L	
	MOVLW	HIGH(BEFEJEZŐ_FREKI((.600*y)))
	MOVWF	FREKI_BEFEJEZŐ_H
	MOVLW	LOW(BEFEJEZŐ_FREKI((.600*y)))
	MOVWF	FREKI_BEFEJEZŐ_L	
	MOVLW	SEBESSÉG(.60)
	MOVWF	VÁLTOZÁS_SEBESSÉGE
	CALL	LASSÚ_LEFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB
	RETURN

; .........  STANDARD KÜRT  ........	
	ORG 0X700
EFFEKT_4
	; FELFUTÁS 
	MOVLW	HIGH(KEZDŐ_FREKI((.600*y)))		; próba értékek:
	MOVWF	FREKI_KEZDŐ_H					; 630-650(30), 600-620(30), 600-630(19)!
	MOVLW	LOW(KEZDŐ_FREKI((.600*y)))
	MOVWF	FREKI_KEZDŐ_L	
	MOVLW	HIGH(BEFEJEZŐ_FREKI((.630*y)))
	MOVWF	FREKI_BEFEJEZŐ_H
	MOVLW	LOW(BEFEJEZŐ_FREKI((.630*y)))
	MOVWF	FREKI_BEFEJEZŐ_L	
	MOVLW	SEBESSÉG(.19)
	MOVWF	VÁLTOZÁS_SEBESSÉGE
	CALL	FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB

	; KB. 80Hz PERIÓDUS SZÜNET
	#DEFINE	PERIOD  	.2550	
	MOVLW	LOW(PERIOD)
	MOVWF	KÜRT_PER_L
	MOVLW	HIGH(PERIOD)
	MOVWF	KÜRT_PER_H
	CALL	KÜRT_PERIÓDUS


	; FELFUTÁS 
	MOVLW	HIGH(KEZDŐ_FREKI((.600*y)))		; próba értékek:
	MOVWF	FREKI_KEZDŐ_H					; 630-650(30), 600-620(30), 600-630(19)!
	MOVLW	LOW(KEZDŐ_FREKI((.600*y)))
	MOVWF	FREKI_KEZDŐ_L	
	MOVLW	HIGH(BEFEJEZŐ_FREKI((.630*y)))
	MOVWF	FREKI_BEFEJEZŐ_H
	MOVLW	LOW(BEFEJEZŐ_FREKI((.630*y)))
	MOVWF	FREKI_BEFEJEZŐ_L	
	MOVLW	SEBESSÉG(.19)
	MOVWF	VÁLTOZÁS_SEBESSÉGE
	CALL	FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB

	; KB. 80Hz PERIÓDUS SZÜNET
	MOVLW	LOW(PERIOD)
	MOVWF	KÜRT_PER_L
	MOVLW	HIGH(PERIOD)
	MOVWF	KÜRT_PER_H
	CALL	KÜRT_PERIÓDUS

	RETURN
	
; KÜRT_RUTIN...
KÜRT_PERIÓDUS
	BCF		SZÜNET_KÉRÉS	
	BCF		FR_KITARTÁS_KÉRÉS
	BCF		FREKI_KI_INV
	BCF		FREKI_KI_NINV
	BSF		KÜRT_PERIOD_KÉRÉS
	BCF		ALL_INT_E_T
KÜRT_DO_L	
	DECF	KÜRT_PER_L,F
	MOVLW	0
	SUBWFB	KÜRT_PER_H,F	; HA L ALULCSORDULT, AKKOR H-1
	BNC		KÜRT_KÉSZ		; HA EZ IS ALULCSORDULT KÉSZ 
	BRA		KÜRT_DO_L	
KÜRT_KÉSZ
	BCF		KÜRT_PERIOD_KÉRÉS
	BSF		ALL_INT_E_T
	RETURN	


	; VERIFY MÓD TÁMOGATÁSA


; ..........HIPER YELP ......
	ORG	0X900
EFFEKT_5
	MOVLW	HIGH(KEZDŐ_FREKI((.700*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.700*y)))
	MOVWF	FREKI_KEZDŐ_L	
	MOVLW	HIGH(BEFEJEZŐ_FREKI((.2000*y)))
	MOVWF	FREKI_BEFEJEZŐ_H
	MOVLW	LOW(BEFEJEZŐ_FREKI((.2000*y)))
	MOVWF	FREKI_BEFEJEZŐ_L	
	MOVLW	SEBESSÉG(.20)
	MOVWF	VÁLTOZÁS_SEBESSÉGE
	CALL	FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB
	
	MOVLW	HIGH(KEZDŐ_FREKI((.1000*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.1000*y)))
	MOVWF	FREKI_KEZDŐ_L	
	MOVLW	HIGH(BEFEJEZŐ_FREKI((.700*y)))
	MOVWF	FREKI_BEFEJEZŐ_H
	MOVLW	LOW(BEFEJEZŐ_FREKI((.700*y)))
	MOVWF	FREKI_BEFEJEZŐ_L	
	MOVLW	SEBESSÉG(.20)
	MOVWF	VÁLTOZÁS_SEBESSÉGE
	CALL	LEFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB
	
	RETURN

; ......... MÁV SZIGNÁL hang ........
	org 0x1100
EFFEKT_6
	#DEFINE	E6_IDŐ_2	.480	
	#DEFINE	E6_IDŐ_3	.240
	#DEFINE	E6_IDŐ_4	.120

	;FREKI_KITARTÁSA
	MOVLW	HIGH(E6_IDŐ_3)		; (msec-ben!!)
	MOVWF	FREKI_KITARTÁS_H
	MOVLW	LOW(E6_IDŐ_3)
	MOVWF	FREKI_KITARTÁS_L
	MOVLW	HIGH(KEZDŐ_FREKI((.587*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.587*y)))
	MOVWF	FREKI_KEZDŐ_L	
	CALL	FREKI_KITART_SUB
	
	;FREKI_KITARTÁSA
	MOVLW	HIGH(E6_IDŐ_4)		; (msec-ben!!)
	MOVWF	FREKI_KITARTÁS_H
	MOVLW	LOW(E6_IDŐ_4)
	MOVWF	FREKI_KITARTÁS_L
	MOVLW	HIGH(KEZDŐ_FREKI((.440*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.440*y)))
	MOVWF	FREKI_KEZDŐ_L	
	CALL	FREKI_KITART_SUB
	
	;FREKI_KITARTÁSA
	MOVLW	HIGH(E6_IDŐ_4)		; (msec-ben!!)
	MOVWF	FREKI_KITARTÁS_H
	MOVLW	LOW(E6_IDŐ_4)
	MOVWF	FREKI_KITARTÁS_L
	MOVLW	HIGH(KEZDŐ_FREKI((.494*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.494*y)))
	MOVWF	FREKI_KEZDŐ_L	
	CALL	FREKI_KITART_SUB

	;FREKI_KITARTÁSA
	MOVLW	HIGH(E6_IDŐ_3)		; (msec-ben!!)
	MOVWF	FREKI_KITARTÁS_H
	MOVLW	LOW(E6_IDŐ_3)
	MOVWF	FREKI_KITARTÁS_L
	MOVLW	HIGH(KEZDŐ_FREKI((.440*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.440*y)))
	MOVWF	FREKI_KEZDŐ_L	
	CALL	FREKI_KITART_SUB	
	
	;FREKI_KITARTÁSA
	MOVLW	HIGH(E6_IDŐ_4)		; (msec-ben!!)
	MOVWF	FREKI_KITARTÁS_H
	MOVLW	LOW(E6_IDŐ_4)
	MOVWF	FREKI_KITARTÁS_L
	MOVLW	HIGH(KEZDŐ_FREKI((.370*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.370*y)))
	MOVWF	FREKI_KEZDŐ_L	
	CALL	FREKI_KITART_SUB
	
	;FREKI_KITARTÁSA
	MOVLW	HIGH(E6_IDŐ_4)		; (msec-ben!!)
	MOVWF	FREKI_KITARTÁS_H
	MOVLW	LOW(E6_IDŐ_4)
	MOVWF	FREKI_KITARTÁS_L
	MOVLW	HIGH(KEZDŐ_FREKI((.392*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.392*y)))
	MOVWF	FREKI_KEZDŐ_L	
	CALL	FREKI_KITART_SUB
	
	;FREKI_KITARTÁSA
	MOVLW	HIGH(E6_IDŐ_2)		; (msec-ben!!)
	MOVWF	FREKI_KITARTÁS_H
	MOVLW	LOW(E6_IDŐ_2)
	MOVWF	FREKI_KITARTÁS_L
	MOVLW	HIGH(KEZDŐ_FREKI((.370*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.370*y)))
	MOVWF	FREKI_KEZDŐ_L	
	CALL	FREKI_KITART_SUB

	MOVLW	LOW(.2000)
	MOVWF	SZÜNET_L
	MOVLW	HIGH(.2000)
	MOVWF	SZÜNET_H
	CALL	SZÜNET
	RETURN


	org 0x1200
; ......... MÉLY AIR HORN ........	
EFFEKT_7
	; FELFUTÁS
	MOVLW	HIGH(KEZDŐ_FREKI((.220*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.220*y)))
	MOVWF	FREKI_KEZDŐ_L	
	MOVLW	HIGH(BEFEJEZŐ_FREKI((.260*y)))
	MOVWF	FREKI_BEFEJEZŐ_H
	MOVLW	LOW(BEFEJEZŐ_FREKI((.260*y)))
	MOVWF	FREKI_BEFEJEZŐ_L	
	MOVLW	SEBESSÉG(.30)
	MOVWF	VÁLTOZÁS_SEBESSÉGE
	CALL	FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB

	; 
	#DEFINE	PERIOD2  	.20	
	MOVLW	LOW(PERIOD2)
	MOVWF	KÜRT_PER_L
	MOVLW	HIGH(PERIOD2)
	MOVWF	KÜRT_PER_H	
	CALL	KÜRT_PERIÓDUS
	
	RETURN


	org 0x1300
;
EFFEKT_8	; -->>*****Code3 Wail kürthang******
	

	MOVLW   HIGH(KEZDŐ_FREKI((.660*y))) ;
	MOVWF   FREKI_KEZDŐ_H
	MOVLW   LOW(KEZDŐ_FREKI((.660*y))) ;
	MOVWF   FREKI_KEZDŐ_L
	MOVLW   HIGH(BEFEJEZŐ_FREKI((.2000*y)))
	MOVWF   FREKI_BEFEJEZŐ_H
	MOVLW   LOW(BEFEJEZŐ_FREKI((.2000*y)))
	MOVWF   FREKI_BEFEJEZŐ_L
	MOVLW   SEBESSÉG(.40)
	MOVWF   VÁLTOZÁS_SEBESSÉGE
	CALL    LASSÚ_FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB

	MOVLW   HIGH(KEZDŐ_FREKI((.2000*y)))
	MOVWF   FREKI_KEZDŐ_H
	MOVLW   LOW(KEZDŐ_FREKI((.2000*y)))
	MOVWF   FREKI_KEZDŐ_L
	MOVLW   HIGH(BEFEJEZŐ_FREKI((.660*y)))
	MOVWF   FREKI_BEFEJEZŐ_H
	MOVLW   LOW(BEFEJEZŐ_FREKI((.660*y)))
	MOVWF   FREKI_BEFEJEZŐ_L
	MOVLW   SEBESSÉG(.40)
	MOVWF   VÁLTOZÁS_SEBESSÉGE
	CALL    LASSÚ_LEFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB

	RETURN

	org 0x1400
; 
EFFEKT_9	; -->>*****Federal Signal Smart Siren*****

	MOVLW   HIGH(KEZDŐ_FREKI((.600*y)))
	MOVWF   FREKI_KEZDŐ_H
	MOVLW   LOW(KEZDŐ_FREKI((.600*y)))
	MOVWF   FREKI_KEZDŐ_L
	MOVLW   HIGH(BEFEJEZŐ_FREKI((.1000*y)))
	MOVWF   FREKI_BEFEJEZŐ_H
	MOVLW   LOW(BEFEJEZŐ_FREKI((.1000*y)))
	MOVWF   FREKI_BEFEJEZŐ_L
	MOVLW   SEBESSÉG(.45)
	MOVWF   VÁLTOZÁS_SEBESSÉGE
	CALL    FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB
	MOVLW   HIGH(KEZDŐ_FREKI((.1000*y))) ;750
	MOVWF   FREKI_KEZDŐ_H
	MOVLW   LOW(KEZDŐ_FREKI((.1000*y))) ;650
	MOVWF   FREKI_KEZDŐ_L
	MOVLW   HIGH(BEFEJEZŐ_FREKI((.1800*y)))
	MOVWF   FREKI_BEFEJEZŐ_H
	MOVLW   LOW(BEFEJEZŐ_FREKI((.1800*y)))
	MOVWF   FREKI_BEFEJEZŐ_L
	MOVLW   SEBESSÉG(.51)
	MOVWF   VÁLTOZÁS_SEBESSÉGE
	CALL    LASSÚ_FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB
	MOVLW   HIGH(KEZDŐ_FREKI((.1800*y)))
	MOVWF   FREKI_KEZDŐ_H
	MOVLW   LOW(KEZDŐ_FREKI((.1800*y)))
	MOVWF   FREKI_KEZDŐ_L
	MOVLW   HIGH(BEFEJEZŐ_FREKI((.600*y)))
	MOVWF   FREKI_BEFEJEZŐ_H
	MOVLW   LOW(BEFEJEZŐ_FREKI((.600*y)))
	MOVWF   FREKI_BEFEJEZŐ_L
	MOVLW   SEBESSÉG(.47)
	MOVWF   VÁLTOZÁS_SEBESSÉGE
	CALL    LASSÚ_LEFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB
	
	#DEFINE E10_IDŐ_3 .45

 	MOVLW   HIGH(E10_IDŐ_3)
	MOVWF   FREKI_KITARTÁS_H
	MOVLW   LOW(E10_IDŐ_3)
	MOVWF   FREKI_KITARTÁS_L
	MOVLW   HIGH(KEZDŐ_FREKI((.600*y)))
	MOVWF   FREKI_KEZDŐ_H
	MOVLW   LOW(KEZDŐ_FREKI((.600*y)))
	MOVWF   FREKI_KEZDŐ_L
	CALL    FREKI_KITART_SUB

	RETURN

	org 0x1500
;
EFFEKT_10		; -->>*****Code3 Yelp kürthang*****
 
	MOVLW	HIGH(KEZDŐ_FREKI((.700*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.700*y)))
	MOVWF	FREKI_KEZDŐ_L	
	MOVLW	HIGH(BEFEJEZŐ_FREKI((.2000*y)))
	MOVWF	FREKI_BEFEJEZŐ_H
	MOVLW	LOW(BEFEJEZŐ_FREKI((.2000*y)))
	MOVWF	FREKI_BEFEJEZŐ_L	
	MOVLW	SEBESSÉG(.35)
	MOVWF	VÁLTOZÁS_SEBESSÉGE
	CALL	FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB

	MOVLW	HIGH(KEZDŐ_FREKI((.2000*y)))
	MOVWF	FREKI_KEZDŐ_H
	MOVLW	LOW(KEZDŐ_FREKI((.2000*y)))
	MOVWF	FREKI_KEZDŐ_L	
	MOVLW	HIGH(BEFEJEZŐ_FREKI((.700*y)))
	MOVWF	FREKI_BEFEJEZŐ_H
	MOVLW	LOW(BEFEJEZŐ_FREKI((.700*y)))
	MOVWF	FREKI_BEFEJEZŐ_L	
	MOVLW	SEBESSÉG(.45)
	MOVWF	VÁLTOZÁS_SEBESSÉGE
	CALL	LEFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB

	RETURN

	org 0x1600
; 
EFFEKT_11		;-->>*****Code3 Air Horn***** BRUTAL

	; FELFUTÁS 
	MOVLW	HIGH(KEZDŐ_FREKI((.1200*y)))		;Code3 esetén  1200
	MOVWF	FREKI_KEZDŐ_H					 
	MOVLW	LOW(KEZDŐ_FREKI((.1200*y)))		;Code3 esetén  1200
	MOVWF	FREKI_KEZDŐ_L	
	MOVLW	HIGH(BEFEJEZŐ_FREKI((.1230*y)))	;Code3 esetén  1230
	MOVWF	FREKI_BEFEJEZŐ_H
	MOVLW	LOW(BEFEJEZŐ_FREKI((.1230*y)))	;Code3 esetén  1230
	MOVWF	FREKI_BEFEJEZŐ_L	
	MOVLW	SEBESSÉG(.90)					;Code3 esetén  0,90
	MOVWF	VÁLTOZÁS_SEBESSÉGE
	CALL	FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB

	; KB. 80Hz PERIÓDUS SZÜNET
	#DEFINE	PERIOD1  	.2550	
	MOVLW	LOW(PERIOD1)
	MOVWF	KÜRT_PER_L
	MOVLW	HIGH(PERIOD1)
	MOVWF	KÜRT_PER_H
	CALL	KÜRT_PERIÓDUS


	; FELFUTÁS 
	MOVLW	HIGH(KEZDŐ_FREKI((.1200*y)))		; próba értékek:
	MOVWF	FREKI_KEZDŐ_H					; 630-650(30), 600-620(30), 600-630(19)!
	MOVLW	LOW(KEZDŐ_FREKI((.1200*y)))
	MOVWF	FREKI_KEZDŐ_L	
	MOVLW	HIGH(BEFEJEZŐ_FREKI((.1230*y)))	;Code3 esetén  1230
	MOVWF	FREKI_BEFEJEZŐ_H
	MOVLW	LOW(BEFEJEZŐ_FREKI((.1230*y)))	;Code3 esetén  1230
	MOVWF	FREKI_BEFEJEZŐ_L	
	MOVLW	SEBESSÉG(.90)					;Code3 esetén  0,90
	MOVWF	VÁLTOZÁS_SEBESSÉGE
	CALL	FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB

	; KB. 80Hz PERIÓDUS SZÜNET
	MOVLW	LOW(PERIOD1)
	MOVWF	KÜRT_PER_L
	MOVLW	HIGH(PERIOD1)
	MOVWF	KÜRT_PER_H
	CALL	KÜRT_PERIÓDUS

	RETURN

	org 0x1700
; ......... EFFEKT_12 ....................
EFFEKT_12
	RETURN







	org 0x1800

; .................... FREKI FELFUTÁS .............................................
FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB
	MOVFF	FREKI_KEZDŐ_H,FREKI_H
	MOVFF	FREKI_KEZDŐ_L,FREKI_L		; KEZDŐ FREKI BETÖLTÉSE
	BCF		BREAK
	
KÖV_FREKI_LÉP
	CALL	ÜTEM_DELAY			; VÁRJA A KÖVETKEZŐ LÉPÉST

	BTFSC	BREAK				; MEGSZAKÍTÁSJEL FIGYELÉSE
	RETURN						; HA VAN JEL, KILÉP

	INCF	FREKI_L,F			; FREKI VÁLTOZTATÁS
	MOVLW	0		
	ADDWFC	FREKI_H,F			; +1, HA VOLT TÚLCSORDULÁS L-ben

	MOVF	FREKI_BEFEJEZŐ_L,W	; 		
	CPFSEQ	FREKI_L				; Compare f with W, skip if f = W
	BRA		KÖV_FREKI_LÉP		; ÚJABB KÖR
	MOVF	FREKI_BEFEJEZŐ_H,W
	CPFSEQ	FREKI_H				; FREKI_BEFEJEZŐ_X = FREKI_X, AKKOR KILÉP			
	BRA		KÖV_FREKI_LÉP		; ÚJABB KÖR
	RETURN

; .................... FREKI LEFUTÁS .............................................
LEFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB
	MOVFF	FREKI_KEZDŐ_H,FREKI_H
	MOVFF	FREKI_KEZDŐ_L,FREKI_L		; KEZDŐ FREKI BETÖLTÉSE
	BCF		BREAK	
	
KÖV_FREKI_LÉP_LE
	CALL	ÜTEM_DELAY			; VÁRJA A KÖVETKEZŐ LÉPÉST

	BTFSC	BREAK				; MEGSZAKÍTÁSJEL FIGYELÉSE
	RETURN						; HA VAN JEL, KILÉP
	DECF	FREKI_L,F			; FREKI VÁLTOZTATÁS -1
	BTFSS	STATUS,C			; VOLT ALULCSORDULÁS? HA NEM AKKOR UGRIK		
	DECF	FREKI_H,F			; -1, HA VOLT TÚLCSORDULÁS L-ben
	MOVF	FREKI_BEFEJEZŐ_L,W	; 		
	CPFSEQ	FREKI_L				; Compare f with W, skip if f = W
	BRA		KÖV_FREKI_LÉP_LE	; ÚJABB KÖR
	MOVF	FREKI_BEFEJEZŐ_H,W
	CPFSEQ	FREKI_H				; FREKI_BEFEJEZŐ_X = FREKI_X, AKKOR KILÉP			
	BRA		KÖV_FREKI_LÉP_LE	; ÚJABB KÖR
	RETURN


; .................... FREKI FELFUTÁS .............................................
LASSÚ_FELFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB
	MOVFF	FREKI_KEZDŐ_H,FREKI_H
	MOVFF	FREKI_KEZDŐ_L,FREKI_L		; KEZDŐ FREKI BETÖLTÉSE
	BCF		BREAK
	
LASS_KÖV_FREKI_LÉP
	CALL	LASSÚ_ÜTEM_DELAY			; VÁRJA A KÖVETKEZŐ LÉPÉST
			
	BTFSC	BREAK				; MEGSZAKÍTÁSJEL FIGYELÉSE
	RETURN						; HA VAN JEL, KILÉP

	INCF	FREKI_L,F			; FREKI VÁLTOZTATÁS
	MOVLW	0		
	ADDWFC	FREKI_H,F			; +1, HA VOLT TÚLCSORDULÁS L-ben

	MOVF	FREKI_BEFEJEZŐ_L,W	; 		
	CPFSEQ	FREKI_L				; Compare f with W, skip if f = W
	BRA		LASS_KÖV_FREKI_LÉP		; ÚJABB KÖR
	MOVF	FREKI_BEFEJEZŐ_H,W
	CPFSEQ	FREKI_H				; FREKI_BEFEJEZŐ_X = FREKI_X, AKKOR KILÉP			
	BRA		LASS_KÖV_FREKI_LÉP		; ÚJABB KÖR
	RETURN

; .................... FREKI LEFUTÁS .............................................
LASSÚ_LEFUTÁS_KEZDET_VÉG_SEBESSÉG_SUB
	MOVFF	FREKI_KEZDŐ_H,FREKI_H
	MOVFF	FREKI_KEZDŐ_L,FREKI_L		; KEZDŐ FREKI BETÖLTÉSE
	BCF		BREAK	
	
LASS_KÖV_FREKI_LÉP_LE
	CALL	LASSÚ_ÜTEM_DELAY			; VÁRJA A KÖVETKEZŐ LÉPÉST
	
	BTFSC	BREAK				; MEGSZAKÍTÁSJEL FIGYELÉSE
	RETURN						; HA VAN JEL, KILÉP
	DECF	FREKI_L,F			; FREKI VÁLTOZTATÁS -1
	BTFSS	STATUS,C			; VOLT ALULCSORDULÁS? HA NEM AKKOR UGRIK		
	DECF	FREKI_H,F			; -1, HA VOLT TÚLCSORDULÁS L-ben
	MOVF	FREKI_BEFEJEZŐ_L,W	; 		
	CPFSEQ	FREKI_L				; Compare f with W, skip if f = W
	BRA		LASS_KÖV_FREKI_LÉP_LE	; ÚJABB KÖR
	MOVF	FREKI_BEFEJEZŐ_H,W
	CPFSEQ	FREKI_H				; FREKI_BEFEJEZŐ_X = FREKI_X, AKKOR KILÉP			
	BRA		LASS_KÖV_FREKI_LÉP_LE	; ÚJABB KÖR
	RETURN


; .............. SZÜNET (A hívás előtt be kell állítani a várakozás időtartamát) .........
SZÜNET
	BSF		SZÜNET_KÉRÉS		; KÉRÉS JELZŐ BEKAPCSOLVA	
	BCF		BREAK
SZÜNET_VÁR
	BTFSS	SZÜNET_KÉRÉS		; Várakozik a SZÜNET_KÉRÉS jel törlésére(MEGSZAKÍTÁSBAN TÖRŐDIK)	
	BRA		SZÜN_KÉSZ
	BTFSC	BREAK				; VOLT PROGRAM MEGSZAKÍTÁS?
	BRA		SZÜN_KÉSZ			; HA IGEN
	BRA		SZÜNET_VÁR			; HA NEM AKKOR VÁRAKOZIK
SZÜN_KÉSZ
	BCF		SZÜNET_KÉRÉS
	RETURN

; ............... FREKI_KITARTÁS ................
FREKI_KITART_SUB
	BSF		FR_KITARTÁS_KÉRÉS
	MOVFF	FREKI_KEZDŐ_H,FREKI_H
	MOVFF	FREKI_KEZDŐ_L,FREKI_L		; KÉRT FREKI BETÖLTÉSE
	BCF		BREAK
KITARTÁS_VÁR
	BTFSS	FR_KITARTÁS_KÉRÉS
	BRA		KIT_VÉGE
	BTFSC	BREAK
	BRA		KIT_VÉGE
	BRA		KITARTÁS_VÁR	
KIT_VÉGE	
	BCF		FR_KITARTÁS_KÉRÉS
	RETURN


; ................... ÜTEM ....................
ÜTEM_DELAY
	MOVFF	VÁLTOZÁS_SEBESSÉGE,LÉPÉS_ÜTEM
UU
	DECFSZ	LÉPÉS_ÜTEM,F
	BRA		UU
	MOVFF	VÁLTOZÁS_SEBESSÉGE,LÉPÉS_ÜTEM
UU2
	DECFSZ	LÉPÉS_ÜTEM,F
	BRA		UU2
	
	RETURN	

; ................... LASSÚ ÜTEM ....................
LASSÚ_ÜTEM_DELAY
	MOVFF	VÁLTOZÁS_SEBESSÉGE,LÉPÉS_ÜTEM
UU4
	MOVFF	VÁLTOZÁS_SEBESSÉGE,LÉPÉS_ÜTEM_H
UU3
	DECFSZ	LÉPÉS_ÜTEM_H,F
	BRA		UU3
	DECFSZ	LÉPÉS_ÜTEM,F
	BRA		UU4
	RETURN


;...............................................................................................
; -------------------- MEGSZAKITAS KEZELESE ----------------------------------------
MEGSZAK
	SWAPF	WREG,W
	MOVWF	AKKU_TEMP 			; W REGISZTER ELTAROLASA
	SWAPF	STATUS,W	
	MOVWF	STATUS_TEMP 		; STATUS REG TAROLASA
	MOVFF 	BSR, BSR_TEMP 		; BSR REG TAROLASA	

	; TIMET 0?		; KB.1000HZ-EL
	BTFSS	TMR0_INT_FLAG
	BRA		TIMER1_ELL
	BCF		TMR0_INT_FLAG	

	CLRWDT
	
	BTFSC	GOMB_ENG		; HA GOMB ENGEDÉLYEZÉS TÖRÖLVE VAN
	BRA		SZÜNET__ELL
	BTFSC	GOMB_LENYOMVA	; ÉS GOMB NINCS LENYOMVA
	BRA		SZÜNET__ELL
	; HA MINDEN GOMB ELENGEDVE
	DECFSZ	GOMB_PRELL,F
	BRA		SZÜNET__ELL		
	MOVLW	.30				; msec-BEN
	MOVWF	GOMB_PRELL		; PRELLMENTESÍTŐ ÉRTÉK FELTÖLTÉSE
	BSF		GOMB_ENG		; GOMB KEZELÉS ENGEDÉLYZVE

	; SZÜNET IDŐZÍTÉSE	
SZÜNET__ELL
	BTFSS	SZÜNET_KÉRÉS		; SZÜNET KÉRÉS VAN?
	BRA		FREKI_KITART	
	DECF	SZÜNET_L,F
	MOVLW	0
	SUBWFB	SZÜNET_H,F			; HA L ALULCSORDULT, AKKOR H-1
	BNC		SZÜN_LEJÁRT			; HA EZ IS ALULCSORDULT KÉSZ 	
	BRA		MEG_VEG				; KILÉPÉS
SZÜN_LEJÁRT
	BCF		SZÜNET_KÉRÉS		; JELZÉS TÖRÖLVE (EGYBEN JELZI, HOGY A SZÜNET LEJÁRT
	BRA		MEG_VEG				; KILÉPÉS
	
	; FREKI KITARTÁS IDŐZÍTÉSE
FREKI_KITART
	BTFSS	FR_KITARTÁS_KÉRÉS	; FREKI KITARTÁS KÉRÉS VOLT?
	BRA		TIMER1_ELL			; HA NEM
	DECF	FREKI_KITARTÁS_L,F
	MOVLW	0
	SUBWFB	FREKI_KITARTÁS_H,F		; HA L ALULCSORDULT, AKKOR H-1
	BNC		KITARTÁS_LEJÁRT			; HA EZ IS ALULCSORDULT KÉSZ
	BRA		TIMER1_ELL
KITARTÁS_LEJÁRT
	BCF		FR_KITARTÁS_KÉRÉS	; JEL TÖRÖLVE (JELZI, HOGY LEJÁRT A KITARTÁS IDŐ)
	BRA		MEG_VEG				; KILÉPÉS

	; TIMER1?
TIMER1_ELL
	BTFSS	TMR1_INT_FLAG		; 
	BRA		MEG_VEG
	MOVFF	FREKI_H,TMR1H
	MOVFF	FREKI_L,TMR1L		; FREKVENCIA BEÁLLÍTÁSA.
	
	; GOMBOK ELLENŐRZÉSE
	BTFSS	GOMB_ENG
	BRA		FREKI_STOP				; STOP

	BTFSS	EFFEKT_1_GOMB
	BRA		SZÜNET_KÉR_ELL		
	BTFSS	EFFEKT_2_GOMB
	BRA		SZÜNET_KÉR_ELL	
	BTFSS	EFFEKT_3_GOMB
	BRA		SZÜNET_KÉR_ELL	
	BTFSS	EFFEKT_4_GOMB
	BRA		SZÜNET_KÉR_ELL
	BTFSS	EFFEKT_5_GOMB
	BRA		SZÜNET_KÉR_ELL
	BTFSS	EFFEKT_6_GOMB
	BRA		SZÜNET_KÉR_ELL
	BTFSS	EFFEKT_7_GOMB
	BRA		SZÜNET_KÉR_ELL		
	BTFSS	EFFEKT_8_GOMB
	BRA		SZÜNET_KÉR_ELL	
	BTFSS	EFFEKT_9_GOMB
	BRA		SZÜNET_KÉR_ELL	
	BTFSS	EFFEKT_10_GOMB
	BRA		SZÜNET_KÉR_ELL
	BTFSS	EFFEKT_11_GOMB
	BRA		SZÜNET_KÉR_ELL
	BTFSS	EFFEKT_12_GOMB
	BRA		SZÜNET_KÉR_ELL
	
FREKI_STOP	
	BCF		SZÜNET_KÉRÉS	
	BCF		FR_KITARTÁS_KÉRÉS
	BCF		FREKI_KI_INV
	BCF		FREKI_KI_NINV	
	BSF		BREAK				; MEGSZAKÍTÁS JEL BEÁLLÍTVA	
	BRA		FREKI_VÉGE			; KILÉPÉS

SZÜNET_KÉR_ELL
	BTFSS	SZÜNET_KÉRÉS		; SZÜNET KÉRÉS VAN?
	BRA		KÜRT_PERIOD_SZÜNET	
	BCF		FREKI_KI_INV
	BCF		FREKI_KI_NINV
	BRA		FREKI_VÉGE			; KILÉPÉS		

KÜRT_PERIOD_SZÜNET
	BTFSS	KÜRT_PERIOD_KÉRÉS
	BRA		FREKI_KI_OK
	BCF		FREKI_KI_INV
	BCF		FREKI_KI_NINV
	BRA		FREKI_VÉGE			; KILÉPÉS	

FREKI_KI_OK	
	; Freki kivitele lábakra
	BTFSC	FREKI_KI_INV		; LÁB 0?
	BRA		GO_INV
	BCF		FREKI_KI_NINV
	NOP
	NOP
	
	BSF		FREKI_KI_INV
	BRA		FREKI_VÉGE
GO_INV
	BTFSS	FREKI_KI_INV		; 0?
	BRA		FREKI_VÉGE	
	BCF		FREKI_KI_INV
	NOP
	NOP

	BSF		FREKI_KI_NINV
FREKI_VÉGE
	BCF		TMR1_INT_FLAG

MEG_VEG
	MOVFF 	BSR_TEMP, BSR 
	SWAPF 	STATUS_TEMP,W
	MOVWF	STATUS
	SWAPF 	AKKU_TEMP,W		 	; MENTETT REGISZTEREK VISSZAALLITASA
	RETFIE	


; ************************ TÁBLÁZATOK ....................

 
 ;..................
	END
