Atelier du 23 février 2005 |
Jacques nous a démontré comme faire du son (Code Morse) en utilisant les nombres dans la table ASCII. |
Voici un exemple de tableau ASCII et comment trouver la valeur de la lettre A : |
|
Jacques nous a préparé ce tableau : |
CONST INT8 CW
[64]={0x00,1,1,1,1,1,1,1,1,1,1,1,1,0x31,1,0x29, // de 0 à 15 0x3F,0x3E,0x3C,0x38,0x30,0x20,0x21,0x23,0x27,0x2F,1,1,1,1,1,1,// de 16 à 31 1,0x06,0x11,0x15,0x09,0x02,0x14,0x0B,0x10,0x04,0x14,0x0D,0x12, 0x07,0x05,0x0F,// de 32 à 47 0x16,0x1B,0x0A,0x08,0x03,0x0C,0x18,0x0E,0x19,0x1D,0x13,1,1,1,1,1};// de 48 à 63 |
Voici une explication pour comprendre facilement ce tableau ! |
Comment dans ce tableau trouver la valeur de la lettre A ? |
Si vous partez de 0000 en haut et 0000 à gauche qui est le "nul", comptez les cases pour vous rendre jusqu'à la lettre "A" : "nul = 1" "soh = 2" "stx = 3" ainsi de suite la lettre "A" qui est la 66 ième case dans le tableau. |
Maintenant quel son doit on produire pour envoyer la lettre A en morse ? |
Réponse : Dit Dah ou 0b00000110 en binaire, le "0" est un Dit et le Dah est un "1" |
de plus dans le programme nous utilisons la fonction SHIFT RIGHT pour savoir |
quand la lettre est terminée, si la valeur de 0b00000110 est égale à 1 la lettre |
"A" est terminée. Ce qui veux dire que dans 0b00000110 nous utilisons |
seulement les trois derniers nombre 0b00000110, à partir de la droite le 0 |
qui donne le Dit, ainsi il ne reste que 0b00000011. Le premier 1 qui donne le |
Dah, il ne reste que 0b00000001 et le dernier 1 permet de comparer dans la |
fonction if(shift_right(&lettre_cw,1,0) que 1 = 1 donc la lettre est terminée. |
Ok, on transpose notre code binaire 0b00000110 en code Ascii. |
Que vaut 0b00000110 en binaire ? |
Le 0b00000110 vaut 0, le 0b00000110 vaut deux et le 0b00000110 vaut 4 |
soit 2 + 4 = 6. Le chiffre 6 en Ascii comme en Hexadécimal vaut 0x06. |
Retournons au tableau de Jacques pour trouver la valeur 0x06 ! |
Si nous comptons de gauche à droite le 0x00=1, 1=2, 1=3, jusqu'à 0x06=34 |
Petit problème ! Dans le tableau de code Ascii la lettre A est à la case 66, mais dans le |
tableau de Jacques elle se retrouve à la 34 ième position. Alors il faut enlever de 66 à 34 |
soit 32 pour trouver la lettre A. Dans le programme on inscrit le 32 dans la fonction |
lettre_cw=cw[cw_alpha-32]; |
Devoir de la semaine : |
Jacques nous demande de trouver comment rappeler le flag de l'interruption external. |
Voici la dernière version du programme |