TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: hqv en 07 de Julio de 2005, 22:00:00
-
Hola amigos del foro:
Mi consulta es la siguiente:
tengo problemas al trasferir un valor entre main y la función relacionada con la interrupción RB0.
LAs trato de transferir por variable y no me resulta.....y por dirección tampoco..
debe ser que tenga algun problema con los * o & y donde van ubicados...
parte del programa es el siguiente:
main()
{
int x=1;
unsigned long int z; //recepcion
printf("Dentro de main x =%d
", x);//// Aqui indica x=1.
while(1)
{
}
}
#int_ext
int encendido(int x)
{
int tx=0;
*x=1;
printf("pase por aqui
"
;
printf("valor x= %d valor *x = %d
", x, *x );// aqui indica x=0 y *x=0.
switch(*x)
{
printf("hola héctor
"
;
case(1)://ENCENDIDO
{
output_high(PIN_A5);//
output_low(PIN_A0);
*x=0;
ext_int_edge(H_to_L);// interrupcion ALTO a BAJO
output_high(PIN_D2);
enable_interrupts(INT_RDA);
tx=0;
return(tx);
break;
}
case(0)://APAGADO
{
output_low(PIN_D2);
output_low(PIN_A5);
output_High(PIN_A0);
*x=1;
ext_int_edge(L_to_H);//interrupcion BAJO a ALTO
disable_interrupts(INT_RDA);
tx=1;
return(tx);
break;
}
}//Fin switch
}//Fin interrupción ext encendido
Imprimo en la pantalla los valores de x dentro de main y resulta x=1, activo la interrupción RB0 , entro en la interrupción y imprimo x y *x y el resultado es x=0 y
*x=0, debiendo ser x=1 y *x =1, ya que dentro de la interrupcion RB0 asigno a *x el valo de 1.
se que tengo algo malo...
me podrían edxplicar para tenerlo claro eso de las transferencia de variables....
muchas gracias
hq
-
¿Porqué no declaras la variable fuera del main para que su contexto sea global?
De esa manera todas las funciones del programa podrán usarla sin problemas, e incluso la entrada y salida de la interrupción usará menos ciclos de reloj al no tener que hacer respaldo de esa variable.
-
gracias nocturno66 por la respuesta que me diste me sirvió...
hq