TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: johenrod en 17 de Abril de 2022, 14:04:01

Título: como incrementar una y decrementar otra variable a partir de una 3a variable
Publicado por: johenrod en 17 de Abril de 2022, 14:04:01
cordial saludo,,
Tan amables podrian ayudarme,, tengo una variable en 0 y otra en 255 requiero que con otra que podria comenzar digamos de 0 -100, a medida que esta ultima se incremente la que este en 255 rebaje y la que esta en 0 incremente ambas simultaneamente, es posible?
Gracias de antemano.
Título: Re:como incrementar una y decrementar otra variable a partir de una 3a variable
Publicado por: KILLERJC en 17 de Abril de 2022, 16:24:20
la palabra "simultaneamente" es para tomarla en pinzas, nada es simultaneo... Pero si...

Como la primera comienza con 0 y la que se incrementa va de 0 a 100 (La llamamos Var), entonces no tiene sentido crear una nueva variable usas la misma... es decir no tiene sentido hacer 0 + Var
La segunda creas una variable y haces 255 - Var.

O si lo queres separado:

Código: C
  1. Incrementa = Var;
  2. Decrementa = 255 - Var;

255 es 0xFF en hexadecimal... ni vale la pena restar, solo es tomar el negado (complemento a uno) del valor

Código: C
  1. Incrementa = Var;
  2. Decrementa = ~Var;

Como observaras no vale ni la pena tener otra variable, con Var ya tenes ambas ( Var y ~Var) ...
PD: El complemento funciona unicamente con variables de 8 bits!, sino es una resta
Título: Re:como incrementar una y decrementar otra variable a partir de una 3a variable
Publicado por: DominusDRR en 17 de Abril de 2022, 23:11:41
cordial saludo,,
Tan amables podrian ayudarme,, tengo una variable en 0 y otra en 255 requiero que con otra que podria comenzar digamos de 0 -100, a medida que esta ultima se incremente la que este en 255 rebaje y la que esta en 0 incremente ambas simultaneamente, es posible?
Gracias de antemano.

Esto que quieres hacer, básicamente es multiplicar tu variable por una pendiente (Sea positiva o negativa) y sumarle una variable. (Suponiendo que los cambios son lineales)

La aplicación práctica es cuando necesitas acondicionar una señal de analógica de voltaje al ADC de un microcontrolador (no se si sea este tu caso)


Para solucionar eso, te recomiendo echarte un repaso de la solución de sistemas de dos ecuaciones con dos incógnitas.


Título: Re:como incrementar una y decrementar otra variable a partir de una 3a variable
Publicado por: Picuino en 19 de Abril de 2022, 09:56:24
Creo que esto es lo que estás buscando.

Código: C
  1. unsigned int var1, var2, var3;
  2.  
  3. var1 = 50;  // Cualquier valor entre 0 y 100
  4.  
  5. var2 = (var1*255)/100;
  6. var3 = 255 - var2;
Título: Re:como incrementar una y decrementar otra variable a partir de una 3a variable
Publicado por: johenrod en 19 de Abril de 2022, 10:20:36
Citar
Publicado por: KILLERJC
« en: 17 de Abril de 2022, 16:24:20 »

la palabra "simultaneamente" es para tomarla en pinzas, nada es simultaneo... Pero si...

Como la primera comienza con 0 y la que se incrementa va de 0 a 100 (La llamamos Var), entonces no tiene sentido crear una nueva variable usas la misma... es decir no tiene sentido hacer 0 + Var
La segunda creas una variable y haces 255 - Var.

    Incrementa = Var;
    Decrementa = 255 - Var;

Citar
Publicado por: Picuino
« en: Hoy a las 09:56:24 »

Creo que esto es lo que estás buscando.

    unsigned int var1, var2, var3;
     
    var1 = 50;  // Cualquier valor entre 0 y 100
     
    var2 = (var1*255)/100;
    var3 = 255 - var2
Gracias por sus respuestas, cada vez aprendo mas de ustedes, ambas formas las aplico y me dan perfecto.
Gracias por ayudarme.
Título: Re:como incrementar una y decrementar otra variable a partir de una 3a variable
Publicado por: Robert76 en 19 de Abril de 2022, 14:02:24
La solución más simple, es la que plantea KILLER.
Título: Re:como incrementar una y decrementar otra variable a partir de una 3a variable
Publicado por: johenrod en 16 de Junio de 2022, 22:49:08
cordial saludo, perdonen mi ignorancia en algo que podria ser logico.
hice lo siguiente..
Código: C++
  1. unsigned int8 conta=254;
  2.       unsigned int8 Incrementa = conta;
  3.       unsigned int8 Decrementa = ~conta;
  4.       printf("Incrementa %d.\n", Incrementa);
  5.       delay_ms(1000);
  6.       printf("Decrementa %d.\n", Decrementa);
  7.       delay_ms(1000);
y obtengo..

Incrementa -2
Decrementa 1


no deberia ser 254 y 1?
que no se?
Título: Re:como incrementar una y decrementar otra variable a partir de una 3a variable
Publicado por: DominusDRR en 16 de Junio de 2022, 23:05:42
cordial saludo, perdonen mi ignorancia en algo que podria ser logico.
hice lo siguiente..
Código: C++
  1. unsigned int8 conta=254;
  2.       unsigned int8 Incrementa = conta;
  3.       unsigned int8 Decrementa = ~conta;
  4.       printf("Incrementa %d.\n", Incrementa);
  5.       delay_ms(1000);
  6.       printf("Decrementa %d.\n", Decrementa);
  7.       delay_ms(1000);
y obtengo..

Incrementa -2
Decrementa 1


no deberia ser 254 y 1?
que no se?

Recuerdo que en C con %d, el printf utiliza variables tipo char (Con signo), por lo tanto el octavo bit es el signo,  los valores a imprimir sería de 0 a 127, en tu caso 254 sería un número negativo.

Recuerdo que había una manera de hacerlo, voy  a buscarlo y si encuentro algo, lo publico.
Título: Re:como incrementar una y decrementar otra variable a partir de una 3a variable
Publicado por: DominusDRR en 16 de Junio de 2022, 23:07:23
cordial saludo, perdonen mi ignorancia en algo que podria ser logico.
hice lo siguiente..
Código: C++
  1. unsigned int8 conta=254;
  2.       unsigned int8 Incrementa = conta;
  3.       unsigned int8 Decrementa = ~conta;
  4.       printf("Incrementa %d.\n", Incrementa);
  5.       delay_ms(1000);
  6.       printf("Decrementa %d.\n", Decrementa);
  7.       delay_ms(1000);
y obtengo..

Incrementa -2
Decrementa 1


no deberia ser 254 y 1?
que no se?

Recuerdo que en C, el printf utiliza variables tipo char (Con signo), por lo tanto el octavo bit es el signo,  los valores a imprimir sería de 0 a 127, en tu caso 254 sería un número negativo.

Recuerdo que había una manera de hacerlo, voy  a buscarlo y si encuentro algo, lo publico.

Tal vez lo correcto sea asi:

Código: C
  1. printf("%u",x);

Fuente: https://stackoverflow.com/questions/27547377/format-specifier-for-unsigned-char (https://stackoverflow.com/questions/27547377/format-specifier-for-unsigned-char)

Pero CCS me parece que no obedece todas las normas del lenguaje C.
Título: Re:como incrementar una y decrementar otra variable a partir de una 3a variable
Publicado por: johenrod en 16 de Junio de 2022, 23:20:18
DominusDRR
hice el cambio y ahora imprime correctamente, muchas gracias.
que informacion busco para entender el tema?


Código: C++
  1. unsigned int8 conta=254;
  2.       unsigned int8 Incrementa = conta;
  3.       unsigned int8 Decrementa = ~conta;
  4.       printf("Incrementa %u.\n", Incrementa);
  5.       delay_ms(1000);
  6.       printf("Decrementa %u.\n", Decrementa);
  7.       delay_ms(1000);
Título: Re:como incrementar una y decrementar otra variable a partir de una 3a variable
Publicado por: DominusDRR en 17 de Junio de 2022, 09:27:36
DominusDRR
hice el cambio y ahora imprime correctamente, muchas gracias.
que informacion busco para entender el tema?


Código: C++
  1. unsigned int8 conta=254;
  2.       unsigned int8 Incrementa = conta;
  3.       unsigned int8 Decrementa = ~conta;
  4.       printf("Incrementa %u.\n", Incrementa);
  5.       delay_ms(1000);
  6.       printf("Decrementa %u.\n", Decrementa);
  7.       delay_ms(1000);

Pues a parte de seguir un curso de C, deberías leer el manual de usuario de tu compilador.