Conversion Binario a BCD - Convertir un número de 8 bits.




Convertir un numero Binario de 8 bits a BCD

El Codigo binario decimal (BCD) es un codigo para numeros decimales en el que cada digito es representado por su propia secuencia binaria. Su principal ventaja es que permite una conversion facil a digitos decimales para su despliegue y permite tambien realizar calculos decimales mas rápidos.

Aqui se presenta una rutina para convertir un numero binario a BCD, precisamente un numero de 8 bits (1 byte) a su equivalente BCD. El valor maximo de un byte es 0xFF = 255, asi que al convertir un numero binario de 8 bits se obtienen 3 digitos BCD.

Esta rutina convierte el numero binario a su equivalente BCD empaquetado. El resultado de la conversion del numero binario a BCD ocupa un byte y medio y se representa en las variables de memoria BCDH y BCDL. El numero binario a convertir debe estar almacenado en la variable BIN.
ej. 0xFF = 255
 BIN -> BCDH:BCDL
  FF     02   55
La conversion se hace realizando divisiones mediante restas sucesivas. Primero entre 100 para obtener el nibble bajo de BCDH y despues entre 10 para obtener el nibble alto de BCDL y el residuo pasa a formar el nibble bajo de BCDL.

El codigo de la rutina es el siguiente:
BIN8_BCD3
        clrf    BCDH
        clrf    BCDL
BCD_HIGH
        movlw   .100
        subwf   BIN,f
        btfss   STATUS,C
        goto    SUMA_100
        incf    BCDH,f
        goto    BCD_HIGH
SUMA_100
        movlw   .100
        addwf   BIN,f
        movlw   0x0F
        movwf   BCDL
BCD_LOW movlw   .10
        subwf   BIN,f
        btfss   STATUS,C
        goto    SUMA_10
        incf    BCDL
        movlw   0x0F
        iorwf   BCDL
        goto    BCD_LOW
SUMA_10 movlw   .10
        addwf   BIN,f
        movlw   0xF0
        andwf   BCDL,f
        movf    BIN,w
        iorwf   BCDL,f
        return
Antes de llamar a la rutina de conversion es necesario tener almacenado el numero que se desea convertir en la variable BIN. Al finalizar la rutina el numero BCD estara almacenado en las variables BCDH y BCDL. BCDH tendra el numero BCD mas significativo mientras que en BCDL se encontraran los dos numeros restantes, siendo el nibble alto de BCDL el mas significativo de los dos y el nibble bajo de BCDL el menos significativo.

De este modo se logra convertir un numero binario de 8 bits a su equivalente BCD. Solamente hay que tener en cuenta que al realizar la conversion el numero que se tenia en un principio en la variable BIN es destruido, asi que se debe tener un respaldo de su valor en otro registro si se desea seguir trabajando con el.

Descargar codigo: Conversion numero Binario de 8 bits a BCD


5 comentarios:

elias dijo...

muchas gracias.. si sirve haciendole unas modificaciones para mostrar en lcd, en el registro BCDL TIENEN que aplicar swapf para cambiar los bits 7 6 5 4 a 0 1 2 3.. posterior mente se le aplica una mascara con and para quedarnos con los 4 bits que contienen la cantidad y por ultimo se le aplica una or para que siempre manden los bits altos 0011 ya que en esa columna estan los numeros

Anónimo dijo...

excelente aporte, muchas gracias fue de mucha utilidad para mi

Anónimo dijo...

Saludos, es muy buen aporte pero quisiera saber para que microcontrolador es este código...la verdad soy novato en estas cosas, pero me han pedido hacer este Convertidor pero en picoblaze y las instrucciones son distintos pero sabiendo a cual pertenece podría cambiarlas a picoblaze.

De antemano muchas gracias y excelente aporte

Anónimo dijo...

Gracias, buen codigo si funciona, solo es ajustarlo a la necesidad.

Anónimo dijo...

Una pregunta, como convierto el numero 333 en BCD? se supone que solo puedo convertir hasta 255 o FF pero, y si quiero convertir 333 y que las centenas se visualicen por el PORTA como le haría?

Publicar un comentario en la entrada

Utiliza nuestro foro de electronica si tienes dudas no relacionadas con este tema.