Home | Technik im Aladin in Bremen | CD-Player Reparaturanleitung deutsch und englisch | µ Controller
 Bauanleitung Stereosender | Fernseh DX | Gästebuch | Downloads
  
Vorwort
Vorwort und Einleitung
Spezial Funktions Register
RAM und Register
Befehlsrefferenz
Hier steht die
Befehlsrefferenz zum
8051
Compuboard
Das ist zur Zeit noch in Vorbereitung
Beispiele
Das ist zur Zeit noch in Vorbereitung
  
Ein sehr wichtiger Bestandteil der 8051- Controller ist das interne RAM. Dieser Schreib- und Lesespeicher wird benötigt, um Daten innerhalb des Programmablaufs abzuspeichern und wieder zu lesen. Das gesamte RAM ist in Bereiche mit unterschiedlichen Funktionen unterteilt.

Spezial-Funktions-Register

Eine Sonderstellung innerhalb des RAMs nehmen die sogenannten Spezial-Funktions-Register ein. Wie der Name schon sagt, sind diese Register für bestimmte Funktionen zuständig. Dabei haben die verschiedenen Controller- Versionen der 8051- Familie durchaus eine verschiedene Anzahl von SFRs, da die Nachfolgemodelle meist mehr on-chip-Peripherie integriert haben, die durch zusätzliche SFRs angesprochen werden.

Die folgende Tabelle soll einen Überblick über die SFRs geben.

 
Symbol Adresse Bit Binvalue Kommentar Name
ACC 0E0h * 0000 0000b   Akkumulator
B 0F0h * 0000 0000b   Hilfs- Akku
PSW 0D0h * 0000 0000b   Programm Status Wort
SP 081h   0000 0111b   Stapelzeiger
DPTR     0000 0000b 16 Bit Datenzeiger
DPL 082h   0000 0000b   niederwertiges Lowbyte
DPH 083h   0000 0000b   höherwertiges Highbyte
P0 080h * 1111 1111b   Port 0 Adress/Datenbus
P1 090h * 1111 1111b   Port 1
P2 0A0h * 1111 1111b   Port 2 Adressbus Highbyte
P3 0B0h * 1111 1111b   Port 3
IP 0B8h * xxx0 0000b beim 8051 Interrupt Priortätsregister
IP 0B8h * xx00 0000b beim 8052 Interrupt Priortätsregister
IE 0A8h * 0xx0 0000b beim 8052 Interrupt Einschaltregister
IE 0A8h * 0x00 0000b beim 8052 Interrupt Einschaltregister
TMOD 089h   0000 0000b   Timer Modus Register
TCON 088h * 0000 0000b   Timer Control
T2CON 0C8h * 0000 0000b   Timer2 Control
TH0 08Ch   0000 0000b   Timer0 Highbyte
TL0 08Ah   0000 0000b   Timer0 Lowbyte
TH1 08Dh   0000 0000b   Timer1 Highbyte
TL1 08Bh   0000 0000b   Timer1 Lowbyte
TH2 0CDh   0000 0000b nur 8052 Timer2 Highbyte
TL2 0CCh   0000 0000b nur 8052 Timer2 Lowbyte
RCAP2H 0CBh   0000 0000b nur 8052 Capture Register Highbyte
RCAP2H 0CAh   0000 0000b nur 8052 Capture Register Lowbyte
SCON 098h * 0000 0000b   Serialcontrol
SBUF 099h   xxxx xxxxb   Serial Buffer
PCON 087h   0xxx xxxxb HMOS Prozessor Control
PCON 087h   0xxx 0000b CHMOS Prozessor Control

Adresse:Adresse unter der das Register angesprochen wird
Bit:* falls bitadressierbar
Bitvalue:Inhalt binär nach dem Einschalten oder Reset

  • Akkumulator (A)
  • über den Akku werden alle arithmetischen Operationen abgewickelt. Des weiteren kann er als Arbeitsregister verwendet werden. Viele Befehle können nur über den Akku bearbeitet werden.
  • B- Register
  • Das B- Register, auch Hilfsakku genannt, kommt bei den Multiplikations- und Divisionsbefehlen (MUL AB und DIV AB) zum Einsatz. Auch dieses Register kann als Arbeitsregister verwendet werden.
  • Stackpointer (SP)
  • Im Stackpointer (Stapelzeiger) steht die Speicheradresse, in welche das letzte Byte im Stack abgelegt wurde. Dieses Register wird mit jedem Unterprogramm beeinflusst, um die Rücksprungadresse zu verwalten.
  • Datenpointer (DPTR)
  • Der Datenpointer ist ein 16- Bit Register, wobei das Highbyte und das Lowbyte auch einzeln angesprochen werden kann. Der Datenpointer wird verwendet für die Adressierung von Daten, die im Programmspeicher abgelegt sind, sowie für den Zugriff auf die Externen Bauteile (RAM).
  • Portregister (Px) Die Portregister P0, P1, P2 und P3 steuern die Ein-/ Ausgabeports. Zu beachten ist, dass P0 und P2 nur bei Controllern mit internen Programmspeicher zur freien Verfügung stehen. Der Controller 80C32, gibt über die beiden Ports die Adressen für die Adressierung von EPROM und RAM aus.
  • Interrupt- Priorität- Register (IP)
  • Das Interrupt- Prioritäts- Register IP enthält die Informationen über die Priortätenverteilung der verschiedenen Interruptquellen.
  • Interrupt- Enable- Register (IE)
  • Durch Setzen der entsprechenden Bits im Interrupt- Enable- Register werden die Interrupts freigegeben.
  • Timer- Mode- Register (TMOD)
  • Mit diesen Registern wird die Betriebsart von Timer 0 und Timer 1 eingestellt. Die Bits haben spezielle Namen, sie können jedoch nicht über die Bit- Befehle beeinflusst werden. Wir müssen stets das komplette Register TMOD mit definierten Werten beschreiben. Das Timer- Mode- Register bestimmt, in welchen Modus Timer 0 und Timer 1 arbeiten. Dieses Register hat 8 Bit. Diese Bits haben folgende Aufgaben:

    GATE:
    Wenn dieses Bit gesetzt ist, dann wird der Timer nur freigegeben, wenn der Pin INT0 (für Timer0 und Pin INT1 für Timer 1) des Controllers HIGH ist. Dadurch kann der Timer über ein externes Signal aus oder eingeschaltet werden. Z.B. Pulsweitenmessung. C/T:
    Mit diesem Register wird die Timerfunktion festgelegt. Bei gesetztem Bit arbeitet der Timer als Zähler (Counter) und reagiert auf Impulse am Controller-Eingang T0 (T1 bei Timer 1). Z.B. bei einem Frequenzmessgerät. M1/M2:
    Diese beiden Bits legen den Arbeitsmodus fest. Die nachfolgende Tabelle zeigt den Zusammenhang.

    M1 M0 Arbeitsmodi
    0 0 Modus 0
    0 1 Modus 1
    1 0 Modus 2
    1 1 Modus 3

    MODUS 0:
    Das LOW-Byte von TL0 bzw. (TL1 bei Timer 1) arbeitet als 5- Bit Vorteiler. Er zählt von 00000b bis 11111b (0...31) und läuft dann über auf 00000b. Mit diesem überlauf wird das HIGH- Byte TH0 bzw. (TH1 bei Timer 1) des Timers um eins erhöht. Damit stellt TH0 und TH1 einen 1:32 Vorteiler für TH0 und TH1 dar. Die höherwertigen Bits in TL0 und TL1 haben einen undefinierten Zustand.
    MODUS 1:
    Das LOW- Byte TL0 und TL1 arbeitet als mit seiner vollen Länge von 8 Bit. Dadurch erhält man einen 1:256 Vorteiler. Modus 0 und 1, unterscheiden sich nur durch den Vorteiler.
    MODUS 2:
    Der Timer arbeit im AUTO- RELOAD- Betrieb. Als Timer arbeitet nur das LOW- Byte TL0 und TL1, während das HIGH- Byte den Reload- Wert bereitstellt. Mit dem Inhalt des Registers TH0 bzw. TH1 wird nach dem Timerüberlauf TL0 nachgeladen. TH0 muss über die Software beschrieben werden, ändert aber beim Reload- Vorgang seinen Wert nicht.
    MODUS 3:
    In diesem Modus ist Timer0 aufgesplittet in zwei unabhängige 8- Bit Timer TL0 und TH0. TL0 kann dabei als Zähler oder auch als Zeitgeber betrieben werden. Es wird durch die Steuerbits kontolliert. ( C/T,GATE,TR0,TF0). TH0 kann nur als Zeitgeber betrieben werden. Er benutzt dabei die Steuerbits von Timer1 (TR1,TF1,siehe TCON) Timer 1 stoppt in diesem Modus. Wählt man für Timer0 diesen Modus, so erhält man 2 unabhängige Timer. Timer1 kann aber in einem anderen Modus betrieben werden, so dass ein zusätzlicher Timer zur Verfügung steht. TR1 beeinflusst TH0, Timer1 kann aber durch Umschalten auf Modus 3 gestoppt werden. Zu beachten ist aber, dass ein Überlauf von Timer1 nicht erkannt werden kann, da das Überlaufflag von TF1 von TH0 bedient wird. Beim Betrieb von Timer0 in Modus 3 beschränkt sich der Einsatz von Timer1 auf Anwendungen, für die keine Überlauferkennung erforderlich ist. Die Voraussetzungen sind beim Betrieb als Baudratengenerator für die serielle Schnittstelle gegeben.

  • TH0, TL0
  • Diese beiden Register enthalten den aktuellen Timerstand von Timer 0. Sie sind kaskadiert, wobei in TH0 das Highbyte, in TL0 das Lowbyte abgelegt ist. Damit kann bis zum Wert 65535 (FFFFh) gezählt werden.
  • TH1,TL1
  • Analog zu Timer 0 ist in diesen beiden Registern der aktuelle Timerstand von Timer 1 abgelegt. Diese vier Timer- Register können jederzeit im Programm gelesen und auch überschrieben werden.
  • Timer- Control- Register (TCON und T2CON)
  • Das Timer- Control- Register enthält die Steuerbits für die Timer 0 und Timer 1. Durch T2CON wird Timer 2 beeinflusst. Dieses Register steht erst ab der 8032- Version zur Verfügung. Das Register TCON hat folgendende Aufgaben:
    TF1: Timer1 Überlauf
    TF1 wird harwaremäßig gesetzt, wenn Timer 1 überläuft. Dieses Bit stellt die Anforderung eines Interrupts dar. Mit Aufruf der Interruptroutine wird TF1 wieder von der Harware gelöscht. Man beachte die Ausnahme in Modus 3, hier setzt ein überlauf von TH0 das Flag TH1.
    TR1: Timer1 Start/Stop
    Bei gelöschtem TR1 stoppt Timer 1. Um den Timer zu starten, muss TR1 gesetzt werden.
    TF0: Timer0 überlauf
    TF0 wird hardwaremäßig gesetzt, wenn Timer 0 überläuft. Mit Aufruf der Interruptroutine für Timer0 wir auch dieses Bit gelöscht.
    TR0: Timer0 Start/Stop
    Bei gelöschtem TR0 stoppt Timer 0. Um Timer 0 zu starten, muss TR0 gesetzt werden.
  • Timer 2
  • Für Timer 2 stehen neben den Registern TH2, TL2, die den aktuellen Zählerstand beinhalten, noch 2 Capture Register (RCAP2H, RCAP2L) zur Verfügung, um den Zählerstand einzufrieren.
  • Serial- Control- Register (SCON)
  • Das Serial- Control- Register steuert die serielle Schnittstelle des Controllers.
  • Serial- Data- Buffer (SBUF)
  • Das Serial- Data- Buffer enthält den Wert, den die serielle Schnittstelle ausgibt oder empfangen hat.
  • Prozessor- Control- Register (PCON) In diesem Register ist beim 8032 nur ein Bit adressierbar. Es bestimmt die Baudrate der seriellen Schnittstelle. Dieses Bit hat die Bezeichnung SMOD und ist in PCON.7 abgelegt.
 © Ralph Toman 2005   
 
 
Kontakt
Sitemap