Projet

Général

Profil

« Précédent | Suivant » 

Révision 892

Ajouté par frkanaan il y a presque 4 ans

clavier marche (tp4b1)+ avancement et mise en place des tp4c12

Voir les différences:

c1.c
#include "uart0.h"
#include "uart0.c"
void A2Z(void);
int rectrame (char * Buffer);
int hex_int(char *c);
void A2Z(void)
{
unsigned char i;
//while(1)
for(i='A'; i<='Z'; i++)
uart0_tx(i);
}
int rectrame (char * buffer)
{
int i = 0;
int nb_caract = 0;
char char_recu;
char checksum_trame=0;
char checksum_fin_trame[3];
char calc_checksum = 0;
char_recu = uart0_rx();
while(char_recu != '$')
i = 0;
buffer[0] = '$';
while(char_recu != '*')
{
char_recu = uart0_rx();
buffer[i+1]= char_recu;
i++;
calc_checksum = calc_checksum ^ char_recu;
}
nb_caract = i;
return nb_caract;
}
int hex_int(char *c)
{
int i=0;
/*La boucle permet de travailler sur les deux derniers caractères du checksum de la trame reçue**/
for(i=0; i<2; i++)
{
/*si le caractère est entre 0 et 9 ->retranche en ascii '0', soit 48 en décimal*/
if(c[i]>='0' && c[i]<='9')
c[i] = c[i]-48;
/*si le caractere est superieur a 10, soit A en hex ->retranche le nombre 55*/
if(c[i]>='A')
c[i] = c[i]-55;
}
/*entier_cheksum= c[1] + 16*c[0]*/
return( c[1]+16*c[0] );
}
void main(void)
{
char c;
char buffer;
int i, nb_caractere;
uart0_init();
//c = '3';
while(1)
{
char trame[128];
c = uart0_rx();
uart0_tx(c);
nb_caractere = rectrame(trame);
//alphabet();
}
}

Formats disponibles : Unified diff