dect
/
asl
Archived
13
0
Fork 0
This repository has been archived on 2022-02-17. You can view files and clone it, but cannot push or open issues or pull requests.
asl/include/80c50x.inc

258 lines
9.9 KiB
PHP

save
listing off ; kein Listing über diesen File
;****************************************************************************
;* *
;* AS 1.41 - Datei 80C50x.INC *
;* *
;* Sinn : enthält SFR- und Bitdefinitionen für die SAB C50x-Prozessoren *
; (Ableitung aus STDDEF51.INC) *
;* *
;* letzte Änderungen : 26. 3.1997 Grundsteinlegung *
;* 8. 6.1997 Korrekturen von Herrn Schmid *
;* *
;****************************************************************************
ifndef reg50xinc ; verhindert Mehrfacheinbindung
reg50xinc equ 1
if (MOMCPUNAME<>"80C501")&&(MOMCPUNAME<>"80C502")&&(MOMCPUNAME<>"80C504")
fatal "Falscher Prozessortyp eingestellt: nur 80C501, 80C502 oder 80C504 erlaubt!"
endif
if MOMPASS=1
message "SAB C50x-SFR-Definitionen (C) 1993 Alfred Arnold, Steffen Schmid"
message "binde \{MOMCPUNAME}-SFRs ein"
endif
;----------------------------------------------------------------------------
; Prozessorkern
ACC SFRB 0e0h ; Akkumulator
B SFRB 0f0h ; Hilfsakku für MUL/DIV
SP SFR 81h ; Stapelzeiger
DPL SFR 82h ; Datenzeiger Bit 0..7
DPH SFR 83h ; " Bit 8..15
PSW SFRB 0d0h ; Statuswort
CY BIT PSW.7
AC BIT PSW.6
F0 BIT PSW.5
RS1 BIT PSW.4
RS0 BIT PSW.3
OV BIT PSW.2
P BIT PSW.0
SYSCON SFR 0b1h ; Systemkonfiguration
PCON SFR 87h ; "Power-Management"
PCON1 SFRB 88h
EWPD BIT PCON1.7 ; Freigabe Wake-Up durch INT0
if MOMCPUNAME="80C502"
XPAGE SFR 91h ; XRAM-Ansteuerung 80C502
XCON SFR 94h
DPSEL SFR 92h
endif
;----------------------------------------------------------------------------
; Ports
P0 SFRB 80h ; I/O-Ports
P1 SFRB 90h
P2 SFRB 0a0h
P3 SFRB 0b0h
T2EX BIT P1.1
T2 BIT P1.0
if MOMCPUNAME="80C504"
P1ANA SFRB 90h ; Selektion Port 1/3 als analoge Eingabe
P3ANA SFRB 0b0h
EAN0 BIT P1ANA.0
EAN1 BIT P1ANA.1
EAN2 BIT P1ANA.2
EAN3 BIT P1ANA.3
EAN4 BIT P1ANA.2
EAN5 BIT P1ANA.3
EAN6 BIT P1ANA.4
EAN7 BIT P1ANA.5
endif
RD BIT P3.7 ; Port 3: Schreibleitung
WR BIT P3.6 ; Leseleitung
T1 BIT P3.5 ; Testleitung 1
T0 BIT P3.4 ; Testleitung 0
INT1 BIT P3.3 ; ext. Interrupt 1
INT0 BIT P3.2 ; ext. Interrupt 0
TXD BIT P3.1 ; ser. Ausgang
RXD BIT P3.0 ; ser. Eingang
;----------------------------------------------------------------------------
; serielles
SCON SFRB 98h ; ser. Schnittstelle: Steuerregister
SM0 BIT SCON.7 ; Betriebsarten
SM1 BIT SCON.6
SM2 BIT SCON.5
REN BIT SCON.4 ; Empfangssperre
TB8 BIT SCON.3 ; 9. zu sendendes Bit
RB8 BIT SCON.2 ; 9. empfangenes Bit
TI BIT SCON.1 ; Senderinterruptflag
RI BIT SCON.0 ; Empfängerinterruptflag
SBUF SFR 99h ; " " Datenregister
if MOMCPUNAME="80C502"
SRELL SFR 0aah ; Wert für Baudratengenerator
SRELH SFR 0bah
BAUD SFRB 0d8h
BD BIT BAUD.7 ; Baudratengenerator aktivieren
ENDIF
;----------------------------------------------------------------------------
; Timer
TCON SFRB 88h ; Timer 0/1 Steuerregister
TF1 BIT TCON.7 ; Überlauf Timer 1
TR1 BIT TCON.6 ; Timer 1 laufenlassen
TF0 BIT TCON.5 ; Überlauf Timer 0
TR0 BIT TCON.4 ; Timer 0 laufenlassen
IE1 BIT TCON.3 ; Externer Interrupt 1 aufgetreten
IT1 BIT TCON.2 ; Einstellung Triggerflanke externer Interrupt 1
IE0 BIT TCON.1 ; Externer Interrupt 0 aufgetreten
IT0 BIT TCON.0 ; Einstellung Triggerflanke externer Interrupt 0
TMOD SFR 89h ; Timer 0/1 Betriebsartenregister
TL0 SFR 8ah ; Daten Timer 0
TL1 SFR 8bh
TH0 SFR 8ch ; Daten Timer 1
TH1 SFR 8dh
T2CON SFRB 0c8h ; Steuerregister Timer 2
TL2 SFR 0cch ; Daten Timer 2
TH2 SFR 0cdh
RC2L SFR 0cah ; Capture-Register
RC2H SFR 0cbh
TF2 BIT T2CON.7 ; Overflow Timer 2
EXF2 BIT T2CON.6 ; Reload aufgetreten
RCLK BIT T2CON.5 ; Timer 2 liefert RxD-Takt
TCLK BIT T2CON.4 ; Timer 2 liefert TxD-Takt
EXEN2 BIT T2CON.3 ; externer Enable Timer 2
TR2 BIT T2CON.2 ; Timer 2 starten
CT2 BIT T2CON.1 ; Timer 2 als Zähler
CPRL2 BIT T2CON.0 ; Capture erlauben
;---------------------------------------------------------------------------
; Watchdog
if MOMCPU>=80C504h
WDCON SFRB 0c0h ; Watchdog Steuerung
SWDT BIT WDCON.0 ; Watchdog starten
WDT BIT WDCON.1 ; Watchdog zurücksetzen
WDTS BIT WDCON.2 ; Watchdog-Reset-Flagge
OWDS BIT WDCON.3 ; dito Oszillator-Watchdog
WDTREL SFR 86h
endif
;---------------------------------------------------------------------------
; Capture/Compare-Einheit
if MOMCPUNAME="80C504"
CT1CON SFR 0e1h ; Steuerung Vergleicher 1
CCPL SFR 0deh ; Periode Vergleicher 1
CCPH SFR 0dfh
CT1OFL SFR 0e6h ; Offset Vergleicher 1
CT1OFH SFR 0e7h
CMSEL0 SFR 0e3h ; Modus
CMSEL1 SFR 0e4h
COINI SFR 0e2h ; Initialisierung Vergleicherausgang
TRCON SFR 0cfh ; Trap-Freigabe
CCL0 SFR 0c2h ; Vergleichs-/Fangwert 0
CCH0 SFR 0c3h
CCL1 SFR 0c4h ; Vergleichs-/Fangwert 1
CCH1 SFR 0c5h
CCL2 SFR 0c6h ; Vergleichs-/Fangwert 2
CCH2 SFR 0c7h
CCIR SFR 0e5h ; Interruptflags
CCIE SFR 0d6h ; Interruptmasken
CT2CON SFR 0c1h ; Steuerung Vergleicher 2
CP2L SFR 0d2h ; Periode Vergleicher 2
CP2H SFR 0d3h
CMP2L SFR 0d4h ; Vergleichs-/Fangwert Timer 2
CMP2H SFR 0d5h
BCON SFR 0d7h ; Steuerung Blockkommunikation
endif
;---------------------------------------------------------------------------
; A/D-Wandler
if MOMCPUNAME="80C504"
ADCON0 SFRB 0d8h ; Konfiguration
IADC BIT ADCON0.5 ; Interruptflagge (Ende Konversion)
BSY BIT ADCON0.4 ; Busy-Flag
ADM BIT ADCON0.3 ; einfache/kontinuierliche Wandlung
MX2 BIT ADCON0.2 ; Kanalwahl
MX1 BIT ADCON0.1
MX0 BIT ADCON0.0
ADCON1 SFR 0dch
ADDATH SFR 0d9h ; Daten
ADDATL SFR 0dah
endif
;-------------------------------------------------------------------------
; Interruptsteuerregister:
IEN0 SFRB 0a8h ; Freigaben
IE SFRB IEN0
EA BIT IEN0.7 ; generelle Sperre
ET2 BIT IEN0.5 ; Timer 2
ES BIT IEN0.4 ; ser. Schnittstelle
ET1 BIT IEN0.3 ; Überlauf Timer 1
EX1 BIT IEN0.2 ; ext. Interrupt 1
ET0 BIT IEN0.1 ; Timer 0 Überlauf
EX0 BIT IEN0.0 ; ext. Interrupt 0
IP0 SFRB 0b8h ; Prioritäten
IP SFRB IP0
PT2 BIT IP0.5 ; siehe Freigabebits
PS BIT IP0.4
PT1 BIT IP0.3
PX1 BIT IP0.2
PT0 BIT IP0.1
PX0 BIT IP0.0
if MOMCPUNAME="80C504"
IEN1 SFR 0a9h
IP1 SFR 0b9h
ITCON SFR 09ah ; Triggerbedingungen
endif
;---------------------------------------------------------------------------
; Da man die Register beim 8051 nicht direkt pushen und poppen kann, muß man
; dies über direkte Adressen tun. Da dazu die Kenntnis der gewählten Regis-
; terbank erforderlich ist, steht hier das Makro USING zur Verfügung, wel-
; ches in den Symbolen AR0..AR7 die momentanen Registeradressen ablegt.
; USING erwartet als Parameter die gewählte Banknummer.
Bank0 equ 0 ; nur der Schönheit halber...
Bank1 equ 1
Bank2 equ 2
Bank3 equ 3
using macro bank
if (bank<0)||(bank>3) ; nur 0..3 erlaubt
error "Falsche Banknummer: \{BANK}"
endif
ifdef RegUsage ; Buchführung über benutzte Bänke
RegUsage set RegUsage|(2^bank)
elseif
RegUsage set 2^bank
endif
ar0 set bank*8 ; Symbole besetzen
ar1 set ar0+1
ar2 set ar0+2
ar3 set ar0+3
ar4 set ar0+4
ar5 set ar0+5
ar6 set ar0+6
ar7 set ar0+7
endm
endif
restore ; wieder erlauben