Hi ChristianP.,
willkommen im Forum.

Zitat von
ChristianP.
... Vermutlich handelt es sich um einen Denkfehler ...
Das liegt doch mehr an der Syntax, oder nicht?
Bin ziemlich in Eile. Auf die Schnelle, aber nicht getestet:
Code:
#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>
#include <stdlib.h>
#include <avr/interrupt.h>
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - Vorschlag - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define IsBitSet(ADDR,BIT) (((ADDR)&(1<<BIT))?1:0) // Fragt Bit = 1?
#define TASTER 0 // Taster auf PD0
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int main(void)
{
DDRC = 0xFF;
PORTC =0xFF;
DDRD =0x00;
//PORTD =0xFF; // PullUp aktivieren!!
while(1){
// if(PIND & (1<<PD0) && PORTC == 0xFF)
// da sollte man entweder nicht mit Klammern sparen oder
// sich über die Prioritäten/Reihenfolgen der Operatoren
// bei der Abarbeitung im Klaren sein, daher :
if (( IsBitSet ( PIND, TASTER )) && (IsBitSet (PINC, 1))) // Abfrage
{
PORTC = 0x00;
}
// if(PIND & (1<<PD0) && PORTC == 0x00)
else // Wenn nicht gedrückt, dann ist er lose *ggg*
{
PORTC = 0xFF;
}
}
}
Lesezeichen