Projet

Général

Profil

723 albeaufour
/***********************************************************************/
/* */
/* FILE :SP4c12.c */
/* DATE :Wed, Jun 02, 2021 */
/* DESCRIPTION :main program file. */
/* CPU GROUP :87 */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.18). */
/* NOTE:THIS IS A TYPICAL EXAMPLE. */
/***********************************************************************/
#include "sfr32c87.h"

732 albeaufour
#define plcd p3;
884 albeaufour
char trame[80];
char tab_trame[10][80];
int CSc,CSr;
int i=0;
723 albeaufour
884 albeaufour
804 albeaufour
//Fonction initialisation//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

723 albeaufour
void init_portserie(void)
{
732 albeaufour
u0mr = 0b00000101; // 4800 bauds, 8 bits de donn?es, 1 bit de stop, pas de parit?
u0smr4 = 0;
u0smr3 = 0;
u0smr2 = 0;
u0smr = 0;
u0c0 = 0b00010000; //configuration F = 20 Mhz
u0brg = 0xFF; //configuration de m = 255
804 albeaufour
u0c1 = 0b00000101;
pd6_3 = 1;
pd6_2 = 0;
pd6_1 = 0;
pd6_0 = 0;
ps0_3 = 1;
ps0_2 = 0;
ps0_1 = 0;
ps0_0 = 0;
723 albeaufour
}

804 albeaufour
//Fonction transmission/reception//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

732 albeaufour
void transmission (char c)
{
804 albeaufour
while (ti_u0c1 != 1);
u0tb = c;
732 albeaufour
}

804 albeaufour
char reception ()
{
732 albeaufour
804 albeaufour
while (ri_u0c1 != 1);
return(u0rb);
}

//Fonction lecture trame//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
884 albeaufour
int sup_tram()
{
int i;
for (i=0;i<80;i++);
trame[i]=0x00;
}
804 albeaufour
int rectrame (char * buffer)
723 albeaufour
{
884 albeaufour
int /*i=0,*/j,val=0;
//int CS;
CSc=0,CSr=0;
if(reception()=='$')
804 albeaufour
{
884 albeaufour
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();
804 albeaufour
return (i+1);
}

void creation_tab_trame (int col, int *lig,char tram[80],char tab_tram[10][80])
{
int i;
884 albeaufour
for (i=0;i<col;i++)
804 albeaufour
{
tab_tram[*lig][i]=tram[i];
}
884 albeaufour
for (i=col;i<80;i++)
{
tab_tram[*lig][i]=0x00;
}
804 albeaufour
*lig++;
}

884 albeaufour

804 albeaufour
void main(void) //reception de caract?re
884 albeaufour
{
int i,nb,ligne=0;
804 albeaufour
//initialisation des led en sortie
884 albeaufour
init_portserie();
while(1)
{
nb=rectrame (trame);
creation_tab_trame(nb,&ligne,trame,tab_trame);
ligne;
if (ligne==10){ligne=0;}
}
804 albeaufour
}

/*void main(void) //Transmission de caract?re
{
int i;
init_portserie();
732 albeaufour
while (1)
804 albeaufour
for (i=0;i<26;i++)
{
transmission ('A'+i);
}
723 albeaufour
}
804 albeaufour
*/