• Domingo 22 de Diciembre de 2024, 18:32

Autor Tema:  Como Convertir Hexadecimal(o Binario) A Decimal  (Leído 5457 veces)

Jonathan20

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Como Convertir Hexadecimal(o Binario) A Decimal
« en: Miércoles 6 de Abril de 2005, 20:55 »
0
:huh: Estoy diseñando una calculadora que hace operaciones basicas entre numeros decimales de 4 digitos enteros,(tamaño de palabra de 16bits) y el microcontrolador que utilizo tiene tamaños de registro de 8bits, bueno las operaciones las logre hacer, pero desde luego el resultado lo obtengo en 4 regitros diferentes en binario(concatenados forman el numero), el problema es que no he logrado pasar ese numero fraccionado binario ubicado en cuatro registros a decimal(unidades,decenas, centenas....)para poder visualizarlo en el LCD, si alguien me pudiera pasar un algoritmo o alguna idea seria de gran ayuda :(


por ejemplo tengo en dos registros (FF)(FF), la formula convencional de
Nun(dec)=15*16E0+15*16E1+15*16E2+15E3
no me sirve por que no puedo almacenar esos resultados ya que mi tamaño de palabra es de 8bits
Necesitaria un algoritamo que de alguna manera identificara la unidades, decenas centenas, etc.......

gracias :hola:

Super_G

  • Miembro MUY activo
  • ***
  • Mensajes: 375
    • Ver Perfil
Re: Como Convertir Hexadecimal(o Binario) A Decimal
« Respuesta #1 en: Viernes 8 de Abril de 2005, 04:28 »
0
La dicvisin entre 10 en un ciclo asi puedes seprar unidades decenas centenas....

el problema es que si tu tienes o no disponible como instruccion la division DIV si no la tienes hay que buscar alguna forma; si usa un PIC de la gama media; me contaron y lei tambien el foro de solocodigo de microcontroaldores; que la microchip tenia librerias para hacer divisiones y en general operacones matematicas; tendrias que buscar en librerias "MATH" en microchip. y si usa otro micro fijate si notien e esa instrucion o si proveen alguna solucion para este tipo de problemas.

Gokuden

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Como Convertir Hexadecimal(o Binario) A Decimal
« Respuesta #2 en: Domingo 10 de Abril de 2005, 20:39 »
0
aqui esta tu solucion amigo jonathan.  como tienes un numero que sobre pasa los 8bits, necesitas pasar esas dos o tres palabras de 8 bits a numeros individuales, unidad, decena, centena, unidad de mil, centena de mil, etc etc o que es lo mismo, debes pasarlo a bcd.

esta preciosa rutina que dare lo hace a la perfeccion.  tiene 3 registros que son DATOL, DATOM Y DATOH, aqui vas a poner el numero binario que deseas convertir, DATOL, es el menos signifcativo, DATOM es el siguiente y DATOH es el mas significativo, osea que puedes convertir hasta 24bits, pero si son dos palabras nada mas, entonces pones la primera tuya en DATOL, la segunda en DATOM, y DATOh le pones 00h.  Tienes 6 registros llamados DATO1,DATO2,DATO3,DATO4,DATO5,DATO6 que son los resultados, doned DATO1 ES EL MENOS SIGNIFICATIVO Y DATO 6 EL MAS. ejemplo.

pones 00h en DATOH, pones 00H EN DATOM, y pones FFh en DATOL, en total tendras el valor 255 en decimal, al hacer la rutina te quedara el 5 en DATO1, el 5 en DATO2, y el 2 en DATO3, todo los demas DATO4 A DATO6  seran 00h.
la rutina comienza en B2, asi que primero asegurate de limpear poniendo 00h a todo los registros DATO, luego pones tus valores en DATOL,My H, y haces un call B2, y tendras tu resultado

;*****************************************************************************************
;      BINARIO BCD                            
;*****************************************************************************************


B2   MOVF   DATOL,0
   BTFSS   STATUS,Z
   GOTO   INCRE
   GOTO   CHQ
INCRE   DECF   DATOL
   INCF   DATO1
   MOVF   DATO1,0
   XORLW   0AH
   BTFSS   STATUS,Z
   GOTO   B2
   CLRF   DATO1
   INCF   DATO2
   MOVF   DATO2,0
   XORLW   0AH
   BTFSS   STATUS,Z
   GOTO   B2
   CLRF   DATO2
   INCF   DATO3
   MOVF   DATO3,0
   XORLW   0AH
   BTFSS   STATUS,Z
   GOTO   B2
   CLRF   DATO3
   INCF   DATO4
   MOVF   DATO4,0
   XORLW   0AH
   BTFSS   STATUS,Z
   GOTO   B2
   CLRF   DATO4
   INCF   DATO5
   MOVF   DATO5,0
   XORLW   0AH
   BTFSS   STATUS,Z
   GOTO   B2
   CLRF   DATO5
   INCF   DATO6
   GOTO   B2
CHQ   MOVF   DATOM,0
   BTFSS   STATUS,Z
   GOTO   INCRE2
   GOTO   CHQ2
INCRE2   DECF   DATOM
   GOTO   INCRE
CHQ2   MOVF   DATOH,0
   BTFSS   STATUS,Z
   GOTO   INCRE3
   RETURN
INCRE3   DECF   DATOH
   MOVLW   0FFH
   MOVWF   DATOM
   GOTO   INCRE