#include <16f88.h>
#use delay(clock=4000000)
void main()
{
set_tris_a (0b00111001); //Ra7-Ra6-Ra5-Ra4-Ra3-Ra2-Ra1-Ra0
set_tris_b (0b00000100); //Rb7-Rb6-Rb5-Rb4-Rb3-Rb2-Rb1-Rb0
SETUP_CCP1(CCP_OFF);
setup_adc_ports(sAN0);
setup_adc(ADC_CLOCK_INTERNAL);
OUTPUT_B(1);
OUTPUT_A(1);
setup_counters( RTCC_INTERNAL, RTCC_DIV_4 | RTCC_8_BIT);
SETUP_CCP1(CCP_PWM); //Modo PWM para el CCP1
//para obtener 40khz con 4Mhz, 50% desde el timer 2 con pwm
//
//formula: periodo = (PR2+1)* 4 * Tosc * (prescaler tmr2)
// 0.000025 = (PR2+1) * 1/1000 000 * 1
//PR2 = 24
//
setup_timer_2(T2_DIV_BY_1,24,1);
//el timer2 tendra un multiplicador por 1 de preeescaler,
//su periodo de reseteo (PR2) sera en el valor 24,
//el postcale no se usa en pwm lo dejamos en 1 .
SET_PWM1_DUTY(12);
// 50% del periodo = duty * 4 * tosc * tmr2 preescaler
// 0.0000125 = duty * 1/1000000 * 1
// duty = 12.5
// enable_interrupts(global);
// enable_interrupts(int_rtcc);
// enable_interrupts(int_rda);
set_rtcc(0);
while(1);
}