TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: bones18 en 07 de Marzo de 2007, 07:13:16
-
wuenas..
en medio de mi programa hago una multiplicación, por ejemplo el 3 por el 5 = 15, luego necesito guardar el 15 en dos registros diferentes, Reg1=1 i Reg2=5.
Como puedo hacerlo? como mucho la cifra del resultado tendrá 2 digitos.
gracias!
-
ya he encontrado algunas rutinas
gracias
-
Hola, te paso una rutina para que hagas eso, lo que hace la rutina es ir restandole 100 al numero, luego 10, y luego 1, tantas veces hasta que de cero al numero que quieres convertir y guarda esos valores en 3 registros Unidad, Decena y Centena.
Saludos.
Alejandro.
-
Querés transformar un registro a bcd para mostrarlo por un display?
-
Sería bueno que explicaras para que vas a utilizar la conversión de un entero a varios dígitos, porque dependiendo de la aplicación hay varias técnicas:
Por ejemplo si vas a mostrar los datos en una lámpara de siete segmentos utilizando un decodificador BCD-7S, te convendría llevar de el resultado a BCD empaquetado, donde en un registro de 8bits te caben dos dígitos.
Si lo que necesitas en un el ascii del dígito, entonces lo llevas a BCD y le sumas 30h para que te el ascii (algo como esto es lo que hace printf para dar formato a los números), este es el formato que requieren las LCD de texto.
Por eso hace falta que nos precises que es lo que necesitas hacer con los dígitos
Reinier
-
gracias por las respuestas, como ya habia dicho en el 2o mensaje, ya habia encontrado una rutina que me valia
passar_a_BCD
;separem el resultat en 2 o 3 digits BCD, el digit haurà d'estar guardat a W
clrf centenes ;CENTENAS
clrf desenes ;DECENAS
movwf unitats ;UNIDADES
continua_unitats
movlw .10
subwf unitats,W
BTFSS STATUS,C
goto continua_desenes
movwf unitats
incf desenes, F
goto continua_unitats
continua_desenes
MOVLW .10
SUBWF desenes,W
BTFSS STATUS,C
GOTO fi_ajusta_bcd
MOVWF desenes
INCF centenes,F
GOTO continua_desenes
fi_ajusta_bcd
return