Autor Tema: Pasar 10 digitos en Hex a Dec  (Leído 3751 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado om@r

  • PIC12
  • **
  • Mensajes: 86
Pasar 10 digitos en Hex a Dec
« en: 13 de Agosto de 2009, 00:24:11 »
Hola a Todos!
Tengo un tema complicado para mi... el tema es el siguiente ,tengo un numero en Hex de 10 digitos!!!
y tengo que pasarlo a decimal... yo hice el pase con 2 digitos pero no con tantos :( busque en el foro
y no encontre nada! si alguien tiene alguna idea sobre esta rutina matematica sera bienvenida! .
Saludos!!!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Pasar 10 digitos en Hex a Dec
« Respuesta #1 en: 13 de Agosto de 2009, 01:04:12 »
Lo que necesitas es pasar un string de 10 dígitos en Hexa a una variable decimal?
No contesto mensajes privados, las consultas en el foro

Desconectado om@r

  • PIC12
  • **
  • Mensajes: 86
Re: Pasar 10 digitos en Hex a Dec
« Respuesta #2 en: 13 de Agosto de 2009, 08:57:41 »
Hola!!!  :D si es un string de 10 digitos ,por ejemplo recivo  12A57839BF en Hex y tendria que pasarlo a Decimal  :shock:  usando la calculadora de windows seria  80085531071 en Dec. ,estoy usando un pic 16F873   :shock: la idea seria poder guardar temporalmente en variables este valor Decimal .Gracias por tu tiempo! .Saludos!!!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Pasar 10 digitos en Hex a Dec
« Respuesta #3 en: 13 de Agosto de 2009, 09:23:41 »
Nooo! y assembler me rindo!  :mrgreen: O te equivocaste de subforo.

Si ya pasaste de 2 dígitos a decimal, ya lo tienes!! Empiezas por los 2 dígitos mas altos, lo transformas y tienes el byte MSB de los 5 que necesitas para formar tu variable de decimal. Y así con los restantes digitos, tomando de a 2.

String->  F 4   5 8   6 9   A 3   C A
            |     |      |     |      |      |
Bytes->  MSB   ...    ..      .    LSB

Saludos!
« Última modificación: 13 de Agosto de 2009, 12:33:46 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: Pasar 10 digitos en Hex a Dec
« Respuesta #4 en: 13 de Agosto de 2009, 12:25:57 »
.

Hola. No se si te sirva, pero se me ocurre que podrías declarar unas cuantas variables para unidad, decena, centena, u. de mil.. etc, que al final conformarán el número decimal correspondiente al hexadecimal que recibe el pic, porque semejante número no va a caber en un byte y me parece la forma más cómoda de almecenarlos para usarlos luego. Entonces vas realizando la conversión bit por bit del string y aumentando primero la variable unidad, si esta llega a 9, aumentás la decena.. y así hasta terminar con todo el string.
Es sólo una idea, la verdad no quisiera estar en tus zapatos a la hora de codificar eso  :mrgreen:
Saludos.

When you see a good move, look for a better one (Emanuel Lasker)

Desconectado om@r

  • PIC12
  • **
  • Mensajes: 86
Re: Pasar 10 digitos en Hex a Dec
« Respuesta #5 en: 13 de Agosto de 2009, 15:51:49 »
 :-/ Gracias por contestar! a mi consulta! en verdad en assembler va estar un poco pesado  :shock: hacer la rutina!
pero es el unico lenguaje que manejo.. por decir verdad... me defiendo como gato panza arriba  :mrgreen:
jejej ,voy a tomar sus consejos y los voy a llevar a la practica  ,suelo usar una rutina cuando tengo que trabajar los valores del convertidor analogico digital asi que voy a partir de esa... haber que sale!!
Bueno Muchas Gracias por sus respuestas!!!
Saludos a Todos !!!

Desconectado Ata

  • PIC10
  • *
  • Mensajes: 11
Re: Pasar 10 digitos en Hex a Dec
« Respuesta #6 en: 14 de Septiembre de 2009, 16:18:49 »
Amigo... disculpa lo retardado.. pero quizas aun necesites la rutina... a continuacion el listado:


Define las variables argumento
MSB:X04 X03 X02 X01 X00:LSB   donde va el numero hex de 10dig a convertir
XCNT =40 Numero de bits de X04-X00 8x5=40
MSB:Y05 Y04 Y03 Y02 Y01 Y00:LSB donde va el resultado BCD 4Bits (2 digitos BCD por Byte)

;********************************************************************
; W5BCD6: CONVERSION BINARY -> BCD
; BINARY (X04-X00) -> BCD (Y05-Y00)
; 3926 cyc (E8 D4 A5 0F FF -> 99 99 99 99 99 99)

W5BCD6   BSF   RB1
   CLRC
   MOVLW   40
   MOVWF   XCNT
   CALL   CLRY

W_L40   RLF   X00
   RLF   X01
   RLF   X02
   RLF   X03
   RLF   X04
   RLF   Y00
   RLF   Y01
   RLF   Y02
   RLF   Y03
   RLF   Y04
   RLF   Y05
   DECFSZ   XCNT
   GOTO   W_L41
   BCF   RB1
   RETURN

W_L41   MOVLW   Y00+1
   MOVWF   FSR
   CALL   W_L42
   CALL   W_L42
   CALL   W_L42
   CALL   W_L42
   CALL   W_L42
   CALL   W_L42
   GOTO   W_L40

W_L42   DECF   FSR
   MOVLW   3
   ADDWF   INDF
   BTFSS   INDF,3
   SUBWF   INDF
   MOVLW   30H
   ADDWF   INDF
   BTFSS   INDF,7
   SUBWF   INDF
   RETURN
;********************************************************

Funciona... la he comprobado muchisimas veces en diversas aplicaciones.

Saludos y espero que aun te sirva

Desconectado Ata

  • PIC10
  • *
  • Mensajes: 11
Re: Pasar 10 digitos en Hex a Dec
« Respuesta #7 en: 14 de Septiembre de 2009, 16:22:29 »
Disculpa... La rutina de conversion te la envie incompleta. A continuacion la correcta:

;*****************************************************
; W5BCD6: RUTINA DE CONVERSION BINARY -> BCD
; BINARY (X04-X00) -> BCD (Y05-Y00)
; 3926 cyc (E8 D4 A5 0F FF -> 99 99 99 99 99 99)

W5BCD6   CLRC
   MOVLW   40
   MOVWF   XCNT
   CLRF   Y05
   CLRF   Y04
   CLRF   Y03
   CLRF   Y02
   CLRF   Y01
   CLRF   Y00

W_L40   RLF   X00
   RLF   X01
   RLF   X02
   RLF   X03
   RLF   X04
   RLF   Y00
   RLF   Y01
   RLF   Y02
   RLF   Y03
   RLF   Y04
   RLF   Y05

   DECFSZ   XCNT
   GOTO   W_L41
   RETURN

W_L41   MOVLW   Y00
   CALL   W_L42
   MOVLW   Y01
   CALL   W_L42
   MOVLW   Y02
   CALL   W_L42
   MOVLW   Y03
   CALL   W_L42
   MOVLW   Y04
   CALL   W_L42
   MOVLW   Y05
   CALL   W_L42
   GOTO   W_L40

W_L42   MOVWF   FSR
   MOVLW   3
   ADDWF   INDF
   BTFSS   INDF,3
   SUBWF   INDF
   MOVLW   30H
   ADDWF   INDF
   BTFSS   INDF,7
   SUBWF   INDF
   RETURN

;*****************************************************

Desconectado om@r

  • PIC12
  • **
  • Mensajes: 86
Re: Pasar 10 digitos en Hex a Dec
« Respuesta #8 en: 15 de Septiembre de 2009, 20:15:47 »
Hola ATA  :-/
Gracias!!! por la rutina ,ahora uso una que modifique a partir de unas que publica microchip
en la hoja AN526 tambien usa direccionamiento indirecto y rota los bytes pero viendo esta
creo que esta mejor resuelta ,cuando pueda la pruebo :shock: porque en este momento rato
libre que tengo me la paso luchando con el TMS3705 me tiene  :shock: a mal traer  :shock: este ci.

Saludos!!!! :-/