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 55La 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:
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
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
returnAntes 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
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
ResponderEliminarexcelente aporte, muchas gracias fue de mucha utilidad para mi
ResponderEliminarSaludos, 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.
ResponderEliminarDe antemano muchas gracias y excelente aporte
Gracias, buen codigo si funciona, solo es ajustarlo a la necesidad.
ResponderEliminarUna 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?
ResponderEliminarUtiliza nuestro foro de electronica si tienes dudas no relacionadas con este tema.