bueno tengo el siguiete problema intento con un pic mostrar un valor de voltaje en una LCD y en el pc por el puerto RS232,
pero en la simulacion de proteus cuando pongo el virtual terminal el valor medido se repite indefinidamente hacia abajo y no se por que es, bueno tengo una sospecha que el printf que le mando al pc al esta dentro de una rutina ciclica. bueno si me pueden ayudar porfavor se los agradeseria. el codigo es el siguiente para que vena mi error XD.
#include <16f873a.h> //pic a utilizar
#device adc=10 // Conversión con 10 bits
#fuses HS,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT //ordenes para el programador
#use delay (clock=4000000) //clock=4Mhz
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //manejo del RS232
#define use_portb_lcd TRUE //definir portb lcd
#include<lcd.c> //libreria manejo lcd
int16 Valor; // para 10 bits
float const resolucion= 5.0/1024.0; // Conversión con 10 bits
float voltios;
signed char x=16,a,b; //indice filas
///DECLARACION DE FUNCIONES
void main()
{
lcd_init(); //inicializa, o activa lcd
lcd_gotoxy( 1, 1);
printf(lcd_putc,"***Voltimetro***"); //muestra mensaje inicio
lcd_gotoxy( 1, 2);
printf(lcd_putc,"Taller de Diseno"); //muestra mensaje inicio
do{ //espera hasta que se pulse boton...
}while(input(PIN_A1)==1);
printf(lcd_putc,"\f"); //...para borrar pantalla e iniciar contador
// Configuramos entradas analogicas:
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
// Tomamos las medidas
set_adc_channel(0);
enable_interrupts(GLOBAL); //activadas interrupciones
while (TRUE){
Valor=read_adc();//almacena el valor de medicion
voltios= valor * resolucion; //convierte de resolucion de 10bit a numeros
lcd_gotoxy( 1, 1);
printf(lcd_putc,"%1.2f voltios", voltios );
printf(lcd_putc,"\b");//retrasa el cursor una posicion
delay_ms(185);
lcd_gotoxy(x,2) ; //cursor para escribir mensaje
printf(lcd_putc,"A.Avila-R.Fuentes ");
delay_ms(185);//tiempo de rotacion del mensajevoltios
if(x==-16){
x=16;
}
x--;
voltios=a;
if(a==voltios){
printf("\r\n\%1.2f voltios \r\n", voltios);
}a++;
}}