Autor Tema: ACTIVAR UNA SALIDA CON ANTIREBOTE  (Leído 2526 veces)

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

Desconectado Tempus

  • PIC10
  • *
  • Mensajes: 37
ACTIVAR UNA SALIDA CON ANTIREBOTE
« en: 25 de Abril de 2009, 08:02:19 »
Hola quisiera hacer algo que para vosotros es muy sencillo que al pulsar rao se active rbo

#include <16F84A.h>

#FUSES NOWDT
#FUSES XT
#FUSES NOPUT
#FUSES NOPROTECT

#byte PA=0x05
#byte PB=0x06

#use delay(clock=4000000)

 
void main()
{
   int i=0;
   SET_TRIS_A(0xFF);
   SET_TRIS_B(0x00);

   
    while(1)
   {
      if (INPUT(PIN_A0)
      {
         while (!INPUT(PIN_A0));
         delay_ms(5);
         while (INPUT(PIN_A0));
         delay_ms(5);
         b0=1
     
      }
       
   }   
}

gracias por vuestra ayuda

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: ACTIVAR UNA SALIDA CON ANTIREBOTE
« Respuesta #1 en: 25 de Abril de 2009, 15:13:23 »
Código: C#
  1. if(input(pin_a0))
  2. {
  3.  delay_ms(50);//antirrebote
  4.  if(input(pin_a0))
  5.  {
  6.   while(input(pin_a0));//Si quiero que se active la salida al levantar la presion del pulsador
  7.   output_high(pin_b0);
  8.   while(input(pin_a0));// Si quiero que se mantenga la salida asi hasta que se deje de presionar el pulsador
  9.  }
  10. }
El papel lo aguanta todo

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: ACTIVAR UNA SALIDA CON ANTIREBOTE
« Respuesta #2 en: 25 de Abril de 2009, 17:59:57 »
Hola Tempus, lo que yo hago es:

Código: [Seleccionar]
int1 flag=0;
if(input(pin_a0)){
   while(input(pin_a0)){
      delay_ms(20);
   }
   output_high(pin_rb0);
   flag=1;   // bandera de activación b0
}

quizá pueda servirte eso, la flag te indica que se ha entrado a la rutina, en si que se ha pulsado, para talvez tenerlo en cuenta con otras condiciones, como me ibas diciendo por chat

un saludo paisano, espero pueda servirte
.


 

anything