morse_code_transcoder/transcodeur/saisieuart.c
2021-03-20 19:29:19 +01:00

41 lines
No EOL
1.2 KiB
C

/*
* saisieuart.c
*
* Created: 18/05/2021 15:40:37
* Author: yboujon1
*/
#include "saisieuart.h"
void uart_init(unsigned int ubrr)
{
DDRD|=(1<<PD1); //PD1 (TXD) en sortie pour la transmission
UBRRL=ubrr; //UBRRL prend la valeur de ubrr, soit 9600 BAUD
UCSRB|=(1<<RXEN)|(1<<TXEN); //autorise la reception et la transmission
UCSRC|=(1<<URSEL)|(3<<UCSZ0); //mode synchrone, pas de parité, mode 8 bit
}
char uart_getchar(void)
{
do{
//nothing
}while ((UCSRA & (1<<RXC))==0); //tant que RXC = 0, ne fait rien
return UDR; //renvoie en char les bits de puTTY
}
void saisie(char tab[], int *n)
{
int i=0; //soit i la variable pour chaque caractère du tableau
do
{
tab[i]=uart_getchar(); //recupère la donnée
i++;
} //continue tant qu'on appuie pas sur entrée
while((tab[i-1]!=13) && (i<MAX)); //et qu'on arrive pas au nombre de caracteres max
tab[i-1] = '\0'; //le dernier caractère est '\0' car c'est une chaine
if (!(i<MAX)) //si i est supérieur à la variable MAX
{
fflush(stdin); //vide la mémoire tempon, soit les caractères en trop
}
*n=strlen(tab)+1; //n, soit taille prend la valeur des octets du tableau +1
}