- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 3 von 3

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

    Powerstation Test
    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
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Das liegt wahrscheinlich an der Anweisung while(1). Die aht da eignetlich nichts zu suchen, sorgt aber dafür das i = i +1 immer weiter ausgeführt wird.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.04.2004
    Ort
    Nähe Köln
    Alter
    57
    Beiträge
    247
    Hallo

    Dein while(1) war an der falschen Stelle.


    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;
    
    
    while(1){
    
    if(!(PIND & (1<<PIND2))){
    	_delay_ms(100);
    	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==8){
    i=0;
    }
    }
    }

    MFG
    Dieter

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad