Révision 864
Ajouté par smseck1 il y a presque 4 ans
branch/smseck/sp4c12/sp4c1/SP4c1/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
SP4c3 reste a vaalider irectrame