	LIST P=12f683
	#include <p12f683.inc>
	__CONFIG H'3FD4'

	CBLOCK	0x20			;Szabad memória hely
	T1						;Delay-hez kell
	T2						;Delay-hez kell
	T3						;Delay-hez kell
	
	TOL
	IG
	FREKI
	
	ENDC

	org 0

START 
;Alap beállítások
	clrf GPIO 				;GPIO mind 0 rá
	movlw b'111' 			;Comparator OFF bitkódja
	movwf CMCON0 			;Comparator OFF (Bank0)

	banksel ANSEL 			;Bank 1

	clrf ANSEL 				;minden port digitálisra

	movlw b'111001'			;4, 5-ős láb kimenetre PWM+led (0 ki, 1 be)
	movwf TRISIO			;ki/be menet beállítása;

	movlw b'01110000'		;8 Mhz bitkódja
	movwf OSCCON			;Belső oszcillátor beállítása

;PWM bekapcsolása	
	banksel CCP1CON			;Bank 0

	movlw b'00001100'		;PWM mód bittek
	movwf CCP1CON	 		;PWM mód aktiválás

	bsf T2CON,2				;Timer2 on

;	movlw b'101'			;Timer2 is on előosztó 4
;	movwf T2CON		 		;Timer2 is on
;	movlw b'110'			;Timer2 is on előosztó 16
;	movwf T2CON		 		;Timer2 is on

;kihagyható
	movlw b'00000000'		;TMR2 nullázás
	movwf TMR2		 		;TMR2 nullázás

;változók alap érték adása
	movlw d'32'				;60606 kHz
	movwf TOL
	movlw d'99'				;20000 kHz
	movwf IG
;jumperek vizsgálata (GP0(teszt),3,4,5)
	movf GPIO,1				;jumperek beolvasás

	movlw b'110'			;Timer2 is on előosztó 16
	btfsc GPIO,0			;teszt jumper vizsgálata
	movwf T2CON		 		;Timer2 is on
	
	clrf FREKI
	movlw d'7'				;freki tiltás mérték beállítása
	btfsc GPIO,3			;jumper 1
	addwf FREKI,1		 	;+7

	btfsc GPIO,4			;jumper 2
	addwf FREKI,1		 	;+7
	btfsc GPIO,4			;jumper 2
	addwf FREKI,1		 	;+7

	btfsc GPIO,5			;jumper 3
	addwf FREKI,1		 	;+7
	btfsc GPIO,5			;jumper 3
	addwf FREKI,1		 	;+7
	btfsc GPIO,5			;jumper 3
	addwf FREKI,1		 	;+7
	btfsc GPIO,5			;jumper 3
	addwf FREKI,1		 	;+7

	movf FREKI,0		;FREKI W-be
	subwf IG,1   		;frekvenia alsó határ beállítása
	
PWM
	banksel PR2				;Bank1
	movlw d'32'				;fervencia beállítása 60606 kHz (8Mhz mellett)
	movwf PR2				;ferki szabályozás

;50%-os kitöltési tényező beállítása PR2-höz (számolja magától frekiből)
	banksel CCPR1L			;Bank0
	movwf CCPR1L			
	bcf CCP1CON,5				
	btfsc CCPR1L,0
	bsf CCP1CON,5				
	rrf CCPR1L,1
	bcf CCPR1L,7

MOD1
	movf IG,0				;IG betölrése W-be
	call Delay2
	banksel PR2				;Bank 1
	
	xorwf	PR2,0			;
    btfsc STATUS,Z			;ha elérte IG-et akkor kihagyja a köv sort.
	goto NOVEL
	goto CSOKKENT

MOD2
	movf TOL,0				;IG betölrése W-be
	call Delay2
	banksel PR2				;Bank 1
	
	xorwf PR2,0				;
    btfsc STATUS,Z			;ha elérte IG-et akkor kihagyja a köv sort.
	goto CSOKKENT
	goto NOVEL
	
CSOKKENT	;freki csokken PR2 nő
	banksel PIR1			;Bank 0
	bcf PIR1,1				;Timer2 tulcsorudló jelző nullázása
	btfss PIR1,1			;Ha van tulcsorulás továb megy
	goto $-1				;Ha nincs vár

	banksel PR2				;Bank 1
	incf PR2,1				;PR2 1-el növelése
	movf PR2,0				;PR2 W-be
;50%-os kitöltési tényező beállítása PR2-höz (számolja magától frekiből)
	banksel CCPR1L			;Bank0
	movwf CCPR1L			
	bcf CCP1CON,5				
	btfsc CCPR1L,0
	bsf CCP1CON,5				
	rrf CCPR1L,1
	bcf CCPR1L,7

	goto MOD1

NOVEL	;freki nő PR2 csökken
	banksel PIR1			;Bank 0
	bcf PIR1,1				;Timer2 tulcsorudló jelző nullázása
	btfss PIR1,1			;Ha van tulcsorulás továb megy
	goto $-1				;Ha nincs vár

	banksel PR2				;Bank 1
	decf PR2,1				;PR2 1-el csökkentése
	movf PR2,0				;PR2 W-be
;50%-os kitöltési tényező beállítása PR2-höz (számolja magától frekiből)
	banksel CCPR1L			;Bank0
	movwf CCPR1L			
	bcf CCP1CON,5				
	btfsc CCPR1L,0
	bsf CCP1CON,5				
	rrf CCPR1L,1
	bcf CCPR1L,7
	
	goto MOD2

;időzitések
Delay		;8Mhz 0,3 sec
		
	movlw	0xD1
	movwf	T1
	movlw	0x4F
	movwf	T2
	movlw	0x02
	movwf	T3
Delay_0
	decfsz	T1, f
	goto	$+2
	decfsz	T2, f
	goto	$+2
	decfsz	T3, f
	goto	Delay_0

	return

Delay2		;8Mhz 1,7 sec

	banksel GPIO			;Bank 0
	bsf GPIO,1				;led be
	call Delay
	bcf GPIO,1				;led ki

	movlw	0x51
	movwf	T1
	movlw	0x6A
	movwf	T2
	movlw	0x08
	movwf	T3
Delay_02
	decfsz	T1, f
	goto	$+2
	decfsz	T2, f
	goto	$+2
	decfsz	T3, f
	goto	Delay_02

	return


	end; Teljes program lezáró