Stap 5: De code.
Zoals gebruikelijk, is mijn code geschreven in BascomAvr. Ik toe te voegen hier als-is in verschillende formaten. Het moet u toestaan om het te transcriberen voor Arduino of wat dan ook taal je wilt.$regfile = "attiny2313.dat"
$crystal = 8000000
config portb = output ' ingesteld voor de uitvoer van PortB
config portd = output ' ingesteld PortD uitgang
pind.2 = 1 ' maakt de interne pull-up weerstand
Dim ik als byte
Dim digit(4) als byte
Dim displ(4) als byte
Dim storage(4) als eram byte
Dim ex(4) als byte
ex(1) = 3 ' stelt pinnen 3 tot en met 6 van PortD te rijden van de cijfers
ex(2) = 4
ex(3) = 5
ex(4) = 6
digit(1) = storage(1) ' recals de laatste waarde uit de eeprom
digit(2) = storage(2)
digit(3) = storage(3)
digit(4) = storage(4)
Inschakelen Interrupts ' maakt de interrupts en definieert de label voor de routine
Int0 inschakelen
Op Int0 knop
PORTD = 255 ' blanks het scherm
portb = 0
doen
voor i = 1 tot en met 4 ' multiplexing van de 4 cijfers en de juiste waarden weergeven
portb = displ(i)
PORTD.ex(i) = 0
waitms 1
PORTD.ex(i) = 1
volgende
lus
einde
knop: ' op onderbreken
' lege display
PORTD = 255
Terwijl pind.2 = 0 ' debounce
wend
INCR digit(2) ' waarde met 1 verhogen
Als digit(1) > 9 dan
INCR digit(2)
digit(1) = 0
eind als
Als digit(2) > 9 dan
INCR digit(3)
digit(2) = 0
eind als
Als digit(3) > 9 dan
INCR digit(4)
digit(3) = 0
eind als
Als digit(4) > 9 dan
digit(4) = 0
eind als
Storage(1) = digit(1) ' opgeslagen in eeprom
Storage(2) = digit(2)
Storage(3) = digit(3)
Storage(4) = digit(4)
displ(1) = lookup(digit(1), Dta) ' Lookup de juiste waarde voor portb in de gegevenstabel
displ(2) = lookup(digit(2), Dta)
displ(3) = lookup(digit(3), Dta)
displ(4) = lookup(digit(4), Dta)
waitms 250 ' debounce
Terwijl pind.2 = 0
wend
terugkeer
DTA: ' waarden voor portb om weer te geven van 0 tot en met 9
gegevens 123, 9 227, 203, 153, 218, 250, 11, 251, 219