Timer und Zählmodi des 8051 Mikrocontrollers: Pinbelegung und Funktionen
Eingeordnet in Elektronik
Geschrieben am in
Deutsch mit einer Größe von 5,38 KB
Zeitmarken
Mode 0: Das Zählregister ist als 13-Bit-Register konfiguriert. Wenn der Zählerstand von maximalen Wert (THx.7 THx.6 ... THx.1 THx.0 TLx.4 TLx.3 ... TLx.0 = 1111111111111) auf null übergeht und der Timer aktiv ist, wird das Interrupt-Flag (TF0 für x = 0 bzw. TF1 für x = 1) gesetzt.
Mode 1 ist ähnlich wie Mode 0; in diesem Fall werden jedoch die 16-Bit-Zählregister (Registerpaar TH/TL, THx.7 ... TLx.0) verwendet. Das heißt, das Interrupt-Flag wird gesetzt, wenn der Übergang von FFFFh auf 0000h in TH/TL erfolgt. In einem Zählzyklus können somit bis zu 65.536 Ereignisse erfasst werden (Zählerstand 0 bis 65535).
Mode 2: Das Zählregister ist ein 8-Bit-Register. Der Überlauf von TL (8 Bit) setzt das Interrupt-Flag und löst ein automatisches Nachladen mit dem Inhalt des Registers TH aus. Dadurch sind nur 256 Ereignisse pro Zyklus erfassbar, jedoch entfällt die Ausführung zusätzlicher Befehle zum Nachladen des Zählers.
Mode 3: Bei Timer/Counter 0 ist das Registerpaar TH0/TL0 als zwei unabhängige 8-Bit-Zählregister konfiguriert. TL0 steuert das Flag TF0, TH0 steuert das Flag TF1. Timer 1 steht in diesem Modus für beliebige Operationen zur Verfügung, zum Beispiel zur Festlegung der Übertragungsrate der seriellen Schnittstelle.
Die Steuerung der Interrupt-Flags erfolgt wie folgt: Timer 0 arbeitet als 8-Bit-Timer mit automatischem Nachladen. Wenn TL0 überläuft, wird das Flag TF0 gesetzt. Das Flag TF1 wird gesetzt, wenn TH0 (8-Bit-Zählung) überläuft. Der Zähler wird mit einer Frequenz von 1/12 der Oszillatorfrequenz erhöht, wenn TR1 = 1 ist. Die Zählereignisse sind Übergänge des Signals an den Eingängen; das Signal „relog“ (Taktpuls) entspricht fosc/12.
In beiden Betriebsarten können die Zählregister TH und TL entweder intern oder extern gesteuert werden. Bei der internen Steuerung wird der Zähler durch Software gestartet, sobald die Bedingungen TRx = 1 und Gate = 0 erfüllt sind. Bei der externen Steuerung wird der Zähler durch den Zustand Gate = 1 entriegelt, zusammen mit einem niedrigen Pegel am Eingang INTx. Beide Formen der internen und externen Steuerung können unabhängig voneinander verwendet werden, wobei die Ereignisse an den Eingängen (T0 bzw. T1) als Flanken des Taktsignals gezählt werden.
Pinbelegung
VSS: Anschluss an Masse.
VCC: Spannungsversorgung.
XTAL1 und XTAL2: Ein- bzw. Ausgang des internen Oszillators.
RST: Reset-Eingang, aktiv im High-Zustand.
ALE (Address Latch Enable): Ausgang, der Impulse zum Zwischenspeichern der Adresse liefert. Damit werden die unteren acht Adressbits beim Zugriff auf externen Speicher bereitgestellt. Er kann außerdem als Taktausgang für periphere Bausteine genutzt werden.
PSEN (Program Store Enable): Ausgang, der beim Zugriff auf externen Programmspeicher aktiviert wird (Low-Pegel).
EA (External Access Enable): Eingang zur Auswahl des Programmspeichers. Bei Prozessorversionen mit internem Programmspeicher wird dieser Eingang auf VCC gelegt, sofern der interne Speicher (Adressen 0000H bis 1FFFH) verwendet werden soll. Soll externer Speicher verwendet werden, wird er auf Masse gelegt.
P0.7 bis P0.0: Port 0, Ein- und Ausgang für Daten und Adressen. Bei Verwendung von externem Programmspeicher ist dieser Port nicht frei verfügbar, da seine Pins für den Datenbus (D7 bis D0) und den Adressbus (A7 bis A0) im Zeitmultiplex genutzt werden. Die Trennung erfolgt extern über das ALE-Signal.
P1.7 bis P1.0: Port 1, bidirektional. Es ist der einzige Port, der ausschließlich für Ein- und Ausgabe von Daten vorgesehen ist.
P2.7 bis P2.0: Port 2, bidirektional. Er unterstützt den Zugriff auf externen Speicher und stellt die oberen acht Adressbits (A15 bis A8) bereit.
P3.7 bis P3.0: Port 3, bidirektional. Neben der allgemeinen Ein- und Ausgabe sind den Pins dieses Ports besondere Funktionen zugeordnet:
- RxD (P3.0): Eingang für Daten im seriellen Übertragungsmodus.
- TxD (P3.1): Ausgang für Daten im seriellen Übertragungsmodus.
- INT0 (P3.2): Eingang für externe Interrupt-Anforderung 0 (aktiv bei Low).
- INT1 (P3.3): Eingang für externe Interrupt-Anforderung 1 (aktiv bei Low).
- T0 (P3.4): Zähleingang für Timer 0.
- T1 (P3.5): Zähleingang für Timer 1.
- WR (P3.6): Ausgang zur Steuerung von Schreibvorgängen in externen Speicher.
- RD (P3.7): Ausgang zur Steuerung von Lesevorgängen aus externem Speicher.
Alle Ports sind bidirektional und können als Ein- oder Ausgänge verwendet werden. Die Ausgabe kann bitweise oder byteweise erfolgen. Zu beachten ist, dass bei der Verwendung einer Leitung eines Ports als Eingang zuvor eine „1“ in das entsprechende interne Register geschrieben werden muss. Port 0 besitzt eine Open-Drain-Struktur und benötigt externe Pull-up-Widerstände. Die Ports 1 bis 3 besitzen interne Pull-up-Widerstände nach VCC und können bis zu vier LS-TTL-Eingänge treiben (Port 0 bis zu acht).