TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: zer0007 en 23 de Junio de 2005, 03:29:00

Título: Variable
Publicado por: zer0007 en 23 de Junio de 2005, 03:29:00
Hay alguna manera de usar una variable de un modulo dentro de otro (declararla en uno pero poder usarla en el main.
Gracias
Título: RE: Variable
Publicado por: omix en 23 de Junio de 2005, 03:37:00
Si es posible solo tienes que declararla en el modulo como haces normalmente y en el otro modulo la declaras como extern, para que puedas tener acceso a ella. Por ejemplo si tienes en modulo.c una variable declarada asi: char mivariable; en el main.c tendrias que poner extern char mivariable; y con eso tendrias acceso a la variable declarada en el modulo.c.

Un saludo.
Título: RE: Variable
Publicado por: zer0007 en 23 de Junio de 2005, 03:43:00
Muchas gracias
Título: RE: Variable
Publicado por: roc364 en 23 de Junio de 2005, 14:10:00
Tambien podes declarar una variable afuera de cualquier funcion, y esta pasara a ser una variable global, es decir la misma para cualquier funcion que la use.

por ejemplo:

#include <16F84a.h>
#use delay(clock=10000000)
#fuses XT,NOWDT

long ppr;
long contador;                  //estas son variables GLOBALES

void tirar_pulso(void)  
{
   output_bit (pin_A0,1);
   delay_ms (100);
   output_bit (pin_A0,0);
}


#int_ext
void contar_pulsos()
{
   if (input(pin_a2)) contador++;      
   output_bit (pin_b1,!input(pin_a2));
   output_bit (pin_b2,input(pin_a2));  
}


void main()
{
   //setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
   ext_int_edge( L_TO_H );
   enable_interrupts(INT_ext);
   enable_interrupts(GLOBAL);

   ppr = 370;    
   contador = 0;

   while (true)
   if (contador >= ppr)
      {
         contador = 0;
         tirar_pulso();
      }
}
Título: RE: Variable
Publicado por: RaDoN en 24 de Junio de 2005, 13:37:00
Yo uso por ejemplo para los "for", la variable contador, digamos "i" de manera global, asi se ahorra memoria al poder usarlas en todas las funciones, o eso creo no? Flash