📄 reg166.inc
字号:
save
listing off ; kein Listing ueber diesen File
;****************************************************************************
;* *
;* AS 1.40 - Datei REG166.INC *
;* *
;* Sinn : enthaelt SFR-, Makro- und Adressdefinitionen fuer 80C166/167 *
;* OK, der Name faellt aus dem Rahmen, aber STDDEF16.INC war schon *
;* belegt... *
;* *
;* letzte Aenderungen : 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) *
;* xx.06.2003 Erweiterungen C167CS/ST10F168 *
;* (M. Reibel) *
;* *
;****************************************************************************
;* $Id: reg166.inc,v 1.2 2003/07/06 10:09:54 alfred Exp $ *
;****************************************************************************
;* $Log: reg166.inc,v $
;* Revision 1.2 2003/07/06 10:09:54 alfred
;* - added C167CS registers (Marc Reibel)
;*
;****************************************************************************
ifndef reg166inc ; verhindert Mehrfacheinbindung
reg166inc equ 1
switch MOMCPUNAME
case "80C166"
_n equ 166
case "80C167"
_n equ 167
case "80C167CS"
_n equ 168
elsecase
fatal "Falscher Prozessortyp: nur 80C166, 80C167 oder 80C167CS erlaubt!"
endcase
if MOMPASS=1
message "80C166/167-SFR-Definitionen (C) 1994 Alfred Arnold"
message "Erweiterung 80C167CS 2003 Marc Reibel"
message "binde \{MOMCPUNAME}-SFRs ein"
endif
; damit's etwas kuerzer wird:
DefIntBits macro BASE,adr,{NoExpand} ; Interruptregister+Bits darin def.
tmpstr166 set "BASE"
{tmpstr166}IC equ adr
{tmpstr166}_GLVL bit {tmpstr166}IC.0 ; Gruppenprioritaet
{tmpstr166}_ILVL bit {tmpstr166}IC.2 ; Interruptprioritaet
{tmpstr166}IE bit {tmpstr166}IC.6 ; Interruptfreigabe
{tmpstr166}IR bit {tmpstr166}IC.7 ; Interruptanzeige
endm
;----------------------------------------------------------------------------
; Spezialregister:
; Bitadressen nur fuer bitadressierbare Register !
; bei Bitfeldern nur Startbit !
if _n>=167
SYSCON equ 0ff12h ; Systemkonfiguration
XPERSHARE bit SYSCON.0 ; XBUS Peripherie auch auf externem BUS
VISIBLE bit SYSCON.1 ; XBUS Peripherie auf Portpins
XPEN bit SYSCON.2 ; XBUS Peripherie freigeben
BDRSTEN bit SYSCON.3 ; Bidirektionaler /RSTIN
OWDDIS bit SYSCON.4 ; Oscillator Watchdog ausschalten
CSCFG bit SYSCON.6 ; Chip Select Mudus (1=unlatched)
WRCFG bit SYSCON.7 ; /WRL und /WRH statt /WR und /BHE
CLKEN bit SYSCON.8 ; Systemtakt auf Pin geben
BYTDIS bit SYSCON.9 ; /BHE Pin sperren
ROMENT bit SYSCON.10 ; Internes Rom anschalten
SGTDIS bit SYSCON.11 ; Speichersegmentierung sperren
ROMS1 bit SYSCON.12 ; Lage internes ROM
if _n>=168
SYSCON1 equ 0f1dch ; Sleepmodus bei IDLE-Anweisung
; (Bit 1 u. 0)
; 00 normaler IDLE-Modus
; 01 SLEEP-Modus
; 11 SLEEP-Modus, RTC und Oszillator aus
SYSCON2 equ 0f1d0h ; Taktgenerierung
RCS bit SYSCON2.6 ; RTC Taktgeber Hauptoszillator
SCS bit SYSCON2.7 ; SDD Taktgeber Hauptoszillator
CLKLOCK bit SYSCON2.15 ; Hauptoszillator/PLL stabil?
RSTCON equ 0f1e0h ; Reset Kontroll-Register
IDCHIP equ 0f07ch ; Chip Identifizierungs-Register
IDMANUF equ 0f07eh
IDMEM2 equ 0f076h
IDMEM equ 0f07ah
IDPROG equ 0f078h
FOCON equ 0ffaah ; Clock Output Kontroll-Register
SYSCON3 equ 0f1d4h ; Peripheriemanagement
ADCDIS bit SYSCON3.0 ; AD sperren
ASC0DIS bit SYSCON3.1 ; Asynchronen Seriellen Port sperren
SSCDIS bit SYSCON3.2 ; Synchronen Seriellen Port sperren
GPTDIS bit SYSCON3.3 ; GPT Bloecke sperren
DFMDIS bit SYSCON3.4 ; DFlash sperren (nur Flashvarianten)
PFMDIS bit SYSCON3.5 ; PFlash sperren (nur Flashvarianten)
CC1DIS bit SYSCON3.6 ; Capcom1 sperren
CC2DIS bit SYSCON3.7 ; Capcom2 sperren
PWMDIS bit SYSCON3.9 ; PWM sperren
CAN1DIS bit SYSCON3.13 ; CAN1 sperren
CAN2DIS bit SYSCON3.14 ; CAN2 sperren
PCDDIS bit SYSCON3.15 ; Peripherietaktgeber sperren
endif
elseif
SYSCON equ 0ff0ch
MCTC bit SYSCON.0 ; Speicherzykluslaenge
RWDC bit SYSCON.4 ; Schreib/Lese-Verzoegerung
MTTC bit SYSCON.5 ; Tri-State-Zeit
BTYP bit SYSCON.6 ; Status der EBC-Pins
RDYEN bit SYSCON.12 ; /READY freigeben
endif
ROMEN bit SYSCON.10 ; internes ROM freigeben
STKSZ bit SYSCON.13 ; Maximalgroesse Stack
if _n>=167
RP0H equ 0f108h ; Systemanlaufregister (nur Lesen)
CSSEL bit RP0H.1 ; Anzahl CS-Leitungen
SALSEL bit RP0H.3 ; Anzahl Adressleitungen 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
if _n>=167
HLDEN bit PSW.10 ; Hold freigeben
endif
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-Ueberlauf
NMI bit TFR.15 ; nicht maskierbarer Interrupt
if _n>=167
EXICON equ 0f1c0h ; External Steuerung externer Interrupt-Controller
if _n>=168
EXISEL equ 0f1dah ; External Interrupt Source Register
endif
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.. Programmzaehler
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 _n>=167
ADDRSEL1 equ 0fe18h ; Adressdekoder Register 1..4
ADDRSEL2 equ 0fe1ah
ADDRSEL3 equ 0fe1ch
ADDRSEL4 equ 0fe1eh
BUSCON0 equ 0ff0ch ; Buskonfiguration Register 0..4
MCTC0 bit BUSCON0.0 ; Speicherzykluslaenge
RWDC0 bit BUSCON0.4 ; Schreib/Leseverzoegerung
MTTC0 bit BUSCON0.5 ; Tri-State-Zeit
BTYP0 bit BUSCON0.6 ; Status EBC-Pins
ALECTL0 bit BUSCON0.9 ; ALE Verl刵gerung
BUSACT0 bit BUSCON0.10 ; Bus aktiv-Steuerbit
RDYEN0 bit BUSCON0.12 ; /READY benutzen
BUSCON1 equ 0ff14h
MCTC1 bit BUSCON1.0 ; Speicherzykluslaenge
RWDC1 bit BUSCON1.4 ; Schreib/Leseverzoegerung
MTTC1 bit BUSCON1.5 ; Tri-State-Zeit
BTYP1 bit BUSCON1.6 ; Status EBC-Pins
ALECTL1 bit BUSCON1.9 ; ALE Verlaengerung
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
if _n>=168
XPERCON equ 0f024h ; XPeripherie
XPER0_M equ 0001h ; CAN1 (nach Reset an)
XPER1_M equ 0002h ; CAN2 (nach Reset aus)
XPER10_M equ 0400h ; XRAM 2 KByte (nach Reset an)
XPER11_M equ 0800h ; XRAM 6 KByte (nach Reset aus)!!!
XPER14_M equ 4000h ; 4KByte DFlash (nach Reset aus)!!!
ISNC equ 0f1deh ; Interrupt SubNode Kontroll-Register
RTCIR bit ISNC.0 ; RTC Interrupt Request Flag
RTCIE bit ISNC.1 ; RTC Interrupt freigeben
PLLIR bit ISNC.2 ; PLL Interrupt Request Flag
PLLIE bit ISNC.3 ; PLL Interrupt freigeben
endif
DefIntBits XP0,0f186h ; Interruptsteuerung Peripheriegeraet 0
DefIntBits XP1,0f18eh ; Interruptsteuerung Peripheriegeraet 1
DefIntBits XP2,0f196h ; Interruptsteuerung Peripheriegeraet 2
; Flash Terminierung (Flashvarianten)
DefIntBits XP3,0f19eh ; Interruptsteuerung Peripheriegeraet 3
endif
;----------------------------------------------------------------------------
; Ports:
if _n>=167
PICON equ 0f1c4h
endif
if _n>=167
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -