Étape 5: Le code.
Comme d’habitude, mon code est écrit en BascomAvr. Je l’ajoute ici tant que-est sous différents formats. Il devrait vous permettre de le transcrire pour Arduino ou autre langue que vous aimez.$regfile = « attiny2313.dat »
$crystal = 8000000
portb config = sortie ' définit PortB en sortie
portd config = sortie ' définit PortD à la sortie
Pind.2 = 1 ' permet la résistance de pull-up interne
Dim i as byte
Dim digit(4) as byte
Dim displ(4) as byte
Dim storage(4) as byte eram
Dim ex(4) as byte
ex(1) = 3 ' définit les broches 3 à 6 du PortD à conduire les chiffres
ex(2) = 4
ex(3) = 5
ex(4) = 6
digit(1) = storage(1) ' recals la dernière valeur de l’eeprom
digit(2) = storage(2)
digit(3) = storage(3)
digit(4) = storage(4)
Activer les interruptions "permet aux interruptions et définit l’étiquette de la routine
Activez Int0
Sur le bouton Int0
portd = 255 ' supprime l’affichage
PORTB = 0
faire
pour i = 1 à 4 ' les 4 chiffres de multiplexage et de montrer les valeurs correctes
PORTB = displ(i)
portd.ex(i) = 0
waitms 1
portd.ex(i) = 1
prochaine
boucle
fin
bouton: ' sur l’interruption
' affichage en blanc
portd = 255
Tandis que pind.2 = 0 ' debounce
Wend
incr digit(2) ' augmenter la valeur de 1
Si digit(1) > 9 puis
digit(2) incr
digit(1) = 0
fin si
Si digit(2) > 9 puis
digit(3) incr
digit(2) = 0
fin si
Si digit(3) > 9 puis
digit(4) incr
digit(3) = 0
fin si
Si digit(4) > 9 puis
digit(4) = 0
fin si
Storage(1) = digit(1) ' stocker dans l’eeprom
Storage(2) = digit(2)
Storage(3) = digit(3)
Storage(4) = digit(4)
displ(1) = lookup(digit(1), Dta) ' recherche la bonne valeur pour portb dans la table de données
displ(2) = lookup(digit(2), Dta)
displ(3) = lookup(digit(3), Dta)
displ(4) = lookup(digit(4), Dta)
waitms 250 ' debounce
Tandis que pind.2 = 0
Wend
retour
DTA: ' les valeurs pour le port afficher 0 à 9
données 123, 9, 227, 203, 153, 218, 250, 11, 251, 219