Contador de 0 a 99 con PIC

Flaco por favor sacá ese SELECT CASE porque da conjuntivitis ver usarlo para eso.

Ahi se usa un array, como son constantes, lo declarás al principio.
Código:
dim suma     as byte
dim DECENAS  as byte
dim UNIDADES as byte
const mask7s as byte[10]= (63,6,91,79,102,109,125,7,127,111)

Y despues, en lugar de esa chorrera de CASEs
Código:
        UNIDADES = suma/10
        DECENAS = suma mod 10

        portd = mask7s[unidades]
        portb = mask7s[decenas]

Por otro lado, otra forma para incrementar/decrementar suma podés usar la función módulo
Código:
     suma = (suma + updn) mod 100
Donde updn es una variable que hacés valer 1 cuando quieras que incremente y 255 para que decremente.
 
No, porque de esa forma el contador no llegará a 0, sino que cuando llegue a 1 pasará a 99
Me referia a la resta, pero en la cita que puse no salió lo remarcado.
En la suma está bien, sumas, comprobas si llegaste a 100, si es asi, volves a 0.
En la resta habias puesto que si llegas a 0, entonces colocas a 100 la variable, y en vez de eso, seria poner en 99, y comprobar si llegas a -1, en vez de 0. :unsure:
 

D@rkbytes

Moderador
Es que todo depende de en qué parte se coloque la comparación.
Si es así, se tendrá que contar hasta 100
Código:
    suma = suma - 1
    If suma = 0 Then suma = 100
Pero si es así, sí se tendría que contar hasta 99
Código:
    If suma = 0 Then suma = 99
    suma = suma - 1
sería poner en 99 y comprobar si llegas a -1 en vez de 0
Eso no puede suceder en una variable sin signo.
 
Recuerda que la visualizacion la hace al principio, osea que si hace ésto
Si es así, se tendrá que contar hasta 100
Código:
    suma = suma - 1
    If suma = 0 Then suma = 100
Al querer visualizar, se va a mostrar "100", en vez de "99", ya que la resta la hace antes de que l variable cambie a "100".

Y si es asi
Pero si es así, sí se tendría que contar hasta 99
Código:
    If suma = 0 Then suma = 99
    suma = suma - 1
Se visualiza "98", ya que antes de visualizar, se resta 1.

Eso no puede suceder en una variable sin signo.
Si, no me di cuenta... :facepalm:
 
Hice esa programación y me salió bien. Gracias por la ayuda.
L
o volví a programar para que vaya de dos en dos pero no funciona, un contador se queda en cero y el otro si funciona.
N
o sé cómo programar para que funcionen los 2 y también que al mandar un voltaje de 5V cuente números impares.
¿M
e podrían ayudar o aconsejar qué hacer, por favor?
Código:
dim suma     as byte
dim DECENAS  as byte
dim UNIDADES as byte
const mask7s as byte[10]= (63,6,91,79,102,109,125,7,127,111)

Y despues, en lugar de esa chorrera de CASEs
Código:
        UNIDADES = suma/10
        DECENAS = suma mod 10

        portd = mask7s[unidades]
        portb = mask7s[decenas]
 

Temas similares


Arriba