- Labornetzteil AliExpress         
Ergebnis 1 bis 4 von 4

Thema: programm: wie viele male ich den taster betätigt habe

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    31.08.2005
    Beiträge
    53

    programm: wie viele male ich den taster betätigt habe

    Anzeige

    E-Bike
    hallo.
    ich bin ein neuling auf diesem gebiet.
    habe mein erstes programm (in C) für den mikrocontroller gemacht(gehe der anleitung von mikrocontroller.net nach, winavr c). das programm soll zählen wie viele male ich den taster betätigt habe und dies gleich an drei leds ausgeben bzw. anzeigen (binär). da ich drei leds auf dem board haBE soll es bis 7 gehen, wobei die tastenentprellung beachtet werden soll. ich könnte die version von mikrocontroller.net (http://www.mikrocontroller.net/artic...torial#Vorwort) benutzen aber ich wollte meine idee verwirklichen. es funktioniert aber nicht. winavr zeigt keine fehler.

    ich habe das board von myAVR mit ATmega8.
    CODE:

    #include <inttypes.h>
    #include <avr/io.h>
    #include <avr/delay.h> // definiert _delay_ms()
    #include <stdint.h>

    int main(void)
    {

    DDRD=0x00;
    DDRB=0x07;
    DDRD=0x01;

    int i=0;




    if(!(PIND & (1<<PIND2))){

    _delay_ms(100);
    while(1){
    i=i+1;
    }

    if(i==0){
    PORTB=0x00;
    }
    if(i==1){
    PORTB=0x01;
    }
    if(i==2){
    PORTB=0x02;
    }
    if(i==3){
    PORTB=0x03;
    }
    if(i==4){
    PORTB=0x04;
    }
    if(i==5){
    PORTB=0x05;
    }
    if(i==6){
    PORTB=0x06;
    }
    if(i==7){
    PORTB=0x07;
    }
    if(i=={
    i=0;
    }
    }
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Warum setzt du DDRD zwei mal?
    Wie kommst du aus der while-Schleife nach _delay_ms()?
    Brauchst du evtl pullups? (die Taster sind offenbar low-aktiv)
    Ist es wirklich eine gute Idee, main() zu verlassen?
    Disclaimer: none. Sue me.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223
    du bleibst in der while-Schleife hängen. Weil while(1) immer erfüllt ist. D.h. es wird eigentlich nur ausgeführt
    Code:
    while(1) i++;

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    30.08.2005
    Ort
    Friedrichshafen
    Beiträge
    11
    Du must die while(1)-Schleife um den ganzen if-block legen,
    sonst wird der Taster nur einmal abgefragt.
    Und Du willst damit ja schliesslich zählen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests