:(Reciba usted un cordial saludo, deseandole de antemano el mejor de los exitos, si me lo permite puedo comentarle que mi nombre es Gustavo A. Martinez, y hace ya casi un año, gracias a su ayuda pude acreditar mi clase de Microntroladores, hecho que le agradezco mucho ya que la intencion era capturar los datos de un modulo GPS Parallax 28146 y presentar los datos en un lcd de 4x16 y via rs232 a la Hiperterminal, este es el codigo usado...
************************************************************
#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
// SE DEFINE LA DIRECCION DEL PUERTO A,B,C COMO ELEMENTO DE ENTRADA SALIDA.
// ASI COMO LA DIRECCION DE MEMORIA DE CADA UNO DE LOS DEMAS PUERTOS A,B,C.
// DICHA INFORMACION SE ENCUENTRA ESPECIFICADA EN EL REGISTRO DE MEMORIA DEL PIC.
// (MAYOR INFORMACIÓN DATA SHEET DE MICROCHIP WWW.MICROCHIP.COM
#use fast_io (b)
#use fast_io (c)
#use fast_io (d)
#byte porta = 5
#byte portb = 6
#byte portc = 7
// SE DEFINE LA DIRECCION DEL PUERTO BO PARA ENTRDA GPS PARALLAX .
#use rs232(baud=4800, xmit=PIN_B0, rcv=PIN_B1, bits=8, stream=GPS)
// SE DEFINE LA DIRECCION DEL PUERTO C PARA TX RS232 A PC
#use rs232(baud=4800, xmit=PIN_C6, rcv=PIN_C7, bits=8, stream=CENTRAL)
void main()
{
char data[30];
char flag;
int i;
delay_ms(2000);
while(true)
{
flag=getch();
if(flag=='G')
{
flag=getch();
if(flag=='G')
{
flag=getch();
if(flag=='A')
{
for(i=0;i<30;i++)
{
data =getc();
if(data==',')
data =getc();
}
lcd_gotoxy(1,1);
printf(lcd_putc,"%c%c:%c%c:%c%c",data[0],data[1],data[2],data[3],data[4],data[5]);
lcd_gotoxy(1,2);
printf(lcd_putc,"%c%c %c%c%c%c%c%c%c %c",data[6],data[7],data[8],data[9],data[10],data[11],data[12],data[13],data[14],data[15]);
lcd_gotoxy(1,3);
printf(lcd_putc,"%c%c%c %c%c%c%c%c%c%c %c",data[16],data[17],data[18],data[19],data[20],data[21],data[22],data[23],data[24],data[25],data[26]);
lcd_gotoxy(1,4);
printf(lcd_putc,"%c, %c%c",data[27],data[28],data[29]);
//Para mandar los datos via RS232.
fprintf("%c%c:%c%c:%c%c",data[0],data[1],data[2],data[3],data[4],data[5]);
fprintf("%c%c %c%c%c%c%c%c%c %c",data[6],data[7],data[8],data[9],data[10],data[11],data[12],data[13],data[14],data[15]);
fprintf("%c%c%c %c%c%c%c%c%c%c %c",data[16],data[17],data[18],data[19],data[20],data[21],data[22],data[23],data[24],data[25],data[26]);
fprintf("%c, %c%c",data[27],data[28],data[29]);
}
}
}
}
}
}
**********************************************************
En aquel tiempo unicamente pude lograr mandar los datos a un LCD DE 4X16 LINEAS, ya que nunca pude resolver la situacion de como enviar los datos via serie usando el protocolo rs232, ya que inicialmente creia que al colocar la instruccion Printf los datos se desplegarian de forma automatica en la hiperterminal, estos son los codigos usados para la configuracion de la comunicacion.
#use rs232(baud=4800, xmit=PIN_B0, rcv=PIN_B1, bits=8, stream=GPS)
#use rs232(baud=4800, xmit=PIN_C6, rcv=PIN_C7, bits=8, stream=CENTRAL)
Y estos los codigos para mandar los datos via LCD y RS232
lcd_gotoxy(1,1);
printf(lcd_putc,"%c%c:%c%c:%c%c",data[0],data[1],data[2],data[3],data[4],data[5]);
lcd_gotoxy(1,2);
printf(lcd_putc,"%c%c %c%c%c%c%c%c%c %c",data[6],data[7],data[8],data[9],data[10],data[11],data[12],data[13],data[14],data[15]);
lcd_gotoxy(1,3);
printf(lcd_putc,"%c%c%c %c%c%c%c%c%c%c %c",data[16],data[17],data[18],data[19],data[20],data[21],data[22],data[23],data[24],data[25],data[26]);
lcd_gotoxy(1,4);
printf(lcd_putc,"%c, %c%c",data[27],data[28],data[29]);
Para mandar los datos via RS232.
fprintf("%c%c:%c%c:%c%c",data[0],data[1],data[2],data[3],data[4],data[5]);
fprintf("%c%c %c%c%c%c%c%c%c %c",data[6],data[7],data[8],data[9],data[10],data[11],data[12],data[13],data[14],data[15]);
fprintf("%c%c%c %c%c%c%c%c%c%c %c",data[16],data[17],data[18],data[19],data[20],data[21],data[22],data[23],data[24],data[25],data[26]);
fprintf("%c, %c%c",data[27],data[28],data[29]);
}
Si me lo permite estas fueran las ultimas actividades que he realizado, mismas que tienen su origen en el presente block , no obstante el compilador CCS Ver.4.0 que tengo me marca un error, en el sentido que al usar la intruccion fprintf el areglo de String esta fuera de rango este fue la instrucciones usadas, por lo que es fecha en que no puedo enviar los registros a la computadora.
Ante este hecho, he estado cambiando los formatos de la instruccion printf en vez de caracteres, he colocado string %s %s, y algunos otros formatos de salida %xl, y %UL pero sin ningun resultado satisfactorio.
Por todo lo anterior me estoy tomando la libertad de molestarle una vez mas y pedirle su ayuda, en el sentido de como conseguir el enviar los datos del GPS Parallax tanto al LCD 4x16 como Via serial a la computadora, de hecho estoy usando el PIC 16F877 y un Max 232, y he probado la conexion del USART y si se puede mandar texto, pero no puedo conseguir que los datos que se capturan por el puerto Bo del MODULO GPS sean tx por el pinC6 y c7 del PIC 16F877, YA QUE EL CODIGO MOSTRADO ANTERIORMENTE, AL QUITAR FPRINTF Y SUSTITUIRLO POR PRINTF SI PERMITE VISUALIZAR LOS DATOS UNICAMENTE EN EL LCD Y NO EN LA COMPUTADORA.
Agradecidiendo de antemano su ayuda, yo quedo de usted a sus ordenes en el presente Block y en la siguiente Direccion, con cualquier tipo de orientacion que por favor me puedan brindar..
E_mail:gamartinezch@yahoo.com.