Nordmende
Semiprofi
Hallo !
In der Schule programmieren wir zurzeit einen Atmel Atmega16 Mikrokontroller.
Dieser soll, sobald ein Knopf gedrückt wird und wieder los gelassen wird, eine zufällige Zahl von 1 bis 6 ausgeben.
Hier unser Code:
Wenn jetzt die Taste gedrückt wird, zeigt die 7-Segment-LED Anzeige alle Segmente an, es leuchtet also eine 8 mit dem Punkt unten.
Unser Problem ist jetzt aber: Sobald die taste losgelassen wird, wird immer die Zahl 2 angezeigt und an diesem Punkt kommen wir nicht weiter
Weiß einer von euch Rat ?
In der Schule programmieren wir zurzeit einen Atmel Atmega16 Mikrokontroller.
Dieser soll, sobald ein Knopf gedrückt wird und wieder los gelassen wird, eine zufällige Zahl von 1 bis 6 ausgeben.
Hier unser Code:
Code:
#include <inttypes.h>
#include <avr/io.h>
int main(void)
{
uint8_t led;
uint8_t keys;
DDRB = 0xff; // use all pins on PortB for output
DDRD = 0x00; // use all pins on port D for input
PORTD = 0xff; // activate internal pull-up
PORTB = 0xff; // set output high -> turn all LEDs off
for (;;) { // loop forever
keys = ~PIND; // read input port with switches (active-low)
if ( keys & 1 )
{
led = 164; // Zahl 1
}
else if ( keys & 1 )
{
led = 148; // Zahl 2
}
else if ( keys & 1 )
{
led = 210; // Zahl 3
}
else if ( keys & 1 )
{
led = 152; // Zahl 4
}
else if ( keys & 1 )
{
led = 136; // Zahl 5
}
else if ( keys & 1 )
{
led = 215; // Zahl 6
}
else led=0 // Alle Segmente Leuchten, Zahl 8
PORTB = ~led; Set corresponding LED if switch pressed
}
}
Wenn jetzt die Taste gedrückt wird, zeigt die 7-Segment-LED Anzeige alle Segmente an, es leuchtet also eine 8 mit dem Punkt unten.
Unser Problem ist jetzt aber: Sobald die taste losgelassen wird, wird immer die Zahl 2 angezeigt und an diesem Punkt kommen wir nicht weiter
Weiß einer von euch Rat ?