Bonjour à tous
Je voulais savoir quelqu'un peut m'aider.
Je récupère une trame uart de la forme
%a 111 112 113 121 131 %z
lorsque je demande
printf("%c",ch);
j'obtiens bien ce que je souhaites.
Par contre je veux sortir les chiffres de la trame, c'est à dire avoir 5 constantes tel que
constante1=111
constante2=112
etc...
Avez vous une idée?
Merci d'avance
David
Code://************************** fichier d'entete **********************************/ #include <p18f452.h> // Pour les registres du PIC18F452 #include <usart.h> // Pour le périphérique USART qui gére la liaison série #include <stdio.h> #include <delays.h> //************ Instruction de configuration du pic et de l'horloge *************/ #pragma config WDT = OFF // Pas de watchdog #pragma config OSC = HS // Quartz HS pour un quartz 20MHz HS #pragma config LVP=OFF //****************************debut du programme********************************/ void delay (int cnt) { unsigned int i; for (i = 0; i < cnt ; i++); } void main(void) // Programme principal { char ch=0 ; // Caractére qui sera reçu sur la liaison série char to=0; // Configure tous les ports en entrée (1 = input / 0 = output) TRISA = 0b11111111; // XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX TRISB = 0b11111111; // XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX TRISC = 0b10111111; // RX | TX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX TRISD = 0b11111111; // XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX TRISE = 0b111; // XXXXXX | XXXXXX | XXXXXX TRISBbits.TRISB4=0; PORTBbits.RB4=1; ch=0; to=0; // Configure la liaison série : OpenUSART ( USART_TX_INT_OFF & // Pas d'interruption sur l'émission USART_RX_INT_OFF & // Pas d'interruption sur la réception USART_ASYNCH_MODE & // Mode asynchrone USART_EIGHT_BIT & // Transmission sur 8 bits (1 octet) USART_CONT_RX & // Reception continue USART_BRGH_HIGH , // Haute vitesse 25); // (20e6 - 115200) / (16 * 115200) 10 // Transmissions sur la liaison série while (1) // Boucle infinie { //delay(40000); PORTBbits.RB4=0; //Delay10KTCYx(150); PORTBbits.RB4=1; if (DataRdyUSART()) // Attends la présence d'un caractère sur la liaison série { ch=ReadUSART(); // Lit le caractère if ((ch>=97) && (ch<=122)) ch-=32; // Convertie le caractère en minuscule si c'est une lettre minuscule printf("%c",ch); } } // CloseUSART(); // Ferme proprement la liaison série }
-----