
list      p=16F690 
#include <p16F690.inc>
    __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)

	cblock 0x20
	
RESULTLO	
RESULTHI
wait
	endc	

       
        
		org 0
	

;--------------------------------------------------------------------------
	

; PWM szabályzás

	
; I/O port konfigurálás
	bsf	STATUS,RP0	
		movlw	B'11011111'		; RC PWM P1A 5. láb
		movwf	TRISC
		
;ini
		BSF	 	STATUS,RP0 			;Bank 1
		BCF	 	STATUS,RP1 			;
		MOVLW 	B'01110000' 		;A/D belső órajel
		MOVWF 	ADCON1 				;
		BSF 	TRISA,0				 ;Set RA0 to input
		BCF		 STATUS,RP0 		;Bank 2
		BSF		STATUS,RP1 			;
		BSF		 ANSEL,0 			;Set RA0 to analog
		BCF 	STATUS,RP1			 ;Bank 0
		MOVLW 	B'10000001'			 ;Right, Vdd Vref, AN0
		MOVWF 	ADCON0 ;
		Banksel TRISC
		movlw	b'00000000'
		movwf	TRISC
		clrf	 PORTC		
		
		
		
pwm

;-----------------------------------------------------------------------------------------------;


; CCP1 modul programozása PWM módban
	;	MOVWF 	RESULTLO
	;	movwf	CCPR1L
		clrf	PIE1			; periféria megszakítások tiltása
		movlw	0x7F			; PR2=0x7F
		movwf	PR2				; a Timer2 periódus regisztere
		bcf		STATUS,RP0			; bank0 kiválasztás
		clrf	CCP1CON
		clrf	TMR2
		movwf	CCPR1L			; kitöltési tényező= 25%
		movlw	0x2C			;  2C-2F 00 10 1100 single output, alsó két bit, activ high
		movwf	CCP1CON			; PWM mód beállítás
		bsf 	T2CON,TMR2ON	; Timer2 engedélyezés
;----------------------------------------------------------------------
;Loop	goto	Loop	; várakozás resetre
	;	goto pwm	
	
;----------------------------------------------------------------------
	

;A/D konverzió		

		
Main
 		
		CALL 	SampleTime 			;Wait min sample time
		BSF 	ADCON0,GO 			;Start conversion
		BCF 	STATUS,RP1
		BTFSC	 ADCON0,GO			 ;Is conversion done?
		GOTO	$-1 				;No, test again
		MOVF 	ADRESH,W 			;Read upper 2 bits
		MOVWF 	RESULTHI 			;
		BSF 	STATUS,RP0 			;Bank 1
		MOVF 	ADRESL,W 			;Read lower 8 bits
		BCF 	STATUS,RP0			 ;Bank 0
		MOVWF 	RESULTLO
		movwf   PORTC
		movwf	CCPR1L
		
	 goto pwm
		
SampleTime
	clrf	wait
war
	DECFSZ	wait, f
	goto	war		
	RETURN	
; konverzió vége

     	
	end
	
	
	
	
	
	
	
	