#include <18F2550.h>
#device ADC = 8
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN
#use delay(clock=48000000)
//Configura comunicacion serie
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
//#byte nombre=direccion
//se define byte control adcon2, controla t.adquisicion, justificacion y reloj
#byte ADCON2=0xFC0
char Keypress=' ';
int8 valor;
#int_rda
void serial_isr() {
Keypress=0x00;
if(kbhit())
{
if(Keypress!=0x00)
{
valor=read_adc(ADC_START_AND_READ);//Inicia conversion y lee, hara espera automatica
delay_ms(1);
printf("\n\rEl valor del adc es : %u",valor
);//muestra dato mayor }
}
}
void main()
{ //Establecer a como entrada
set_tris_a(0x01); //Entrada an0
//Se define entradas analogicas y valores referencia
setup_adc (adc_clock_div_64); //Enciende ADC, pongo 64 en lugar 32 a ver si mejora
//se configura t.adquisicion sin modificar demas, se usa operacion or
//se usara tadq de 20 tad, bits acqt2..0 todos a 1
//para poner a 0 se utilizaria and con 0 en bit a modificar y demas a 1
ADCON2= ADCON2 | 0b00111000;
setup_adc_ports (AN0_ANALOG); //Elige entrada analogica
set_adc_channel (0); //Elige canal a medir
//Habilita interrupcion rda
enable_interrupts(global);
enable_interrupts(int_rda);
printf("\r\n\ Conectado \r\n");
do {
} while (TRUE);
}