;Lámpafényerő vezérlő
;Készítette: én
;2012.03.19.

;------------------------------------------------------------
	list	P=12F615
#include	"P12F615.INC"


__CONFIG   _MCLRE_OFF & _CP_OFF & _WDT_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT & _IOSCFS_4MHZ




#define	GIE_temp		ÜZEMMÓD, 0


    UDATA
	W_TEMP					res 1
	STATUS_TEMP				res 1
	Előző_IO_állapot		res 1
	Mostani_IO_állapot		res 1
	delay3					res	1
	delay2					res	1
	delay1					res	1
	delay0					res	1
	ÜZEMMÓD					res 1
	Kitöltési_tényező
	Számláló


;*************** VEKTOROK ******************	
RST CODE 0x0000
	goto	START1		;melyik program fusson?
int	CODE 0x0004		;megszakítási cím
    goto	MEGSZAKÍTÁS


;**************** MEGSZAKÍTÁSOK ***********************
PGM	CODE

MEGSZAKÍTÁS
	MOVWF	W_TEMP			;W REGISZTER ELTÁROLÁSA
	SWAPF	STATUS,W		
	MOVWF 	STATUS_TEMP		;STATUS REGISZTER ELTÁROLÁSA

tmr0_megszakításvizsgálat
	btfsc	PIR1, TMR1IF	;tmr1 megszakítás ellenőrzése (PWM jel növelése/csökkentése)
	goto	TMR1_megszakítás
tmr2_megszakításvizsgálat
	btfsc	PIR1, TMR2IF	;tmr2 megszakítás ellenőrzése (szoftveres PWM)
	goto	TMR2_megszakítás
	goto	megszakitas_kilepes

;-----------------------
TMR2_megszakítás
	bcf		PIR1, TMR2IF
	decfsz	Számláló
	goto	a00
	movlw	d'20'
	movwf	Számláló

a00	movf	Kitöltési_tényező, W
	btfss	STATUS, Z	;ha a kitöltési tényező nulla, akkor ugrik!
	goto	a01
	bcf		GPIO, GP2	;triak lekapcsolása!
	goto	tmr2_megszakításvizsgálat

a01	movf	Számláló, W
	subwf	Kitöltési_tényező, W
	btfsc	STATUS, C	;ha alulcsordult (ha a számláló nagyobb mint a kitöltési tényező), akkor ugrik!
	goto	a02
	bcf		GPIO, GP2	;triak lekapcsolása!
	goto	tmr2_megszakításvizsgálat
a02	bsf		GPIO, GP2	;triak begyújtása!
	goto	tmr2_megszakításvizsgálat



;-----------------------
TMR1_megszakítás
	bcf		PIR1, TMR1IF
	btfsc	GPIO, GP5 ;ha fel van kapcsolva a kapcsoló, akkor ugrik!
	goto	a03
	movlw	d'20'
	subwf	Kitöltési_tényező, W
	btfss	STATUS, Z	;ha nulla lett (a kitöltési tényező 20 azaz maximűlis), akkor ugrik!
	incf	Kitöltési_tényező
	goto	megszakitas_kilepes

a03	movf	Kitöltési_tényező, W
	btfss	STATUS, Z	;ha a kitöltési tényező nulla, akkor ugrik!
	decf	Kitöltési_tényező
	goto	megszakitas_kilepes


;-----------------------
megszakitas_kilepes
	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
;************** MEGSZAKÍTÁS VÉGE *******************
	



;-------------------------------------------------------------------------------
;----------------------START1---------------------------------------------------
;-------------------------------------------------------------------------------
START1
	call	PIC_INICIALIZÁLÁS





	goto	$



;-------------------------------------------------------------------------
;------------SZUBRUTINOK--------------------------------------------------
;-------------------------------------------------------------------------

PIC_INICIALIZÁLÁS
;	I/O lábak beállítása:
	banksel	TRISIO
	movlw	b'11111011'	
	movwf	TRISIO			;minden láb bemenet lesz, kivéve GP2
	banksel	ANSEL
	clrf	ANSEL			;Minden bemenet digitális legyen!
	banksel	WPU
	movlw	b'00110111'	
	movwf	WPU				;Felhúzóellenállások bekapcsolása!
;***********************************
;	TMR1 konfigurációja:
	banksel	T1CON
	movlw	b'00010001'
	movwf	T1CON		;gate kikapcs, 1:2-es előosztó, LP oszci kikapcs, Fosc/4, számláló bekapcs (túlcsordulás 0,131072s-onként)
;	TMR2 konfigurációja:		;időzítés: (1/4MHz)*4*4*250*10=0,01s (félhullám ideje)
	banksel	T2CON
	movlw	b'01001101'		;10-es utóosztó, timer bekapcs, 4-es előosztó
	movwf	T2CON
	banksel	PR2
	movlw	d'250'
	movwf	PR2
;**********************************
;	Megszakítások konfigurációja:
	banksel	PIE1
	bsf		PIE1, TMR2IE
	bsf		PIE1, TMR1IE
	banksel	INTCON
	clrf	INTCON
	bsf		INTCON, PEIE		;periféria-megszakítás engedélyezése
	bsf		INTCON, GIE			;globális megszakítás engedélyezése
	RETURN



;----------------------------------------------------------------------------------------

;#include	"Lampafenyero vezerlo.inc"






	goto	$
	END