Quisiera que me despejaran esta duda, ¿En qué codigo esta lo que obtengo a la salida del pic cuando utilizo el convertidor analogico digital, si ademas estoy utilizando la comunicacion serial (RS232). Lo que sucede es que quiero mandar a la pantalla mediante el hyperterminal el valor de voltaje que meto en el pic, pero no se que transformaciones debo de hacer ya que solo veo caracteres. Este es el código que estoy utilizando
Codigo:
#include <16f874A.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,WRT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
main()
{
int value;
float valreal;
float const resoluc = 5.0/256.0;
set_tris_b(0x00);
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
while (TRUE)
{
delay_ms(500);
value=read_adc();
output_high(PIN_B7);
valreal=value*resoluc;
putc(valreal);
}
}
De antemano gracias por la ayuda
Pues bien, ya hice las correcciones necesarias y pues ya obtengo el valor de voltaje que esperaba pero en el hyperterminal sucede que despues de mandarme algunos valores de voltaje, me manda un valor y muchos ceros algo como lo que sigue:
4.98 4.98 .9804687500000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000 4.98 4.98 4.98 .98046875000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000
A qué creen que se pueda deber ? De antemano gracias por las sugerencias y comentarios.
Este es el código actual y revisando pues solo lo hace con valores mayores o iguales a 1 V
Codigo:
#include <16f874A.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,WRT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
main()
{
float value;
float const resoluc = 5.0/256.0;
set_tris_b(0x00);
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
while (TRUE)
{
delay_us(50);
value=read_adc();
value=value*resoluc;
printf (" %1.2f", value);
output_high(PIN_B7); //solo sirve para indicar que el pic esta funcionando
delay_ms(1000);
}
}
Ahora otra pregunta, yo estoy utilizando visual basic, entonces quisiera saber que funcion se utiliza para sacar el dato y que tipo de dato es para saber que manipulaciones tengo que hacer. Muchas gracias a ambos por la ayuda.