martes, 7 de mayo de 2019

Conversión de Binario a BCD

Para realizar esta conversión primero debemos establecer la cantidad exacta de bits al cual convertir, en este ejemplo vamos a convertir 16 bits a BCD, recordando que 16 bits está formado por 2 Bytes, la representación máxima de un número de 16 bits es: 11111111 11111111 que es equivalente a FF FF en hexedecimal y en decimal sería el número 65 535(sesenta y cinco mil quinientos treinta y cinco). Un número BCD(Decimal Codificado en Binario) está representado por digitos del 0-9 como se muestra en la imagen:

Como se puede ver en la imagen los números BCD agrupa 4 bits para representar un número decimal.

Saber como convertir bits a BCD es importante en el proceso de muchos otros procesos que veremos posteriormente, por ejemplo en el momento de convertir bits a ASCII entre muchos otros sistemas de conversion para infinitas aplicaciones y es que saber como se hace el proceso de conversiones nos permitirá convertir cualquier cantidad de bits a cualquier formato de conversión. y lo mejor de todo que sea el lenguaje de programación que estemos usando el proceso es el mismo solo es importante hacer los pasos necesarios, para ello veremos un diagrama de flujo del proceso de conversión para luego plasmarlo en código, por supuesto nosotros usaremos asembler para la códificación.

Como ejemplo de conversión a BCD tomaremos el número máximo de 16 bits que es el 65 535 en decimal.

Proceso de Conversión

Hay distintas maneras de realizar la conversión por ejemplo divisiones sucesivas u diferencias sucesivas, como el código que implementaremos estará en un microcontrolador de 8 bits Atmega32L y no posee instrucciones para realizar divisiones entonces optamos por el método de diferencias  sucesivas para la conversion de binario a BCD. 

Una vez elegida el método profundirizaremos mas su implemetación:

El proceso de conversión consiste en ir restando paulatinamente el número a convertir, ¿pero cual será mi minuendo y sustraendo y que hago con el residuo?.
el primer término, minuendo será el número a convertir a bcd y el segundo término el sustraendo será 10000, 1000, 100,10 depende de la cantidad de digitos del minuendo, el minuendo y el sustraendo deben tener la misma cantidad de digitos.
Por ejemplo para nuestro ejemplo , el minuendo será el  65530 y el sustraendo será el 10000, ahora ya sabemos que cantidades se van a restar y el resultado de esta operación será el residuo y se guardará en variables o registros para realizar nuevamente la diferencia, ahora el residuo será mi nuevo minuendo, las veces que se produce una resta se van guardando en una variable o registro , por otro lado el término sustraendo se mantiene en 1000 y haremos una nueva operación resta. Pero hasta cuando haremos diferencias?? Pues hasta que el minuendo sea menor al sustraendo y/o sean iguales.

  • Para hacer una diferencia entre números es suficiente comparar los números mas a la izquierda o si es que se quiere decir los MSB(Most Significant Bit).
  • El número BCD final será la cantidad de restas o diferencias que se harán en el proceso de conversión.
  • Lo anterior es la descripción del proceso de conversión de binario a BCD de manera general, no completa pero con nociones básicas del procedimiento.

Diagrama de Flujo- Link

Código

Tienes alguna duda de este tema, o ¿de qué otros temas quieres que hablemos?, puedes escribirnos directamente a nuestro grupo de Telegram

No hay comentarios:

Publicar un comentario

Uso del firmware original de la grabadora USBasp AVR en MX-USBASP (clon chino)

Te vendieron un USBisp pensado que es un USBasp?? Hace 2 meses compré un "USBasp" fui a probarlo y no funcionó....pensé me estafar...