From 9f48dbd4d4e08f9f8c3693d5aa3da70dd319817f Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Sat, 20 Mar 2021 19:29:19 +0100 Subject: [PATCH] Final code. --- transcodeur/lcd.c | 37 ++++---- transcodeur/lcd.h | 11 ++- transcodeur/main.c | 4 +- transcodeur/main.h | 18 ++-- transcodeur/morse.c | 160 +++++++++++++++++++++-------------- transcodeur/morse.h | 20 +++-- transcodeur/saisieuart.c | 28 +++--- transcodeur/saisieuart.h | 10 +-- transcodeur/timerinterrupt.c | 58 +++++++++---- transcodeur/timerinterrupt.h | 26 +++--- 10 files changed, 215 insertions(+), 157 deletions(-) diff --git a/transcodeur/lcd.c b/transcodeur/lcd.c index 00876f7..0ac06bb 100644 --- a/transcodeur/lcd.c +++ b/transcodeur/lcd.c @@ -10,33 +10,30 @@ void LCD_Init (void) { - DDRC = 0xFF; // Le port de controle en sortie - DDRA = 0xFF; // le port des donnees en sortie - PORTC &= ~(1< -#include -#include -#include -#include -#include -#include -#include \ No newline at end of file +#define F_CPU 3686400 //fréquence du processeur +#include //librairie de base pour microcontroleur +#include //librairie pour l'interruption +#include //librairie pour la fonction delay +#include //librairie de base pour le langage c +#include //librairie pour les chaines de caracteres +#include //librairie pour les traitement mémoire (chaine de caracteres) +#include //librairie essentielle pour les .h et .c +#include //pour faire fonctionner stdint.h \ No newline at end of file diff --git a/transcodeur/morse.c b/transcodeur/morse.c index 8b107a3..8e0f790 100644 --- a/transcodeur/morse.c +++ b/transcodeur/morse.c @@ -50,31 +50,32 @@ void envoyer_signe_morse(unsigned char signe_morse) { switch(signe_morse){ case POINT: - start_timer0(); - start_timer1(ONEMS); - wait_ocf1a_timer1(); - stop_timer0(); - wait_ocf1a_timer1(); + start_timer0(); //démarre la fréquence 440 Hz + start_timer1(ONEMS*speed); // 100ms*vitesse + wait_ocf1a_timer1(); // d'attente + stop_timer0(); //arrêt de 440 Hz + start_timer1(ONEMS*speed); // 100ms*vitesse + wait_ocf1a_timer1(); // d'attente break; case TRAIT: - start_timer0(); - start_timer1(3*ONEMS); - wait_ocf1a_timer1(); - stop_timer0(); - start_timer1(ONEMS); - wait_ocf1a_timer1(); + start_timer0(); //démarre la fréquence 440 Hz + start_timer1(3*ONEMS*speed); // 300ms*vitesse + wait_ocf1a_timer1(); // d'attente + stop_timer0(); //arrêt de 440 Hz + start_timer1(ONEMS*speed); // 100ms*vitesse + wait_ocf1a_timer1(); // d'attente break; case INTERLETTRE: - start_timer1(2*ONEMS); - wait_ocf1a_timer1(); + start_timer1(2*ONEMS*speed); // 200ms*vitesse + wait_ocf1a_timer1(); // d'attente break; case INTERMOT: - start_timer1(10*ONEMS); - wait_ocf1a_timer1(); + start_timer1(10*ONEMS*speed); // 1s*vitesse + wait_ocf1a_timer1(); // d'attente break; case FIN: - resume_timer1(); - stop_timer1(); + resume_timer1(); //on relance l'attente + stop_timer1(); //on arrête les attentes break; default: break; @@ -83,8 +84,8 @@ void envoyer_signe_morse(unsigned char signe_morse) void maj2min_convert(char *tab, int n) { - int i; - for(i=0; i<=n; i++) + int i; //on initialise i + for(i=0; i<=n; i++) //on incrémente tant qu'il n'est pas plus grand que la taille n { if(tab[i]>=65 && tab[i]<=90) //si c'est une majuscule { @@ -97,86 +98,117 @@ void maj2min_convert(char *tab, int n) }; } -void latin2morse(char *tab, int n) +void printandtranslate(char *tab, int n) { - int i=0; //varie la chaine de caractere - int j=0; //varie la librarie + int i=0; //varie la chaine de caractere + int j=0; //varie la librarie + int multiple=0; //tous les 16 caractères, s'incrémente do { + firstlinetext(tab,i,&multiple,n); //16 caractères de la chaîne sur la première ligne switch(j) { - case 0: - lcd_char(tab,&i); - maj2min_convert(tab,i); - default: - if(tab[i]==morse_library[j][0]) //verifie si le caractere correspond ? la librarie - { - library_checker(tab,&i,&j); //traduit dans la librairie et renvoie les deux variables pour continuer - } - else //si ce n'est pas dans la librarie - { - simple_terms(tab,&i,&j); //traduit directement les termes plus simples - }; + case 0: //UNIQUEMENT quand j=0 + secondlinetext(tab,&i,multiple);//seconde ligne de la chaîne pour un caractère + maj2min_convert(tab,i); //converti les majuscules en minuscule + default: //SINON dans tous les autres cas + latin2morse(tab,&i,&j); //traduction morse break; }; - }while(i