Aber weiter oben haben die von "Bitweises Oder" gesprochen. Und das steht nun mal zwischen PORTA und (1<<PA0) . Echt eigenartig. Muss ich den eingang dan extern auf masse ziehen? Wenn ich das nämlich nicht mache, und den eingang meines µC nicht beschalte verarbeitet er das in diesem Programm nämlich als 1.
Code:
#include <avr/io.h>
#include <stdint.h>
int main (void)
{
DDRA = 0xff; //Das ganze Register A, also PA0...PA7, als Ausgang deklarieren
DDRD = 0x00; //Das genze Register D, also PD0...PD7, als Eingang deklarieren
while (1)
{
if ((PIND & (1<<0)) != 0) // ruhig die bitweise Verknüpfung noch
// mal in Klammern, also
// if ((PIND & (1<<0)) != 0), konkret ->
//wenn PD high dann
{
PORTA |= (1<<0); //PortA0 auf 5V steuern wenn PortD0 ungleich 0,
// ausgeschrieben heißt das
//PORTA = PORTA | (1<<), wobei '|'
//bitweises 'oder' bedeutet
}
else
PORTA &= ~(1<<0); //wenn PortD0 0 ist soll PortA0 0V haben,
//das heißt : ~(1<<0) setze Bit0 und invertiere
//das Ergebnis, danach mach eine &-Verknüpfung
// mit PORTA
} //ende der While-schleife
return 0; //starte neu
}
Also könnt ich mir auch den internen Pull-Up schenken.
Habt ihr am anfang auch solche Probleme gehabt?
Lesezeichen