Étape 2: Exemple #1 [OUTPUT]
Code
Nous allons lire une valeur 8 bits de ADC3 (bits les plus significatifs) puis passez la valeur de sortie correspondant à notre registre à décalage.
Pour être plus précis j’ai fait un tableau de valeurs pour les États de I/O :
ADC3 valeur | Valeur de sortie | Segments sur |
---|---|---|
0..40 | 0xFF | 0 |
41..80 | 0xFE | 1 |
81..120 | 0xFC | 2 |
121..160 | 0xf8 | 3 |
161..200 | 0xF0 | 4 |
201..255 | 0xE0 | 5 |
NOTE : Parce que c’est un indicateur de LED anode commun nous devons définir la goupille appropriée bas chaque fois que nous voulons qu’elle s’allume.
Maintenant, nous allons écrire du code.
En bref, nous devons mettre en place une interruption de débordement du Timer, qui lira l’état actuel de ADC3 et envoyer la valeur correspondante à notre registre à décalage environ chaque ~ 27ms.
Sous-routine SEND_BYTE envoie un flux de 8 bits de données et il s’enclenche dans le registre à décalage. C’est une fonction un peu simplifiée, mais avec quelques améliorations mineures peut être utilisé universellement.
J’ai écrit la plupart des nombres sous forme binaire, donc il sera plus facile (du moins pour moi) pour voir qui LEDs sont activés et quels indicateurs sont définis.