Hallo,
so nun zu meiner Frage. Ich habe 27 LED´s die über 12Bit angesteuert
werden (8 Bit PORTA, 4 LOWBit PORTB). Da ich für jede LED PORTA und
PORTB definieren muss, habe ich diese in ein Unterprogramm
ausgegliedert:
1 | void LED1( void )
|
2 | {
|
3 | PORTA=0x01;
|
4 | PORTB=0x0c;
|
5 | }
|
6 | void LED2()
|
7 | {
|
8 | PORTA=0x02;
|
9 | PORTB=0x0c;
|
10 | }
|
11 | void LED3()
|
12 | {
|
13 | PORTA=0x04;
|
14 | PORTB=0x0c;
|
15 | }
|
16 | void LED4()
|
17 | {
|
18 | PORTA=0x08;
|
19 | PORTB=0x0c;
|
20 | }
|
21 | void LED5()
|
22 | {
|
23 | PORTA=0x10;
|
24 | PORTB=0x0c;
|
25 | }
|
26 | void LED6()
|
27 | {
|
28 | PORTA=0x20;
|
29 | PORTB=0x0c;
|
30 | }
|
31 | void LED7()
|
32 | {
|
33 | PORTA=0x40;
|
34 | PORTB=0x0c;
|
35 | }
|
36 | .
|
37 | .
|
38 | .
|
39 | .
|
40 | .
|
Nun wäre es bei einem Lauflicht zum Programmieren total einfach, wenn
ich die in einem weiteren Unterprogramm einfach dann die Methode LEDX
mit der entsprechenden Zahl aufrufen kann, die dann immer hochgezählt
wird.
Hier nur ein unfertiger Ausschnitt:
1 | void Lauflicht()
|
2 | {
|
3 | LEDX();
|
4 | X++;
|
5 | _delay_ms(10);
|
6 | }
|
Also das X soll sich immer ändern und die entsprechende LED aufrufen.
Ist der Ansatz überhaupt verfolgbar? In meinem C Buch habe ich dies
nicht gefunden oder konnte es nicht zuordnen. Welche Möglichkeiten gibt
es noch dies elegant und Profihaft zu lösen?
Vielen Dank im Voraus für alle konstruktiven Beiträge!