[Tecnica] Visualizzare un numero in complemento a due
Michele "O-Zone" Pinassi
o-zone a zerozone.it
Ven 23 Gen 2009 10:07:32 GMT
Grazie a tutti,
ho trovato la soluzione "casereccia":
...
unsigned char buf[2], sign, strTemp[16];
float temp;
// lcdSetPos(ROW3);
DS1631_readTemp(buf);
// Check sign bit
if((buf[0] > 0x80)) {
sign = '-';
/* Negate all bits */
buf[0] = ~buf[0];
buf[1] = ~buf[1] + 1;
} else {
sign = '+';
}
temp = buf[0];
temp += ((buf[1] >> 4) * 0.0625);
ftoa((float)temp, strTemp, 2, 'f');
sprintf(tmpBuf,"t:%c%s°C ",sign, strTemp);
...
e sembra funzionare :-) grazie comunque !!!!
P.S. Se qualcuno č interessato al progettino* a cui sto lavorando, fate un
fischio :-)
* Usando una PIC 18F4455, un DS1631 (termometro), DS1337 (RTC), eeprom
24xx1025, un MPX5500 (sensore di pressione) sto realizzando un moduletto che
mi visualizza su un display LCD data/ora, temperatura, pressione oltre a
memorizzare sulla eeprom, come in un "log", tutte le variazioni del caso.
Questa č la prima fase del progetto. In realtā vorrei arrivare a sostituire
questo affare al termostato di casa :-) e riuscire ad usare un qualche
sistema di comunicazione (infrarossi ? rf ?) per scaricare i dati relativi
alla temperatura/pressione.
Michele
On Thursday 22 January 2009 21:06:43 Szymon Tomasz Stefanek wrote:
> unsigned char b[2];
> b[0] = b2;
> b[1] = b1;
>
> short * p = (short *)b;
>
> printf("FLOAT: %f\n",(double)*p / 256.0);
--
O-Zone ! No (C) since 1996
On the road with VFR VTec 2002 "Vuffy", on the net with Slackware !
Home @ http://www.zerozone.it and photos @
http://myphotos.zerozone.it/user/o-zone
Maggiori informazioni sulla lista
Tecnica