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

Temas similares

03/08/2010 #1


Ayuda con arreglo, o vector en C que se corresponda con puertos.
Hola gente, como andan?
Estoy intentando definir un vector o arreglo en C cuyas posiciones se correspondan con algunos puertos de un pic.

Es decir, el puerto A que tome el valor de vector[0] y a la ves que vector[0] tenga un nombre en particular.

Lo quiero usar para prender y apagar luces y me gustaria poder llamar al vector para poder modificar los estados de todas las luces y poder llamar por separado a cada luz por su adjetivo, ya sea luz1 o luzgarage, en lugar de llamar por su posicion el vector. Espero que se me comprenda.

Basicamente lo que yo intente fue lo siguiente, pero aparentemente no es valido.

Código:
char reles[10];

#define luz1		RC5
#define reles[0]	luz1
y tambien

Código:
char reles[10];

#define luz1		RC5
#define reles[0]	RC5
Bueno eso es todo, si a alguien se le ocurre alguna manera es bienvenida.
Saludos
04/08/2010 #2

Avatar de cosmefulanito04

Respuesta: Ayuda con arreglo, o vector en C que se corresponda con puertos.
Estoy casi seguro que definir un vector o una variable no es valido:

Código:
#define reles[0]	 RC5
Pero lo que podrias hacer es esto, supongamos que el puerto A y esta compuesto de 8 bits A0-A7, podrias hacer este define:

Código:
#define a0	 0
#define a1	 1
....
Entonces despues cuando quieras encender un led, haces esto:

Código:
...
reles[a0]=1;
reles[a1]=1;
...
Y despues tendras que trasladar eso al puerto A.
04/08/2010 #3

Avatar de ByAxel

Respuesta: Ayuda con arreglo, o vector en C que se corresponda con puertos.
Que tal si usas Arrays + Enumeraciones

Código:
enum Color{Rojo, Verde};
...
...
LEDs[Rojo] = 1;
LEDs[Verde] = 0;
luego lo pones al puerto.

otra es usando estructuras

Código:
struct Dat{
    boolean Rojo;
    boolean Verde;
    int :6;
}LEDs;
...
...
LEDs.Rojo = 1;
Pero que C estás usando? si es el CCS tiene una manera fácil de decirle que la estructura creada sea los pines de un puerto, de esa manera al modificar algo de una estructura se estará modificando directamente al puerto, ... si vez la librería del LCD, FlexLCD te vas a dar cuenta.

Saludos...
04/08/2010 #4


Respuesta: Ayuda con arreglo, o vector en C que se corresponda con puertos.
Estoy usando el compilador Hi-Tech C18, me parece mejor que ccs ya que es ANSI C
Saludos. Si alguien tiene alguna idea comporbada bienvenida sea..saludos
Gonzalo
04/08/2010 #5

Avatar de ByAxel

Respuesta: Ayuda con arreglo, o vector en C que se corresponda con puertos.
el puerto A que tome el valor de vector[0] y a la ves que vector[0] tenga un nombre en particular.
Seria así:
Código:
char vector[5];
#define VectorA vector[0]
...
...
PORTA = VectorA;
llamar por separado a cada luz por su adjetivo, ya sea luz1 o luzgarage, en lugar de llamar por su posicion el vector
Recuerda que el arreglo definido es del tipo char (8 bits), así que para usar individualmente cada bit no es tan simple, por ejemplo para encender el bit 0:
Código:
#define Luz1 0
#define vector reles[0]
...
...
vector = 1 << Luz1;
PORTB = vector;
O también hacerlo en una macro.

Pero todo junto, lo veo imposible, tendrías que hacer una estructura e intentar hacer que dicha estructura sea un puerto en especial, entonces cuando modifiques la estructura también lo hará el puerto, ojo que la estructura también puede ser un arreglo o hacer un nuevo tipo con la estructura.
Estoy volando un poco, luego veo si hay más opciones...

Saludos.
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.