Datum: 19.05.2012, 19:12:24 Uhr 
 
 Aktuelle Kategorie:
  Computer & Internet (156)
  Kategorieübersicht
Benutzerdefinierte Suche
Artikel » Computer & Internet

8051 Microcontroller: Special-Function-Register (SFR)

Das Special-Function-Register SFR ist der RAM von den Speicherstellen 80h bis FFh, umfasst also mit 128 Byte genau die Hälfte des gesamten RAMs.

Das SFR hat mehrere Funktionen, zum einen läuft die Kommunikation von Peripherieeinheiten und CPU ausschließlich über das SFR, zum zweiten aber auch die Steuerung des Microcontrollers selbst, z.B. durch Kontrollfunktionen, wie dem Stromsparmodus. Ebenso wie der Speicher unterhalb der Adresse 80h, also der frei belegbare Speicher, werden auch die SFRs angesprochen.
Da nicht immer alle Peripheriegeräte am Microcontroller angeschlossen sind, sind Teile des SFRs zu dieser Zeit dann unbenutzt. Man sollte sie aber nicht als Datenspeicher verwenden, da manchmal doch noch Funktionen von diesen Registern ausgehen können. Neben diesen freien Speichern, gibt es auch noch Register im SFR-Bereich, die überhaupt nicht belegt sind. Diese sollte man jedoch ebenfalls nicht verwenden. Der Grund dafür ist, dass der 8051 Microcontroller eine Art "große Familie" ist, mit vielen Abkömmlingen. Will man einen neuen Ableger davon entwickeln, benötigt man u.U. weiterer Speicher des SFR, dieser darf dann selbstverständlich nicht belegt sein, ansonsten wären nicht nachvollziehbare Effekte die Folge. Bei den Special-Function-Register sind vor allem die CPU-Register von Interesse, sie werden im Folgenden näher erläutert.

Das A-Register

Es liegt an der Speicheradresse E0h und ist eines der allgemeinsten Register, d.h. dass es bei fast allen Operationen einsetzbar ist. Das A oder manchmal auch ACC steht hierbei für Akkumulator, das Register wird auch Hauptprozessorregister genannt. Operationen über das A-Register laufen deutlich schneller ab, als über normale, RAM-adressierte Speicher. Bei Rechenoperationen nimmt es den ersten Operanden auf. Das Ergebnis liegt anschließend ebenfalls im A-Register.

Das B-Register

Es liegt an der Speicheradresse F0h und wird auch Hilfsregister genannt. Es ist neben der allgemeinen Funktion als Speicherregister auch speziell für Multiplikationen und Divisionen zuständig. Dabei wird das B-Register dazu benutzt den zweiten Operanden, das A-Register, den ersten Operanden aufzunehmen.

Das DPTR-Register

Das Data-PoinTeR-Register ist das einzige 16Bit Register, also 2Byte-Register des 8051. Es besteht folglich aus zwei einzelnen Speicherregistern, dem DPL (Data-Pointer-Low)und dem DPH (Data-Pointer-High) an den Speicheradressen 82h und 83h. Der DPTR wird verwendet um den externen Daten- oder Programmspeicher anzusprechen, da dieser einen Adressbereich von 0000h bis FFFFh hat und ein einzelnes Register somit nicht ausreichen würde, die jeweilige Adresse anzusprechen.

PSW-Register/Flags

Flags sind im Prinzip Bits, die eine besondere Bedeutung haben, z.B. als Hilfsmittel oder Markierung. Die wichtigsten Flags werden im PSW abgelegt, an der Adresse D0h im SFR. Da das PSW bitadressierbar ist, gibt es insgesamt 8 mögliche Flags, PSW.0 bis PSW.7. Jede dieser Bit-Adressen hat eine eigene Aufgabe:

PSW.0 (P) Das Parity-Flag prüft ob die Quersumme im A-Register ungerade (P=l) oder gerade (P=0) ist. Es wird von der CPU beschrieben und ist nur lesbar, da es lediglich eine Kontrollfunktion ist.
PSW.2 (OV) Das; Over-Flow-Flag wird gesetzt, wenn bei einer Berechnung zweier Zahlen ein weiteres Bit als Überlauf benötigt wird.
PSW.3 (RS0) Mit RS0 und RS1 können sie Registerbänke des internen RAMs ausgewählt werden.
PSW.4 (RS1) Mit RS0 und RS1 können sie Registerbänke des internen RAMs ausgewählt werden.
PSW.6 (AC) Das Auxillary-Carry-Flag wird benutzt, wenn 4Bits nicht ausreichen und ein Überlauf von Bit 3 nach Bit 4 benötigt wird.
PSW.7 (C) Das Carry-Flag ist das wichtigste, es wird dazu benötigt einen Überlauf von Bit 7 zu Bit 8 zu setzen. Es wird also immer dann gesetzt, wenn eine l Byte, bzw. 8Bit Zahl nicht ausreicht. PSW.l (Fl) und PSW.5 (F0) sind ohne Bedeutung für die CPU.

Stacks

Der Stack-Pointer (SP) liegt im SFR an der Adresse 81h. Stacks sind Stapel, deren Beginn im SP angegeben ist, sie gehen nach dem Last-In-First-Out-Prinzip vor (der letzte abgespeicherte Wert liegt ganz oben und wird somit auch als erstes wieder abgerufen). Wird in den Stapel ein Wert abgespeichert, wird somit auch der Stack um eins erhöht; beim Abrufen der Daten entsprechend verringert. Solche Stapelspeicher werden beipielsweise verwendet, wenn Programme in Unterprogramme springen. Im Stack werden dann dort die Rücksprungadressen abgelegt. Zu beachten ist allerdings, dass Stacks eine dynamische, also veränderliche Größe haben, was dazu führen kann, dass sie Daten in den darüber liegenden Speicheradressen unbeabsichtigt überschreiben können.

I/O-Ports

Ports oder zu deutsch Tore sind im Prinzip Ein- und Ausgänge (Input/Output). Auf diese Ports können sowohl der Benutzer, als auch die CPU zugreifen. Sie werden mit normalen l Byte Speichern mit Flip-Flops realisiert. Da ein Schalter jedoch in de Regel nur zwei Zustände hat, kann man an einen 8Bit-Port auch 8 Ein- oder Ausgänge anlegen, d.h. sie sind bidirektional und bitadressierbar (nur PO bis P5).
Ein Eingangstor wäre beispielsweise ein Schalter, der vom Nutzer umgelegt werden kann, daraufhin könnte der Microcontroller dann seiner Programmierung entsprechende Funktionen ausführen. Infolgedessen könnte beispielsweise über ein Ausgangstor eine Leuchtdiode angesteuert werden. Dabei ist nicht festgelegt, welche Tore als Ausgang und welche Tore als Eingang verwendet werden (außer bei P6, er ist immer ein Eingang). Folgende Ports gibt es:
PO (80h), P1 (90h), P2 (A0h), P3 (B0h), P4 (E8h), P5 (F8h), P6 (DBh). PO bis P5 haben teilweise auch noch Sonderfunktionen, wie z.B. das Lesen und Beschreiben des externen Speichers, als Ein-und Ausgänge der seriellen Schnittstellen oder für Interrupt-Signale.
P6 hat eine Sonderfunktion, es ist der Eingang für analoge Signale zwischen 0V und 5V. Jedes analoge Signal wird anschließend vom A/D-Wandler in ein digitales 8Bit Signal umgewandelt.

Serielle Schnittstelle

Die Peripheriegeräte des Microcontrollers werden über die serielle Schnittstelle gesteuert. Die Register dafür liegen im SFR an den Adressen 98h und 99h, nämlich das SCON und SBUF. Das SCON ist bitadressierbar, dort wird das Empfangen und Senden von Signalen bestätigt, Empfangsbereitschaft der Schnittstelle angezeigt usw. Im SBUF wird die Datenübertragung, durch Beschreiben des Registers, eingeleitet. Weitere Steuerpins der Seriellen Schnittstelle sind in verschiedenen weiteren Registern wie z.B. dem PCON oder dem ADCON verteilt.

A/D-Wandler

Der A/D-Wandler besteht hauptsächlich aus drei Registern und ist für das Umwandeln von analogen Signalen in digitale Signale zuständig. Das ADCON-Register (A/D-Control-Register) liegt an D8h und ist für die Steuerung der Umwandlung zuständig. Das DAPR liegt an DAh und ist zur Einstellung der Referenzspannung notwendig. Die ankommenden Daten werden letztenendes im ADDAT-Register (A/D-Daten-Register) an der Adresse D9h abgespeichert.

Der Programmzähler (PC)

Der Programmzähler oder auch Programm-Counter ist ein spezielles Register. Es ist ein Register der CPU, befindet sich jedoch nicht im SFR-Bereich und man kann auch nicht auf dieses Register zugreifen. Der PC zeigt jeweils auf den nächsten abzuarbeitenden Befehl.
21.07.2006 00:27:44 von AndreasD
Fügen Sie diesen Artikel Ihren Social Bookmarks hinzu:


Verlinken Sie diesen Artikel auf Ihrer Website:

Informationen über den Autor dieses Artikels:
Cookies müssen im
Browser erlaubt sein!

Passwort?
Registrieren!
Richtlinien lesen

Autoren-Topliste

  TOP

© 2010 by spicky.de | prosumer24 GbR | Impressum  

Page copy protected against web site content infringement by Copyscape