Zitat Zitat von pete1612 Beitrag anzeigen
wieso ist das so?
Mit dem gezeigten Code, bzw. der Variablendimensionierung bezweifle ich, dass das überhaupt "so" ist.
Wenn Du nur ein Byte hast, kannst Du keine 3 Bytes schicken, bzw. Du kannst es versuchen und wirst scheitern. Schrieb ich bereits.

Wenn die Variablen in der gezeigten Reihenfolge dimensioniert sind:
Code:
DIM Expander1 as Byte
DIM Expander2 as Byte
DIM Expander3 as Byte
dann führt das hier:
Code:
spiout expander3 , 3
dazu, dass als erstes das Byte Expander3, als nächstes aber noch 2 nachfolgende Bytes aus dem Speicher rausgeschoben werden. Nach dem Expander3-Byte kommen aber keine weiteren sinnvollen Daten, zumindest nach den gezeigten Codefetzen zu urteilen. Du schreibst also Datenmüll in die Schieberegister.

Wenn man Datenmüll in die Register schreibt, wird aber ganz sicher nicht das hier passieren:
geben die ersten beiden expander die richtigen bytes und der dritte zeigt mir das byte vom ersten expander.
Wie PicNick schrieb, zeig vollständigen und compilierbaren Code, sonst ist das ein Stochern im Nebel. Eine Beschreibung der der Verbindungen 4094 untereinander/mit dem µC, bzw. ein Schaltplan wie die 4094 tatsächlich angeschlossen sind, würde sicher auch weiterhelfen