Hallo zusammen, ich habe ein Problem mit dem switch Befehl.Ich möchte vom Port D die Bits 2 bis 6 einlesen um 19 Eingangskombinationen auszuwerten. Leider fällt der switch direkt zu default durch. Ich habe folgendes programmiert: switch (PIND) { case 0x04: Anweisungen; break; . . . case 0x4C: Anweisung; break; default: Anweisung; break; } Ich weiß leider nicht mehr weiter und benötige Hilfe. Danke schön.
>Ich weiß leider nicht mehr weiter und benötige Hilfe.
Lass dir den Wert vonm PIND anzeigen, dann siehst du wo es klemmt.
Musst natürlich vorher die nicht benutzten Bits maskieren. temp=PIND & b01111100; switch (temp) . . .
H.joachim Seifert schrieb: > temp=PIND & b01111100; ich denke es ist generell eine gute idee einen pin-wert vor einer auswertung in eine variable zu packen. ist zwar wahrscheinlich das c den aktuellen wert eh in ein register packt in nicht jedesmal ein cmp mit dem jetzigen pin-wert macht - aber wer weiß...
Vielen Dank für den Tipp. Ich konnte das Problem mit > volatile char temp; > temp=PIND & b01111100; > switch(temp) lösen.
Hallo Stephan Wilhelm schrieb: >>volatile char temp > >temp=PIND & b01111100 und warum volatile - kennst Du die Bedeutung ? Mach doch keinen Sinn, da temp nur eine lokale und temporäre Variable ist?
volatile char temp Das volatile würde ich weglassen. Kostet dich nur Speicher und Geschwindigkeit. Hätte auch eher einen uint_8 als nen Char verwendet. Gruß Matthias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.