Hallo,

ich verstehe nicht ganz, warum ihr die Tastenauswertung so kompliziert mit arrays macht.
Geht es nicht viel einfacher mit einem character als Tastenwert und bitweise vergleichen?

Code:
...
unsigned char t1, t2;
...
t1=PollSwitch();
t2=PollSwitch();
if (t1 && t1 == t2) 
{
  if (t1 & 0x01) do_K6();
  if (t1 & 0x02) do_K5();
  if (t1 & 0x04) do_K4();
  ...
}
...
2x o. 3x aufrufen von PollSwitch() und vergleichen der Rückgabewerte korrigiert Schwankungen der A/D Werte durch Lade/Entladevorgänge von C7.

Vorraussetzung ist natürlich, das die PollSwitch() Funktion auch tatsächlich
die richtigen Werte liefert (2er Potenzen). Deshalb erst mal mit einem Testprogramm die Werte sich ausgeben lassen.

Code:
...
char str[8];
unsigned char t1,t2;
...
t1=PollSwitch();
t2=PollSwitch();

if (t1 && t1 == t2) 
{
  sprintf(str, "%3d\r\n", t1);
  SerWrite(str, 5);
}
Falls K1 o. K2 nicht ganz korrekte Werte liefern kann, man dies in der PollSwitch() Funktion anpassen.
Guckt ihr hier:
https://www.roboternetz.de/phpBB2/ze...ag.php?t=12475
https://www.roboternetz.de/phpBB2/ze...ag.php?p=82999


Gruß Peter