TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: japifer_22 en 23 de Abril de 2009, 12:52:55

Título: proteurs y rs 252
Publicado por: japifer_22 en 23 de Abril de 2009, 12:52:55
hola como estan bueno les coment oque tengo wel siguiete problemilla y no C que puede ser.
hice un programa que muestra un valor tanto en la LCD y en el pc por el puerto serie, pero el punto que todo funciona bien asta que lo simulo en proteus pero lo raro que = funciona pero el mensaje que me arroja por el puerto serie hacia el pc no queda fijo, sino que se repite indefinidamente en mensaje hacia al lado y no C que puede ser bueno el codigo es el sgt:

#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, FORCE_SW)   //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;         //indice filas
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);
 
  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 );//mensaje por la LCD
  printf(lcd_putc,"\b");//retrasa el cursor una posicion
  printf("%1.2f voltios", voltios );// mensaje por el puerto serie hacia el PC
  delay_us(100);

  //mensaje rotativo en la LCD publicidad XD

 lcd_gotoxy(x,2) ;      //cursor para escribir mensaje
 printf(lcd_putc,"japifer_22 ");
 delay_ms(185);//tiempo de rotacion del mensaje
 if(x==-16){
 x=16;
      }
  x--;
      }}
Título: Re: proteurs y rs 252
Publicado por: japifer_22 en 23 de Abril de 2009, 13:04:56
se me olvidava esto lo veo por la opcion que tiene proteurs del virtual terminal
Título: Re: proteurs y rs 252
Publicado por: juansi en 23 de Abril de 2009, 15:28:15
yo me acabo de encontrar el mismo prolema, creo q al mostrar el mensaje en un bucle infinito se repite indefinidamente asi q creo q tienes q borrar la pantalla  para refrescarla y reescribir.
Con un_______printf("\f");_______ justo antes del mensaje creo q lo solucionas.


Espero q funcione.
Título: Re: proteurs y rs 252
Publicado por: japifer_22 en 23 de Abril de 2009, 16:38:45
veamos si funsiona perrin
Título: Re: proteurs y rs 252
Publicado por: japifer_22 en 23 de Abril de 2009, 17:40:08
SI POR LO MENOS ME SACA DEL APURO