Hallo!
Ich habe folgende Frage:
In einem Hauptarray
1
constunsignedinttabelle[10]=
2
{
3
1,2,3,4,5,6,7,8,9,10
4
}
habe ich 10 Werte. Über 6 Taster werden die Tastendrücke (rauf oder
runter) gezählt und pro Tastendruck soll der Taste a, b oder c der
entsprechende Wert im Hauptarray zugewiesen und am jeweiligen Port
ausgegeben werden.
Ich möchte aber nur ein einziges Hauptarray verwenden. Wie kann ich das
am Besten lösen?
1
while(1)
2
{
3
if(!(PINC&(1<<PINC7))&&i<=9)// if Button on PC7 = low
4
{
5
PORTA=tabelle[i];// aufwärts zählen
6
_delay_ms(10);
7
i++;
8
}
9
if(!(PINC&(1<<PINC6))&&i>=0)// if Button on PC6 = low
10
{
11
PORTA=tabelle[i];// abwärts zählen
12
_delay_ms(10);
13
i--;
14
}
15
16
if(!(PINC&(1<<PINC5))&&i<=9)// if Button on PC5 = low
17
{
18
PORTB=tabelle[i];// aufwärts zählen
19
_delay_ms(10);
20
i++;
21
}
22
if(!(PINC&(1<<PINC4))&&i>=0)// if Button on PC4 = low
23
{
24
PORTB=tabelle[i];// abwärts zählen
25
_delay_ms(10);
26
i--;
27
}
28
29
if(!(PINC&(1<<PINC3))&&i<=9)// if Button on PC3 = low
30
{
31
PORTD=tabelle[i];// aufwärts zählen
32
_delay_ms(10);
33
i++;
34
}
35
if(!(PINC&(1<<PINC2))&&i>=0)// if Button on PC2 = low
Geri G. schrieb:> Ich möchte aber nur ein einziges Hauptarray verwenden. Wie kann ich das> am Besten lösen?
Indem du nicht für alle Tasten ein gemeinsames i benutzt, sondern für
jede Taste eine seperate Variable benutzt, die eine Aussage darüber
erlaubt, welcher Tabellenwert jetzt gerade für diese spezielle Taste
zuständig ist.
(Und i, ist ein ganz schlechter Name für eine derart wichtige
Information wie es der momentan gerade 'aktive' Tabelleneintrag für eine
Taste darstellt)
> Über 6 Taster werden die Tastendrücke (rauf oder runter) gezählt> und pro Tastendruck
Dann würde ich da noch eine Flankenerkennung für die Tasten vorschlagen.
Denn sonst wird da blitzschnell hochgezählt...