Buenas a todos, os explico mi programa y despues mi problema.
He estado haciendo un programa para controlar dos displays de 2 digitos cada uno. Es para implementarlo en una claqueta de cine. Mediante unos pulsadores incrementar y/o decrementar los contadores. El display de la izquierda (el que marcará las secuencias) tiene 3 pulsadores, decrementar, punto, incrementar y el de la derecha (el que marcará las tomas) 2: decrementar e incrementar.
Problema: los digitos se mezclan de mala manera y estoy al borde de la locura (la verdad es que es la primera vez que trabajo con displays multiplexados).
Os pongo el programa y el esquema electronico:
Device 16F873
Xtal = 4
Dim unidad As Byte
Dim decena As Byte
Dim contador As Byte
Dim unidadtom As Byte
Dim decenatom As Byte
Dim contador2 As Byte
All_Digital = true
TRISA = 1
TRISB = 0
TRISC = 0
PORTA = 0
PORTB = 0
PORTC = 0
Main:
If PORTA.0 = 1 Then
DelayMS 100
contador = contador - 1
If contador < 0 Then contador = 99
EndIf
If PORTA.1 = 1 And PORTC.0=0 Then
PORTC.0=1
DelayMS 100
EndIf
DelayMS 50
If PORTA.1 = 1 And PORTC.0=1 Then
PORTC.0=0
DelayMS 100
EndIf
If PORTA.2 = 1 Then
DelayMS 100
contador = contador + 1
If contador >= 99 Then contador = 0
EndIf
If PORTA.3 = 1 Then
DelayMS 100
contador2 = contador2 - 1
If contador2 < 0 Then contador2 = 99
EndIf
If PORTA.4 = 1 Then
DelayMS 100
contador2 = contador2 + 1
If contador2 >= 99 Then contador2 = 0
EndIf
DelayMS 50
unidad = contador Dig 0
PORTB = unidad + 16
DelayMS 20
decena = contador Dig 1
PORTB = decena + 32
DelayMS 20
unidadtom = contador2 Dig 0
PORTB = unidadtom + 64
DelayMS 20
decenatom = contador2 Dig 1
PORTB = decenatom + 128
DelayMS 20
GoTo Main
End

Muchas gracias! Saludos