Forum: Mikrocontroller und Digitale Elektronik Mit while () auf Tastendruck warten


von Geri G. (heimo)


Lesenswert?

Hallo,

ich möchte in einem Programm mit while() auf einen Tastendruck warten. 
D.h. die nachfolgende Aktion (PB5 = High) soll nur dann durchgeführt 
werden, wenn am PIN B4 ein High-Signal ankommt.

Mein Programm bleibt aber immer bei der while-Schleife stehen, egal ob 
ein low oder ein high-Signal anliegt.

Bitte um Hilfe!

Hier der Code:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
4
void main(void)
5
{  
6
  DDRB &=    ~(1<<PINB4);    // Set PINB4 input
7
  DDRB |=    (1<<PB5);      // Set PB5 output 
8
9
    while(1)
10
    {  
11
    
12
    while (!(1<<PINB4))      // Wait for PINB4 to be set
13
    {
14
      PORTB = (1<<PB5);
15
    }
16
    }
17
}

von Martin (Gast)


Lesenswert?

In deiner Zeile mit ... while (!(1<<PINB4)) ... wird der Port nicht 
ausgewertet. Schau dir die Zeile noch einmal genau an.

von A. F. (frankalicious)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.