Autor Tema: rutina convertir bcd a hex y de hex a bcd?  (Leído 5703 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kenny_pic

  • PIC10
  • *
  • Mensajes: 11
rutina convertir bcd a hex y de hex a bcd?
« en: 03 de Febrero de 2014, 22:48:21 »
si alguien me pudiera ayudar lo agradecería estoy empezando a programar en asm con pic16f84a, llevo semanas y no me salgo necesito 2 rutinas:
hex. a bcd y otra de bcd a hex. pero que el resultado este solo en 2 registros en uno las centenas y en el otro decenas y unidades. porque todos los programas que encontrado el resultado estaba dividido en 3 registros.
gracias. un saludo

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: rutina convertir bcd a hex y de hex a bcd?
« Respuesta #1 en: 04 de Febrero de 2014, 07:06:32 »
Bienvenido al foro.

Mira por aqui, a ver si esta esa rutina en concreto:

http://www.todopic.com.ar/foros/index.php?topic=23812.0

Desconectado kenny_pic

  • PIC10
  • *
  • Mensajes: 11
Re: rutina convertir bcd a hex y de hex a bcd?
« Respuesta #2 en: 04 de Febrero de 2014, 22:16:22 »
gracias, he buscado y no me sirve ninguna y no se como hacerlo.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: rutina convertir bcd a hex y de hex a bcd?
« Respuesta #3 en: 05 de Febrero de 2014, 07:36:33 »
Mira a ver si asi te vale, aprovechando esta rutina de Suki:

Código: [Seleccionar]
;***************************
;*** Binario 8bits a BCD ***
;***************************

;<Binario>=><Centena, Decena,Unidad>

; REGISTROS
Binario

Centena
Decena
Unidad

;Rutina
Binario_BCD
movfw Binario
movwf Unidad
clrf Decena
clrf Centena
BCD_0
movlw d'10'
subwf Unidad,W
btfss STATUS,C
goto BCD_Fin
BCD_1
movwf Unidad
incf Decena,f
movlw d'10'
subwf Decena,W
btfss STATUS,C
goto BCD_0
BCD_2 clrf Decena
incf Centena,f
goto BCD_0
BCD_Fin

Le he implementado esto:

BCD_Fin
   swappf   Decena,W
   addwf   Unidad,f

Lo he probado con tres numeros y da bien el resultado, te quedan en "Unidad" las unidades y las decenas, hago un "swappf Decena,W", para pasar el nibble bajo al alto y al sumar ya quedan los dos valores en el mismo Byte, queda asi:

Código: [Seleccionar]
;***************************
;*** Binario 8bits a BCD ***
;***************************

;<Binario>=><Centena, Decena,Unidad>

; REGISTROS
Binario

Centena
Decena
Unidad

;Rutina
Binario_BCD
movfw Binario
movwf Unidad
clrf Decena
clrf Centena
BCD_0
movlw d'10'
subwf Unidad,W
btfss STATUS,C
goto BCD_Fin
BCD_1
movwf Unidad
incf Decena,f
movlw d'10'
subwf Decena,W
btfss STATUS,C
goto BCD_0
BCD_2 clrf Decena
incf Centena,f
goto BCD_0
BCD_Fin
[b]swappf Decena,W
addwf Unidad,f[/b][/code


Desconectado kenny_pic

  • PIC10
  • *
  • Mensajes: 11
Re: rutina convertir bcd a hex y de hex a bcd?
« Respuesta #4 en: 08 de Febrero de 2014, 12:17:20 »
Muchísimas gracias! me va a la perfección tal y como yo quería.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: rutina convertir bcd a hex y de hex a bcd?
« Respuesta #5 en: 08 de Febrero de 2014, 13:28:02 »
Ademas como ves es muy sencillo, seguramente valga para cualquier otra rutina.



Desconectado kenny_pic

  • PIC10
  • *
  • Mensajes: 11
Re: rutina convertir bcd a hex y de hex a bcd?
« Respuesta #6 en: 10 de Febrero de 2014, 18:27:12 »
Tengo otro problema, estoy intentando hacer el programa de bcd a hexadecimal y no me sale, estuve buscando y encontré esta rutina pero no me sirve porque en el pic16f84 no está la instrucción multiplicar(mull) y no se como hacerlo para que el el valor que introduces en 2 registros de bcd este convertido en un solo registro hexadecimal. Gracias.

BCD_HEX                   
movwf       ByteL      ;carga valor a convertir contenido en W
movwf       ByteH     ;carga valor a convertir contenido en W
movlw       0x0f        ;selecciona el nibble bajo de W
andwf        ByteL,f    ;introducelo en el registro ByteL
movlw       0xf0        ;selecciona el nibble alto de W
andwf        ByteH,f    ;introducelo en el registro ByteH
swapf        ByteH,w   ;invierte los nibles de ByteH e introduce el resultado en W
mullw        .10          ;multiplica el contenido de W por 10d
movf         PRODL,w  ;caga el resultado en W
addwf        ByteL,w    ;suma el contenido de ByteL a W

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: rutina convertir bcd a hex y de hex a bcd?
« Respuesta #7 en: 11 de Febrero de 2014, 07:25:21 »
Mira en la respuesta 50, creo que esta lo que buscas, tambien hay unas rutinas de sumas, restas y "multiplicaciones":

http://www.todopic.com.ar/foros/index.php?topic=23812.40