Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

29/03/2014 #1


Introducir interrupcion en programa de encendido de leds
Buenas compañeros.
Tengo un programa que funciona bien, consiste en que cuando pulsas un botón se enciende un led, si lo vuelves a pulsar se enciende el siguiente.
Si dejas presionado el pulsador no ocurre nada hasta que se desconecta y se vuelve a pulsar para encender el siguiente.

Son 8 leds y se enciende uno cada vez que se pulsa el botón.

Lo que necesito es que si después de haber encendido el primero, si se tarda mas de 20 segundos en pulsar de nuevo el botón, en vez de encenderse el led 2º pase directamente a encender el 3º.

El PIC es 16f877A, aunque quería pasarlo mas tarde a sistema arduino

Os pego el código de lo que tengo hecho que puede facilitar la tarea:

Código:
int num=0;
int state=0;

void main()
{

inicializar_puertos();

    output_b(0b00000000);
    while(true)
        {    
        if (num<8)
            {
            if (!input(pin_A0))
                {
                while (state==0)
                    {
                    num=num+1;
                    state=1;
                    }
                while (state==1)
                    {
                    if (input(pin_A0))
                    {
                        state=0;
                    }
                    }
                }
            }



        switch (num)
            {
                case 0: output_b(0b00000000);
                break;
                case 1: output_b(0b00000001);
                break;
                case 2: output_b(0b00000011);
                break;
                case 3: output_b(0b00000111);
                break;
                case 4: output_b(0b00001111);
                break;
                case 5: output_b(0b00011111);
                break;
                case 6: output_b(0b00111111);
                break;
                case 7: output_b(0b01111111);
                break;
                case 8: output_b(0b11111111);
                break;
            }
    }
}

void Inicializar_Puertos()
{
set_tris_b(0b00000000);
set_tris_a(0b11111111);
}
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.