# Ayuda contador BCD de 0-255 (8 bits) en MPLAB



## roco (Oct 24, 2009)

Hola, estoy aprendiendo apenas a programar pic´s, pero me dejaron hacer un contador BCD en MPLAB de 0 a 255 (8 bits) y desplegarlo en 3 displays de 7 segmentos con el pic 16F628A, pero no se como hacerlo, si alguien me pudiera ayudar con el asm se los agradeceria mucho.

de antemano gracias.


----------



## elosciloscopio (Oct 24, 2009)

Yo he hecho algo parecido con el 16F876, lo más normal es hacer un árbol
con todas las combinaciones:

Aquí una versión para dos bits, suponiendo que el más significativo es RA7 y el menos RA6

En cualquier caso son muuuuchas combinaciones
seguro que hay un metodo mejor que desconozco

saludos

PD la imagen esta mal, donde pone RA8 debe poner RA6


----------



## Vick (Oct 24, 2009)

Es bastante fácil, solo hay que escribir una rutina de conversión de binario a BCD, se hace de la siguiente forma:

- Defines tres registros para almacenar los dígitos en BCD (unidades, decenas, centenas)

- Tomas el número a convertir y le vas restando 10 cada vez, de esta forma vas contando las decenas, y centenas y las vas almacenando en el respectivo registro.

- Cuando el número es menor a 10 la conversión termina, y tienes almacenado los dígitos en BCD en tus 3 registros.

- Luego envías cada dígito en BCD a los displays y listo.


----------



## elosciloscopio (Oct 24, 2009)

El problema es que para leer el puerto de entrada ya tienes que hacer lo que posteé antes


----------



## LxL (Abr 22, 2011)

Vick dijo:


> Es bastante fácil, solo hay que escribir una rutina de conversión de binario a BCD, se hace de la siguiente forma:
> 
> - Defines tres registros para almacenar los dígitos en BCD (unidades, decenas, centenas)
> 
> ...



Yo tengo que hacer solo un convertidor de binario a BCD, 8bits a BCD, este algoritmo que pusiste aqui se ve realmente facil... Solo que me gustaria que lo explicaras un poco mejor, mejor dicho con un ejemplo


----------



## Vick (Abr 23, 2011)

LxL dijo:


> Yo tengo que hacer solo un convertidor de binario a BCD, 8bits a BCD, este algoritmo que pusiste aqui se ve realmente facil... Solo que me gustaria que lo explicaras un poco mejor, mejor dicho con un ejemplo



Es bastante sencillo, solo vas restando 10 al número a convertir de esa forma vas contando las decenas y centenas que contiene, te dejo un diagrama de flujo de la librería para convertir de binario a BCD con esto no debes tener problemas para escribir él código, mi librería solo tiene 15 instrucciones...


----------



## LxL (Abr 23, 2011)

Pura Vida! Si, ayer logre entenderlo y lo logre hacer... Funciona este algoritmo para mas d 8 bits? X ejemplo 14bits?


----------



## Vick (Abr 23, 2011)

LxL dijo:


> Pura Vida! Si, ayer logre entenderlo y lo logre hacer... Funciona este algoritmo para mas d 8 bits? X ejemplo 14bits?



No, este método solo sirve para un registro de 8 bits, ya que para números más altos tienes que usar ya dos bytes (dos registros) y eso complica la el asunto, busca en la página de microchip la nota de aplicación AN526, ahí hay hay información de varias rutinas matemáticas e incluye una para conversión de binario a BCD de 16 bits...


----------



## Scooter (Abr 23, 2011)

Funciona para cualquier número de bits, pero entonces hay que extenderlo:
....
Divides por 10000 y el resultado va a decenas de miles
El resto se divide por 1000 y el resultado va a unidades de millar
El resto se divide por 100 y el resultado a centenas
El resto se divide por 10 y el resultado a decenas
el resto son las unidades


----------

