unsigned char read_adc(void)
{
char buf[15];
int i=0;
int j=0;
int cont=0;
if( ADIF==1){ //An A/D conversion completed (must be cleared in software)
palabra_low= ADRESL;
palabra_high=ADRESH;
ADIF=0;
}
for(i=0,i=7,i++)
{
if(palabra_low & 2^i)
buf[i] = '1';
else
buf[i] = '0';
cont++;
if(cont==8)
j=8;
}
for(j=8,j=15,j++)
{
if(palabra_high & 2^j)
buf[j] = '1';
else
buf[j] = '0';
}
return buf;
}
unsigned char read_adc(void)
{
GODONE=1; //A/D conversion in progress
if( ADIF==1){ //An A/D conversion completed (must be cleared in software)
buffer = ADRESH<<8;
buffer = buffer+ADRESL;
ADIF=0;
}
return buffer;
}
Perfecto! Muchas gracias.
La variable la definiria como unsigned char * buffer, por ejemplo? ( creo que un unsigned char son 16bits...)
Adjunto mi codigo:Código: [Seleccionar]unsigned char read_adc(void)
{
GODONE=1; //A/D conversion in progress
if( ADIF==1){ //An A/D conversion completed (must be cleared in software)
buffer = ADRESH<<8;
buffer = buffer+ADRESL;
ADIF=0;
}
return buffer;
}
buffer lo tengo declarado asi:
unsigned char * buffer;
Lo que estoy queriendo hacer es una medición de temperatura, el sensor es un LM35, la medición la ingreso al pic y realizo la conversión AD hasta ahi todo bien :) pero a ese valor lo quiero mostrar en una pantalla LCD, entoces lo que tengo que hacer es realizar una rutina que me entregue un valor en BCD, es decir un byte para centena, otro para decena y otro para unidad. Me dijeron que debo concatenar lo bytes del AD, Esto es así??