Projet

Général

Profil

#include "sfr32c87.h"

void uart0_init(void);
void uart0_tx(char c);
char uart0_rx(void);
int rec_trame(char* trame);

void uart0_init(void){
//Configuration des ports en entr?e ou en sortie
pd6_2 = 0; //RX en entr?e
pd6_3 = 1; //TX en sortie

//Configuration du registre U0MR
u0mr = 0x05; //longueur des donn?es 8 bits

//Configuration du registre PS0
ps0 |= 0x08; //r?ception des donn?es sur RX

u0c1 = 0x05; //activation transmission et r?ception
u0c0 = 0x11; //diviseur de fr?quence par 8 et CTS d?sactiv?


//Configuration du registre PSL0
psl0 = 0;

u0brg = 0x20; //Transmission des donn?es ? la vitesse de 4800 bauds

}

int rec_trame(char* trame){
int i = 0;
char c;
while (uart0_rx() != '$');

while ((c = uart0_rx()) != '*'){
trame[i] = c;
i++;
}
return i;
}

void uart0_tx(char c){
while(ti_u0c1 != 1); //tant qu'il n'y a pas de donn?e dans le registre de transmission
u0tb = c;
}

char uart0_rx(void){
while(ri_u0c1 != 1); //tant qu'il n'y a pas de donn?e dans le registre de r?ception
return u0rb; //retourne la valeur contenue dans le registre de r?ception
}

int i;
char trame[200];
char buffer[200];

void main(void)
{
uart0_init();
while(1){
uart0_tx(rec_trame(trame));
}
}
(2-2/9)