#include "fuses_pic16f716.h"
#define _XTAL_FREQ 1000000
unsigned char volatile RESULTADO;
void config_pwm(){
TRISBbits.TRISB3 =0;
PR2 = 250 -1 ; // configuro periodo = 1ms,con clk 1Mh y prescaler 1:1
CCP1CON = 0b00111100 ;
CCPR1L = 0b01111111;
PIR1bits.TMR2IF = 0;
T2CON = 0X00;
T2CONbits.TMR2ON = 1;
}
void config_ADC(){
TRISAbits.TRISA0 = 1; // setear A0 como entrada
TRISAbits.TRISA3 = 1;
ADCON1 = 0b00000101; // voltaje de referncia Vdd
ADCON0 = 0x00;
PIE1bits.ADIE = 1;
PIR1bits.ADIF = 0;
}
void interrupt ADC_vector(){
RESULTADO = ADRES;
CCPR1L = RESULTADO;
ADCON0bits.ADON = 1;
PIR1bits.ADIF = 0;
}
void interrupciones(){
INTCONbits.PEIE = 1;
}
void main(void) {
config_pwm();
config_ADC();
interrupciones();
ADCON0bits.ADON = 1;
INTCONbits.GIE = 1;
while(1){
}
}