hallo Ich bin gerade in Mikrocontroller Programmierung eingestiegen. Gibt es eine einfachere und kürzere Methode als wie die?
1 | #include <avr/io.h> |
2 | #ifndef F_CPU
|
3 | #define F_CPU 3686400UL /* Quarz mit 3.6864 Mhz */ |
4 | #endif
|
5 | #include <util/delay.h> /* in älteren avr-libc Versionen <avr/delay.h> */ |
6 | |
7 | int main( void ) |
8 | {
|
9 | |
10 | unsigned short anlage=0001; |
11 | unsigned short modul= 001; |
12 | unsigned short kanal= 3; |
13 | int i; |
14 | |
15 | if (anlage==0001){ |
16 | if (modul==001){ |
17 | |
18 | if (kanal==1){ |
19 | |
20 | while (1>i) { // Endlosschleife |
21 | i++; |
22 | PORTA ^= ( 1 << PA0 ); // Toggle PB0 z.B. angeschlossene LED |
23 | _delay_ms(25); // Eine Sekunde warten... |
24 | PORTA &=~ ( 1 << PA0 ); //Schaltet port aus. |
25 | }
|
26 | return 0; |
27 | }
|
28 | |
29 | |
30 | if (kanal==2){ |
31 | |
32 | while (1>i) { // Endlosschleife |
33 | i++; |
34 | PORTA ^= ( 1 << PA1 ); // Toggle PB0 z.B. angeschlossene LED |
35 | _delay_ms(25); // Eine Sekunde warten... |
36 | PORTA &=~ ( 1 << PA1 ); //Schaltet port |
37 | }
|
38 | return 0; |
39 | }
|
40 | |
41 | |
42 | |
43 | |
44 | if (kanal==3){ |
45 | |
46 | while (1>i) { // Endlosschleife |
47 | i++; |
48 | PORTA ^= ( 1 << PA2 ); // Toggle PB0 z.B. angeschlossene LED |
49 | _delay_ms(25); // Eine Sekunde warten... |
50 | PORTA &=~ ( 1 << PA2 ); //Schaltet port aus. |
51 | }
|
52 | return 0; |
53 | }
|
54 | |
55 | |
56 | ....
|
57 | |
58 | }
|
59 | }
|
60 | }
|
Der Code ist noch nicht fertig, soll aber mal so sein das er Daten über die usart bekommt mit zahlen von 1 bis 16 drinnen. Je nachdem soll er eine Port kurz öffnen und wieder schließen. Gibt es eine kürzere Möglichkeit als 16 mal
1 | if (kanal==3){ |
2 | |
3 | while (1>i) { // Endlosschleife |
4 | i++; |
5 | PORTA ^= ( 1 << PA2 ); // Toggle PB0 z.B. angeschlossene LED |
6 | _delay_ms(25); // Eine Sekunde warten... |
7 | PORTA &=~ ( 1 << PA2 ); //Schaltet port aus. |
8 | }
|
9 | return 0; |
10 | }
|
zu schreiben.