Révision 884
Ajouté par albeaufour il y a environ 4 ans
SP4c12.c | ||
---|---|---|
#include "sfr32c87.h"
|
||
|
||
#define plcd p3;
|
||
char trame[80];
|
||
char tab_trame[10][80];
|
||
int CSc,CSr;
|
||
int i=0;
|
||
|
||
|
||
//Fonction initialisation//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
void init_portserie(void)
|
||
... | ... | |
}
|
||
|
||
//Fonction lecture trame//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
int sup_tram()
|
||
{
|
||
int i;
|
||
for (i=0;i<80;i++);
|
||
trame[i]=0x00;
|
||
}
|
||
int rectrame (char * buffer)
|
||
{
|
||
int i=1;
|
||
do
|
||
int /*i=0,*/j,val=0;
|
||
//int CS;
|
||
CSc=0,CSr=0;
|
||
if(reception()=='$')
|
||
{
|
||
*(buffer+i) = reception();
|
||
i++;
|
||
}while(*(buffer+i)!= '*');
|
||
i=0;
|
||
*(buffer+i) = '$';
|
||
do
|
||
{
|
||
i++;
|
||
*(buffer+i) = reception();
|
||
if (*(buffer+i)== '*'){val=1;}
|
||
if (val==0) {CSc=CSc ^ *(buffer+i);} // pour ne pas que les checksum prenne en compte le '*'
|
||
}while(*(buffer+i-2)!= '*');
|
||
}
|
||
CSr = *(buffer+(i-1));
|
||
CSr = CSr<<4 ;
|
||
CSr = CSr + *(buffer+i);
|
||
if(CSr!=CSc)
|
||
sup_tram();
|
||
return (i+1);
|
||
}
|
||
|
||
void creation_tab_trame (int col, int *lig,char tram[80],char tab_tram[10][80])
|
||
{
|
||
int i;
|
||
for (i=0;i<=col;i++)
|
||
for (i=0;i<col;i++)
|
||
{
|
||
tab_tram[*lig][i]=tram[i];
|
||
}
|
||
for (i=col;i<80;i++)
|
||
{
|
||
tab_tram[*lig][i]=0x00;
|
||
}
|
||
*lig++;
|
||
}
|
||
|
||
char valeur;
|
||
char trame[80];
|
||
char tab_trame[10][80];
|
||
|
||
|
||
void main(void) //reception de caract?re
|
||
{
|
||
|
||
int i,nb,ligne;
|
||
{
|
||
int i,nb,ligne=0;
|
||
//initialisation des led en sortie
|
||
init_portserie();
|
||
nb=rectrame (trame);
|
||
creation_tab_trame(nb,&ligne,trame,tab_trame);
|
||
if (ligne==10){ligne=0;}
|
||
init_portserie();
|
||
while(1)
|
||
{
|
||
nb=rectrame (trame);
|
||
creation_tab_trame(nb,&ligne,trame,tab_trame);
|
||
ligne;
|
||
if (ligne==10){ligne=0;}
|
||
}
|
||
}
|
||
|
||
/*void main(void) //Transmission de caract?re
|
Formats disponibles : Unified diff
Commit Fin de Séance C3