PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem bei Eingabeverarbeitung



sloti
16.02.2008, 11:36
Hi,

ich hänge im Moment an einem eigentlich nicht schweren Problem fest. Ich will blos, dass nachdem ein Taster gedrückt wurde eine LED angeht. Das hab ich eigentlich schon oft geschrieben, aber irgendwie ist da der Wurm drin. Wahrscheinlich ist da ein blöder Denkfehler drin den ich nicht sehe. Drum bitt ich euch einmal den Code anzuschauen. Hier der Code:


//---------------------------------------------------------------------------
// Title :Kleines Test Programm
// Date :16.02.08
// Autor :Erik Schröder
//---------------------------------------------------------------------------
#define F_CPU 3686400
#include <avr\io.h>
#include <stdlib.h>

#define ON 1
#define OFF 0

void init (void)
{
DDRB |= (1<<PB1); // PORTB.1 als Ausgang für die LED
DDRC = 0b00000000; // PORTC als Eingang
PORTC = 0b00000001; // PORTC.0 Pull Up aktivieren
}

unsigned int Taster (void)
{
unsigned int x;
x=PINC; // Taster einlesen
if (!(x&0x00)) // wenn auf masse gezogen (= taster gedrückt)..
{
return 1; //... 1 zurück geben
}

else if (x&0x00) // wenn Pegel auf High ...
{
return 0; //.. 0 zurück geben
}
}

void LED (int param)
{
if (param==1)
{
PORTB |= (1<<PB1); // PORTB.1 einschalten
}
else
{
PORTB &= ~(1<<PB1); // PORTB.1 ausschalten
}
}

int main (void)
{

init(); // initialisieren

while (true)
{
if (Taster()) //wenn taste gedrückt
{
LED (ON); // LED einschalten
}

else //wenn nicht
{
LED (OFF); // LED ausschalten
}
}
return 0;
}

mfg
Erik

radbruch
16.02.2008, 11:42
if (!(x&0x01))

sloti
16.02.2008, 11:49
argh da war der blöde Denkfehler ... Danke!

mfg
Erik