|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Erweiterte Funktionen des 8051/52 externer Arbeitsspeicher
externe Peripherie
externer
Programmspeicher |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Anschluß von externem ArbeitsspeicherDer 8051 kann an seinen externen Anschlüssen 64kByte RAM-Speicher ansteuern. Die Speicheradressen eines RAM-Bausteins werden in Hex-Schreibweise angegeben. Somit ergeben sich bei voller Ausnutzung des Adressraumes die Adressen 0000h – FFFFh. Zur Auswahl der Speicherbytes werden 16 Adressleitungen benötigt, denn 216 = 65536 = 64k. Die Adressleitungen sind durchnummeriert von A0 ... A15 und werden als Adressbus bezeichnet. Ist eine Speicheradresse angewählt, erfolgt die Übertragung der Daten über den Datenbus (8 Bit). Dazu wird noch jeweils eine Steuerleitung für das Lesen der Daten aus dem RAM (RD/) und eine für das Schreiben (WR/) von Daten ins RAM benötigt. Zusammen wären das 26 Leitungen oder 3¼ IO-Ports. Um Portleitungen zu sparen, wird deshalb das niederwertige Adressbyte (A0 ... A7) und das Datenbyte (D0 ... D7) zeitlich nacheinander über den Port 0 ausgegeben (Zeitmultiplex). Damit wird ein 8-Bit Port eingespart. Der gemultiplexte Adress- und Datenbus muss aber außerhalb des 8051 wieder getrennt werden. Vom Controller wird dazu ein Steuersignal (ALE) erzeugt, das anzeigt, wann die Adressdaten A0...A7 gültig sind.
Das ALE-Signal (Adress Latch Enable) steuert einen Zwischenspeicher (Latch), in den das Adress-Lowbyte übernommen wird und dann während des gesamten Schreib-/Lesezugriffs an den Anschlüssen A0...A7 des RAM-Bausteins ansteht. Die Impulsdiagramme zeigen die zeitlichen Abläufe eines lesenden und eines schreibenden Speicherzugriffs:
Ein
Speicherzugriff benötigt 6 CPU-Taktzyklen. Dies entspricht
12 Quarztakten (Taktteilung). Bei 12 MHz ergibt sich eine Zugriffszeit
von 1µs. Das Schreiben von Daten in den Speicher-Baustein läuft ähnlich. Die Daten liegen jedoch während der kompletten Dauer des WR/-Signals an Port 0 an. Das Speichern auf der gewählten Adresse im RAM kann somit bei fallender oder steigender Flanke oder bei 0-Pegel des WR/-Signals erfolgen. Die Schaltung unten zeigt den Anschluß von zwei Speicherbausteinen an einen 8051-Controller. Als Adresslatch wird häufig der TTL-Baustein 74LS373 oder 74LS573 mit 8 D-Flipflops verwendet. Der Adressraum ist in zwei 32k große Adressbereiche aufgeteilt. Diese Bereiche sind vollständig von je einem statischen RAM (62256) und einem EEPROM (28C256) belegt. Beide Speicherbausteine haben 15 Adressleitungen (A0...A14). Die Leitung A15 wird als Bausteinauswahl-Signal (Chip-Select) verwendet. Da die Chip Enable-Eingänge der Speicherbausteine Nullaktiv sind, muss beim EEPROM die Leitung A15 invertiert werden. Die Tabelle zeigt die Adressbereiche für beide Speicherbausteine.
Anschluß von externer Peripherie
Für den parallelen
Anschluss externer Peripheriebausteine (zB. 8255) an den Daten-
und Adressbus des Controllers werden meist nur die Adresssignale
A0...A7 benötigt. Es können damit 256 Adressen erzeugt
werden. Die Adresssignale A8...A15 können dann als I/O-Ports
frei verwendet werden. Bei der Programmierung werden die Befehle
movx a,@Rn zum Lesen vom
Datenbus und movx @Rn,a zum Schreiben verwendet.
Über den Datenpointer (dptr) darf nicht adressiert werden,
da sonst die höherwertigen Adressleitungen benutzt werden. Die Tabelle zeigt die
einzelnen Adressbereiche mit dem jeweiligen Bausteinauswahlsignal:
Bsp.: IO-Port Expander-Baustein 8255 Im Adressbereich zwischen 40h und 5Fh treten die Adresssignale
(A0, A1) jeweils 8 mal in gleicher Kombination auf. Damit ergeben
sich für jedes der vier Register des 8255 acht mögliche
Adressen in acht Foldback-Bereichen. Für Port A sind das zum
Beispiel: Durch Verwenden weiterer Adresssignale für die Chip-Select-Logik, könnten solche doppelten Adressen zwar vermieden werden, meist ist der Aufwand jedoch nicht gerechtfertigt. Die
Ausgabe eines Bytes auf das Port A-Register des 8255 erfolgt
mit dem movx-Befehl und registerindirekter Adressierung:
Anschluß von externem ProgrammspeicherManchmal ist es sinnvoll nicht den internen Flash-Programmspeicher
des Controllers zu verwenden, sondern ein externes EPROM. Beispielsweise
können Firmware-Updates durch Tauschen des EPROM durchgeführt
werden.Um den externen Programmspeicher zu nutzen muß der
Pin EA/ des Controllers auf GND gelegt werden. Damit ist der interne
Flash-Speicher deaktiviert. Der Controller holt sich die Befehlsbytes
über den externen Adress- und Datenbus. Ebenso werden alle
movc-Befehle zum externen Programmspeicher geleitet. Als Lesesignal
wird die Steuerleitung PSEN/ verwendet. Timing auf den Port- und Steuerleitungen:
Übungen:
TimerprogrammierungZeitgeber- oder Zählerbausteine werden in der Mikrocomputertechnik für viele Anwendungs-zwecke benötigt. Insbesondere dort wo quarzgenaue Zeiten benötigt, oder externe Ereignisse gezählt werden müssen. Der Timer 2 des AT89C51.. ist ein 16-Bit Zähler, der aus zwei 8-Bit Zählerstufen (TL2 und TH2) besteht. Durch zwei unabhängige Relaod/Capture-Register (RCAP2L und RCAP2H) kann der Timer 2 sehr flexibel konfiguriert und an die unterschiedlichsten Aufgabenstellungen angepasst werden. Folgende Timer 2-Betriebsarten sind möglich:
Bsp:
Frequenzgenerator
ReloadHigh
equ high(10000h-fclk/(4*fT2)) init: xrl
T2MOD,#00000010b Übungen Programmable Counter ArrayDas Programmable Counter Array besteht aus fünf PCA-Modulen,
die einen gemeinsamen 16-Bit Timer/Counter als Zeitbasis verwenden. 16-Bit PCA Timer/CounterDer PCA-Zähler (CH
und CL) zählt die Impulse von einer der
vier Quellen: 1 MHz / 3 MHz / Timer 0 Überlauf / P1.2 PCA-ModuleJedes PCA-Modul verfügt über zwei 8-Bit Compare/Capture Register. Damit lassen sich 2 grundsätzliche Betriebszustände eines PCA-Moduls erreichen:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|