domingo, 16 de octubre de 2016

Ámbito de las variables (MikroC).


Hablemos un poco del ámbito de las variables.

Variables globales son aquellas a las que se puede acceder desde cualquier parte del programa y desde cualquier subrutina, función o interrupción, estas variables están presentes durante toda la ejecución del programa.
Variables locales son aquellas a las que se pueden acceder solamente en la subrutina, función o interrupción en donde se las creo, estas variables son creadas al inicio de la rutina y destruidas al terminarla.
 Elegir correctamente el ámbito de las variables ayuda a optimizar el manejo de la memoria ram del uC.
Las variables locales al existir solamente en la rutina donde fueron creadas dan la posibilidad de reusar el espacio de ram que usan en distintas rutinas mientras que las variables globales siempre están presentes y el espacio que ocupan en la ram no se libera hasta que termine el programa.
Ejemplo 1.
void main()
{
   unsigned short contador;   //variable local
   portd=0;
   trisd=0;                   //puerto D como salida
   while(1)
   {
      for(contador=0;contador<10;contador++)
      {
         portd=contador;
         delay_ms(500);
      }
   }
}
 
Ejemplo 2.
unsigned short n=0;                           //variable global
void contador_display()
{
   unsigned short estado_entrada;      //variable local
   estado_entrada=portb.rc0;
   if(estado_entrada==0)
   {
      if(n>9){n=0;}
      portd=n;
   }
}
void main()
{
   unsigned short i=1;                         //variable local
   option_reg.not_rbpu=0;                 //pull-up del puerto b habilitado
   portc=0;
   portd=0;
   trisc=0;                                           //puerto C como salida
   trisd=0;                                           //puerto D como salida
   while(1)
   {
      contador_display();
      n++;
      portc=i;
      if((i=i*2)==0)
      {
         i=1;
      }
      delay_ms(500);
   }
}


No hay comentarios.:

Publicar un comentario