41 lines
No EOL
1.2 KiB
C
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
|
|
} |