
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo, im Programmspeicher gibt es keine Speicherplätze, wie sie beispielsweise auf einer Fernbedienung bzw. z.B. am TV Gerät vorhanden sind. Das ist ein Grundsatz der Informatik und gilt für alle Rechnertypen, also für Deinen PC, genauso wie für die C-Control. Vielleicht habe ich dich ja falsch verstanden, aber ich erkläre Dir hiermal wie der Speicher technisch aufgebaut ist und wie man ihn mit CCBasic o.ä. ansteuern kann. Also den Speicher kann man sich im Grunde wie eine Liste vorstellen. Jede Liste ist im Prinzip endlich, so auch der Speicher. Eine idealisierte Liste enthält keins, eins oder mehrere Elemente. Im Speicher ist jedes Element ein Byte groß. Zwei Elemente kann man auch zu zwei Byte zusammenfassen, man spricht dann von WORD oder INTEGER. Jedes Element ist in der Liste nummierert. Bei der C-Control ist diese Nummerierung für Bytes und Words insoweit eindeutig, dass die Nummerierung von Bytes und Words eindeutig ist, es aber zu Überschneidungen zwischen Byte und Word Werten kommen kann (wenn man ungünstig programmiert). Es gibt auch Speicher, wo man mehrdeutige Nummerierungen hat. Den hier beschriebenen Speicher nennt man RAM - RANDOM ACCESS MEMORY, weil man sowohl schreiben als auch lesen kann. Ein ROM - READ ONLY MEMORY kann man nur lesen und je nach ROM Typ durch bestimmte Anweisungen beschreiben (das geht aber viel langsamer und unkomfortabler als mit dem RAM). Im Gegensatz zum RAM bleiben beim ROM die Daten auch nach Stromverlust erhalten. Die C-Control verfügt über ein EEPROM, welches durch Elektronisch Programmierbar ist, und somit von der C-Control beschrieben und gelesen werden kann. Das blöde ist hierbei nur, dass du bei dem C-Control eignen EEPROM die Daten nicht so ohne weiteres gezielt auslesen/schreiben kannst. Lies dir hierzu am besten mal die Dokumentation rund um den Befehl OPEN# durch. Zur Programmierung Den RAM Speicher spricht man durch Variablen an. Wie der Name schon sagt sind deren Werte VARIABEL. DEFINE i BYTE DEFINE a WORD Für i wird ein Byte im Speicher reserviert. Für a dagegen zwei Byte, da es ja ein Word ist und somit aus zwei Bytes besteht. Reserviert ist eigentlich das falsche Wort. Eigentlich müsste man als Programmierer die Position im Speicher selber festlegen: DEFINE i BYTE[1] DEFINE a BYTE[2] DEFINE x BYTE[3] man muss sich nicht an die Reihenfolge halten. Man kann auch schreiben DEFINE x BYTE[10] o.ä. nur sollte man um Variabelspeicher zu sparen (man hat nur 24 bzw. 64 Byte) keine unbenutzten Zwischenräume lassen. Wie kommt es nun dazu, dass man auf die expliziete Angabe der Speicheradressen verzichten kann. Nun offensichtlich ist es so, dass der COMPILER, also das Programm auf deinem PC, das Du benutzt um deinen Source Code in ein Format zu geben, dass die C-Control lesen und verstehen kann, diese Zahlen automatisch vergibt. Wenn man in einem Hotel ein Zimmer reserviert wird dieses normalerweise nicht noch einmal reserviert. Es ist belegt - nur für Dich. Bei Variablen scheint dies aber wohl anders zu sein. Man kann durch aus mit zwei Variablen den gleichen Speicher benutzen. Das führt dann zu den beschriebenen Überschneidungen. Gruß, Stefan Meine Homepage: http://www.fdos.de |
| Antwort schreiben |