Autor Tema: INTERRUPCION RBO PIC 16F877A  (Leído 1561 veces)

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

Desconectado robertocarlosreyessalgado

  • PIC10
  • *
  • Mensajes: 2
INTERRUPCION RBO PIC 16F877A
« en: 21 de Octubre de 2016, 15:01:50 »
tema solucionado
« Última modificación: 22 de Octubre de 2016, 15:05:42 por robertocarlosreyessalgado »

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re:INTERRUPCION RBO PIC 16F877A
« Respuesta #1 en: 21 de Octubre de 2016, 20:56:46 »
Hola robertocarlosreyessalgado, primero que nada te invito a que leas las REGLAS DEL FORO

Y luego, a que en la manera de lo posible, las respetes. Desde ya muchísimas gracias por colaborar.

Un saludo.

Atte. CARLOS.


La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado robertocarlosreyessalgado

  • PIC10
  • *
  • Mensajes: 2
Re:INTERRUPCION RBO PIC 16F877A
« Respuesta #2 en: 22 de Octubre de 2016, 11:22:12 »
ya hice la interrupcion por rb0.tengo el siguiente problema . se hace la interrupcion.para todo y enciende la luz que necesito . pero despues de un tiempo vuelve a hacer el programa principal.la idea es que no haga nada hasta que presione nuevamente el button.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:INTERRUPCION RBO PIC 16F877A
« Respuesta #3 en: 22 de Octubre de 2016, 12:31:54 »
ya hice la interrupcion por rb0.tengo el siguiente problema . se hace la interrupcion.para todo y enciende la luz que necesito . pero despues de un tiempo vuelve a hacer el programa principal.la idea es que no haga nada hasta que presione nuevamente el button.

Entonces pienso que lo podes hacer de 2 formas, la interrupcion y sino un simple while.

Ya que la interrupcion es para algo que debe atenderse inmediatamente, y luego volver al programa principal.

Entonces en tu interrupcion, activas una variable de 1 bit para parar el programa.

Código: C
  1. volatile int1 activo = true;
  2.  
  3.  
  4. void interrupcion(void)
  5. {
  6.         activo = false;
  7.         ouput_high(LED);
  8. }
  9.  
  10.  
  11. void main(void){
  12.  
  13.         while(true)
  14.         {
  15.        
  16.                 if(activo)
  17.                 {
  18.                         output_low(PIN_B1);//piston 1
  19.                         output_high(PIN_B2);//piston 2
  20.                         output_high(PIN_B3);//motor
  21.                         delay_ms(300);
  22.                         output_low(PIN_B2);//piston 2
  23.                         output_high(PIN_B1);//piston 1
  24.                         output_high(PIN_B3);//motor
  25.                         delay_ms(300);
  26.                 }
  27.         }
  28. }
Falta la parte de apagar el led y volver a activar el ciclo.

La otra como te digo es usar un while.

Código: C
  1. while(!input_pin(PIN_B0));              // Mientras sea 0 va a quedar encerrado en el while, cuando tenga un 1 va a salir de aca



 

anything