781 lines
36 KiB
PHP
781 lines
36 KiB
PHP
save
|
|
listing off ; kein Listing über diesen File
|
|
|
|
;****************************************************************************
|
|
;* *
|
|
;* AS 1.40 - Datei REG166.INC *
|
|
;* *
|
|
;* Sinn : enthält SFR-, Makro- und Adreßdefinitionen für 80C166/167 *
|
|
;* OK, der Name fällt aus dem Rahmen, aber STDDEF16.INC war schon *
|
|
;* belegt... *
|
|
;* *
|
|
;* letzte Änderungen : 23. 6.1994 *
|
|
;* 27. 6.1994 Makros *
|
|
;* 28. 6.1994 Bitadressen *
|
|
;* 9. 7.1994 Interrupt-Register-Korrektur *
|
|
;* 10. 7.1994 80C167-Register *
|
|
;* 10.12.1994 Korrekturen/Erweiterungen 80C166 *
|
|
;* (Hinweis von A. Kipper/A.Bergmann) *
|
|
;* *
|
|
;****************************************************************************
|
|
|
|
ifndef reg166inc ; verhindert Mehrfacheinbindung
|
|
|
|
reg166inc equ 1
|
|
|
|
if (MOMCPU<>8438118)&&(MOMCPU<>8438119)
|
|
fatal "Falscher Prozessortyp eingestellt: nur 80C166 oder 80C167 erlaubt!"
|
|
endif
|
|
|
|
|
|
if MOMPASS=1
|
|
message "80C166/167-SFR-Definitionen (C) 1994 Alfred Arnold"
|
|
message "binde \{MOMCPU}-SFRs ein"
|
|
endif
|
|
|
|
; damit's etwas kürzer wird:
|
|
|
|
DefIntBits macro BASE,adr,{NoExpand} ; Interruptregister+Bits darin def.
|
|
tmpstr166 set "BASE"
|
|
{tmpstr166}IC equ adr
|
|
{tmpstr166}_GLVL bit {tmpstr166}IC.0 ; Gruppenpriorität
|
|
{tmpstr166}_ILVL bit {tmpstr166}IC.2 ; Interruptpriorität
|
|
{tmpstr166}IE bit {tmpstr166}IC.6 ; Interruptfreigabe
|
|
{tmpstr166}IR bit {tmpstr166}IC.7 ; Interruptanzeige
|
|
endm
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Spezialregister:
|
|
; Bitadressen nur für bitadressierbare Register !
|
|
; bei Bitfeldern nur Startbit !
|
|
|
|
if MOMCPU=80C167H
|
|
SYSCON equ 0ff12h ; Systemkonfiguration
|
|
WRCFG bit SYSCON.7 ; /WRL und /WRH statt /WR und /BHE
|
|
ROMS1 bit SYSCON.12 ; Lage internes ROM
|
|
elseif
|
|
SYSCON equ 0ff0ch
|
|
MCTC bit SYSCON.0 ; Speicherzykluslänge
|
|
RWDC bit SYSCON.4 ; Schreib/Lese-Verzögerung
|
|
MTTC bit SYSCON.5 ; Tri-State-Zeit
|
|
BTYP bit SYSCON.6 ; Status der EBC-Pins
|
|
RDYEN bit SYSCON.12 ; /READY freigeben
|
|
endif
|
|
CLKEN bit SYSCON.8 ; CLKOUT freigeben
|
|
BYTDIS bit SYSCON.9 ; /BHE freigeben
|
|
ROMEN bit SYSCON.10 ; internes ROM freigeben
|
|
SGTDIS bit SYSCON.11 ; Adreßraum auf 64K beschränken
|
|
STKSZ bit SYSCON.13 ; Maximalgröße Stack
|
|
|
|
if MOMCPU=80C167H
|
|
RP0H equ 0f108h ; Systemanlaufregister (nur Lesen)
|
|
CSSEL bit RP0H.1 ; Anzahl CS-Leitungen
|
|
SALSEL bit RP0H.3 ; Anzahl Adreßleitungen ab A16
|
|
endif
|
|
|
|
PSW equ 0ff10h ; Flagregister
|
|
N bit PSW.0 ; negatives Ergebnis ?
|
|
C bit PSW.1 ; Carry ?
|
|
V bit PSW.2 ; Overflow ?
|
|
Z bit PSW.3 ; Ergebnis Null ?
|
|
E bit PSW.4 ; Tabellenende ?
|
|
MULIP bit PSW.5 ; Multiplikation/Division unterbrochen ?
|
|
USR0 bit PSW.6 ; benutzerdefiniert
|
|
IEN bit PSW.11 ; Interrupts freigeben
|
|
ILVL bit PSW.12 ; mom. bediente Interruptebene
|
|
|
|
TFR equ 0ffach ; Trap Flagregister
|
|
ILLBUS bit TFR.0 ; externer Bus benutzt, aber nicht konfiguriert
|
|
ILLINA bit TFR.1 ; Codezugriff auf ungerade Adresse
|
|
ILLOPA bit TFR.2 ; Wortzugriff auf ungerade Adresse
|
|
PRTFLT bit TFR.3 ; Schutzverletzung
|
|
UNDOPC bit TFR.7 ; undefinierter Maschinenbefehl
|
|
STKUF bit TFR.13 ; Stack-Unterlauf
|
|
STKOF bit TFR.14 ; Stack-Überlauf
|
|
NMI bit TFR.15 ; nicht maskierbarer Interrupt
|
|
if MOMCPU=80C167H
|
|
EXICON equ 0f1c0h ; Steuerung externer Interrupt-Controller
|
|
EXI0ES bit EXICON.0 ; Flankensteuerung Interrupt 0
|
|
EXI1ES bit EXICON.2 ; Flankensteuerung Interrupt 1
|
|
EXI2ES bit EXICON.4 ; Flankensteuerung Interrupt 2
|
|
EXI3ES bit EXICON.6 ; Flankensteuerung Interrupt 3
|
|
EXI4ES bit EXICON.8 ; Flankensteuerung Interrupt 4
|
|
EXI5ES bit EXICON.10 ; Flankensteuerung Interrupt 5
|
|
EXI6ES bit EXICON.12 ; Flankensteuerung Interrupt 6
|
|
EXI7ES bit EXICON.14 ; Flankensteuerung Interrupt 7
|
|
endif
|
|
|
|
DPP0 equ 0fe00h ; Pagingregister
|
|
DPP1 equ 0fe02h
|
|
DPP2 equ 0fe04h
|
|
DPP3 equ 0fe06h
|
|
|
|
CSP equ 0fe08h ; Bits 16.. Programmzähler
|
|
|
|
MDH equ 0fe0ch ; Multiplizier/Dividierregister
|
|
MDL equ 0fe0eh
|
|
MDC equ 0ff0eh ; Steuerung Multiplizierer/Dividierer
|
|
MDRIU bit MDC.4 ; Multiplizierer in Benutzung
|
|
|
|
CP equ 0fe10h ; Registerkontextzeiger
|
|
|
|
SP equ 0fe12h ; Stackpointer
|
|
STKOV equ 0fe14h ; obere Grenze Stackpointer
|
|
STKUN equ 0fe16h ; untere Grenze Stackpointer
|
|
|
|
ZEROS equ 0ff1ch ; konstant Nullen
|
|
ONES equ 0ff1eh ; konstant Einsen
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Speicher-Interface
|
|
|
|
if MOMCPU=80C167H
|
|
ADDRSEL1 equ 0fe18h ; Adreßdekoder Register 1..4
|
|
ADDRSEL2 equ 0fe1ah
|
|
ADDRSEL3 equ 0fe1ch
|
|
ADDRSEL4 equ 0fe1eh
|
|
|
|
BUSCON0 equ 0ff0ch ; Buskonfiguration Register 0..4
|
|
MCTC0 bit BUSCON0.0 ; Speicherzykluslänge
|
|
RWDC0 bit BUSCON0.4 ; Schreib/Leseverzögerung
|
|
MTTC0 bit BUSCON0.5 ; Tri-State-Zeit
|
|
BTYP0 bit BUSCON0.6 ; Status EBC-Pins
|
|
ALECTL0 bit BUSCON0.9 ; ALE Verlängerung
|
|
BUSACT0 bit BUSCON0.10 ; Bus aktiv-Steuerbit
|
|
RDYEN0 bit BUSCON0.12 ; /READY benutzen
|
|
BUSCON1 equ 0ff14h
|
|
MCTC1 bit BUSCON1.0 ; Speicherzykluslänge
|
|
RWDC1 bit BUSCON1.4 ; Schreib/Leseverzögerung
|
|
MTTC1 bit BUSCON1.5 ; Tri-State-Zeit
|
|
BTYP1 bit BUSCON1.6 ; Status EBC-Pins
|
|
ALECTL1 bit BUSCON1.9 ; ALE Verlängerung
|
|
BUSACT1 bit BUSCON1.10 ; Bus aktiv-Steuerbit
|
|
RDYEN1 bit BUSCON1.12 ; /READY benutzen
|
|
CSREN1 bit BUSCON1.14 ; Arbeitsweise CS-Pins
|
|
CSWEN1 bit BUSCON1.15
|
|
BUSCON2 equ 0ff16h
|
|
MCTC2 bit BUSCON2.0 ; s.o.
|
|
RWDC2 bit BUSCON2.4
|
|
MTTC2 bit BUSCON2.5
|
|
BTYP2 bit BUSCON2.6
|
|
ALECTL2 bit BUSCON2.9
|
|
BUSACT2 bit BUSCON2.10
|
|
RDYEN2 bit BUSCON2.12
|
|
CSREN2 bit BUSCON2.14
|
|
CSWEN2 bit BUSCON2.15
|
|
BUSCON3 equ 0ff18h
|
|
MCTC3 bit BUSCON3.0
|
|
RWDC3 bit BUSCON3.4
|
|
MTTC3 bit BUSCON3.5
|
|
BTYP3 bit BUSCON3.6
|
|
ALECTL3 bit BUSCON3.9
|
|
BUSACT3 bit BUSCON3.10
|
|
RDYEN3 bit BUSCON3.12
|
|
CSREN3 bit BUSCON3.14
|
|
CSWEN3 bit BUSCON3.15
|
|
BUSCON4 equ 0ff1ah
|
|
MCTC4 bit BUSCON4.0
|
|
RWDC4 bit BUSCON4.4
|
|
MTTC4 bit BUSCON4.5
|
|
BTYP4 bit BUSCON4.6
|
|
ALECTL4 bit BUSCON4.9
|
|
BUSACT4 bit BUSCON4.10
|
|
RDYEN4 bit BUSCON4.12
|
|
CSREN4 bit BUSCON4.14
|
|
CSWEN4 bit BUSCON4.15
|
|
|
|
DefIntBits XP0,0f186h ; Interruptsteuerung Peripheriegerät 0
|
|
DefIntBits XP1,0f18eh ; Interruptsteuerung Peripheriegerät 1
|
|
DefIntBits XP2,0f196h ; Interruptsteuerung Peripheriegerät 2
|
|
DefIntBits XP3,0f19eh ; Interruptsteuerung Peripheriegerät 3
|
|
endif
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Ports:
|
|
|
|
if MOMCPU=80C167H
|
|
P0L equ 0ff00h ; Port 0 Datenregister
|
|
P0H equ 0ff02h
|
|
DP0L equ 0f100h ; Port 0 Datenrichtungsregister
|
|
DP0H equ 0f102h
|
|
elseif
|
|
P0 equ 0ff00h
|
|
DP0 equ 0ff02h
|
|
endif
|
|
|
|
if MOMCPU=80C167H
|
|
P1L equ 0ff04h ; Port 1 Datenregister
|
|
P1H equ 0ff06h
|
|
DP1L equ 0f104h ; Port 1 Datenrichtungsregister
|
|
DP1H equ 0f106h
|
|
elseif
|
|
P1 equ 0ff04h
|
|
DP1 equ 0ff06h
|
|
endif
|
|
|
|
P2 equ 0ffc0h ; Port 2 Datenregister
|
|
DP2 equ 0ffc2h ; Port 2 Datenrichtungsregister
|
|
if MOMCPU=80C167H
|
|
ODP2 equ 0f1c2h ; Port 2 Open-Drain-Einstellung
|
|
endif
|
|
|
|
P3 equ 0ffc4h ; Port 3 Datenregister
|
|
DP3 equ 0ffc6h ; Port 3 Datenrichtungsregister
|
|
if MOMCPU=80C167H
|
|
ODP3 equ 0f1c6h ; Port 3 Open-Drain-Einstellung
|
|
endif
|
|
|
|
if MOMCPU=80C167H
|
|
P4 equ 0ffc8h ; Port 4 Datenregister
|
|
DP4 equ 0ffcah ; Port 4 Datenrichtungsregister
|
|
elseif
|
|
P4 equ 0ff08h
|
|
DP4 equ 0ff0ah
|
|
endif
|
|
|
|
P5 equ 0ffa2h ; Port 5 Datenregister (nur Eingang)
|
|
|
|
if MOMCPU=80C167H
|
|
P6 equ 0ffcch ; Port 6 Datenregister
|
|
DP6 equ 0ffceh ; Port 6 Datenrichtungsregister
|
|
ODP6 equ 0f1ceh ; Port 6 Open-Drain-Einstellung
|
|
|
|
P7 equ 0ffd0h ; Port 7 Datenregister
|
|
DP7 equ 0ffd2h ; Port 7 Datenrichtungsregister
|
|
ODP7 equ 0f1d2h ; Port 7 Open-Drain-Einstellung
|
|
|
|
P8 equ 0ffd4h ; Port 8 Datenregister
|
|
DP8 equ 0ffd6h ; Port 8 Datenrichtungsregister
|
|
ODP8 equ 0f1d6h ; Port 8 Open-Drain-Einstellung
|
|
endif
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Timer:
|
|
|
|
T0 equ 0fe50h ; CAPCOM Timer 0
|
|
T0REL equ 0fe54h ; Timer 0 Reload Register
|
|
T01CON equ 0ff50h ; Steuerregister Timer 0+1
|
|
T0I bit T01CON.0 ; Timer 0 Eingangssignalwahl
|
|
T0M bit T01CON.3 ; Timer 0 Modus
|
|
T0R bit T01CON.6 ; Timer 0 starten/stoppen
|
|
T1I bit T01CON.8 ; Timer 1 Eingangssignalwahl
|
|
T1M bit T01CON.11 ; Timer 1 Modus
|
|
T1R bit T01CON.14 ; Timer 1 starten/stoppen
|
|
DefIntBits T0,0ff9ch ; Timer 0 Interruptsteuerung
|
|
|
|
T1 equ 0fe52h ; CAPCOM Timer 1
|
|
T1REL equ 0fe56h ; Timer 1 Reload Register
|
|
DefIntBits T1,0ff9eh ; Timer 1 Interruptsteuerung
|
|
|
|
T2 equ 0fe40h ; Timer 2
|
|
T2CON equ 0ff40h ; Steuerregister Timer 2
|
|
T2I bit T2CON.0 ; Eingangssignal Timer 2
|
|
T2M bit T2CON.3 ; Modus Timer 2
|
|
T2R bit T2CON.6 ; Timer 2 starten/stoppen
|
|
T2UD bit T2CON.7 ; Timer 2 Zählrichtung
|
|
if MOMCPU=80C167H
|
|
T2UDE bit T2CON.8 ; Timer 2 externe Zählrichtungswahl
|
|
endif
|
|
DefIntBits T2,0ff60h ; Timer 2 Interruptsteuerung
|
|
|
|
T3 equ 0fe42h ; Timer 3
|
|
T3CON equ 0ff42h ; Steuerregister Timer 3
|
|
T3I bit T3CON.0 ; Eingangssignal Timer 3
|
|
T3M bit T3CON.3 ; Modus Timer 3
|
|
T3R bit T3CON.6 ; Timer 3 starten/stoppen
|
|
T3UD bit T3CON.7 ; Timer 3 Zählrichtung
|
|
T3UDE bit T3CON.8 ; Timer 3 externe Zählrichtungswahl
|
|
T3OE bit T3CON.9 ; Timer 3 Ausgang freischalten
|
|
T3OTL bit T3CON.10 ; Timer 3 übergelaufen ?
|
|
DefIntBits T3,0ff62h ; Timer 3 Interruptsteuerung
|
|
|
|
T4 equ 0fe44h ; Timer 4
|
|
T4CON equ 0ff44h ; Steuerregister Timer 4
|
|
T4I bit T4CON.0 ; Eingangssignal Timer 4
|
|
T4M bit T4CON.3 ; Modus Timer 4
|
|
T4R bit T4CON.6 ; Timer 4 starten/stoppen
|
|
T4UD bit T4CON.7 ; Timer 4 Zählrichtung
|
|
if MOMCPU=80C167H
|
|
T4UDE bit T4CON.8 ; Timer 4 externe Zählrichtungswahl
|
|
endif
|
|
DefIntBits T4,0ff64h ; Timer 4 Interruptsteuerung
|
|
|
|
T5 equ 0fe46h ; Timer 5
|
|
T5CON equ 0ff46h ; Steuerregister Timer 5
|
|
T5I bit T5CON.0 ; Eingangssignal Timer 5
|
|
T5M bit T5CON.3 ; Modus Timer 5
|
|
T5R bit T5CON.6 ; Timer 5 starten/stoppen
|
|
T5UD bit T5CON.7 ; Timer 5 Zählrichtung
|
|
if MOMCPU=80C167H
|
|
T5UDE bit T5CON.8 ; Timer 5 externe Zählrichtungswahl
|
|
endif
|
|
CI bit T5CON.12 ; CAPREL Eingangswahl
|
|
T5CLR bit T5CON.14 ; Timer 5 bei Fang löschen ?
|
|
T5SC bit T5CON.15 ; Timer 5 Fangen freigeben
|
|
DefIntBits T5,0ff66h ; Timer 5 Interruptsteuerung
|
|
|
|
T6 equ 0fe48h ; Timer 6
|
|
T6CON equ 0ff48h ; Steuerregister Timer 6
|
|
T6I bit T6CON.0 ; Eingangssignal Timer 6
|
|
if MOMCPU=80C167H
|
|
T6M bit T6CON.3 ; Modus Timer 6
|
|
endif
|
|
T6R bit T6CON.6 ; Timer 6 starten/stoppen
|
|
T6UD bit T6CON.7 ; Timer 6 Zählrichtung
|
|
if MOMCPU=80C167H
|
|
T6UDE bit T6CON.8 ; Timer 6 externe Zählrichtungswahl
|
|
endif
|
|
T6OE bit T6CON.9 ; Timer 6 Ausgang freischalten
|
|
T6OTL bit T6CON.10 ; Timer 6 übergelaufen ?
|
|
T6SR bit T6CON.15 ; Timer 6 Reload
|
|
DefIntBits T6,0ff68h ; Timer 6 Interruptsteuerung
|
|
|
|
if MOMCPU=80C167H
|
|
T7 equ 0f050h ; Timer 7
|
|
T7REL equ 0f054h ; Timer 7 Reload Register
|
|
T78CON equ 0ff20h ; Steuerregister Timer 7+8
|
|
DefIntBits T7,0f17ah ; Timer 0 Interruptsteuerung
|
|
|
|
T8 equ 0f052h ; CAPCOM Timer 8
|
|
T8REL equ 0f056h ; Timer 8 Reload Register
|
|
DefIntBits T8,0f17ch ; Timer 8 Interruptsteuerung
|
|
endif
|
|
|
|
;-----------------------------------------------------------------------
|
|
; Capture/Compare-Einheit:
|
|
|
|
CAPREL equ 0fe4ah ; Capture/Reload-Register
|
|
CC0 equ 0fe80h ; CAPCOM Register
|
|
CC1 equ 0fe82h
|
|
CC2 equ 0fe84h
|
|
CC3 equ 0fe86h
|
|
CC4 equ 0fe88h
|
|
CC5 equ 0fe8ah
|
|
CC6 equ 0fe8ch
|
|
CC7 equ 0fe8eh
|
|
CC8 equ 0fe90h
|
|
CC9 equ 0fe92h
|
|
CC10 equ 0fe94h
|
|
CC11 equ 0fe96h
|
|
CC12 equ 0fe98h
|
|
CC13 equ 0fe9ah
|
|
CC14 equ 0fe9ch
|
|
CC15 equ 0fe9eh
|
|
if MOMCPU=80C167H
|
|
CC16 equ 0fe60h ; zus. CAPCOM Register
|
|
CC17 equ 0fe62h
|
|
CC18 equ 0fe64h
|
|
CC19 equ 0fe66h
|
|
CC20 equ 0fe68h
|
|
CC21 equ 0fe6ah
|
|
CC22 equ 0fe6ch
|
|
CC23 equ 0fe6eh
|
|
CC24 equ 0fe70h
|
|
CC25 equ 0fe72h
|
|
CC26 equ 0fe74h
|
|
CC27 equ 0fe76h
|
|
CC28 equ 0fe78h
|
|
CC29 equ 0fe7ah
|
|
CC30 equ 0fe7ch
|
|
CC31 equ 0fe7eh
|
|
endif
|
|
|
|
CCM0 equ 0ff52h ; CAPCOM Modusregister
|
|
CCMOD0 bit CCM0.0 ; CC0 Modusauswahl
|
|
ACC0 bit CCM0.3 ; CC0 Timer 0/1 zuordnen
|
|
CCMOD1 bit CCM0.4 ; CC1 Modusauswahl
|
|
ACC1 bit CCM0.7 ; CC1 Timer 0/1 zuordnen
|
|
CCMOD2 bit CCM0.8 ; CC2 Modusauswahl
|
|
ACC2 bit CCM0.11 ; CC2 Timer 0/1 zuordnen
|
|
CCMOD3 bit CCM0.12 ; CC3 Modusauswahl
|
|
ACC3 bit CCM0.15 ; CC3 Timer 0/1 zuordnen
|
|
|
|
CCM1 equ 0ff54h
|
|
CCMOD4 bit CCM1.0 ; CC4 Modusauswahl
|
|
ACC4 bit CCM1.3 ; CC4 Timer 0/1 zuordnen
|
|
CCMOD5 bit CCM1.4 ; CC5 Modusauswahl
|
|
ACC5 bit CCM1.7 ; CC5 Timer 0/1 zuordnen
|
|
CCMOD6 bit CCM1.8 ; CC6 Modusauswahl
|
|
ACC6 bit CCM1.11 ; CC6 Timer 0/1 zuordnen
|
|
CCMOD7 bit CCM1.12 ; CC7 Modusauswahl
|
|
ACC7 bit CCM1.15 ; CC7 Timer 0/1 zuordnen
|
|
|
|
CCM2 equ 0ff56h
|
|
CCMOD8 bit CCM2.0 ; CC8 Modusauswahl
|
|
ACC8 bit CCM2.3 ; CC8 Timer 0/1 zuordnen
|
|
CCMOD9 bit CCM2.4 ; CC9 Modusauswahl
|
|
ACC9 bit CCM2.7 ; CC9 Timer 0/1 zuordnen
|
|
CCMOD10 bit CCM2.8 ; CC10 Modusauswahl
|
|
ACC10 bit CCM2.11 ; CC10 Timer 0/1 zuordnen
|
|
CCMOD11 bit CCM2.12 ; CC11 Modusauswahl
|
|
ACC11 bit CCM2.15 ; CC11 Timer 0/1 zuordnen
|
|
|
|
CCM3 equ 0ff58h
|
|
CCMOD12 bit CCM3.0 ; CC12 Modusauswahl
|
|
ACC12 bit CCM3.3 ; CC12 Timer 0/1 zuordnen
|
|
CCMOD13 bit CCM3.4 ; CC13 Modusauswahl
|
|
ACC13 bit CCM3.7 ; CC13 Timer 0/1 zuordnen
|
|
CCMOD14 bit CCM3.8 ; CC14 Modusauswahl
|
|
ACC14 bit CCM3.11 ; CC14 Timer 0/1 zuordnen
|
|
CCMOD15 bit CCM3.12 ; CC15 Modusauswahl
|
|
ACC15 bit CCM3.15 ; CC15 Timer 0/1 zuordnen
|
|
|
|
CCM4 equ 0ff22h
|
|
CCMOD16 bit CCM4.0 ; CC16 Modusauswahl
|
|
ACC16 bit CCM4.3 ; CC16 Timer 0/1 zuordnen
|
|
CCMOD17 bit CCM4.4 ; CC17 Modusauswahl
|
|
ACC17 bit CCM4.7 ; CC17 Timer 0/1 zuordnen
|
|
CCMOD18 bit CCM4.8 ; CC18 Modusauswahl
|
|
ACC18 bit CCM4.11 ; CC18 Timer 0/1 zuordnen
|
|
CCMOD19 bit CCM4.12 ; CC19 Modusauswahl
|
|
ACC19 bit CCM4.15 ; CC19 Timer 0/1 zuordnen
|
|
|
|
CCM5 equ 0ff24h
|
|
CCMOD20 bit CCM5.0 ; CC20 Modusauswahl
|
|
ACC20 bit CCM5.3 ; CC20 Timer 0/1 zuordnen
|
|
CCMOD21 bit CCM5.4 ; CC21 Modusauswahl
|
|
ACC21 bit CCM5.7 ; CC21 Timer 0/1 zuordnen
|
|
CCMOD22 bit CCM5.8 ; CC22 Modusauswahl
|
|
ACC22 bit CCM5.11 ; CC22 Timer 0/1 zuordnen
|
|
CCMOD23 bit CCM5.12 ; CC23 Modusauswahl
|
|
ACC23 bit CCM5.15 ; CC23 Timer 0/1 zuordnen
|
|
|
|
CCM6 equ 0ff26h
|
|
CCMOD24 bit CCM6.0 ; CC24 Modusauswahl
|
|
ACC24 bit CCM6.3 ; CC24 Timer 0/1 zuordnen
|
|
CCMOD25 bit CCM6.4 ; CC25 Modusauswahl
|
|
ACC25 bit CCM6.7 ; CC25 Timer 0/1 zuordnen
|
|
CCMOD26 bit CCM6.8 ; CC26 Modusauswahl
|
|
ACC26 bit CCM6.11 ; CC26 Timer 0/1 zuordnen
|
|
CCMOD27 bit CCM6.12 ; CC27 Modusauswahl
|
|
ACC27 bit CCM6.15 ; CC27 Timer 0/1 zuordnen
|
|
|
|
CCM7 equ 0ff28h
|
|
CCMOD28 bit CCM7.0 ; CC28 Modusauswahl
|
|
ACC28 bit CCM7.3 ; CC28 Timer 0/1 zuordnen
|
|
CCMOD29 bit CCM7.4 ; CC29 Modusauswahl
|
|
ACC29 bit CCM7.7 ; CC29 Timer 0/1 zuordnen
|
|
CCMOD30 bit CCM7.8 ; CC30 Modusauswahl
|
|
ACC30 bit CCM7.11 ; CC30 Timer 0/1 zuordnen
|
|
CCMOD31 bit CCM7.12 ; CC31 Modusauswahl
|
|
ACC31 bit CCM7.15 ; CC31 Timer 0/1 zuordnen
|
|
|
|
DefIntBits CR,0ff6ah ; CAPREL Interruptsteuerregister
|
|
|
|
DefIntBits CC0,0ff78h ; Interruptsteuerung CAPCOM-Kanäle
|
|
DefIntBits CC1,0ff7ah
|
|
DefIntBits CC2,0ff7ch
|
|
DefIntBits CC3,0ff7eh
|
|
DefIntBits CC4,0ff80h
|
|
DefIntBits CC5,0ff82h
|
|
DefIntBits CC6,0ff84h
|
|
DefIntBits CC7,0ff86h
|
|
DefIntBits CC8,0ff88h
|
|
DefIntBits CC9,0ff8ah
|
|
DefIntBits CC10,0ff8ch
|
|
DefIntBits CC11,0ff8eh
|
|
DefIntBits CC12,0ff90h
|
|
DefIntBits CC13,0ff92h
|
|
DefIntBits CC14,0ff94h
|
|
DefIntBits CC15,0ff96h
|
|
if MOMCPU=80C167H
|
|
DefIntBits CC16,0f160h ; Interruptsteuerung zus. CAPCOM-Kanäle
|
|
DefIntBits CC17,0f162h
|
|
DefIntBits CC18,0f164h
|
|
DefIntBits CC19,0f166h
|
|
DefIntBits CC20,0f168h
|
|
DefIntBits CC21,0f16ah
|
|
DefIntBits CC22,0f16ch
|
|
DefIntBits CC23,0f16eh
|
|
DefIntBits CC24,0f170h
|
|
DefIntBits CC25,0f172h
|
|
DefIntBits CC26,0f174h
|
|
DefIntBits CC27,0f176h
|
|
DefIntBits CC28,0f178h
|
|
DefIntBits CC29,0f184h
|
|
DefIntBits CC30,0f18ch
|
|
DefIntBits CC31,0f194h
|
|
endif
|
|
|
|
PECC0 equ 0fec0h ; PEC Kanalsteuerregister
|
|
PECC1 equ 0fec2h
|
|
PECC2 equ 0fec4h
|
|
PECC3 equ 0fec6h
|
|
PECC4 equ 0fec8h
|
|
PECC5 equ 0fecah
|
|
PECC6 equ 0fecch
|
|
PECC7 equ 0feceh
|
|
|
|
SRCP0 equ 0fde0h ; hoffentlich gilt das auch so für
|
|
SRCP1 equ 0fde4h ; den 167er, ich habe momentan näm-
|
|
SRCP2 equ 0fde8h ; lich nicht das Datenbuch zur Hand...
|
|
SRCP3 equ 0fdech
|
|
SRCP4 equ 0fdf0h
|
|
SRCP5 equ 0fdf4h
|
|
SRCP6 equ 0fdf8h
|
|
SRCP7 equ 0fdfch
|
|
DSTP0 equ 0fde2h
|
|
DSTP1 equ 0fde6h
|
|
DSTP2 equ 0fdeah
|
|
DSTP3 equ 0fdeeh
|
|
DSTP4 equ 0fdf2h
|
|
DSTP5 equ 0fdf6h
|
|
DSTP6 equ 0fdfah
|
|
DSTP7 equ 0fdfeh
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Pulsweitenmodulator:
|
|
|
|
if MOMCPU=80C167H
|
|
PP0 equ 0f038h ; PWM Periode 0
|
|
PT0 equ 0f030h ; PWM Zähler 0
|
|
PW0 equ 0fe30h ; PWM Pulsweite 0
|
|
PP1 equ 0f03ah ; PWM Periode 1
|
|
PT1 equ 0f032h ; PWM Zähler 1
|
|
PW1 equ 0fe30h ; PWM Pulsweite 1
|
|
PP2 equ 0f03ch ; PWM Periode 2
|
|
PT2 equ 0f034h ; PWM Zähler 2
|
|
PW2 equ 0fe30h ; PWM Pulsweite 2
|
|
PP3 equ 0f03eh ; PWM Periode 3
|
|
PT3 equ 0f036h ; PWM Zähler 3
|
|
PW3 equ 0fe30h ; PWM Pulsweite 3
|
|
PWMCON0 equ 0ff30h ; PWM Seuerregister 0
|
|
PTR0 bit PWMCON0.0 ; PT0 laufen lassen
|
|
PTR1 bit PWMCON0.1 ; PT1 laufen lassen
|
|
PTR2 bit PWMCON0.2 ; PT2 laufen lassen
|
|
PTR3 bit PWMCON0.3 ; PT3 laufen lassen
|
|
PTI0 bit PWMCON0.4 ; PT0 Eingangswahl
|
|
PTI1 bit PWMCON0.5 ; PT1 Eingangswahl
|
|
PTI2 bit PWMCON0.6 ; PT2 Eingangswahl
|
|
PTI3 bit PWMCON0.7 ; PT3 Eingangswahl
|
|
PIE0 bit PWMCON0.8 ; PT0 Interupts freigeben
|
|
PIE1 bit PWMCON0.9 ; PT1 Interupts freigeben
|
|
PIE2 bit PWMCON0.10 ; PT2 Interupts freigeben
|
|
PIE3 bit PWMCON0.11 ; PT3 Interupts freigeben
|
|
PIR0 bit PWMCON0.12 ; PT0 Interupt aufgetreten
|
|
PIR1 bit PWMCON0.13 ; PT1 Interupt aufgetreten
|
|
PIR2 bit PWMCON0.14 ; PT2 Interupt aufgetreten
|
|
PIR3 bit PWMCON0.15 ; PT3 Interupt aufgetreten
|
|
PWMCON1 equ 0ff32h ; PWM Seuerregister 1
|
|
PEN0 bit PWMCON1.0 ; PT0 Ausgang freigeben
|
|
PEN1 bit PWMCON1.1 ; PT1 Ausgang freigeben
|
|
PEN2 bit PWMCON1.2 ; PT2 Ausgang freigeben
|
|
PEN3 bit PWMCON1.3 ; PT3 Ausgang freigeben
|
|
PM0 bit PWMCON1.4 ; PT0 Modus
|
|
PM1 bit PWMCON1.5 ; PT1 Modus
|
|
PM2 bit PWMCON1.6 ; PT2 Modus
|
|
PM3 bit PWMCON1.7 ; PT3 Modus
|
|
PB01 bit PWMCON1.12 ; PT0&1 Burst-Modus
|
|
PS2 bit PWMCON1.14 ; PT2 Einzelimpulsmodus
|
|
PS3 bit PWMCON1.15 ; PT3 Einzelimpulsmodus
|
|
DefIntBits PWM,0f17eh ; PWM Interruptsteuerung
|
|
endif
|
|
|
|
;----------------------------------------------------------------------------
|
|
; A/D-Wandler:
|
|
|
|
ADDAT equ 0fea0h ; A/D-Wandler Ergebnis
|
|
if MOMCPU=80C167H
|
|
ADDAT2 equ 0f0a0h ; A/D-Wandler Ergebnis 2
|
|
endif
|
|
DefIntBits ADC,0ff98h ; A/D-Wandler Interruptsteuerung für Wandlungsende
|
|
DefIntBits ADE,0ff9ah ; A/D-Wandler Interruptsteuerung für Fehler
|
|
ADCON equ 0ffa0h ; A/D-Wandler Steuerregister
|
|
ADCH bit ADCON.0 ; A/D-Wandler Kanalwahl
|
|
ADM bit ADCON.4 ; A/D-Wandler Modus
|
|
ADST bit ADCON.7 ; A/D-Wandlung starten
|
|
ADBSY bit ADCON.8 ; A/D-Wandler beschäftigt
|
|
if MOMCPU=80C167H
|
|
ADWR bit ADCON.9 ; A/D-Wandler erst wieder starten, wenn gelesen
|
|
ADCIN bit ADCON.10 ; A/D-Wandler Kanalinjektion (??...)
|
|
ADCRQ bit ADCON.11 ; A/D-Wandler Kanalinjektion angefordert
|
|
endif
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Watchdog:
|
|
|
|
WDT equ 0feaeh ; Watchdog-Zähler
|
|
WDTCON equ 0ffaeh ; Watchdog Steuerregister
|
|
WDTIN bit WDTCON.0 ; Watchdog Eingangsfrequenz
|
|
WDTR bit WDTCON.1 ; Reset durch Watchdog ?
|
|
WDTREL bit WDTCON.8 ; Reload-Wert Watchdog
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Serielles:
|
|
|
|
S0TBUF equ 0feb0h ; SIO0 Senderegister
|
|
S0RBUF equ 0feb2h ; SIO0 Empfangsregister
|
|
S0BG equ 0feb4h ; SIO0 Baudrateneinstellung
|
|
DefIntBits S0T,0ff6ch ; Interruptsteuerung Sendeteil SIO0
|
|
DefIntBits S0R,0ff6eh ; Interruptsteuerung Empfangsteil SIO0
|
|
DefIntBits S0E,0ff70h ; Interruptsteuerung Fehlererkennung SIO0
|
|
S0CON equ 0ffb0h ; Steuerregister SIO0
|
|
S0M bit S0CON.0 ; SIO0 Modus
|
|
S0STP bit S0CON.3 ; SIO0 Anzahl Stopbits
|
|
S0REN bit S0CON.4 ; SIO0 Empfänger freigeben
|
|
S0PEN bit S0CON.5 ; SIO0 mit Parität
|
|
S0FEN bit S0CON.6 ; SIO0 mit Rahmenprüfung
|
|
S0OEN bit S0CON.7 ; SIO0 mit Überlaufprüfung
|
|
S0PE bit S0CON.8 ; SIO0 Paritätsfehler
|
|
S0FE bit S0CON.9 ; SIO0 Rahmenfehler
|
|
S0OE bit S0CON.10 ; SIO0 Überlauffehler
|
|
if MOMCPU=80C167H
|
|
S0ODD bit S0CON.12 ; SIO0 Odd Parity
|
|
S0BRS bit S0CON.13 ; SIO0 Baudratenfaktor
|
|
endif
|
|
S0LB bit S0CON.14 ; SIO0 Rückkopplung
|
|
S0R bit S0CON.15 ; SIO0 Baudratengenerator freigeben
|
|
|
|
if MOMCPU=80C167H
|
|
SSCTB equ 0f0b0h ; SSC Senderegister
|
|
SSCRB equ 0f0b2h ; SSC Empfangsregister
|
|
SSCBR equ 0f0b4h ; SSC Baudrateneinstellung
|
|
DefIntBits SSCT,0ff72h ; Interruptsteuerung Sendeteil SSC
|
|
DefIntBits SSCR,0ff74h ; Interruptsteuerung Empfangsteil SSC
|
|
DefIntBits SSCE,0ff76h ; Interruptsteuerung Fehlererkennung SSC
|
|
SSCCON equ 0ffb2h ; Steuerregister SSC
|
|
SSCBM bit SSCCON.0 ; Wortbreite
|
|
SSCBC bit SSCCON.0 ; Bitzahl
|
|
SSCHB bit SSCCON.4 ; Startbitsteuerung
|
|
SSCPH bit SSCCON.5 ; Taktphase
|
|
SSCP0 bit SSCCON.6 ; Taktpolarität
|
|
SSCTEN bit SSCCON.8 ; Sendefehler freigeben
|
|
SSCTE bit SSCCON.8 ; Sendefehler aufgetreten ?
|
|
SSCREN bit SSCCON.9 ; Empfangsfehler freigeben
|
|
SSCRE bit SSCCON.9 ; Empfangsfehler aufgetreten ?
|
|
SSCPEN bit SSCCON.10 ; Phasenfehler freigeben
|
|
SSCPE bit SSCCON.10 ; Phasenfehler aufgetreten ?
|
|
SSCBEN bit SSCCON.11 ; Baudratenfehler freigeben
|
|
SSCBE bit SSCCON.11 ; Baudratenfehler freigegeben ?
|
|
SSCBSY bit SSCCON.12 ; SSC beschäftigt ?
|
|
SSCMS bit SSCCON.14 ; SSC als Master betreiben
|
|
SSCEN bit SSCCON.15 ; SSC freigeben
|
|
elseif
|
|
S1TBUF equ 0feb8h ; SIO1 Senderegister
|
|
S1RBUF equ 0febah ; SIO1 Empfangsregister
|
|
S1BG equ 0febch ; SIO1 Baudrateneinstellung
|
|
DefIntBits S1T,0ff72h ; Interruptsteuerung Sendeteil SIO1
|
|
DefIntBits S1R,0ff74h ; Interruptsteuerung Empfangsteil SIO1
|
|
DefIntBits S1E,0ff76h ; Interruptsteuerung Fehlererkennung SIO1
|
|
S1CON equ 0ffb8h ; Steuerregister SIO1
|
|
S1M bit S1CON.0 ; SIO1 Modus
|
|
S1STP bit S1CON.3 ; SIO1 Anzahl Stopbits
|
|
S1REN bit S1CON.4 ; SIO1 Empfänger freigeben
|
|
S1PEN bit S1CON.5 ; SIO1 mit Parität
|
|
S1FEN bit S1CON.6 ; SIO1 mit Rahmenprüfung
|
|
S1OEN bit S1CON.7 ; SIO1 mit Überlaufprüfung
|
|
S1PE bit S1CON.8 ; SIO1 Paritätsfehler
|
|
S1FE bit S1CON.9 ; SIO1 Rahmenfehler
|
|
S1OE bit S1CON.10 ; SIO1 Überlauffehler
|
|
S1LB bit S1CON.14 ; SIO1 Rückkopplung
|
|
S1R bit S1CON.15 ; SIO1 Baudratengenerator freigeben
|
|
endif
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Vektoren/Sonderadressen
|
|
|
|
RESET equ 000h ; Reseteinsprung
|
|
NMITRAP equ 008h ; NMI-Einsprung
|
|
STOTRAP equ 010h ; Einsprung Stacküberlauf
|
|
STUTRAP equ 018h ; Einsprung Stackunterlauf
|
|
BTRAP equ 028h ; undef. Opcode, Protection Fault,
|
|
; unerlaubter Wortzugriff, ungültige Instruktionsadresse,
|
|
; ungültiger Buszugriff
|
|
CC0INT equ 040h ; Interrupteinsprünge CAPCOM
|
|
CC1INT equ 044h
|
|
CC2INT equ 048h
|
|
CC3INT equ 04ch
|
|
CC4INT equ 050h
|
|
CC5INT equ 054h
|
|
CC6INT equ 058h
|
|
CC7INT equ 05ch
|
|
CC8INT equ 060h
|
|
CC9INT equ 064h
|
|
CC10INT equ 068h
|
|
CC11INT equ 06ch
|
|
CC12INT equ 070h
|
|
CC13INT equ 074h
|
|
CC14INT equ 078h
|
|
CC15INT equ 07ch
|
|
T0INT equ 080h ; Interrupteinsprung Timer 0
|
|
T1INT equ 084h ; Interrupteinsprung Timer 1
|
|
T2INT equ 088h ; Interrupteinsprung Timer 2
|
|
T3INT equ 08ch ; Interrupteinsprung Timer 3
|
|
T4INT equ 090h ; Interrupteinsprung Timer 4
|
|
T5INT equ 094h ; Interrupteinsprung Timer 5
|
|
T6INT equ 098h ; Interrupteinsprung Timer 6
|
|
CRINT equ 09ch ; Interrupteinsprung CAPREL
|
|
ADCINT equ 0a0h ; Interrupteinsprung A/D-Wandlung fertig
|
|
ADEINT equ 0a4h ; Interrupteinsprung A/D-Wandler-Überlauf
|
|
S0TINT equ 0a8h ; Interrupteinsprung SIO0 wieder sendebereit
|
|
S0RINT equ 0ach ; Interrupteinsprung SIO0 hat Zeichen empfangen
|
|
S0EINT equ 0b0h ; Interrupteinsprung SIO0 hat Fehler erkannt
|
|
S1TINT equ 0b4h ; Interrupteinsprung SIO1 wieder sendebereit
|
|
S1RINT equ 0b8h ; Interrupteinsprung SIO1 hat Zeichen empfangen
|
|
S1EINT equ 0bch ; Interrupteinsprung SIO1 hat Fehler erkannt
|
|
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Speicherbereiche
|
|
|
|
if MOMCPU=80C167H
|
|
IRAM equ 0f600h ; Beginn internes RAM
|
|
elseif
|
|
IRAM equ 0fa00h
|
|
endif
|
|
IRAMEND equ 0fdffh ; Ende " "
|
|
|
|
BITRAM equ 0fd00h ; Beginn bitadressierbarer RAM-Bereich
|
|
BITRAMEND equ 0fdffh ; Ende " " "
|
|
|
|
if MOMCPU=80C167H
|
|
PECPTR equ 0fce0h ; Begin PEC-Vektoren (optional)
|
|
PECPTREND equ 0fcffh ; Ende " "
|
|
elseif
|
|
PECPTR equ 0fde0h
|
|
PECPTREND equ 0fdffh
|
|
endif
|
|
|
|
SFRSTART equ 0fe00h ; Beginn SFR-Bereich
|
|
SFREND equ 0ffdfh ; Ende SFR-Bereich
|
|
if MOMCPU=80C167H
|
|
ESFRSTART equ 0f000h ; Beginn erweiterter SFR-Bereich
|
|
ESFREND equ 0f1dfh ; Ende erweiterter SFR-Bereich
|
|
endif
|
|
|
|
IROM equ 0 ; Begin internes ROM
|
|
if MOMCPU=80C167H
|
|
IROMEND equ 07fffh ; Ende internes ROM (n. voll ausgebaut)
|
|
elseif
|
|
IROMEND equ 01fffh
|
|
endif
|
|
|
|
;----------------------------------------------------------------------------
|
|
; Bequemlichkeitsmakros
|
|
|
|
clr macro op ; Operand auf 0 setzen
|
|
and op,#0
|
|
endm
|
|
|
|
bchg macro op ; Bit invertieren
|
|
bmovn op,op
|
|
endm
|
|
|
|
dec macro op ; um eins runter
|
|
sub op,#1
|
|
endm
|
|
|
|
inc macro op ; um eins rauf
|
|
add op,#1
|
|
endm
|
|
|
|
swapb macro op ; Bytes tauschen
|
|
ror op,#8
|
|
endm
|
|
|
|
;----------------------------------------------------------------------------
|
|
|
|
endif
|
|
|
|
restore ; wieder erlauben
|