Variablenübergabe

Ich weiss echt nicht mehr weiter. Ich möchte Variablen an meine Funktion übergeben. Diese werden jedoch einfach nicht sauber angenommen. Es geht um die ansteuerung eines 4x20 LCD Displays.

...
void setzecursor(byte zeile, byte spalte) {
  byte pos;
  switch (zeile) {
    case 0 : pos =  0 + spalte;
    case 1 : pos = 64 + spalte; 
    case 2 : pos = 20 + spalte;
    case 3 : pos = 84 + spalte;
  }
  ...
}

void loop() {
  ...
  setzecursor(1,0);
  ... 
}

Was bitte ist daran falsch? Die Variablen kann ich mir nicht mal mit Serial ausgeben lassen.
Wenn ich pos manuell setzte funktioniert alles so wie es soll. Ein ähnliches problem hatte ich auch mit einem String, das konnte ich mit einem workarround lösen, aber das ist ja nicht sinn der sache.

vielleicht kann mich ja einer über meinen Denkfehler aufklären.
Danke.

Was gibt er denn aus wenn Du das so ausführst?

OK, das habe ich selber lösen können, fehlten wohl die breaks beim switch/case. aber trotzdem erklärt das nicht, warum das auch bei einer if abfrage so war. egal, jetzt geht es.

  switch (zeile) {
    case 0 : pos =  0 + spalte;
             break;
    case 1 : pos = 64 + spalte; 
             break;
    case 2 : pos = 20 + spalte;
             break;
    case 3 : pos = 84 + spalte;
             break;
  }

Deim switch-case muß zwischen den einzelnen case mit break die switch-Anweisung verlassen.
Es gibt Fälle wo einige case hintereinander sinnvoll sind.

...
case 1:
tu - irgendwas
case 2:
tu irgendwas anderes
break

im Fall 1 wird beides ausgeführt
im Fall 2 wird nur das zweite ausgeführt.

Es gibt noch
default:
das ausgeführt wird falls keine Case-Bedingung wahr ist.

Grüße Uwe