Projet

Général

Profil

« Précédent | Suivant » 

Révision 864

Ajouté par smseck1 il y a presque 4 ans

SP4c3 reste a vaalider irectrame

Voir les différences:

SP4c1.c
/***********************************************************************/
#include "sfr32c87.h"
int trame_ok;
//int trame_ok=0;
//les prototypes
void uart0_init (void);
void uart0_tx(char c);
void alphabet(char *chaine);
char uart0_rx(void);
int rectrame (char *buffer);
//int rectrame (char *buffer);
//void irectrame();
typedef enum
{
......
while(ri_u0c1!=1);
return u0rb;
}
/*int rectrame(char *buffer)
{
int i = 0;
char caractere_recu;
char checksum = '0';
caractere_recu = uart0_rx(); //lecture du caractere recu*
caractere_recu = uart0_tx(); //lecture du caractere recu*
while ( caractere_recu != '$')//detection trame
{
i = 0;
i = 0;//nombre de caract?res pr?sents dans la trame
checksum = 0;
}
......
checksum = checksum ^ caractere_recu;
}
return i ;
return i ;
}*/
int rectrame(char *buffer)
{
int k=0;
int nombre_caractere_apres_etoile=0;
int nombre_caractere=0;
char caractere_recu;
char checksum_trame=0;
char checksum_fin_trame[];
char checksum_calculer=0;
while(1)
{
if (caractere_recu == '$')
{
nombre_caractere = 0;
etat=reception;
checksum_trame=0;
}
if (caractere_recu !='*')
{
buffer[nombre_caractere] = caractere_recu;
nombre_caractere++;
checksum_trame ^= caractere_recu;
nombre_caractere_apres_etoile = 0;
}
else
{
etat =checksum;
}
if (nombre_caractere_apres_etoile==2)
{
etat=validation;
checksum_calculer=hex_int(checksum_fin_trame);
}
nombre_caractere_apres_etoile++;
if (checksum_trame==checksum_calculer)
{
etat = synchronisation;
return nombre_caractere;
}
else
etat = synchronisation;
return 0;
return buffer[];
}
}
void main ()
{
char chaine[]= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char buffer[80];
int i=0;
uart0_init();
while(1)
// rectrame(i);
alphabet(chaine);
RecTrame(buffer);
}

Formats disponibles : Unified diff