                save
		listing off   ; kein Listing über diesen File

;****************************************************************************
;*                                                                          *
;*   AS 1.41 - Datei REG251.INC                                             *
;*   								            *
;*   Sinn : enthält SFR- und Bitdefinitionen für MCS-251-Prozessoren        *
;* 									    *
;*   letzte Änderungen : 30.12.1995                                         *
;*                                                                          *
;****************************************************************************

                ifndef  reg251inc       ; verhindert Mehrfacheinbindung

reg251inc       equ     1

                if      MOMCPUNAME<>"80C251"
                 fatal  "Falscher Prozessortyp eingestellt: nur 80C251 erlaubt!"
		endif


                if      MOMPASS=1
                 message "MCS-251-SFR-Definitionen (C) 1995 Alfred Arnold"
		 message "binde \{MOMCPU}-SFRs ein"
		endif

;----------------------------------------------------------------------------
; CPU-Kern:
; ACC = A = R11
; B = R10
; SP/SPH = SPX = DR60
; DPL/DPH/DPXL = DPX = DR56
; CY wird von AS selbst benutzt

ACC             port    0e0h            ; Akkumulator

B               port    0f0h            ; B-Register

PSW             port    0d0h            ; 8051-kompatibles PSW
CARRY           bit     PSW.7           ; Carry
AC              bit     PSW.6           ; Auxiliary-Carry
F0              bit     PSW.5           ; Flag 0
RS1             bit     PSW.4           ; Register-Bank-Auswahl
RS0             bit     PSW.3
OV              bit     PSW.2           ; Overflow-Flag
UD              bit     PSW.1           ; User-Flag
P               bit     PSW.0           ; Parity-Flag

PSW1            port    0d1h            ; erweitertes PSW (Bits 2-4,6-7 wie in PSW)
N               bit     PSW1.5          ; Negatives Ergebnis?
Z               bit     PSW1.1          ; Ergebnis 0 ?

SP              port    81h             ; Stackpointer (Bit 0..7)
SPH             port    0bdh            ; Stackpointer (Bit 8..15)
DPL             port    082h            ; Datenzeiger (Bit 0..7)
DPH             port    083h            ; Datenzeiger (Bit 8..15)
DPXL            port    084h            ; Datenzeiger (Bit 15..23)

PCON            port    087h            ; Power-Down-Modi u.a.
SMOD1           bit     PCON.7          ; Verdopplung Baudrate in Modus 1..3
SMOD0           bit     PCON.6          ; Umschaltung SCON.7 als FE/SM0
POF             bit     PCON.4          ; war Spannung weg ?
GF1             bit     PCON.3          ; General Flag 1
GF0             bit     PCON.2          ; General Flag 0
PD              bit     PCON.1          ; in Powerdown-Modus schalten
IDL             bit     PCON.0          ; in Idle-Modus schalten

IE              port    0a8h            ; Interrupt-Freigaben (eigentlich IE0,
                                        ; aber das ist schon belegt
EA              bit     IE.7            ; generelle Interruptsperre
EC              bit     IE.6            ; PCA-Interrupts freigeben
ET2             bit     IE.5            ; Interrupts Timer 2 freigeben
ES              bit     IE.4            ; Interrupts ser. Schnittstelle freigeben
ET1             bit     IE.3            ; Interrupt Timer 1 freigeben
EX1             bit     IE.2            ; externen Interrupt 1 freigeben
ET0             bit     IE.1            ; Interrupt Timer 0 freigeben
EX0             bit     IE.0            ; externen Interrupt 0 freigeben

IPH0            port    0b7h            ; Interrupt-Prioritäten
IPL0            port    0b8h

;----------------------------------------------------------------------------
; Ports mit Extrafunktionen:

P0              port    080h            ; Port 0

P1              port    090h            ; Port 1
T2              bit     P1.0            ; Ein/Ausgabe Timer 2
T2EX            bit     P1.1            ; Trigger Timer 2
ECI             bit     P1.2            ; externer Takt PCA
CEX0            bit     P1.3            ; Ein/Ausgabe PCA-Modul 0
CEX1            bit     P1.4            ; Ein/Ausgabe PCA-Modul 1
CEX2            bit     P1.5            ; Ein/Ausgabe PCA-Modul 2
CEX3            bit     P1.6            ; Ein/Ausgabe PCA-Modul 3
CEX4            bit     P1.7            ; Ein/Ausgabe PCA-Modul 4

P2              port    0a0h            ; Port 2

P3              port    0b0h            ; Port 3
RXD             bit     P3.0            ; serielle Empfangsleitung
TXD             bit     P3.1            ; serielle Sendeleitung
INT0            bit     P3.2            ; externer Interrupt 0
INT1            bit     P3.3            ; externer Interrupt 1
T0              bit     P3.4            ; Takteingang Timer 0
T1              bit     P3.5            ; Takteingang Timer 1
WR              bit     P3.6            ; Leseleitung
RD              bit     P3.7            ; Schreibleitung

;----------------------------------------------------------------------------
; serieller Port:

SCON            port    098h            ; Konfiguration
FE              bit     SCON.7          ; fehlerhaftes Stopbit ?
SM0             bit     SCON.7          ; Modusauswahl
SM1             bit     SCON.6
SM2             bit     SCON.5
REN             bit     SCON.4          ; Empfänger freigeben
TB8             bit     SCON.3          ; Sendedatenbit 8
RB8             bit     SCON.2          ; Empfangsdatenbit 8
TI              bit     SCON.1          ; Zeichen vollständig versandt ?
RI              bit     SCON.0          ; Zeichen vollständig empfangen ?

SBUF            port    099h            ; Datenregister
SADEN           port    0b9h            ; Slave-Adreßmaske
SADDR           port    0a9h            ; Slave-Adresse

;----------------------------------------------------------------------------
; Zähler/Watchdog:

TL0             port    08ah            ; Zählwert Zähler 0
TH0             port    08ch
TL1             port    08bh            ; Zählwert Zähler 1
TH1             port    08dh

TCON            port    088h            ; Steuerung Zähler 0/1
TF1             bit     TCON.7          ; Überlauf Timer 1 ?
TR1             bit     TCON.6          ; Timer 1 starten/stoppen
TF0             bit     TCON.5          ; Überlauf Timer 0 ?
TR0             bit     TCON.4          ; Timer 0 starten/stoppen
IE1             bit     TCON.3          ; externer Interrupt 1 augetreten ?
IT1             bit     TCON.2          ; Flanken/Pegeltriggerung ext. Interrupt 1
IE0             bit     TCON.1          ; externer Interrupt 0 augetreten ?
IT0             bit     TCON.0          ; Flanken/Pegeltriggerung ext. Interrupt 0

TMOD            port    089h            ; Steuerung/Modus Zähler 0/1
M00             bit     TMOD.0          ; Modus Timer 0
M10             bit     TMOD.1
CT0             bit     TMOD.2          ; Zähler/Timerumschaltung Timer 0
GATE0           bit     TMOD.3          ; Freigabemodus Timer 0
M01             bit     TMOD.4          ; Modus Timer 1
M11             bit     TMOD.5
CT1             bit     TMOD.6          ; Zähler/Timerumschaltung Timer 1
GATE1           bit     TMOD.7          ; Freigabemodus Timer 1


TL2             port    0cch            ; Zählwert Zähler 2
TH2             port    0cdh

T2CON           port    0c8h            ; Steuerung Zähler 2
TF2             bit     T2CON.7         ; Überlauf Timer 2 ?
EXF2            bit     T2CON.6         ; Flanke an T2EX aufgetreten ?
RCLK            bit     T2CON.5         ; Timer 2 oder 1 für seriellen Empfangstakt nutzen ?
TCLK            bit     T2CON.4         ; Timer 2 oder 1 für seriellen Sendetakt nutzen ?
EXEN2           bit     T2CON.3         ; Fang durch T2EX freigeben
TR2             bit     T2CON.2         ; Timer 2 starten/stoppen
CT2             bit     T2CON.1         ; Zähler/Timerumschaltung Timer 2
CPRL2           bit     T2CON.0         ; Fang oder Neuladen durch T2EX

T2MOD           port    0c9h            ; Steuerung/Modus Zähler 2
T2OE            bit     T2MOD.1         ; Ausgabe Timer 2 an T2 freigeben
DCEN            bit     T2MOD.0         ; Zählrichtung Timer 2

RCAP2L          port    0cah            ; Reload/Capture-Wert Timer 2
RCAP2H          port    0cbh
WDTRST          port    0a6h            ; Watchdog zurücksetzen

;----------------------------------------------------------------------------
; Zählerfeld:

CCON            port    0d8h            ; Steuerregister
CF              bit     CCON.7          ; Überlauf PCA ?
CR              bit     CCON.6          ; PCA-Timer starten/stoppen
CCF4            bit     CCON.4          ; Hat PCA-Modul 4..0 angesprochen ?
CCF3            bit     CCON.3
CCF2            bit     CCON.2
CCF1            bit     CCON.1
CCF0            bit     CCON.0

CMOD            port    0d9h            ; Modusregister
CIDL            bit     CMOD.7          ; PCA während Idle-Mode abschalten
WDTE            bit     CMOD.6          ; Watchdog-Ausgabe an PCA-Modul 4 freigeben
CPS1            bit     CMOD.2          ; PCA-Taktauswahl
CPS0            bit     CMOD.1
ECF             bit     CMOD.0          ; Interruptfreigabe

CL              port    0e9h            ; Zählwert
CH              port    0f9h

__defpcamodule  macro   Offset,NUM
CCAPM{NUM}      port    0d0h+Offset     ; Modusregister
ECOM{NUM}       bit     CCAPM0.6        ; Komparator Modul x einschalten
CAPP{NUM}       bit     CCAPM0.5        ; Fangfunktion Modul x einschalten (pos. Flanke)
CAPN{NUM}       bit     CCAPM0.4        ; Fangfunktion Modul x einschalten (neg. Flanke)
MAT{NUM}        bit     CCAPM0.3        ; Interrupt bei Gleichheit   Modul x einschalten
TOG{NUM}        bit     CCAPM0.2        ; High-Speed-Output-Modus Modul x einschalten
PWM{NUM}        bit     CCAPM0.1        ; PWM-Modus Modul x einschalten
ECCF{NUM}       bit     CCAPM0.0        ; Interrupts durch CCFx einschalten
CCAP{NUM}L      port    0e0h+Offset     ; Vergleichs/Fangwert Modul x
CCAP{NUM}H      port    0f0h+Offset
                endm

                __defpcamodule 0ah,"0"
                __defpcamodule 0bh,"1"
                __defpcamodule 0ch,"2"
                __defpcamodule 0dh,"3"
                __defpcamodule 0eh,"4"

;----------------------------------------------------------------------------

                endif

                restore                 ; wieder erlauben


