#include <18F4550.h>
#device adc=8
#fuses HSPLL, NOWDT, NOPROTECT, NOLVP, NODEBUG, USBDIV, PLL5, CPUDIV1, VREGEN
#use delay(clock=48000000) //Para Xtal de 20Mhz
#define usb_con_sense_pin pin_b2
#include <usb_cdc.h>
int16 q;
int16 IniciarConteoEn=65459;
float p;
#int_TIMER1 //Interrupción timer1
void temp1s(void) //función
{
output_toggle(PIN_B1);
q=read_adc();
set_timer1(IniciarConteoEn);
}
void main()
{
setup_timer_1 (T1_INTERNAL | T1_DIV_BY_1); ///configuro timer 1 con reloj interno y prescaler de 1
enable_interrupts(INT_TIMER1); //habilita interrupción timer1
enable_interrupts(global); //habilita interrupción general
set_timer1(IniciarConteoEn); //Precarga del timer1
setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_64 );//|| ADC_ACQT_2TAD ); //Indica el tiempo de reloj
#asm //Inicio de sentencias en lenguaje Assembler
movlw 0b10001110 ;justificacion_derecha,2Tad,Fosc/64 //Modificando el tiempo de conversión
iorwf 0xFC0,1 ; direccion de ADCON2 //y el tiempo de adquisición
#endasm //Fin de la rutina Assembler
set_adc_channel(0);
usb_cdc_init();
usb_init();
while(1)
{
usb_task();
if(usb_enumerated())
{
p=(5.0*q)/1024.0;
printf(usb_cdc_putc);
//esperar respuesta
delay_ms(1000);
}
}
}