switch case mit CodeVision

Gast #150075
Hallo allerseits,
ich arbeite seit geraumer Zeit mit den AVR-µC von Atmel, besitze das
STK500 und den CodeVision C-compiler. Folgendes Problem macht mir zu
schaffen:
Ich habe ein kleines Programm geschrieben zur Switch-Case Anweisung,
welches in etwa so aussieht:

//Globale Variable
int modus=0;
char a='a'; //usw.
char *fehler="fehler";

//in einem Interrupt
if(!PIND.3)modus++;
if(modus==4)modus=0;

switch(modus)
{
   case 0: lcd_putchar(a);
           break;
   case 1: lcd_putchar(b);
           break;
   case 2: lcd_putchar(c);
           break;
   case 3: lcd_putchar(d);
           break;
   default: lcd_puts(fehler);
}

Dieses "kleine, eigenständige" Programm funktioniert einwandfrei,
d.h. jedes mal beim Betätigen des Tasters D.3 (Taster sind mit Pull-up
Widerständen versehen, deswegen die Negation !PIND.3) zählt die
Variable modus 1 hoch.
Übernehme ich nun den Programmcode in ein Programm, welches noch
etliche andere Aufgaben zu erledigen hat; so funktioniert es insofern
nicht mehr, als dass die variable modus immer auf 0 bleibt. Hält man
den Taster D.3 gedrückt, so wird sie (int modus) 1, jedoch nur solange
die Taste gedrückt gehalten wird. Lässt man den Taster los, so wird
modus wieder 0.
Nun meine Frage:
Hat jemand eine Idee, vielleicht sogar dieses Problem selbst schon mal
gehabt?
Für Hilfen jeglicher Art wäre ich sehr dankbar.

P.s.: Ich habe die ganze Sache auch schon mit if-else Anweisungen
programmiert, was ohne Probleme läuft; ich will jedoch gerade der
Übersichtlichkeit wegen, meinen Programmcode mit switch-case versehen.

Gruß Schnitzi

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.