Re: convertir des données à recevoir USART PIC contrôle des ports

B

bbgil

Guest
Les gars, je veux convertir les données reçues de USART de contrôle dans les différents ports PIC.J'ai utilisé les fonctions de la bibliothèque dans MikroC.le problème est de savoir comment faire de la PIC lire les données individuelles pour les comparer à la PIC char et ensuite de contrôler leur fonction.dans ce code, tout simplement allumer LED porta sur le bit 0 et bit1.vraiment besoin de faire ce travail.merci d'avance

unsigned short pos, i;
char lcdtext [41];
char * TC1 = "on";
char * TC2 = "ot";
void main () (
TRISA = 0;
PORTA = 0;
Usart_Init (9600);
Lcd_Init (& PORTB);
i = 0;
tout (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');
)
)
)
)Ajouté après 1 heure 41 minutes:Je pense que je besoin de créer un registre tampon pour contenir toutes les données de USART recevoir ensuite la comparer à mon caractère de texte.Mais comment faire cela dans MikroC?besoin d'aide

 
Salut

Qu'est-ce que vous cherchez à faire est fonction des données que vous envoyez à PIC si vous utilisez un protocole pour communiquer avec les PIC ou ou l'envoi d'un seul octet de commande

Si vous utilisez un protocole, vous aurez besoin d'un buffer circulaire et d'un analyseur soft rotuine à traiter les données provenant de PIC uart

Si vous êtes seulement en utilisant un octet de commande, il est plus facile de faire le travail

Tous les meilleurs

Bobi

 
Bobcat,
merci pour l'info.Mais comment le faire.fait que les commandes byte et
j'ai essayé de mettre un tampon mais ne peut pas dire que je sais exactement ce que
je fais ici.la LED clignote 2 mais je ne pense pas que sa façon de procéder.espérons que vous pouvez
m'indiquer la direction d'un lien ou d'un échantillon de ce tampon et de l'analyse.merci

unsigned short pos, i;
char lcdtext [41];
unsigned short lcd, buf;
unsigned 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 = "on";
char * TC2 = "ot";
void main () (
TRISA = 0;
PORTA = 0;
Usart_Init (9600);
Lcd_Init (& PORTB);
i = 0;
tout (1)
(
if (Usart_Data_Ready ())
(
lcdtext = Usart_Read ();
lcd Usart_Read = ();
i ;
buffer [buf] = acl;
buf ;
if (buf == TC1) portA.f0 = 1;
else if (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');
)
)
)
)

 
Premièrement:
Vous avez besoin de transmettre et de recevoir les files d'attente circulaire (buffers) qui sont interruptions, soit vous utilisez le char reçu interrompre pour se placer dans la file d'attente de recevoir et de transmettre le caractère complet d'interrompre l'envoi de la prochaine char de la file d'attente de transmission.

Deuxième:
Vous pouvez ensuite utiliser la boucle principale de votre programme pour rechercher des commandes dans la file d'attente de recevoir.Si vous recherchez des commandes, vous pouvez utiliser la strcmp () ou strncmp () de comparaison de chaîne de commande, faites attention au texte affaire.

Je suis passée à l'Atmel AVR et les micros ne sont pas utilisés PIC micros dans une longue période.Je
n'ai jamais utilisé MikroC, je ne peux donc pas vous aider avec la syntaxe exacte.Avez-vous essayé la recherche de notes sur l'application de Microchip site pour trouver des exemples?Bonne chance.

 

Welcome to EDABoard.com

Sponsor

Back
Top