Speicherübersicht

 

Der Mikrocontroller 80515 / 80535

 

 

 

 

 

 

Speichertypen: DATA - IDATA - BIT

 


Der untere interne RAM
Die Speicherbytes des unteren internen RAM sind sowohl direkt adressierbar (DATA) als auch indirekt adressierbar (IDATA). Sie enthalten vier Registerbänke mit je 8 Bytes, 128 adressierbare Bits in 16 Byte-Speichern, die vom Benutzer frei verwendet werden können und 80 normale Bytespeicher. (von diesen können bei NMOS-Prozessoren 40 Bytes durch eine externe Spannung versorgt werden. Bei CMOS-Prozessoren, wird der ganze Chip ruhestromversorgt.)

Die Registerbänke:
Die Registerbänke zählen zu den CPU-Registern. Das bedeutet, daß es Maschinenbefehle gibt, die sich unmittelbar auf die Speicherzellen der Registerbank beziehen. Für die CPU ist zu einem Zeitpunkt nur eine Registerbank sichtbar. Sie kann während dieser Zeit nicht mit ihren registerbankbezogenen Maschinenbefehlen auf die anderen Bänke zugreifen .. (Es sei denn, sie behandelt diese wie den normal adressierbaren Speicher).
Über diesen Weg ist es möglich vier verschiedenen Prozessen, CPU-Speicher zu reservieren, ohne daß Daten eines ersten Prozesses umkopiert werden müßten, wenn ein zweiter Prozeß die Aufmerksamkeit der CPU verlangt.

Die Umschaltung auf die aktive Registerbank erfolgt über zwei Flaggen im Register PSW. Das ist das Flaggenregister der CPU. Wie im Bild gezeigt, ist es über die Flaggen RS1 und RS0 möglich, eine der vier Registerbänke einzuschalten. Bei den [a51-Befehlen] wirken nun die mit Ri oder Rx gekennzeichneten Befehle mit den Speicherzellen dieser Registerbank zusammen. Ri meint die Speicherzellen R0 und R1 und bei Angabe von Rx kann jede Speicherzelle von R0 bis R7 benutzt werden. Nach dem RESET ist Registerbank 0 eingeschaltet. Was durch die Befehle clr RS1 und clr RS0 ebenfalls erreichbar wäre.

Beispiel: Es ist die Registerbank 2 (setb RS1, clr RS0) eingeschaltet. Dann lädt der Befehl mov R4,#12 die Zahl 12 in die Speicherzelle 14h. Wäre die Registerbank 0 eingeschaltet gewesen, dann wäre die Zahl 12 in den Speicher 04h übertragen worden.

Der Beginn des Stapels (Stack):
Nach dem Reset befindet sich im Stapelzeiger SP der Wert 07h. Somit beginnt der Stack in der Registerbank 1. Das ist eine ungünstige Lage, da hierdurch weder die Registerbänke 1-3 noch die bitadressierbaren Speicher benutzbar sind. Der Stapel überschreibt sie, oder wird selber durch gespeicherte Werte gestört. Ein wesentlich günstigerer Anfang für den Stack könnte der interne obere RAM sein. Dieser ist nur indirekt adressierbar, was meistens von seiner Benutzung abschreckt und besitzt 128 Speicherzellen. Der Befehl, um den Stapel hierher zu verlegen lautet mov SP,#7Fh.

Die bitadressierbaren Speicher:

Die 16 bitadressierbaren Speicherzellen können wie jeder andere Speicher benutzt werden. So würde der Befehl mov 2Ah, #00100011b die Zahl 23h in den Speicher 2Ah schreiben. Durch die Bitadressiebarkeit dieses Speichers ist es jedoch kinderleicht eines der Bits zu verändern. Ohne Maskierung läßt sich beispielsweise die erste 1 von links auf Null zurücksetzen, wenn man den Befehl clr 55h benutzt. Wollte man im höchsten Bit eine 1 setzen, so genügt der Befehl setb 57h. Da sowohl den Speicherzellen wie auch den Bit Namen (Label) zugeordnet werden können, kann zudem das Merken der Adressen entfallen. Mit den Zuweisungsdirektiven des Assemblers wäre folgendes möglich, was den obigen Befehlen entspricht ..

 

Licht   DATA 2Ah         ; Direktiven des Assemblers
Stube   BIT  55h
Bad     BIT  57h

mov     Licht,#00100011b ; Grundeinstellung der
                         ; Lichtschaltung
clr     Stube            ; Stubenlicht aus
setb    Bad              ; Licht im Badezimmer ein

www.GoBlack.de