como convierto de binario a bcd el modulo adres???

hola a todos... estoy en terminando un trabajo que consiste en hacer una conversiona a/d y mostrarla por unos displays, el problema que tengo es con la rutina de binario a bcd ya que la conversion queda visualizada por el ADRESL y el ADRESH, y la mayor conversion es de 1024 mi problema es este, como desfragmento este ADRESL y ADRESH para sacar unidades, decenas, centenas y unidades de mil.... toda ayuda se las agradecere..... ha otra cosa el programa es en assembler ya que soy estudiante y no puedo utilizar otro mas que ese. y manejo el pic 18f452 aunque esto no tiene mucha importancia... bueno gracias por su atensión..
 
para que necesitas pasar de binario a bcd. Pasa de binario a 7seg y conecta el display directamente al uC. Yo en assembler no te sabria decir porque se muy poco pero en C si
 
cubeusk dijo:
para que necesitas pasar de binario a bcd. Pasa de binario a 7seg y conecta el display directamente al uC. Yo en assembler no te sabria decir porque se muy poco pero en C si

----------------------------------------------------------------------------------------------------------------
hola muchas gracias por tu atensión, mira el problema es que soy estudiante y bueno este es un trabajo el cual se debe hacer una conversion a/d, luego se hace una conversion de binario a bcd para luego con otra rutina visualizarlo por cuatro displays consecutivamente. ya todo esta hecho el mi problema es la parte de binario a bcd, no la hace bien y por esta razon muestra valores erroneos.... la verdad la estoy haciendo con restas sucesivas.... de todas maneras gracias :D
 
a mi me interesaria pasar de binario a bcd pero en C ya me canse de intentar y no lo logro no se si hay una instruccion que lo haga o que agradeceria la ayuda por favor...
 
hola amigo

la forma mas facil en C seria que hicieras divisiones sucesivas y te vayas quedando con el residuo para el siguiente bit. claro es una forma muy lenta pero es lo mas logico y sencillo de programar.

En ensambler puedes hacer lo mismo, pero tambien podrias hacer una rutina de corrimiento de bits y ajuste BCD es la rutina mas rapida que conozco y creo que ya se han comentado antes en este foro. saludos
 
Yo uso esta subrutina:

Código:
// ---------------------------------------------------------------------
//	b2bcd.- Convierte un numero de 16 bits con signo
//		de binario a BCD
// ---------------------------------------------------------------------
void b2bcd(signed int dato){

n=dato;
if (n < 0) {
	n = -n;
}

for ( a = -1; n >= 0; n -= 10000 ) ++a;
for ( b = 10; n <  0; n += 1000  ) --b;
for ( c = -1; n >= 0; n -= 100   ) ++c;
for ( d = 10; n <  0; n += 10    ) --d;
}

El resultado se devuelve en las variables a, b, c, d, y n que normalmente las declaro como globales char o int de 8 bits con excepcion de n que es int con signo de 16 bits

Saludos...
 
Atrás
Arriba