#include <18F2550.h>
#device ADC=8
#fuses XT,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOUSBDIV,VREGEN
#use delay(clock=4000000)
//Para poder acceder al registro
#byte ADCON2=0xFC0
//Pines para lcd_flex
#define LCD_DB4 PIN_B4
#define LCD_DB5 PIN_B5
#define LCD_DB6 PIN_B6
#define LCD_DB7 PIN_B7
#define LCD_RS PIN_C0
#define LCD_RW PIN_C1
#define LCD_E PIN_C2
#include "flex_lcd.c"
int valor;
void main()
{
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Establecer a como entrada
set_tris_a(0x01); //Entrada an0
//Se configura el ADC
//Reloj para el conversor
setup_adc(ADC_CLOCK_DIV_2);//De 2 a 64
/*
Se debe configurar el tiempo de adquisicion, para ello se accede al registro
ADCON2,Pag 257 datasheet, para un valor de 20Tadq se debe cargar el valor 111
en los bits 5-3 del registro, para ello aplicaremos una mascara OR 00111000
*/
ADCON2= ADCON2 | 0b00111000;
//Se define entradas analogicas y valores referencia
setup_adc_ports (AN0); //Elige terminales análogicas
//Se selecciona el canal
set_adc_channel(AN0);
lcd_init(); //inicializa lcd
lcd_putc('\f'); //borra lcd
lcd_gotoxy(1,1);
disable_interrupts(global);
while(1)
{
//Se selecciona el canal
set_adc_channel(AN0);//Si no va volver a poner
delay_ms(1);
valor=read_adc();//Inicia conversion y lee, hara espera automatica
delay_ms(1);
lcd_putc('\f'); //borra lcd
lcd_gotoxy(1,1);
printf(lcd_putc
,"Adc es : %u",valor
);//muestra dato delay_ms(250);
}
}