Autor Tema: como configurar el valor de un puerto en otro antes de ejecutar una funcion  (Leído 1888 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
cordial saludo, quisiera saber si hay una forma de configurar un puerto antes de ejecutar el programa para que cuando este puerto cambie tambien lo haga el otro.
tengo porta y portb asi;


porta =0xff
para igualarlo podria hacer..
portb =porta;

podria hacer esto pero en una variable global?
lo que pasa es que no siempre lo necesitare entonces deseo hacer un cambio en el curso del programa para hacerlo solo cuando lo necesite.
se que podria colocar muchos "if" para hacerlo, pero el programa se repite mucho y la idea es reducir codigo.
de antemano Gracias.
Si algo parece complicado... es por que esta mal explicado.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como configurar el valor de un puerto en otro antes de ejecutar una funcion
« Respuesta #1 en: 16 de Abril de 2022, 12:50:56 »
No...

Tampoco tiene sentido, si ambos puertos van a cambiar de la misma forma, entonces conecta todo a un solo puerto.
Si queres hacerlo y repetir lo menos posible, create una función que modifique ambos puertos:

Código: C
  1. void cambiarpuertos(uint8_t var) {
  2.   PORTA = var;
  3.   PORTB = var;
  4. }

Y respecto a que no siempre quieras hacerlo, lo mejor es que trates de explicarlo con un ejemplo. No veo donde deberias poner tantos ifs..

Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como configurar el valor de un puerto en otro antes de ejecutar una funcion
« Respuesta #2 en: 16 de Abril de 2022, 13:12:15 »
No...

Tampoco tiene sentido, si ambos puertos van a cambiar de la misma forma, entonces conecta todo a un solo puerto.
Si queres hacerlo y repetir lo menos posible, create una función que modifique ambos puertos:

KILLERJC, gracias por responderme, entonces colocare una varable y la comparto con el (los) puertos que necesite, ahora tiene sentido.
en la expresion "uint8_t var" que funcion cumple la "t" o en casos se utiliza, yo siempre uso "uint8 var"
lo hago asi
Código: C++
  1. void cambiarpuertos(uint8_t g)
  2.     {
  3.       PORTA = g;
  4.       PORTB = g;
  5.     }
y me sale error , programo en ccs
« Última modificación: 16 de Abril de 2022, 13:19:50 por johenrod »
Si algo parece complicado... es por que esta mal explicado.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como configurar el valor de un puerto en otro antes de ejecutar una funcion
« Respuesta #3 en: 16 de Abril de 2022, 14:04:50 »
En el estandar C99 para que los programas sean compatibles en distintos sistemas, se crea el archivo stdint.h.

Por ejemplo...
Un int para un PIC es una variable de 8 bits, para algunas PC es de 16 y para otras 32bits. Entones imagínate creando un contador donde necesitas si o si los 32 bits pero de repente en otra maquina solo usa 16 u 8.... O incluso peor, hay diferencias entre compiladores de PIC.

CCS:
short - 1 bit
char - 8 bits
int - 8 bits
long - 16 bits
long long - 32 bits

XC8:
bit - 1 bit
char - 8 bits
int/short - 16 bits
short long - 24 bits
long long - 32 bits

Imaginate tratar de recordar para cada compilador cuantos bits tiene cada uno.

Para evitar esto esta el archivo stdint.h, el cual dependiendo del sistema va a crear un nuevo "tipo" el cual va a llamar uintn_t (para sin signo-unsigned) o intn_t (con signo-signed)
el _t es para indicar que es un tipo, es decir dentro del stdint.h de CCS en un pic tendrías algo asi:

Código: C
  1. typedef uint8_t int;
  2. typedef int8_t signed int;


Entonces uint8_t es resumidamente un tipo (_t), es decir no es una variable, unsigned (u) , entero (int), de 8 bits ( 8 )

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:como configurar el valor de un puerto en otro antes de ejecutar una funcion
« Respuesta #4 en: 16 de Abril de 2022, 14:06:04 »
...
y me sale error , programo en ccs

Porque es sintaxis de XC8 , para CCS seria:
Código: C++
  1. void cambiarpuertos(int8 g)
  2. {
  3.       output_b(g);
  4.       output_a(g);
  5. }



Desconectado johenrod

  • PIC18
  • ****
  • Mensajes: 276
Re:como configurar el valor de un puerto en otro antes de ejecutar una funcion
« Respuesta #5 en: 16 de Abril de 2022, 18:31:00 »
Citar
Publicado por: KILLERJC


En el estandar C99 para que los programas sean compatibles en distintos sistemas, se crea el archivo stdint.h.

Por ejemplo...
Un int para un PIC es una variable de 8 bits, para algunas PC es de 16 y para otras 32bits. Entones imagínate creando un contador donde necesitas si o si los 32 bits pero de repente en otra maquina solo usa 16 u 8.... O incluso peor, hay diferencias entre compiladores de PIC.

Citar
Publicado por: Eduardo2


Porque es sintaxis de XC8 , para CCS seria:
Código: C++

    void cambiarpuertos(int8 g)
    {
          output_b(g);
          output_a(g);
    }
Muchas gracias a ambos por la enseñanza.
Si algo parece complicado... es por que esta mal explicado.


 

anything