Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

15/07/2008 #1


Pasar de hexadecimal a decimal en 8051(nº de 2 bytes)
muy buenas! el tema es que se realizar un programa que realice la conversion de hexadecima a decimal siempre que el numero no exceda de 64h. La cuestion es que me gustaria realizar uno q transformadorrme numeros como 1ED y similares. Estoy encajonado y no se me ocurre como hacerlo! Me podrian echar una mano? Gracias
15/07/2008 #2
Moderador

Avatar de Chico3001

Usa el algoritmo de corrimiento y suma, en esta pagina explican como funciona y te dan un ejemplo para PIC, solo tendrias que exportar el algoritmo a 8051

http://micropic.wordpress.com/2007/0...corre-y-suma3/
16/10/2008 #3


Estoy trabajando en un proyecto, y no me quiero entretener mucho con este tema. Les agradeceria si alguien me podria poner un ejemplo a ayudarme para realizar un programa para pasar un numero HEXADECIMAL a DECIMAL en C.

Querria pasar por ejemplo 0x1F y que me dara resultado: 31

De 0x10 en hexadecimal que me lea 16 en decimal, y asi con todos los numeros.

Muchisimas gracias.
20/10/2008 #4


Re
Esta funcion convierte de hexa a bcd. Con solo cambiar los tamaños de las variables se puede alcanzar mayor rango. Tengo varias rutinas de este tipo en asembler para el 8051. Espero q les sea util.

Código:
int conversion (int dato){               //dato = dato a convertir
unsigned char indice;
int resultado, entero, resto;
if (dato>=10){
	while (dato>=10){
		entero = dato / 10;
		resto=dato - (entero*10);
		resto=resto<<indice;
		resultado|=resto;
		indice+=4;
		dato=entero;
		}
	entero=entero<<indice;
	resultado|=entero;
	}
else resultado=dato;
return resultado;                        //resultado de conversion
}
02/03/2011 #5


Hola, andaba por aqui y me topé con el codigo. Lo corrí tal cual pero no funcionó, le hice unas pequeñas modificaciones y quedó perfecto. Quedó de la siguiente manera:

int conversion (int dato){ //dato = dato a convertir
unsigned char indice=0;
int resultado, entero, resto;
resultado=0;
if (dato>=10){
while (dato>=10){
entero = dato / 10;
resto=dato - (entero*10);
resto=resto<<indice;
resultado|=resto;
indice=4;
dato=entero;
}
entero=entero<<4;
resultado|=entero;
}
else resultado=dato;
return resultado; //resultado de conversion
}

solo inicialice las variables en cero y modifiqué el corrimiento "indice"
06/06/2013 #6


Conversión Hex -> Dec
Primero busca cada nible, segun la posición de peso (unidad, decena, centena...) a cada una le corresponde un valor Dec, que luego procederas a sumar para ir configurando el numero definitivo...
ve este ejemplo:
Convertir 5AFh a Dec usando tablas.
500h ---> 1280d
0A0 ---> 160d
00F ---> 15d
5AFh ---> 1455d

Fijate que tienes que escanear el nible o digito y saber su valor con posición incluido en una gran tabla, lo que procede luego es Sumar en decimal todo el resultado almacenado en buffer.

Espero te sirva...
José Czwienczek
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.