Autor Tema: Interrupcion por RB0 que no funciona (16f84a)  (Leído 1888 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
Interrupcion por RB0 que no funciona (16f84a)
« en: 02 de Agosto de 2010, 14:57:34 »
Hola a todos, intento hacer una interrupcion simple con el siguiente programa en un 16f84a y no funciona. En cambio el mismo programa en un 16f877, funciona correctamente, la unica diferencia es que en el f84a utilizo el port A, mientras que en el f877 utilizo otro puerto. ¿Que ocurre?.

De nuevo gracias a todos por vuestra colaboracion.

Código: [Seleccionar]
#include <16f84a.h>            //pic a utilizar         
#fuses XT,NOWDT,NOPROTECT,PUT    //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#use standard_io(b)
#use fixed_io(a_outputs=PIN_A0)



///LLAMADA FUNCION INTERRUPCION
#INT_EXT
void IntRB0()
{
   output_high(PIN_A0);
   delay_ms(10000);
   output_low(PIN_A0);     
}
     
///PROGRAMA
void main(void)
{
   enable_interrupts(int_ext);      //activar interrupcion externa
   ext_int_edge(L_TO_H);         //configuracion:interrupcion cuando señal esta en alta
   enable_interrupts(GLOBAL);      //todas las interrupciones desactivadas

   for(;;){}   //bucle infinito esperando interrupcion
}

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Interrupcion por RB0 que no funciona (16f84a)
« Respuesta #1 en: 02 de Agosto de 2010, 15:09:51 »
Saludos ramirez

Pues no se que pasa con el simulador que estas utilizando, porque a mi me funciona perfectamente, de pronto, puede que estes simulando mal, debido a que el microcontrolador espera 10s para salir de la interrupción según el código que estás utilizando.

Código: [Seleccionar]
///LLAMADA FUNCION INTERRUPCION
#INT_EXT
void IntRB0()
{
   output_high(PIN_A0);
   delay_ms(10000);
   output_low(PIN_A0);     
}


Para mejorar yo le pondría 1000ms y no 10000ms
Un saludo desde Pereira - Colombia

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
Re: Interrupcion por RB0 que no funciona (16f84a)
« Respuesta #2 en: 02 de Agosto de 2010, 15:16:29 »
Gracias por tu respuesta Chenao, efectivamente, lo que deseo es que una vez que suelto el pulsador en RB0, obtengo una temporizacion de 10 segudnos por RA0.

Gracias de nuevo

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Interrupcion por RB0 que no funciona (16f84a)
« Respuesta #3 en: 02 de Agosto de 2010, 15:24:47 »
Saludos ramires

De todas formar con el pulsador funciona perfecto. Acá adjunto la simulación en el proteus 7.2.
Un saludo desde Pereira - Colombia

Desconectado ramirez

  • PIC16
  • ***
  • Mensajes: 195
Re: Interrupcion por RB0 que no funciona (16f84a)
« Respuesta #4 en: 02 de Agosto de 2010, 18:01:11 »
Gracias Chenao, ahora funciona correctamente, he hecho un fichero nuevo y todo ok.

Gracias por tu colaboracion.


 

anything