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