"DEACT port" ist NICHT dasselbe wie "port = ON":

Die CC1 hat intern für jedes Bit eines Ports ein "Datenrichtungs-Register" (DDR). Das DDR schaltet dann einen Ausgangs-Treiber ein oder aus (je nach Richtung). Der Eingangs-Puffer des Ports ist dagegen immer aktiviert und hängt zwischen Ausgangs-Treiber und dem Pin zur Aussenwelt.
Der genaue Hardware-Aufbau eines CC1 Ports inkl. DDR ist zum Beispiel in "Understanding HC05 Family" beschrieben, nur verstehe ich leider die Konsequenzen nicht ganz; da spielt vermutlich auch der Begriff "TriState" auch eine Rolle.

Egal:

Das DDR wird bei jeder CCBASIC Ausgabe-Anweisung (z. B. "port = on") von CCBASIC automatisch auf "Richtung = Schreiben" gesetzt (d.h. der Ausgangs-Treiber wird aktiviert), und erst dann wird das Bit in das Register geschrieben und über den Ausgangs-Treiber an den Pin weiter gereicht.

Mit "DEACT port" setzt CCBASIC das DDR dagegen auf "Richtung = Lesen" - der Ausgangs-Treiber wird abgeschaltet.

Mit "port = ON" passiert jetzt vermutlich folgendes:
1. Der Ausgangs-Puffer wird aktiviert, die "1" wird ins Register geschrieben, der Ausgangs-Puffer leitet das Ergebnis an den Pin weiter.
2. ABER: Eine "1" am Ausgang bedeutet NICHT "5 V anlegen", sondern bedeutet "nicht auf 0 V durchschalten" ( --- das hat der "Manf" mal hier so erklärt; vielleicht kann er mehr dazu sagen).
3. Mit "var = port" wird jetzt der momentane Wert über den Eingangs-Buffer eingelesen. Dieser Wert besteht aus dem "nicht nach 0 durchgeschaltet" des Ausgangs-Treibers, vermischt mit den "externen" Spannungen/Strömen (??) am Pin.
4. Das Ergebnis ist wahrscheinlich dasselbe wie mit "DEACT port", ABER NUR, FALLS nicht irgend welche elektrische Geschichten (Kombination von Spannungen, Strömen, Widerständen, Kapazitäten...) dagegen sprechen -- und mit denen kenne ich mich nicht aus.

Hallo Manf: kannst Du das richtig erklären?