|
#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));
|
|
}
|
|
|
|
}
|