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

Temas similares

15/01/2009 #1


Habría problema para trabajar con valores negativos con el PIC16F88 ?
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!
15/01/2009 #2
Moderador

Avatar de Chico3001

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/id...pnote=en011088
16/01/2009 #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.
16/01/2009 #4
Moderador

Avatar de Chico3001

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)
16/01/2009 #5


Muchas gracias por la información!
17/01/2009 #6

Avatar de Meta

Negar W.


Hallando su complemento a 2, es decir, restándole de cero.

Código:
sublw 0                ; Ya que 0 - (W) = -(W)
18/01/2009 #7
Moderador

Avatar de Chico3001

Meta dijo:
Negar W.


Hallando su complemento a 2, es decir, restándole de cero.

Código:
sublw 0                ; Ya que 0 - (W) = -(W)
Mira... esa nunca se me habia ocurrido.... tendre que implementarla para la proxima ocasion...
18/01/2009 #8

Avatar de Meta

Ojalá le funcione.
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.