[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