Special Function Register

Der 8081 Emulator unterstützt das Special Function Register Area. Allerdings haben für den Emulator momentan nur sehr wenige Register eine wirkliche Bedeutung:

CPU


RegisterAdresseBeschreibung
SP0x81 Der Stack-Pointer wird durch die Befehle push und pop gesetzt und zeigt auf das letzte gültige Byte auf dem Stack.
DPL0x82 DPL und DPH-Register bilden zusammen den Data-Pointer (DPTR).
DPH0x83 DPL und DPH-Register bilden zusammen den Data-Pointer (DPTR).
DPSEL0x92 Über die unteren 3 Bit des DPSEL-Registers kann zwischen 8 Registersätzen für das DPL- und das DPH-Register umgeschaltet werden.
SYSCON0xB1 Über das unterste Bit des SYSCON-Registers kann der XRAM zugeschaltet werden. Der XRAM wird in den Adreßbereich 0xFF00 bis 0xFFFF in den externen Speicher eingeblendet.
PSW0xD0 Das Programm Status Word Register. In diesem Register werden die Flags gespeichert.
Akku0xE0 Das Akku-Register des Prozessors.
B0xF0 Das B-Register. Dieses Register wird bei Multiplikationen und Divisionen verwendet.

Register Bit 7Bit 6Bit 5Bit 4 Bit 3Bit 2Bit 1Bit 0
DPSEL.2.1.0
SYSCONRMAPXMAP
PSWCYACF0RS1RS0OVF1P

DPSEL

Über die unteren 3 Bit des DPSEL-Registers kann zwischen 8 Registersätzen für das DPL- und das DPH-Register umgeschaltet werden. So kann praktisch mit 8 Datapointern gearbeitet werden. Ohne diese Funktion müßten immer wieder andere Werte in DPL und DPH geladen werden, wenn auf andere Adressen zugegriffen werden muß.

SYSCON, RMAP-Bit

Ist dieses Bit gesetzt, so wird die 2. Belegung des Adressbereiches der SFR aktiviert.

SYSCON, XMAP-Bit

Ist dieses Bit gesetzt, so wird der XRAM in den Adreßbereich 0xFF00 bis 0xFFFF des externen Speichers eingeblendet.

PSW, CY-Flag

Das Carry-Flag wird immer dann vom Prozessor gesetzt, wenn es bei einer Addition oder Subtraktion zu einem Übertrag (bzw. zum "Borgen" in die nächste Stelle) kam.

PSW AC-Flag

Das Auxiliary Carry-Flag wird immer dann gesetzt, wenn nach einer Addition oder Subtraktion eine BCD-Korrektur nötig ist, falls das Ergebnis als BCD-Zahl gedeutet werden soll.

PSW, F0 und F1-Flag

Diese beiden Flags werden vom Prozessor selber nicht benutzt und können beliebig verwendet werden.

PSW, OV-Flag

Das Overflow-Flag wird nach einer Addition oder Subtraktion immer dann gesetzt, wenn das Ergebnis zweier positiver Zahlen (vorzeichenbehaftet interpretiert) eine negative Zahl ergibt bzw. wenn die Subtraktion einer positiven Zahl von einer negativen Zahl wieder eine positive Zahl ergibt.

PSW, P-Flag

Das Parity-Flag wird vom Prozessor immer dann gesetzt, wenn eine ungerade Zahl an Bits im Akku-Register gesetzt sind.

Ports


RegisterAdresseBeschreibung
P00x80 Das P0-Register dient zur Kommunikation mit dem externen Speicher. Beim echten 8051 Prozessor wird das niederwertige Bytes der Adresse sowie das Datenbyte über diesen Port übertragen.
P10x90 Das P1-Register. An diesem Register ist die virtuelle Leuchtdiodenzeile angeschlossen, außerdem dient dieses Byte als Ausgabebyte für die CAPCOM-Einheit.
P20xA0 Das P2-Register. Wird über das @r0- oder das @r1-Register auf den externen Speicher zugegriffen, so stellt dieses Register das höherwertige Bytes der 16-Bit Adresse dar. (Ist der XRAM aktiviert, so führt ein Zugriff auf den externen Speicher über die Register @r0 und @r1 in den XRAM und das P2-Register wird ignoriert.)
P30xB0 Das P3-Register. An dieses Register können extern z.B. Schalter o.ä. angeschlossen sein. Mit einzelnen Bits dieses Registers können Timer ein- und ausgeschaltet werden oder der Prozessor aus dem Stromsparmodus wieder in den Normalmodus geschaltet werden.
P40xE8 Das P4-Register. Dieses Register wird zwar vom Assembler unterstützt und zur korrekten Adresse aufgelöst, es hat aber im Emulator keine Bedeutung.
P50xF8 Das P5-Register. Dieses Register wird zwar vom Assembler unterstützt und zur korrekten Adresse aufgelöst, es hat aber im Emulator keine Bedeutung.

Register Bit 7Bit 6Bit 5Bit 4 Bit 3Bit 2Bit 1Bit 0
P1COUT2CC2COUT1CC1COUT0CC0
P3T1T0INT1INT0

P1

In diesem Byte werden Bits durch die CAPCOM-Einheit gesetzt oder gelöscht. Welche Byte wann gesetzt werden hängt von der Konfiguration der CAPCOM-Einheit über die Register CMSEL0 und CMSEL1 sowie CT1CON ab.

P3, T1

Ist Timer 1 im Zähler-Modus und aktiviert, so wird der Inhalt von Timer 1 jedesmal um eins erhöht, wenn das Bit T1 gelöscht wird.

P3, T0

Ist Timer 0 im Zähler-Modus und aktiviert, so wird der Inhalt von Timer 0 jedesmal um eins erhöht, wenn das Bit T0 gelöscht wird.

P3, INT1

Ist Timer 1 entsprechend konfiguriert, so ist er immer genau dann aktiv, wenn dieses Bit gesetzt ist.

P3, INT0

Ist Timer 0 entsprechend konfiguriert, so ist er immer genau dann aktiv, wenn dieses Bit gesetzt ist.
Außerdem kann der Prozessor, wenn er entsprechned konfiguriert ist, durch das Setzen dieses Bits aus dem Stromsparmodus in den Normalmodus zurückgeschaltet werden.

Power Management


RegisterAdresseBeschreibung
PCON0x87 Das PCON-Register. Über dieses Register kann der Prozessor in den Stromsparmodus versetzt werden. Dies bedeutet, daß der Prozessor angehalten wird, bis ein Interrupt ausgelöst wird.
PCON10x88 Das PCON1-Register. Über dieses Register kann eingestellt werden, ob der Prozessor durch das Setzen des INT0-Bits im P3-Register aus dem Stromsparmodus in den Normalmodus zurückgeschaltet werden kann.
Achtung:
Um auf dieses Register zugreifen zu können, muß RMAP-Bit im SYSCON-Register gesetzt sein.

Register Bit 7Bit 6Bit 5Bit 4 Bit 3Bit 2Bit 1Bit 0
PCONPDSIDLSPDEIDLE
PCON1EWPD

PCON, PDS

(Power Down Start)
Wird dieses Bit gesetzt, so wird der Prozessor in den "Power Down"-Modus geschaltet. Er führt keine Befehle mehr aus und die Timer werden ebenfalls angehalten. Er kann nur durch einen Interrupt oder durch das Setzen des INT0-Bits im P3-Register (sofern das EWPD-Bit im PCON1-Register gesetzt ist) wieder reaktiviert werden.

PCON IDLS

(Idle Start)
Wird dieses Bit gesetzt, so wird der Prozessor in den "Idle"-Modus geschaltet. Er führt keine Befehle mehr aus, aber die Timer laufen weiter. Der Prozessor kann nur durch einen Interrupt aus diesem Modus wieder reaktiviert werden.

PCON, PDE

(Power Down Enable)
Um den Prozessor über das PDS-Bit in den "Power Down"-Modus schalten zu können, muß dieses Bit gesetzt sein.

PCON, IDLE

(Idle Enable)
Um den Prozessor über das IDLS-Bit in den "Idle"-Modus schalten zu können, muß dieses Bit gesetzt sein.

PCON1, EWPD

(External Wakeup from Power Down)
Ist dieses Bit gesetzt, so kann der Prozessor durch das Setzen des INT0-Bits im P3-Register aus dem "Power Down"-Modus wieder geweckt werden.

Interrupt-System


RegisterAdresseBeschreibung
TCON0x88 Über dieses Register können die Timer 0 und 1 ein- und ausgeschaltet werden. Außerdem befinden sich in diesem Register Bits, die signalisieren, daß ein Timer-Interrupt oder ein externer Interrupt aufgetreten ist sowie Konfigurations-Bits für die externen Interrupts.
ITCON0x9A Über die Bits in diesem Register kann eingestellt werden, ob die externen Interrupts ausgelöst werden, wenn INTx von 0 zu 1 übergeht oder umgekehrt. Außerdem wird in diesem Register ein Bit gesetzt, wenn der externe Interrupt 2 ausgelöst wird.
IEN00xA8 Das Interrupt-Enable-Register. Mit diesem Register kann eingestellt werden, welche Interrupts bearbeitet werden sollen.
IEN10xA9 Das Interrupt-Enable-Register. Mit diesem Register kann eingestellt werden, welche Interrupts bearbeitet werden sollen.
IP00xB8 Das Interrupt-Prioritäts-Register. Über dieses Register wird die Prioritätsstufe der einzelnen Iterruptquellen eingestellt, d.h. welche Interrupts durch andere unterbrochen werden drüfen.
IP10xB9 Das Interrupt-Prioritäts-Register. Über dieses Register wird die Prioritätsstufe der einzelnen Iterruptquellen eingestellt, d.h. welche Interrupts durch andere unterbrochen werden drüfen.
ADCON00xD8 In diesem Register wird ein Bit gesetzt, wenn der Interrupt des A/D-Wandlers ausgelöst wird.

Register Bit 7Bit 6Bit 5Bit 4 Bit 3Bit 2Bit 1Bit 0
TCONTF1TR1TF0TR0IE1IT1IE0IT0
ITCONIE2I1ETRI1ETFI0ETRI0ETF
IEN0EAET2ESET1EX1ET0EX0
IEN1ECT1ECCMECT2ECEMEX2EADC
IP0PT2PSPT1PX1PT0PX0
IP1PCT1PCCMPCT2PCEMPX2PADC
ADCON0IADC

TCON, IT0

Ist dieses Bit nicht gesetzt, so wird der externe Interrupt 0 immer dann ausgelöst, wenn sich INT0 auf niedrigem Niveau befindet. Ist dieses Bit gesetzt, so gelten für die Auslösung des externen Interrupts 0 die Einstellungen, die über die Bits I0ETR und I0ETF im ITCON-Register festgelegt sind.

TCON, IE0

Dieses Bit wird immer dann von der Hardware gesetzt, wenn es zu einem Interrupt-Request des externen Intrrupts 0 kommt und wieder vom Prozessor gelöscht, wenn die entsprechende Interrupt-Behandlungsroutine aufgerufen wird.

TCON, IT1

Ist dieses Bit nicht gesetzt, so wird der externe Interrupt 1 immer dann ausgelöst, wenn sich INT1 auf niedrigem Niveau befindet. Ist dieses Bit gesetzt, so gelten für die Auslösung des externen Interrupts 1 die Einstellungen, die über die Bits I1ETR und I1ETF im ITCON-Register festgelegt sind.

TCON, IE1

Dieses Bit wird immer dann von der Hardware gesetzt, wenn es zu einem Interrupt-Request des externen Intrrupts 1 kommt und wieder vom Prozessor gelöscht, wenn die entsprechende Interrupt-Behandlungsroutine aufgerufen wird.

TCON, TR0

Ist dieses bit gesetzt, so ist der Timer 0 eingeschaltet, ist es gelöscht, so ist der Timer 0 ausgeschaltet.

TCON, TF0

Dieses Bit wird immer dann vom Timer 0 gesetzt, wenn es zu einem Überlauf kam und damit der Timer 0 Interrupt ausgelöst wird. Es wird vom Prozessor wieder gelöscht, wenn die entsptechende Behandlungsroutine für den Interrupt aufgerufen wird.

TCON, TR1

Ist dieses bit gesetzt, so ist der Timer 1 eingeschaltet, ist es gelöscht, so ist der Timer 1 ausgeschaltet.

TCON, TF1

Dieses Bit wird immer dann vom Timer 1 gesetzt, wenn es zu einem Überlauf kam und damit der Timer 1 Interrupt ausgelöst wird. Es wird vom Prozessor wieder gelöscht, wenn die entsptechende Behandlungsroutine für den Interrupt aufgerufen wird.

ITCON, I0ETR und I1ETR

rising edge-triggered mode
Ist dieses Bit für den entsprechenden Interrupt gesetzt, so wird ein Interrupt immer dann ausgelöst, wenn der Wert an INT0 bzw. INT1 von 0 zu 1 übergeht. (Vorausgesetzt, das IT0- bzw. IT1-Bit im TCON-Register ist auf 1 gestellt, ansonsten wird der Interrupt immer dann ausgelöst, wenn INT0 bzw. INT1 auf 0 ist.)

ITCON, I0ETF und I1ETF

falling edge-triggered mode
Ist dieses Bit für den entsprechenden Interrupt gesetzt, so wird ein Interrupt immer dann ausgelöst, wenn der Wert an INT0 bzw. INT1 von 1 zu 0 übergeht. (Vorausgesetzt, das IT0- bzw. IT1-Bit im TCON-Register ist auf 1 gestellt, ansonsten wird der Interrupt immer dann ausgelöst, wenn INT0 bzw. INT1 auf 0 ist.)

ADCON0, IE2

Dieses Bit wird von der Hardware gesetzt, wenn der externe Interrupt 2 ausgelöst wird und es wird vom Prozessor wieder gelöscht, wenn die Behandlungsroutine des Interrupts aufgerufen wird.

IEN0, EA

Dieses Bit muß gesetzt sein, damit Interrupt-Requests verarbeitet werden. Ist es nicht gesetzt, so wird kein Interrupt-Request verarbeitet unabhängig von den folgenden Einstellungen.

IEN0 und IEN1

Über die einzelnen Bits dieser Register kann für die einzelnen Interrupts eingestellt werden, ob Interrupt-Requests vom Prozessor verarbeitert werden sollen oder nicht.

RegisterBitInterrupt
IEN0EX0External 0
ET0Timer 0
EX1External 1
ET1Timer 1
ESSerial port
ET2Timer 2
IEN1EADCA/D converter
EX2External 2
ECEMCAPCOM emergency
ECT2Compare timer 2
ECCMCapture / compare match
ECT1Compare timer 1

IP0 und IP1

Über die einzelnen Bits dieser Register kann für die Priorität der einzelnen Interrupts eingestellt werden. Interrupts können entweder low-priority oder high-priority Interrupts sein. Ist das entsprechende Bit für einen Interrupt in IP0 oder IP1 gesetzt, so hat der Interrupt high-priority. Für die Ausführung von Interrupts gibt: Jeder Interrupt kann den normalen Programmablauf unterbrechen (sofern er nicht über die Register IEN0 und IEN1 deaktiviert wurde), ferner kann die Bearbeitung eines low-priority Interrupts durch einen high-priority Interrupt unterbrochen werden.

RegisterBitInterrupt
IP0PX0External 0
PT0Timer 0
PX1External 1
PT1Timer 1
PSSerial port
PT2Timer 2
IP1PADCA/D converter
PX2External 2
PCEMCAPCOM emergency
PCT2Compare timer 2
PCCMCapture / compare match
PCT1Compare timer 1

ADCON0, IADC

Dieses Bit wird von der Hardware gesetzt, wenn der Interrupt des A/D-Wandlers ausgelöst wird und es wird vom Prozessor wieder gelöscht, wenn die Behandlungsroutine des Interrupts aufgerufen wird.

Timer 0 und 1


RegisterAdresseBeschreibung
TCON0x88 Über dieses Register können die Timer 0 und 1 ein- und ausgeschaltet werden. Außerdem befinden sich in diesem Register Bits, die signalisieren, daß ein Timer-Interrupt oder ein externer Interrupt aufgetreten ist sowie Konfigurations-Bits für die externen Interrupts.
TMOD0x89 Über dieses Register können die Timer 0 und 1 konfiguriert werden.
TL00x8A Das TL0- und das TH0-Register bilden den Zähler des Timers 0.
TH00x8C Das TL0- und das TH0-Register bilden den Zähler des Timers 0.
TL10x8B Das TL1- und das TH1-Register bilden den Zähler des Timers 1.
TH10x8D Das TL1- und das TH1-Register bilden den Zähler des Timers 1.

Register Bit 7Bit 6Bit 5Bit 4 Bit 3Bit 2Bit 1Bit 0
TCONTF1TR1TF0TR0IE1IT1IE0IT0
TMODGATE1C/T1M11M01GATE0C/T0M10M00

TCON, IT0

Ist dieses Bit nicht gesetzt, so wird der externe Interrupt 0 immer dann ausgelöst, wenn sich INT0 auf niedrigem Niveau befindet. Ist dieses Bit gesetzt, so gelten für die Auslösung des externen Interrupts 0 die Einstellungen, die über die Bits I0ETR und I0ETF im ITCON-Register festgelegt sind.

TCON, IE0

Dieses Bit wird immer dann von der Hardware gesetzt, wenn es zu einem Interrupt-Request des externen Intrrupts 0 kommt und wieder vom Prozessor gelöscht, wenn die entsprechende Interrupt-Behandlungsroutine aufgerufen wird.

TCON, IT1

Ist dieses Bit nicht gesetzt, so wird der externe Interrupt 1 immer dann ausgelöst, wenn sich INT1 auf niedrigem Niveau befindet. Ist dieses Bit gesetzt, so gelten für die Auslösung des externen Interrupts 1 die Einstellungen, die über die Bits I1ETR und I1ETF im ITCON-Register festgelegt sind.

TCON, IE1

Dieses Bit wird immer dann von der Hardware gesetzt, wenn es zu einem Interrupt-Request des externen Intrrupts 1 kommt und wieder vom Prozessor gelöscht, wenn die entsprechende Interrupt-Behandlungsroutine aufgerufen wird.

TCON, TR0

Ist dieses bit gesetzt, so ist der Timer 0 eingeschaltet, ist es gelöscht, so ist der Timer 0 ausgeschaltet.

TCON, TF0

Dieses Bit wird immer dann vom Timer 0 gesetzt, wenn es zu einem Überlauf kam und damit der Timer 0 Interrupt ausgelöst wird. Es wird vom Prozessor wieder gelöscht, wenn die entsptechende Behandlungsroutine für den Interrupt aufgerufen wird.

TCON, TR1

Ist dieses bit gesetzt, so ist der Timer 1 eingeschaltet, ist es gelöscht, so ist der Timer 1 ausgeschaltet.

TCON, TF1

Dieses Bit wird immer dann vom Timer 1 gesetzt, wenn es zu einem Überlauf kam und damit der Timer 1 Interrupt ausgelöst wird. Es wird vom Prozessor wieder gelöscht, wenn die entsptechende Behandlungsroutine für den Interrupt aufgerufen wird.

TMOD

Die obere Hälfte des TMOD-Registers enthält Einstellungen für den Timer 1 und die untere Hälfte enthält die gleichen Einstellungen für Timer 0, d.h. Bit 4 hat für Timer 1 die gleiche Bedeutung wie Bit 0 für Timer 0 usw.

TMOD, M0 und M1

Über diese beiden Bits wird die Betriebsart des entsprechenden Timers gewählt:

M1M0Betriebsart
00 13-Bit-Timer. Das TH-Register und die unteren 5-Bit des TL-Registers werden als Zähler verwendet.
01 16-Bit-Timer. Die Register TH und TL werden als Zähler verwendet.
10 8-Bit-Timer mit Vorgabewert. Das TL-Register wird als Zähler verwendet. Wenn es überläuft, wird es jedoch nicht auf 0 zurück gesetzt, sondern auf den Wert, der im TH-Register steht.
11 Dieser Betriebsmodus hat für Timer 0 und Timer 1 unterschiedliche Bedeutungen:
Timer 0:
In diesem Modus werden TL0 und TH0 als zwei Eigenständige Timer hochgezählt. Während TL0 gemäß den Einstellungen zu Timer 0 (Timer- oder Counter-Modus usw.) behandelt wird, wird TH0 ohne Berücksichtigung dieser Einstellungen hochgezählt. Läuft TL0 über, so wird der Timer 0 Interrupt ausgelöst. Läuft TH0 über, so wird der Timer 1 Interrupt ausgelöst.
Timer 1:
In diesem Betriebsmodus arbeitet Timer 1 nicht. Timer 1 in diesen Modus zu versetzen ist gleichbedeutend damit, ihn auszuschalten.

TMOD, C/T

Ist dieses Bit gesetzt, so wird der entsprechende Timer als "Counter" angesehen, sonst gilt er als "Timer". Im Timer-Modus wird der Zähler (TLx oder TLx und THx) mit jedem Takt um eins erhöht. Im Counter-Modus wird der Zähler immer dann um eins gehöht, wenn das T0- bzw. T1-Bit (je nach dem füt Timer 0 oder 1) seinen Zustand von 1 zu 0 ändert.

TMOD, GATE

Ist dieses bit gesetzt, so ist der entsprechende Timer nur aktiv, während das INT0- bzw. das INT1-Bit (je nach dem für Timer 0 oder 1) im P3-Register gesetzt ist. Ist das GATE-Bit nicht gesetzt, so reicht es den Timer über das TRx-Bit einzuschalten.

Timer 2


Achtung:
Der Timer 2 als solcher wird vom Emulator nicht unterstützt.

T2CON0xC8 In diesem Register werden Bits gesetzt, wenn der Interrupt des Timers 2 ausgelöst wird.
T2MOD0xC9 Das T2MOD-Register. Dieses Register wird zwar vom Assembler unterstützt und zur korrekten Adresse aufgelöst, es hat aber im Emulator keine Bedeutung.

Register Bit 7Bit 6Bit 5Bit 4 Bit 3Bit 2Bit 1Bit 0
T2CONTF2EXF2

T2CON, TF2 und EXF2

Diese beiden Bits werden von der Hardware gesetzt, wenn der Interrupt des Timers 2 ausgelöst wurde und sie werden vom Prozessor wieder gelöscht, wenn die Behandlungsroutine des Interrupts aufgerufen wird.

Serielle Schnittstelle


RegisterAdresseBeschreibung
SCON0x98 Das SCON-Register. In diesem Register werden Bits gesetzt, um zu signalieren, daß ein Byte empfangen wurde oder die Schnittstelle bereit zum Versenden ist.
SBUF0x99 In dem SBUF-Register wird ein Byte nach dem Empfang über die serielle Schnittstelle gespeichert bzw. es wird der Inhalt dieses Registers über die serielle Schnittstelle versandt.

Register Bit 7Bit 6Bit 5Bit 4 Bit 3Bit 2Bit 1Bit 0
SCONTIRI

SCON, TI

Das TI-Bit wird vom Prozessor gesetzt, wenn der Inhalt von SBUF vollständig versandt wurde und das Register nun bereit ist, daß nächste Byte aufzunehmen. Dieses Bit muß softwaremäßig gelöscht werden.

SCON, RI

Das RI-Bit wird vom Prozessor gesetzt, ein komplettes Byte empfangen wurde und es im SBUF-Register gespeichert wude. Dieses Bit muß softwaremäßig gelöscht werden.

Capture/Compare-Unit


Achtung:
Der Capture-Modus wird vom Emulator nicht unterstützt. Werden entsprechende Bits gesetzt, so werden diese vom Emulator ignoriert.

RegisterAdresseBeschreibung
TRCON0xCF Ein Bit in diesem Register wird gesetzt, wenn der CAPCOM-Emergency-Interrupt ausgelöst wurde.
CT2CON0xC1 Ein Bit in diesem Register wird gesetzt, wenn der Capture Timer 2 Interrupt ausgelöst wurde.
CCL00xC2 In CCL0 und CCH0 wird der Schwellenwert gespeichert, bei dessen Überschreitung der Ausgang 0 eingeschaltet wird.
CCH00xC3 In CCL0 und CCH0 wird der Schwellenwert gespeichert, bei dessen Überschreitung der Ausgang 0 eingeschaltet wird.
CCL10xC4 In CCL1 und CCH1 wird der Schwellenwert gespeichert, bei dessen Überschreitung der Ausgang 0 eingeschaltet wird.
CCH10xC5 In CCL1 und CCH1 wird der Schwellenwert gespeichert, bei dessen Überschreitung der Ausgang 0 eingeschaltet wird.
CCL20xC6 In CCL2 und CCH2 wird der Schwellenwert gespeichert, bei dessen Überschreitung der Ausgang 0 eingeschaltet wird.
CCH20xC7 In CCL2 und CCH2 wird der Schwellenwert gespeichert, bei dessen Überschreitung der Ausgang 0 eingeschaltet wird.
BCON0xD7 Ein Bit in diesem Register wird gesetzt, wenn der CAPCOM-Emergency-Interrupt ausgelöst wurde.
CCPL0xDE In den Registern CCPL und CCPH wird der Wert gespeichert, mit dem der CAPCOM-Timer initialisiert wird, wenn der in der Betriebsart 0 überläuft.
CCPH0xDF In den Registern CCPL und CCPH wird der Wert gespeichert, mit dem der CAPCOM-Timer initialisiert wird, wenn der in der Betriebsart 0 überläuft.
CCIR0xE5 In diesem Register werden Bits gesetzt, wenn der Capture/Comapre Match Interrupt oder der Compare Timer 1 Interrupt ausgelöst wurde.
CT1OFL0xE6 In den Registern CT1OFL und CT1OFH wird der Wert des CAPCOM-Timers gespeichert.
CT1OFH0xE7 In den Registern CT1OFL und CT1OFH wird der Wert des CAPCOM-Timers gespeichert.
CT1CON0xEF Über diese Register wird die CAPCOM-Einheit konfiguriert.

Register Bit 7Bit 6Bit 5Bit 4 Bit 3Bit 2Bit 1Bit 0
CT1CONCTMCT1RESCT1RCLK2CLK1CLK0
TRCONTRF
CT2CONCT2P
BCONBCERR
CCIRCT1FPCT1FCCC2FCC2RCC1FCC1RCC0FCC0R

CT1CON, CLK0, CLK1 und CLK2

Über diese 3 Bits wird das Taktverhältnis zwischen dem Systemtaktgeber und dem Taktgeber des CAPCOM-Timers eingestellt:

VerhältnisCLK2CLK1CLK0
1/2 000
1/4 001
1/8 010
1/16 011
1/32 100
1/64 101
1/128110
1/256111

CT1CON, CT1R

Ist dieses Bit gesetzt, so läuft der CAPCOM-Timer.

CT1CON, CT1RES

Ist dieses Bit gesetzt, so wird der Inhalt des CAPCOM-Timers beim Ein- oder Ausschalten des CAPCOM-Timers sowie, wenn der Timer abgeschaltet ist, zurückgesetzt.

CT1CON, CTM

Stellt die Betriebsart des CAPCOM-Timers ein. Ist das Bit gelöscht, so zählt der Timer von dem eingestellt Startwert aus hoch, die Ausgänge werden, wenn der Timer den gleichen Wert wie das jeweils entsprechende Register enthält, eingeschaltet und beim Überlauf des Timers wieder ausgeschaltet. In der 2. Betriebsart schaltet die CAPCOM-Einheit ebenfalls beim Überschreiten der entsprechenden Schwellenwerte den zugehörigen Ausgang ein, aber der Timer läuft nicht über, sondern wechselt die Zählrichtung und schaltet die Ausgänge beim Unterschreiten des entsprechenden Schwellenwertes wieder ab.

TRCON, TRF und BCON, BCERR

Diese beiden Bits werden von der Hardware gesetzt, wenn der CAPCOM-Emergency Interrupt ausgelöst werden soll und sie werden vom Prozessor wieder gelöscht, sobald die Interrupt-Behandlungsroutine aufgerufen wird.

CT2CON, CT2P

Dieses Bit wird von der Hardware gesetzt, wenn der Capture Timer 2 Interrupt ausgelöst werden soll und es wird vom Prozessor wieder gelöscht, sobald die Interrupt-Behandlungsroutine aufgerufen wird.

CCIR, CC0F-CC2F und CC0R-CC2R

Diese Bits werden von der Hardware gesetzt, wenn der Capture/Comapre Match Interrupt ausgelöst wird. Die CCxR-Bits werden gesetzt, wenn der zugehörige Timer beim aufwärts Zählen (raising) den eingestellt Schwellenwert erreicht hat und die CCxF-Bits werden gesetzt, wenn der zugehörige Timer beim abwärts Zählen (falling) den eingestellten Schwellenwert erreicht.

CCIR, CT1FP und CT1FC

Diese Bits werden von der Hardware gesetzt, wenn der Compare Timer 1 Interrupt ausgelöst wird. Das CT1FP-Bit wird gesetzt, wenn der Zähler überläuft oder seine Zählrichtung von up zu down ändert. Das CT1FC-Bit wird gesetzt, wenn der Zähler seine Zählrichtung von down zu up ändert.

A/D-Wandler


Achtung:
Der Wandlertakt beträgt im Emulator immer 1/48 des Systemtakts (das entspricht der Zeit zur Ausführung von 2 Befehlen) und kann nicht geändert werden. Beim echten 8051 Prozessor kann der Wandlertakt über die Register ADCON0 und ADCON1 eingestellt werden.

RegisterAdresseBeschreibung
P1ANA0x90 In diesem Register wird eingestellt, welche Pins als analoge Eingänge verwendet werden sollen.
Achtung:
Um auf dieses Register zugreifen zu können, muß RMAP-Bit im SYSCON-Register gesetzt sein.
P3ANA0xB0 In diesem Register wird eingestellt, welche Pins als analoge Eingänge verwendet werden sollen.
Achtung:
Um auf dieses Register zugreifen zu können, muß RMAP-Bit im SYSCON-Register gesetzt sein.
ADCON00xD8 Über dieses Register wird der Analog-Digital-Wandler konfiguriert.
ADCON10xDC Über dieses Register wird der Analog-Digital-Wandler konfiguriert.
ADDATH0xD9 Über die Register ADDATL und ADDATH wird der gemessene Wert nach Abschluß der Messung ausgegeben.
ADDATL0xDA Über die Register ADDATL und ADDATH wird der gemessene Wert nach Abschluß der Messung ausgegeben. Außerdem wird die Messung dadurch eingeleitet, daß ein beliebiger Wert in dieses Register geschrieben wird.

Register Bit 7Bit 6Bit 5Bit 4 Bit 3Bit 2Bit 1Bit 0
P1ANAEAN3EAN2EAN1EAN0
P3ANAEAN7EAN6EAN5EAN4
ADCON0IADCBSYADMMX2MX1MX0
ADCON1MX2MX1MX0

P1ANA und P3ANA

Über die Bits in diesen Registern wird eingestellt, an welche Eingänge als analoge Eingänge verwendet werden sollen.

ADCON0 und ADCON1, MX0 - MX2

Die MX0- bis MX2-Bits sind in den beiden Registern ADCON0 und ADCON1 identisch. Sie geben an, an welchem Eingang gemessen werden soll:
MX2MX1MX0gewählter Eingang
000P1.0 / AN0
001P1.1 / AN1
010P1.2 / AN2
011P1.3 / AN3
100P3.2 / AN4
101P3.3 / AN5
110P3.4 / AN6
111P3.5 / AN7

ADCON0, ADM

Ist dieses Bit gesetzt, so wird kontinuiertlich gemessen, ansonsten wird nur dann eine Messung durchgeführt, wenn in das ADDATL-Register manuell ein Wert geschrieben wird.

ADCON0, BSY

Dieses Bit ist immer dann gesetzt, wenn der Analog-Digital-Wandler gerade eine Messung durchführt.

ADCON0, IADC

Dieses Bit wird vom Analog-Digital-Wandler immer dann gesetzt, wenn eine Interrupt ausgelöst wird.

ADDATH und ADDATL

Über diese beiden Bytes wird das Ergebnis der Analog-Digital-Wandlung als 10-Bit-Wert ausgegeben. Dabei enthält ADDATH die höherwertigen 8 Bit und in ADDATL werden die niederwertigen 2 Bit gespeichert, allerdings werden dafür in ADDATL die 2 höchstwertigen Bits (also Bit 6 und Bit 7 von ADDATL) verwendet.