Gå til innhold

[Løst] attiny13a program feil


Anbefalte innlegg

Jeg holder på med et prgram som skal blinke på en led samtidig som den lyser i en annen led. Når en bryter blir aktivert skal leden som blinker forandre frekvens samtidig som den andre leden blir skrud av.

Når jeg starter prgrammet fungerer det fint i utgangspunktet, men når jeg trykker på knappen blir begge ledene av til jeg slipp knappen og den går tilbake til første steg. Hva er det jeg gjør feil? har sett meg ganske blind på følgende kode.

 

#include <avr/io.h>
#include <util/delay.h>

#define PUMP PB0
#define GLOW PB5
#define PREHEAT PB2

#define output_low(port,pin) port &= ~(1<<pin)
#define output_high(port,pin) port |= (1<<pin)
#define set_output(portdir,pin) portdir |= (1<<pin)
#define set_input(portdir,pin) portdir &= ~(1<<pin)

#define bit_get(p,m) ((p) & (m))


int  main(void)
{
    bool preheat = false;
    set_output(DDRB, PUMP);
    set_output(DDRB, PREHEAT);
    set_input(DDRB, GLOW);
    while(1)
    {
    int value = PINB & _BV(GLOW);
        if(value == 0 )
        {
        PORTB = 0b00000100;
        preheat = true;
            _delay_ms(100);
        }
        else
        {
        PORTB = 0b00000000;
        preheat = false;
            _delay_ms(400);
        }
        if(!preheat)
         PORTB = 0b00000001;
    else
        PORTB = 0b00000101;
    _delay_ms(100);
    }
    return 0;
}
 

Endret av Zolo
Lenke til kommentar
Videoannonse
Annonse

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...