Da erhebt sich jetzt natürlich sofort die Frage....
1 | ...
|
2 | while (i<=7)
|
3 | {
|
4 | ....
|
5 |
|
6 | if (i>7)
|
7 | i=0;
|
8 | }
|
.... wie soll eigentlich i jemals größer als 7 werden, damit diese
Abfrage hier
jemals eine Chance hat, FALSE zu werden.
i kann durch dieses Konstukt hier
und dem Inkrement innerhalb der Schleife niemals größer als 7 werden.
Das bedeutet aber auch, dass die Abfrage von i beim while eine sinnlose
Abfrage ist, denn die Bedingung kann nie eintreten.
Was du aber machst, ist: du verwirrst dich selbst und einen Leser deines
Programmcodes, indem du ihm durch die reine Anwesenheit der Abfrage
suggerierst, da würde etwas dahinterstecken.
Tut es aber nicht
1 | while( 1 )
|
2 | {
|
3 |
|
4 | ....
|
5 |
|
6 | }
|
und gut ists. Jeder Programmierer erkennt das als Endlosschleife, für
die es keine Abbruchbedingung gibt.
Und darüber
1 | if (PINB &(0x01 <<1)==PINB2)
|
solltest du auch noch mal nachdenken.
In C braucht es keinen expliziten Vergleich an dieser Stelle. Das if wil
leinfach nur einen arithmetischen Ausdruck. Ergibt die Auswertung des
Ausdrucks 0, dann gilt das als logisches FALSE. Ergibt die Auswertung
etwas anderes als 0, dann gilt das als logisch TRUE. Fertig, Mehr
braucht es nicht.
Der Ausdruck
ergibt 0, wenn der Pin PB1 auf 0 liegt. Und er ergibt etwas anderes als
0, wenn der Pin selber auf 1 liegt. Welcher Wert in letzterem Fall genau
heraus kommt, interessiert uns nicht. Uns interessiert nur, dass da
etwas rauskommt, was nicht 0 ist. UNd das reicht dann schon.
Abfrage auf Pin High
1 | if( PINB & ( 1 << PB1 ) ) // wenn Pin PB1 auf 1 ist
|
Abfrage auf Pin Low
1 | if( !( PINB & ( 1 << PB1 ) ) ) // wenn Pin PB1 auf 0 ist
|
2 | ...
|
oder auch so
Abfrage auf Pin High
1 | if( PINB & ( 1 << PB1 ) != 0 ) // ungleich 0, egal was - hauptsache ungleich 0
|
Abfrage auf Pin Low
1 | if( PINB & ( 1 << PB1 ) == 0 ) // wenn Pin PB1 auf 0 ist
|
Aber gewöhn dir diese Vergleich mit expliziten Zahlenwerten ausser 0 ab.
Das sind Stolpersteine. Drücke deine Vergleiche als Vergleiche mit 0
aus, oder lass sie überhaupt gleich weg - denn in Wirklichkeit braucht
die keiner.