Wahlfreier Speicherzugriff


Wenn Sie Datenfiles im EEPROM der CC-Unit anlegen, dann haben Sie immer nur einen sequentiellen Zugriff, d.h. Daten werden immer hintereinander als Words abgelegt, wobei jeder Speicherzugriff zwei Bytes benötigt. CC-Basic erlaubt auch nur ein Datenfile. Das ist für viele Aufgaben gut und einfach einzusetzen, aber es ist nicht sehr flexibel.

Datenblatt des 24C65 lesen (auf der CD direkt ausführbar)

Ganz anders wäre es bei einem wahlfreien Zugriff. Sie könnte jedes der 8192 Bytes im EEPROM direkt lesen und verändern. Sie könnten mehrere Datenfiles verwalten, Sie könnten platzsparend Einzelbytes ablegen, und Sie könnten jede Menge Fehler bauen, indem Sie sich z.B. das laufende Basic-Programm überschreiben.

Mit dem folgenden kleinen Assemblerprogramm haben Sie den gewünschten wahlfreien Zugriff. Insgesamt vier Bytes werden zwischen Basic und Maschinenprogramm ausgetauscht: I²C-Busadresse, Datenbyte und zwei Bytes für die interne Adresse des EEPROM. Schreibzugriffe erfordern einen Einsprung bei &H101, Lesezugriffe bei &H130. Das Programm verwendet Systemaufrufe aus dem CC-Betriebssystem, die schon in [1] erläutert wurden.

Ein erstes kleines Programm soll den Lesezugriff demonstrieren, wobei ein kleines Basic-Programm sich selbst in Tokenform aus dem Speicher liest. Die I²C-Adresse ist hier &HA0. Das ist die Basisadresse des EEPROMs auf der CC-Unit. Haben Sie es bemerkt? Hier kann man ganz locker die Adresse eines eignen, zusätzlichen Speicherbausteins angeben.

EEIO1.BAS starten (Auf der CD: direktes Download in die Unit)

Terminal starten (nur auf der CD möglich)

Das Programm hat übrigens eine Länge von 35 Bytes. Wer genau hinschaut, kann den Aufbau im EEPROM entschlüsseln. Nähere Informationen dazu findet man in [2].

Die ersten 40 Bytes im CC-EEPROM

Wahlfreie Schreibzugriffe auf das EEPROM der CC-Unit sind nun auch nicht schwieriger. Das folgende Programm beschreibt den Adressbereich 4000 bis 4255 mit einer aufsteigenden Zahlenfolge. Die Daten werden dann zur Kontrolle wieder zurückgelesen.

EEio2 starten

Terminal starten