Autor Tema: Como escribir en Hex para leer en Decimal  (Leído 2765 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Como escribir en Hex para leer en Decimal
« en: 20 de Diciembre de 2010, 19:54:18 »
Hola, alguien me puede dar una orientacion, estoy escribiendo en la memoria eeprom del pic una array de datos hexadecimales, luego los leo pero necesito tener estos datos en formato decimal, como puedo hacer esto?

aqui esta parte de mi codigo:
Código: [Seleccionar]
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=20MHz)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)// RS232 Estándar

#include <string.h>
#include <STDLIB.H>
#include <MATH.H>

int Test[] = {0x10, 0x16, 0x10, 0x01, 0x04, 0xae, 0x00, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x17, 0x85 0x00};
int j;

int Buffer[3];
int16 Pag;

void main(){

       for (j = 0; j<2; j++)
            write_eeprom( j, Test[13+j]);

       for (j = 0; j< 2; j++)
            Buffer[j] = read_eeprom(j);

       Pag =  atol(Buffer);

while (TRUE);

}

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como escribir en Hex para leer en Decimal
« Respuesta #1 en: 20 de Diciembre de 2010, 20:17:53 »
 :z) Necesitas crear un string con formato decimal?

Si guardas una variable de 16-bits y luego quieres "re-armarla", usa make16... Lees los 2 bytes que forman la variable, y luego implementas make16. Utiliza la ayuda de CCS para infórmate de make16 y utiliza el buscador.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Como escribir en Hex para leer en Decimal
« Respuesta #2 en: 21 de Diciembre de 2010, 12:15:15 »
Te refieres al codigo BCD en cada 4bits no pasa de 9.
37=    0011 0111
0x56= 1000 0110

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Como escribir en Hex para leer en Decimal
« Respuesta #3 en: 21 de Diciembre de 2010, 16:53:29 »
En este caso he escrito y leeido los elementos 13 y 14 del array en la memoria eeprom, estos elementos (0x17, 0x85) son parte del numero (0x1785)  y su equivalente decimal seria 6021, yo necesito tener este valor decimal en una variable para realizar operaciones matematicas, necesito hacer esta conversion por que los otros elementos con los cuales deseo hacer la operacion estan en decimal, como puedo hacer esto?  :huh:

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Como escribir en Hex para leer en Decimal
« Respuesta #4 en: 21 de Diciembre de 2010, 16:59:51 »
con make16 de CCS, fijate en la ayuda de CCS que esta bien explicado, cualquier cosa, comentas.

SALUDOS!

Claro que si quieres el ANSI-C que te recomiendo mas, seria asi:

Código: C
  1. make16(ValueH,ValueL)  
  2.  
  3. (UINT16)((ValueH & 0xFF)<<8)|(ValueL & 0xFF)
« Última modificación: 21 de Diciembre de 2010, 17:36:34 por LABmouse »

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Como escribir en Hex para leer en Decimal
« Respuesta #5 en: 21 de Diciembre de 2010, 17:08:17 »
Hola LABmouse ; con make16 resolvi mi problema  :-/   :-/

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como escribir en Hex para leer en Decimal
« Respuesta #6 en: 21 de Diciembre de 2010, 19:05:01 »
Si guardas una variable de 16-bits y luego quieres "re-armarla", usa make16... Lees los 2 bytes que forman la variable, y luego implementas make16. Utiliza la ayuda de CCS para infórmate de make16 y utiliza el buscador.

 :?


Aunque como LABmouse, recomiendo usar ANSI C, para los que crezcan en aplicaciones embebidas y se alejen de CCS  :D
No contesto mensajes privados, las consultas en el foro