Projet

Général

Profil

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

void uart0_init(void); // Initialisation du port s?rie
void uart0_tx(char c); //Envoie d'un caract?re
char uart0_rx(void); //Fonction d'attente et lecture d'un caract?re
int rectrame(char * Buffer);
int hex2int(char *c); //Passage hexa en int

/*Variable Globale*/
int trame_ok;


void main(void)
{
char Buffer[80];
uart0_init();
while(1){
uart0_tx(rectrame(Buffer)+48);
if (trame_ok == 1){
uart0_tx('O');
}
else{
uart0_tx('N');
}
}
}

void uart0_init(void){
u0mr = 0x05;
u0brg = 32;
u0c0 = 0x11;
u0c1 = 0x05;
pd6_0 = 0;
pd6_1 = 0;
pd6_2 = 0;
pd6_3 = 1; //On affecte seulement les bits que l'on a besoin pour le bon fonctionnement
ps0_3 = 1;
}

void uart0_tx(char c){
while (ti_u0c1 != 1);
u0tb = c;
}

char uart0_rx(void){
while (ri_u0c1 != 1);
return u0rb;
}

int rectrame(char * Buffer){
int i;
char checksum;
char carac_recu;
char checksum_trame[3];

while (uart0_rx() != '$');
i = 0;
checksum = 0; //'0'
while ((carac_recu = uart0_rx()) != '*'){
Buffer[i++] = carac_recu;
checksum = checksum ^ carac_recu; // ^ est le ou exclusif
}
checksum_trame[0] = uart0_rx();
checksum_trame[1] = uart0_rx();
if (checksum == hex2int(checksum_trame)){
trame_ok = 1;
}
else{
trame_ok = 0;
}
return i;
}

int hex2int(char *c)
{
int i=0;

for(i=0; i<2; i++)
{
if(c[i]>='0' && c[i]<='9')
{
c[i] = c[i] - '0';
}

if(c[i]>='A' && c[i]<='F')
{
c[i] = c[i] - 'A' + 10;
}
}
return(c[1]+16*c[0]);
}
(2-2/9)