Autor Tema: Problema con programa de 2 contadores independientes  (Leído 2345 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado eneko166

  • PIC10
  • *
  • Mensajes: 8
Problema con programa de 2 contadores independientes
« en: 23 de Mayo de 2013, 13:11:19 »
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