Habría problema para trabajar con valores negativos con el PIC16F88 ?

#1
Hola, mi duda es la siguiente:
Yo tengo un sensor de Temperatura (MCP9700A) que tiene un margen de medida desde -40ºC hasta +125ºC, los voltios que transmite al PIC16F88 son siempre positivos (el sensor para 0ºC =>Vout=500mV) pero después en el PIC tengo que calcular la temperatura para hacer comparaciones con otros valores. Hay algún problema para trabajar con valores negativos en el PIC? Porque las temperaturas que detectaría el sensor serían negativas.
Hay que modificar algún registro para trabajar con valores negativos?

Perdonad mi ignorancia y gracias por anticipado.
Un saludo!
 
#2
Siempre y cuando uses complemento a 2 no tendras ningun problema, los calculos en su mayoria se hacen directo para valores de 8 bits, donde viene un poco el problema es para valores de 16 y 32 bits por que tienes que hacer rutinas especiales que hagan la operacion, pero afortunadamente Microchip tiene una excelente nota de aplicacion (AN544) que te da las rutinas, solo tienes que copiarlas, pegarlas y comenzar a usarlas

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011088
 
#3
Yo trabajo con valores de 8 bits.
Entonces si he entendido bien, al valor que me da cuando se calcula la temperatura en el PIC tengo que aplicarle el complemento a 2, verdad ?
O sólo hay que usar el complemento a 2 cuando sabes que el valor es negativo ?
Otra preguntita, hay alguna instruccion en el PIC para hacer el complemento a 2 directamente?

Gracias de nuevo.
Un saludo.
 
#4
Nop... tienes que usar peras con peras y manzanas con manzanas... si vas a usar complemento a 2 todos tus numeros deben ser con el metodo de complemento a 2 (positivos y negativos).. desafortunadamente esto limita el valor que puede tomar cada variable por que un bit es usado para indicar el signo (para 8 bits seria de +127 a -128)

En cuanto a la instruccion para hacer el complemento a 2 me parece que no existe... primero tienes que hacer un COMF y despues sumar 1 (ADDLW o ADDWF) o incrementar en 1 el registro (INCF)
 
Arriba