Mangosniper schrieb:
> Hi,
>
> vorab gesagt ich hab erst heute angefangen mit dem Ding zu arbeiten und
> mäßige C Kentnisse.
> Ich möchte an meinem STK500 bestimmte Led´s im Abstand von 1 Sekunden
> aus und anschalten. Das ganze dann in einer Endlosschleife:
>
> #include <avr/io.h>
> int main( void )
> {
> while(1)
> DDRB = (1 << DDB2) | (0 << DDB3);
> _wait_ms(1000);
> DDRB = (1 << DDB5) | (0 << DDB2);
> _wait_ms(1000);
> DDRB = (1 << DDB3) | (0 << DDB5);
> _wait_ms(1000);
> }
Innerhalb des while(1) liegt nur die unmittelbar nächste Anweisung.
Willst du mehere Anweisungen unter Kontrolle vom while haben, dann musst
du die Anweisungen zu einem Blockzusammenfassen
1 | #include <avr/io.h>
|
2 |
|
3 | int main( void )
|
4 | {
|
5 | while(1)
|
6 | {
|
7 | DDRB = (1 << DDB2) | (0 << DDB3);
|
8 | _wait_ms(1000);
|
9 | DDRB = (1 << DDB5) | (0 << DDB2);
|
10 | _wait_ms(1000);
|
11 | DDRB = (1 << DDB3) | (0 << DDB5);
|
12 | _wait_ms(1000);
|
13 | }
|
14 | }
|
PS: man kann einen Portpin nicht mit 0<<DDB3 löschen. Eine 0 kann man
nach links schieben, sooft man will, sie bleibt immer eine 0
PS2: Du willst mit Sicherheit nicht ständig den Pin von Eingang auf
Ausgang umkonfigurieren, sondern du willst:
Einmalig die interessierenden Pins auf Ausgang konfigureieren.
Durch entsprrechende Zugriffe auf das PORTB Register den auf Ausgang
konfigurierten Pin von 0 auf 1 bzw. umgekehrt schalten.