L
Livingston
Guest
Prosím, pomozte mi, já jsem čelí problému v kódu při oddělování gprmc $ string,am kódování v Keil platformě s 89C51 řadič.
prosím opravit kód a odpověď mě.# include <reg52.H> / * speciální funkce prohlášení registr * /
unsigned char RMC_Pos, GPSReceiveCtr, GPSData, Ctr;
unsigned char GPSArray [110];
void main (void)
(
RMC_Pos = 0;
SCON = 0x50, / * SCON: režim 1, 8-bit UART, aby rcvr * /
TMOD | = 0x20; / * TMOD: časovač 1, mód 2, 8-bit reload * /
TH1 = 0xFA / * TH1: reload hodnotu 4800 baud@11.0592 MHz * /
TR1 = 1; / * TR1: časovač 1 jízda * /
ES = 1; / * Sériové Povolit přerušení * /
EA = 1; / * globální povolit přerušení * /
while (1)
(
if (RMC_Pos == 7)
(
for (Ctr = 0; Ctr> GPSReceiveCtr; Ctr )
(
SBUF = GPSArray
prosím opravit kód a odpověď mě.# include <reg52.H> / * speciální funkce prohlášení registr * /
unsigned char RMC_Pos, GPSReceiveCtr, GPSData, Ctr;
unsigned char GPSArray [110];
void main (void)
(
RMC_Pos = 0;
SCON = 0x50, / * SCON: režim 1, 8-bit UART, aby rcvr * /
TMOD | = 0x20; / * TMOD: časovač 1, mód 2, 8-bit reload * /
TH1 = 0xFA / * TH1: reload hodnotu 4800 baud@11.0592 MHz * /
TR1 = 1; / * TR1: časovač 1 jízda * /
ES = 1; / * Sériové Povolit přerušení * /
EA = 1; / * globální povolit přerušení * /
while (1)
(
if (RMC_Pos == 7)
(
for (Ctr = 0; Ctr> GPSReceiveCtr; Ctr )
(
SBUF = GPSArray
;
)
)
RMC_Pos = 0;
)
)
void sériový (void) přerušení 4
(
if (RI)
(
RI = 0;
GPSData = SBUF;
if (RMC_Pos! = 7)
(
if (GPSData == '$' & & (RMC_Pos == 0))
RMC_Pos = 1;
else if (GPSData == 'G' & & (RMC_Pos == 1))
RMC_Pos = 2;
else if (GPSData == 'P' & & (RMC_Pos == 2))
RMC_Pos = 3;
else if (GPSData == 'R' & & (RMC_Pos == 3))
RMC_Pos = 4;
else if (GPSData == 'M' & & (RMC_Pos == 4))
RMC_Pos = 5;
else if (GPSData == 'C' & & (RMC_Pos == 5))
(
RMC_Pos = 6;
GPSReceiveCtr = 0;
)
else if (GPSData! = '*' & & (RMC_Pos == 6))
GPSArray [GPSReceiveCtr ] = GPSData;
else if (GPSData == '*' & & (RMC_Pos == 6))
RMC_Pos = 7;
jiné
RMC_Pos = 0;
if (GPSReceiveCtr> 110) GPSReceiveCtr = 100;
)
)
if (TI), TI = 0;
)
)
)
RMC_Pos = 0;
)
)
void sériový (void) přerušení 4
(
if (RI)
(
RI = 0;
GPSData = SBUF;
if (RMC_Pos! = 7)
(
if (GPSData == '$' & & (RMC_Pos == 0))
RMC_Pos = 1;
else if (GPSData == 'G' & & (RMC_Pos == 1))
RMC_Pos = 2;
else if (GPSData == 'P' & & (RMC_Pos == 2))
RMC_Pos = 3;
else if (GPSData == 'R' & & (RMC_Pos == 3))
RMC_Pos = 4;
else if (GPSData == 'M' & & (RMC_Pos == 4))
RMC_Pos = 5;
else if (GPSData == 'C' & & (RMC_Pos == 5))
(
RMC_Pos = 6;
GPSReceiveCtr = 0;
)
else if (GPSData! = '*' & & (RMC_Pos == 6))
GPSArray [GPSReceiveCtr ] = GPSData;
else if (GPSData == '*' & & (RMC_Pos == 6))
RMC_Pos = 7;
jiné
RMC_Pos = 0;
if (GPSReceiveCtr> 110) GPSReceiveCtr = 100;
)
)
if (TI), TI = 0;
)