Re: konvertere modtage USART data til kontrol PIC havne

B

bbgil

Guest
Guys, jeg ønsker at konvertere modtaget data fra USART at kontrollere de enkelte havne i PIC.Jeg brugte bibliotekets funktioner i MikroC.Problemet er, hvordan gør PIC læse de individuelle data til at sammenligne dem til PIC CHAR og derefter kontrollere deres funktion.i denne kode, blot tænde LED på Porta bit 0 og bit1.virkelig har brug for at gøre dette arbejde.thanks in advance

usignerede kort PO'er, jeg;
CHAR lcdtext [41];
char * TC1 = "på";
char * tc2 = "OT";
void Main () (
TRISA = 0;
PORTA = 0;
Usart_Init (9600);
Lcd_Init (& PORTB);
i = 0;
mens (1)
(
if (Usart_Data_Ready ())
(
lcdtext = Usart_Read ();

i ;
if (i == 2)
(
i = 0;
Lcd_Cmd (LCD_RETURN_HOME);
for (pos = 0; pos <40; pos )
(
Lcd_Chr_CP (lcdtext [pos]);
if (lcdtext == TC1) portA.f0 = 1;
if (lcdtext == TC1) portA.f1 = 1;
if (pos == 16) Lcd_Cmd (LCD_SECOND_ROW);
)
Usart_Write ( 'Y');
)
)
)
)Tilføjes efter 1 timer 41 minutter:Jeg tror, jeg er nødt til at skabe en buffer register skal indeholde alle de modtager data fra USART derefter sammenligne det til min tekst karakter.Men hvordan du gør dette i MikroC?brug for hjælp

 
Hej

Hvad du søger at gøre, er afhængige af de data, du sender til PIC om du bruger en protokol til at kommunikere med PIC eller eller sende en enkelt byte kommando

Hvis du bruger en protokol vil du få brug for en cirkulær buffer og en parser blød rotuine til at håndtere data fra PIC UART

Hvis du kun bruger en kommando byte er det mere let at gøre arbejdet

Alle de bedste

Bobi

 
Bobcat,
tak for info.Men hvordan du gør dette.gør kun byte kommandoer, og jeg forsøgte at lægge en buffer, men kan ikke sige, at jeg ved præcis, hvad
jeg gør her.LED 2 blinker men jeg tror ikke, at dens fremførslerne måde.håber u kan direkte mig et link eller en prøve at gøre denne buffer og parsing.tak

usignerede kort PO'er, jeg;
CHAR lcdtext [41];
usignerede kort lcd, buf;
usignerede char buffer [] = (0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00);char * TC1 = "på";
char * tc2 = "OT";
void Main () (
TRISA = 0;
PORTA = 0;
Usart_Init (9600);
Lcd_Init (& PORTB);
i = 0;
mens (1)
(
if (Usart_Data_Ready ())
(
lcdtext = Usart_Read ();
LCD = Usart_Read ();
i ;
buffer [buf] = LCD;
buf ;
if (buf == TC1) portA.f0 = 1;
ellers hvis (buf == tc2) portA.f1 = 1;

if (i == 40)
(
i = 0;
Lcd_Cmd (LCD_RETURN_HOME);
for (pos = 0; pos <40; pos )
(
Lcd_Chr_CP (lcdtext [pos]);

if (pos == 16) Lcd_Cmd (LCD_SECOND_ROW);

)
Usart_Write ( 't');
)
)
)
)

 
Først:
Du har brug for at sende og modtage cirkulære køer (buffere), der er afbryde drevet,
det er du bruger CHAR modtaget afbryder til at placere den i modtage køen og fremsender CHAR komplette afbryder til at sende de næste CHAR fra fremsender kø.

Andet:
Du kan derefter bruge de vigtigste loop af dit program til at søge kommandoer i modtage kø.Hvis du søger efter tekst kommandoer du kan bruge strcmp () eller strncmp () string sammenligne kommandoer, være opmærksomme på, at teksten sag.

Jeg skiftede til Atmel's AVR mikroer og ikke har brugt PIC mikroer i lang tid.Jeg har aldrig brugt MikroC, så jeg kan ikke hjælpe dig med nøjagtige syntaks.Har du forsøgt at gå til app noter på mikrochippen hjemmeside for at finde nogle eksempler?Held og lykke.

 

Welcome to EDABoard.com

Sponsor

Back
Top