PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega16, STK500: Switch X gedrückt => LED X soll leuchten



Kesandal
28.04.2011, 21:11
Hallo,
der Thread-Titel sagt schon mein Anliegen :)

Mein Code sieht derzeit so aus:



#include <avr/io.h>

int main (void) {

DDRB = 0xFF; // Port B alles Output
DDRA = 0x00; // Port A alles Input


//PORTB = 0x00; // Alle LED an
PORTB = 0xFF; // Alle LED aus

while(1) {
// Knopf nicht gedrückt
if(PINA & 0b00000001){
PORTB = 0xFF; // Alle LED aus
}
else{
// Knopf gedrückt
PORTB = 0xFE; // Letzte LED einschalten
}

// Knopf nicht gedrückt
if(PINA & 0b00000010){
PORTB = 0xFF; // Alle LED aus
}
else{
// Knopf gedrückt
PORTB = 0xFD; // Letzte LED einschalten
}
}
return 0;
}


Das hier funktioniert für switch0/1 und led0/1.

Doch wie kann ich es eleganter lösen, wenn ich auf jeden Taster reagieren möchte?
Eine möglichkeit wäre es natürlich ein Switch-Case-Konstrukt für jedes einzelne Bit zu machen. Denke es geht aber auch eleganter oder?

Danke
Kesandal

JanB
28.04.2011, 21:44
Probier mal so:



#include <avr/io.h>

int main (void) {

DDRB = 0xFF; // Port B alles Output
DDRA = 0x00; // Port A alles Input

while(1) {

PORTB = PINA;
}
return 0;
}
Gruß Jan