Hallo! Port B(0) ist ein Eingang und Port B(1) ist ein Ausgang. Der Eingang ist standardmäßig auf High und kann über einen Taster auf Low gezogen werden. Wenn der Taster gedrückt wird soll B(1) auf High sein, abernfalls nicht. Leider ist der Ausgang bei meinem jetzigen Programm immer auf High, wäre nett wenn jemand mal einen Blick drauf werfen könnte. #define F_CPU 3686400 #include <avr\io.h> main () { DDRB=0b00000010; while(1) { if((PORTB|0b11111110)==0b11111110) PORTB=0b00000010; else PORTB=0b00000000; } } Danke!
1) Wenn du einen Eingang abfragen willst, musst du das PIN Register benutzen. Ausgang: PORT Eingang: PIN 2) Du kannst kein | benutzen, um gezielt einzelne Bits auf 0 zu setzen. Dafür benutzt man ein & Bits setzen: | Bits löschen: & 3) Überleg dir gut, welcher Wert herauskommen wird, wenn du gezielt einzelne Bits in einem Datenwort auf 0 setzt. 4) Wenn du einfach an PORTB eine Zuweisung der Form 0b00000010 machst, dann setzt du gleichzeitig aber auch alle anderen Bits an PORTB auf 0. Das willst du aber nicht unbedingt. Versuch dir von Anfang an anzugewöhnen nur die Bits zu verändern, die du auch wirklich verändert haben möchtest, alles andere soll gleich bleiben, egal ob das eine 0 oder eine 1 ist
1 | if( ( PINB & ( 1 << PB0 ) ) == ( 1 << PB0 ) ) |
2 | PORTB |= ( 1 << PB1 ); |
3 | else
|
4 | PORTB &= ~( 1 << PB1 ); |
Jo, danke. So funktioniert es: main () { DDRB=0b00000010; while(1) { if((PINB|0b11111110)==0b11111110) PORTB=0b00000010; else PORTB=0b00000000; } } Ich habe diese Schreibweise: ( 1 << PB1 ) schon oft gesehen, kann mit ihr aber nichts anfangen. Liefert dies PB nur, dass PB(1) zur 1 gesetzt wird falls es eine Null war?
Dirac-Impuls wrote: > Ich habe diese Schreibweise: ( 1 << PB1 ) schon oft gesehen, kann mit > ihr aber nichts anfangen. Dann wird es höchste Zeit, den Artikel zum Thema Bitmanipulation mal durchzulesen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.