▷ Contador de 0 a 99 con PIC 16f628a programado en Microcode


En este post veremos como hacer un contador de 0 a 99 utilizando un PIC, programado en lenguaje basic utilizando el programa microcode.


Materiales:

  • 1 pic 16f628A
  • 2 Displays ánodo comúnç
  • 2 Transistores NPN
  • 2 Resistencias de 1k

Diagrama de conexiones:


Explicación del código:

1.- Declaramos los pines del puerto a como digitales.


2.- Declaramos los pines del puerto B del PIC como salidas.


3.- Declaramos todo el puerto A como salidas.


4.- La variable numero toma el valor de todo el puerto B.


5.- Creamos una variable llamada pausa.

-Esta variable la vamos a utilizar para la pausa en la parte de multiplexacion, si la velocidad de multiplexacion es muy alta aumentamos el numero, si es muy lenta lo disminuimos.

cmcon = 7 
trisb = %0000000
trisa = 0 numero VAR portb
pausa VAR BYTE
pausa = 40

;Creamos dos variables en donde se almacenaran los números correspondientes a la unidad y a la decena num es para la unidad, num2 es para la decena.

num VAR BYTE
num2 VAR BYTE

porta = 0 ;Apagamos todo el puerto a
x VAR BYTE ;Esta variable la utilizaremos en un ciclo for el cual nos permitirá modificar la velocidad del conteo
tiempo VAR BYTE ;Esta variable también la utilizamos para delimitar el ciclo FOR.
tiempo = 2 ;Para aumentar o disminuir la velocidad del conteo modificamos este valor.

Creamos 10 constantes, cada una contiene un numero en código binario, el código lo usaremos para activar los leds del display de 7 segmentos. Dependiendo en el numero que se encuentre se activar unos leds u otros para mostrar el numero en el display. Por ejemplo.


n0 CON %1000000


Si igualamos el valor de esta constante con el valor de la variable numero: numero = n0, entonces no mostrara el numero 0 en el display.


%1000000 = %gfedcba


Como estamos utilizando un display de ánodo común, activamos los leds del display con un '0' lógico. Si utilizan un display de cátodo común deberán cambiar los 0 por 1 y viceversa.

n0 CON %1000000
n1 CON %1111001
n2 CON %0100100
n3 CON %0110000
n4 CON %0011001
n5 CON %0010010
n6 CON %0000010
n7 CON %1111000
n8 CON %0000000
n9 CON %0010000

Después de haber declarado las constantes, creamos un array con 10 posiciones.

secuencia VAR BYTE[10]

Igualamos las posiciones de memoria con las constantes.

SECUENCIA[0] = n0
SECUENCIA[1] = n1
SECUENCIA[2] = n2
SECUENCIA[3] = n3
SECUENCIA[4] = n4
SECUENCIA[5] = n5
SECUENCIA[6] = n6
SECUENCIA[7] = n7
SECUENCIA[8] = n8
SECUENCIA[9] = n9

Abrimos un bucle infinito,en este bucle ocurrida los siguiente:


1.- Sumaremos la variable num esta variable se sumara hasta llegar a 9. Una vez llegado a 9:

  • Enceramos la variable para que comience otra vez desde 0.
  • Empezamos a sumar la variable de las decenas

2.- Una vez alcanzado el valor de 9 en el la variable num2 (numero de las decenas), enceramos esta variable.


3.- Creamos un ciclo For, dentro de este ciclo for tenemos la multiplexacion de los displays:

  • Para realizar la multiplexacion debemos activar un transistor y desactivar el otro, esto nos ayudara a visualizar los dos números a la vez, realizamos multiplexacion porque estamos utilizando los mismos pines de conexión para los dos displays.
  • Primero activamos el display de las decenas, desactivamos el display de las unidades y mostramos el valor de la variable con la condición,  numero = secuencia[num]. Establecemos una pausa, 
  • Luego Activamos el display de las unidades, desactivamos el display de las decenas y mostramos el valor de la variable con la condición, numero = secuencia[num2].Establecemos una pausa,
ciclo:

1.- num = num + 1

    IF num == 10 THEN

    num = 0
     num2 = num2 + 1

    ENDIF

2.- IF num2 == 10 THEN num2 = 0
3.- FOR x = 1 TO tiempo

   HIGH porta.0
    LOW porta.1
   numero = secuencia[num]
    PAUSE pausa

    LOW porta.0
    HIGH porta.1
    numero = secuencia[num2]
    PAUSE pausa

;Cerramos el ciclo for
NEXT


;Retornamos a ciclo:(cerramos el bucle).
GOTO ciclo

Descarga el código completo aquí:

0/Deja un comentario/Comentarios

¡Hola! Nos alegra mucho que hayas llegado hasta aquí y que estés leyendo este artículo en Edeptec.
Este formulario es un espacio abierto para ti: puedes dejar un comentario con tus dudas, sugerencias, experiencias o simplemente tu opinión sobre el tema tratado.

» ¿Te resultó útil la información?
» ¿Tienes alguna experiencia personal que quieras compartir?
» ¿Se te ocurre algún tema que te gustaría ver en próximos artículos?

Recuerda que este espacio es para aprender y compartir, por eso te animamos a participar de manera respetuosa y constructiva. Tus comentarios pueden ayudar a otros lectores que están en el mismo camino, ya sea en electrónica, programación, deportes o tecnología.

¡Gracias por ser parte de esta comunidad de aprendizaje! Tu participación es lo que hace crecer este proyecto.