#include <18F4550.h>
#device ADC=10
#fuses PLL1,CPUDIV1,USBDIV,XTPLL,NOFCMEN,NOIESO,PUT,NOBROWNOUT,VREGEN,NOWDT,NOPBADEN,MCLR,NOSTVREN,NOLVP,NODEBUG,NOPROTECT,NOSTVREN,NOCPB,NOWRT,NOWRTC
#use delay(clock=48000000)
#include <lcd4x20.c>
char resultado[27]={0,0,0,0,0,0,0,0,0,0};
unsigned int16 analog_data_ch0=0,analog_data_ch1=0,analog_data_ch2=0,analog_data_ch3=0;
/////////////////////////// Para Medir tiempo /////////////////////////////////
int conteo=0; // PUSE
long long tiempo; // PUSE
float ver_tiempo; // PUSE
#INT_TIMER0 // PUSE
void maximo_conteo(void) // PUSE
{ // PUSE
conteo++; // PUSE
} // TIEMPO
///////////////////////////////////////////////////////////////////////////////
void adquisicion_time(void)
{
output_toggle(PIN_B3); // led status transferencia (conexion activa)
set_adc_channel (0);
analog_data_ch0=read_adc(); //adquisicion1
set_adc_channel (1);
analog_data_ch1=read_adc(); //adquisicion2
set_adc_channel (2);
analog_data_ch2=read_adc(); //adquisicion3
set_adc_channel (3);
analog_data_ch3=read_adc(); //adquisicion4
sprintf(resultado,"a=%4lub=%4luc=%4lud=%4lu@",analog_data_ch0,analog_data_ch1,analog_data_ch2,analog_data_ch3); // convertimos y damos formato a los datos del adc
}
void main(void)
{
set_tris_a(0xff); //config puertos
set_tris_b(0x00);
lcd_init();
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel (0);
delay_ms(1000);
SETUP_TIMER_0(T0_INTERNAL|T0_DIV_1); // PUSE
ENABLE_INTERRUPTS(INT_TIMER0); // PUSE
enable_interrupts(GLOBAL);
while (TRUE)
{
conteo=0; // DESDE AQUÍ EMPIEZO A MEDIR
set_timer0(0);
output_high(pin_c0);
adquisicion_time();
output_low(pin_c0);
tiempo=GET_TIMER0(); // AQUI TERMINO DE MEDIR
ver_tiempo=(float)tiempo*0.0833+((float)conteo*(float)65535*0.0833); // 0.0833 uS
lcd_gotoxy(2,3); printf(lcd_putc,"T = %f uS",ver_tiempo);
}
}