Paso 5: El código.
Como de costumbre, mi código está escrito en BascomAvr. Agrego que aquí-en diferentes formatos. Debería permitirte transcribir para Arduino o cualquier idioma que te gusta.$regfile = "attiny2313.dat"
$crystal = 8000000
config portb = salida ' establece PortB salida
config portd = salida ' establece PortD salida
Pind.2 = 1 ' permite el resistor interno de pull-up
Dim yo como byte
Dim digit(4) como byte
Dim displ(4) como byte
Dim storage(4) como byte eram
Dim ex(4) como byte
ex(1) = 3 ' establece pins 3 y 6 del PortD para conducir los dígitos
ex(2) = 4
ex(3) = 5
ex(4) = 6
Digit(1) = storage(1) ' recals del último valor de la eeprom
Digit(2) = storage(2)
Digit(3) = storage(3)
Digit(4) = storage(4)
Habilitar interrupciones ' habilita las interrupciones y define la etiqueta para la rutina
Habilitar la Int0
Botón de Int0
PORTD = 255 ' espacios en blanco la pantalla
PORTB = 0
hacer
para i = 1 a 4 ' multiplexado de 4 dígitos y muestran los valores correctos
PORTB = displ(i)
PORTD.ex(i) = 0
waitms 1
PORTD.ex(i) = 1
siguiente
lazo
final
botón: ' en interrupción
' espacio en blanco la pantalla
PORTD = 255
Mientras que pind.2 = 0 ' debounce
WEND
digit(2) incr ' incrementar el valor de 1
Si digit(1) > 9 entonces
incr digit(2)
Digit(1) = 0
terminar si
Si digit(2) > 9 entonces
incr digit(3)
Digit(2) = 0
terminar si
Si digit(3) > 9 entonces
incr digit(4)
Digit(3) = 0
terminar si
Si digit(4) > 9 entonces
Digit(4) = 0
terminar si
Storage(1) = digit(1) ' almacena en la eeprom
Storage(2) = digit(2)
Storage(3) = digit(3)
Storage(4) = digit(4)
displ(1) = lookup(digit(1), Dta) ' buscar el valor correcto para el portb en la tabla de datos
displ(2) = lookup(digit(2), Dta)
displ(3) = lookup(digit(3), Dta)
displ(4) = lookup(digit(4), Dta)
waitms 250 ' debounce
Mientras que pind.2 = 0
WEND
volver
DTA: ' valores de portb Mostrar de 0 a 9
datos 123, 9, 227, 203, 153, 218, 250, 11, 251, 219