TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: lolos123 en 24 de Marzo de 2005, 12:14:00

Título: descomponer un Byte en unidades,decenas..
Publicado por: lolos123 en 24 de Marzo de 2005, 12:14:00
¡Que tal!. Tengo  generado el checksum de una cadena, ahora lo que necesito sería descomponer ese Byte del checksum en unidades y decenas porque tengo que enviarlo por el puerto serie. Es decir si el checksum que tengo en una posicion es 0x24 pues conseguir en dos posiciones de memoria un 2 y un 4 para poder mandarlos.

¿alguna sugerencia? estoy trabajando en ensamblador en un 16f876 .

Gracias por vuestro tiempo
Título: RE: descomponer un Byte en unidades,decenas..
Publicado por: fenix_jn en 24 de Marzo de 2005, 19:19:00
pues bien lo q estas pidiendo es un convertidor binario BCD, si solo lo vas a hacer con 2 digitos no hay problema (puedes implementar un algoritmo de restas sucesivas para obtener el numero) sin embargo, con numeros de mas de 3 digitos necesitaras una rutina mas sofisticada. En el foro hay varias rutinas BCD (t digo porq tb necesitaba una asi, pero la mia era para 5 digitos), usa el buscador q seguro las encuentras.

Nota: La rutina q andaba buscando era en ASM, no se en q lenguaje estas pidiendo la rutina...
Título: RE: descomponer un Byte en unidades,decenas..
Publicado por: lolos123 en 25 de Marzo de 2005, 10:06:00
Gracias fenix_in.
Efectivamente solo necesito descomponer un Byte, por lo que obtendría 2 dígitos.Buscaré como me dices pero ¿como es ese algoritmo que comentas ?"(puedes implementar un algoritmo de restas sucesivas para obtener el numero)" .

Una pregunta ¿en las rutinas BCD se obtiene la descomposicion de los Bytes que quieras en unidades,decenas ,centenas........ pero del equivalente decimal,no es así?
Si es así no me serviría porque yo necesito mantener el numero en hexadecimal, si tengo en un registro 00011110 (1E en hexadecimal) necesito obtener en sendos registros (000000001) (00001110).
Si estoy confundido por favor decirlo.

Estoy trabajando en ASM.

Gracias por vuestro tiempo
Título: RE: descomponer un Byte en unidades,decenas..
Publicado por: todopic en 27 de Marzo de 2005, 13:23:00
Hola Lolos, esto es mas facil todavia! Sonrisa Gigante
solo tienes que tomar los cuatro bits de la derecha (menor peso), que serian las unidades, les haces un and con b"00001111" o 0f, y obtienes solo las unidades... lo almacenas en un registro, por ejemplo unidad..

luego, a tu numero "original", le haces SWAPF, con lo que las decenas, pasan ahora a estar en la posicion baja, aplicas nuevamente la mascara and b"00001111" y obtienes las decenas, las guarda en DECENA...

esero se entienda ok?

suerte!

Norberto