226 lines
10 KiB
PHP
226 lines
10 KiB
PHP
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
|
|
|
|
|