TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: GAMCH333 en 12 de Noviembre de 2025, 14:03:58
-
Por favor Solicitando su ayuda, el presente código pretender leer los datos de un modulo Gps...Se me indica un error en la funcion data=getc() como se muestra:
Compiling D:\GPS PIC16F877\SEGUNDO GPS RS232 PIN b1 on 12-nov.-25 at 11:02
*** Error 167 "D:\GPS PIC16F877\SEGUNDO GPS RS232 PIN b1.c" Line 62(30,31): Assignment invalid: lvalue is READ ONLY
*** Error 167 "D:\GPS PIC16F877\SEGUNDO GPS RS232 PIN b1.c" Line 64(33,34): Assignment invalid: lvalue is READ ONLY
2 Errors, 0 Warnings.
Build Failed.
Este es el codigo empleado; por favor me puede auxiliar que estoy mal.
//************************************************************************************************************************************************
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_ENABLE_PIN PIN_D0
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#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)
#include <DLCD420.c> // include Nokia 5110 LCD driver source file
#include<stdlib.h>
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 =getch();
if(data==',')
data =getch();
}
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(Central, "%c%c:%c%c:%c%c",data[0],data[1],data[2],data[3],data[4],data[5]);
fprintf(Central,"%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(Central,"%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(Central,"%c, %c%c",data[27],data[28],data[29]);
}
}
}
}
}
//**********************************************************************************************************************************************
-
Estas lineas
for(i=0;i<30;i++)
{
data = getch();
if(data==',')
data = getch();
}
deberian ser
for(i=0;i<30;i++)
{
data[i] =getch();
if(data[i]==',')
data[i] = getch();
}