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/regm16c.inc

422 lines
18 KiB
PHP

save
listing off ; kein Listing über diesen File
;****************************************************************************
;* *
;* AS 1.41 - Datei REGM16C.INC *
;* *
;* Sinn : enthält Registerdefinitionen für den M16C, Modell M30600M8 *
;* *
;* letzte Änderungen : 30. 8.1996 *
;* 8. 2.1997 if MomPass... *
;* 7. 7.1999 added two more M16C family CPU entries *
;* *
;****************************************************************************
ifndef regm16cinc ; verhindert Mehrfacheinbindung
regm16cinc equ 1
if MOMPASS=1
switch MOMCPUNAME
case "M16C"
fatal "please be more specific; do not use the generic processor type for this header file!"
case "M30600M8"
message "including M30600M8-registers"
case "M30610"
message "including M30610 registers"
case "M30620"
message "including M30620 registers"
elsecase
fatal "invalid processor type: only M30600M8, M30610, or M30620 allowed!"
endcase
endif
;----------------------------------------------------------------------------
; benötigte Makros
__bitreg macro Name,Adr,Mask
Name equ Adr
irp BIT,0,1,2,3,4,5,6,7
if Mask&(1<<BIT)
Name{"BIT"} equ Adr<<3+BIT
endif
endm
endm
;----------------------------------------------------------------------------
; Prozessorsteuerung
__bitreg PM,0004h,0ffh ; CPU-Modusregister
__bitreg CM0,0006h,0ffh ; Systemtaktsteuerung 0
__bitreg CM1,0007h,02bh ; Systemtaktsteuerung 1
PRCR equ 000ah ; Schutzregister
PRC0 equ PRCR<<3+0 ; Schreibschutz CM0/CM1
PRC1 equ PRCR<<3+1 ; Schreibschutz PM
PRC2 equ PRCR<<3+2 ; Schreibschutz PD9
;----------------------------------------------------------------------------
; Ports
P0 equ 03e0h ; Datenregister Port 0
PD0 equ 03e2h ; Datenrichtungsregister Port 0
P1 equ 03e1h ; Datenregister Port 1
PD1 equ 03e3h ; Datenrichtungsregister Port 1
P2 equ 03e4h ; Datenregister Port 2
PD2 equ 03e6h ; Datenrichtungsregister Port 2
P3 equ 03e5h ; Datenregister Port 3
PD3 equ 03e7h ; Datenrichtungsregister Port 3
P4 equ 03e8h ; Datenregister Port 4
PD4 equ 03eah ; Datenrichtungsregister Port 4
P5 equ 03e9h ; Datenregister Port 5
PD5 equ 03ebh ; Datenrichtungsregister Port 5
P6 equ 03ech ; Datenregister Port 6
PD6 equ 03eeh ; Datenrichtungsregister Port 6
P7 equ 03edh ; Datenregister Port 7
PD7 equ 03efh ; Datenrichtungsregister Port 7
P8 equ 03f0h ; Datenregister Port 8
PD8 equ 03f2h ; Datenrichtungsregister Port 8
P9 equ 03f1h ; Datenregister Port 9
PD9 equ 03f3h ; Datenrichtungsregister Port 9
P10 equ 03f4h ; Datenregister Port 10
PD10 equ 03f6h ; Datenrichtungsregister Port 10
PUR0 equ 03fch ; Pull-Up-Register
PUR1 equ 03fdh
PUR2 equ 03feh
PUR3 equ 03ffh
;----------------------------------------------------------------------------
; Interruptsteuerung
DM0IC equ 004bh ; DMA-Kanal 0
DM1IC equ 004ch ; DMA-Kanal 1
KUPIC equ 004dh ; Keyboard input
ADIC equ 004eh ; A/D-Wandler
S0TIC equ 0051h ; Senden UART0
S0RIC equ 0052h ; Empfang UART0
S1TIC equ 0053h ; Senden UART1
S1RIC equ 0054h ; Empfang UART1
TA0IC equ 0055h ; Timer A0
TA1IC equ 0056h ; Timer A1
TA2IC equ 0057h ; Timer A2
TA3IC equ 0058h ; Timer A3
TA4IC equ 0059h ; Timer A4
TB0IC equ 005ah ; Timer B0
TB1IC equ 005bh ; Timer B1
TB2IC equ 005ch ; Timer B2
INT0IC equ 005dh ; externer Imterrupt 0
INT1IC equ 005eh ; externer Interrupt 1
INT2IC equ 005fh ; externer Interrupt 2
_ILVL0 equ 0 ; Prioritätsebene
_ILVL1 equ 1
_ILVL2 equ 2
_IR equ 3 ; Interrupt aufgetreten ?
_POL equ 4 ; Polaritätswahl (nur INTxIC)
_LVS equ 5 ; Pegel/Flankentriggerung (nur INTxIC)
;----------------------------------------------------------------------------
; Chip-Selects
CSR equ 0008h
CS0 equ CSR<<3+0 ; Freigabe Chip-Selects
CS1 equ CSR<<3+1
CS2 equ CSR<<3+2
CS3 equ CSR<<3+3
CS0W equ CSR<<3+4 ; mit / ohne Wait-State ?
CS1W equ CSR<<3+5
CS2W equ CSR<<3+6
CS3W equ CSR<<3+7
;----------------------------------------------------------------------------
; Adreßvergleicher
RMAD0 equ 0010h ; Vergleichsadresse 0
RMAD1 equ 0014h ; Vergleichsadresse 1
__bitreg AIER,0009h,03h ; Interrupt-Freigaben
;----------------------------------------------------------------------------
; DMA-Controller
DM0SL equ 03b8h ; Request-Auswahl Kanal 0
DM1SL equ 03bah ; Request-Auswahl Kanal 1
_DSEL0 equ 0 ; Request-Grund
_DSEL1 equ 1
_DSEL2 equ 2
_DSEL3 equ 3
_DSR equ 7 ; Software-Trigger
DM0CON equ 002ch ; Steuerregister Kanal 0
DM1CON equ 003ch ; Steuerregister Kanal 1
_DMBIT equ 0 ; Transfereinheit (1/2 Byte)
_DMASL equ 1 ; Einzel/Blocktransfer
_DMAS equ 2 ; Request-Anzeige
_DMAE equ 3 ; Freigabe
_DSD equ 4 ; feste/wandernde Quelladresse
_DAD equ 5 ; feste/wandernde Zieladresse
SAR0 equ 0020h ; Quelladresse Kanal 0
DAR0 equ 0024h ; Zieladresse Kanal 0
TCR0 equ 0028h ; Zähler Kanal 0
SAR1 equ 0030h ; Quelladresse Kanal 1
DAR1 equ 0034h ; Zieladresse Kanal 1
TCR1 equ 0038h ; Zähler Kanal 1
;----------------------------------------------------------------------------
; Timer
TA0MR equ 0396h ; Modusregister Timer A0
TA1MR equ 0397h ; Modusregister Timer A1
TA2MR equ 0398h ; Modusregister Timer A2
TA3MR equ 0399h ; Modusregister Timer A3
TA4MR equ 039ah ; Modusregister Timer A4
TB0MR equ 039bh ; Modusregister Timer B0
TB1MR equ 039ch ; Modusregister Timer B1
TB2MR equ 039dh ; Modusregister Timer B2
_TMOD0 equ 0 ; Moduswahl
_TMOD1 equ 1
_MR0 equ 2 ; Sub-Funktionsauswahl
_MR1 equ 3
_MR2 equ 4
_MR3 equ 5
_TCK0 equ 6 ; Zählquellenwahl
_TCK1 equ 7
TA0 equ 0386h ; Zählregister Timer A0
TA1 equ 0388h ; Zählregister Timer A1
TA2 equ 038ah ; Zählregister Timer A2
TA3 equ 038ch ; Zählregister Timer A3
TA4 equ 038eh ; Zählregister Timer A4
TB0 equ 0390h ; Zählregister Timer B0
TB1 equ 0392h ; Zählregister Timer B1
TB2 equ 0394h ; Zählregister Timer B2
TABSR equ 0380h ; Start/Stop-Register:
TA0S equ TABSR<<3+0 ; Timer A0
TA1S equ TABSR<<3+1 ; Timer A1
TA2S equ TABSR<<3+2 ; Timer A2
TA3S equ TABSR<<3+3 ; Timer A3
TA4S equ TABSR<<3+4 ; Timer A4
TB0S equ TABSR<<3+5 ; Timer B0
TB1S equ TABSR<<3+6 ; Timer B1
TB2S equ TABSR<<3+7 ; Timer B2
CPSRF equ 0381h ; Vorteilerregister:
CPSR equ CPSRF<<3+7 ; Vorteiler zurücksetzen
ONSF equ 0382h ; Monoflop-Triggerbits
TA0OS equ ONSF<<3+0 ; Timer A0
TA1OS equ ONSF<<3+1 ; Timer A1
TA2OS equ ONSF<<3+2 ; Timer A2
TA3OS equ ONSF<<3+3 ; Timer A3
TA4OS equ ONSF<<3+4 ; Timer A4
TA0TGL equ ONSF<<3+6 ; Triggerwahl Timer A0
TA0TGH equ ONSF<<3+7
TRGSR equ 0383h ; Triggerwahlregister
TA1TGL equ TRGSR<<3+0 ; Triggerwahl Timer A1
TA1TGH equ TRGSR<<3+1
TA2TGL equ TRGSR<<3+2 ; Triggerwahl Timer A2
TA2TGH equ TRGSR<<3+3
TA3TGL equ TRGSR<<3+4 ; Triggerwahl Timer A3
TA3TGH equ TRGSR<<3+5
TA4TGL equ TRGSR<<3+6 ; Triggerwahl Timer A4
TA4TGH equ TRGSR<<3+7
UDF equ 0384h ; Zählrichtungen(A) / Zweiphasenmodi(A2-4)
TA0UD equ UDF<<3+0 ; Timer A0
TA1UD equ UDF<<3+1 ; Timer A1
TA2UD equ UDF<<3+2 ; Timer A2
TA3UD equ UDF<<3+3 ; Timer A3
TA4UD equ UDF<<3+4 ; Timer A4
TA2P equ UDF<<3+5 ; Timer A2
TA3P equ UDF<<3+6 ; Timer A3
TA4P equ UDF<<3+7 ; Timer A4
;----------------------------------------------------------------------------
; Watchdog
WDTS equ 000eh ; Startwert
__bitreg WDC,000fh,80h ; Vorteilerwahl / obere Zähler-Bits
;----------------------------------------------------------------------------
; serielle Ports:
U0TB equ 03a2h ; Senderegister UART0
U1TB equ 03aah ; Senderegister UART1
U0RB equ 03a6h ; Empfangsregister UART0
U1RB equ 03aeh ; Empfangsregister UART1
_OER equ 4 ; Overrun-Fehler ?
_FER equ 5 ; Framing-Fehler ?
_PER equ 6 ; Paritäts-Fehler ?
_SUM equ 7 ; Summenfehler ?
U0BRG equ 03a1h ; Baudratengenerator UART0
U1BRG equ 03a9h ; Baudratengenerator UART1
U0MR equ 03a0h ; Modusregister UART0
U1MR equ 03a8h ; Modusregister UART1
_SMD0 equ 0 ; Modus
_SMD1 equ 1
_SMD2 equ 2
_CKDIR equ 3 ; interner/externer Takt
_STPS equ 4 ; Anzahl Stopbits
_PRY equ 5 ; Paritätswahl
_PRYE equ 6 ; Paritätsart
_SLEP equ 7 ; Sleep-Modus
U0C0 equ 03a4h ; Steuerregister 0 UART0
U1C0 equ 03ach ; Steuerregister 1 UART0
_CLK0 equ 0 ; Taktquelle Baudratengenerator
_CLK1 equ 1
_CRS equ 2 ; RTS/CTS-Auswahl
_TXEPT equ 3 ; Senderegister voll ?
_CRD equ 4 ; CTS/RTS-Auswahl
_NCH equ 5 ; TXD als Open-Collector ?
_CKPOL equ 6 ; Taktpolaritätswahl
_UFORM equ 7 ; Bitreihenfolge
U0C1 equ 03a5h ; Steuerregister 1 UART0
U1C1 equ 03adh ; Steuerregister 1 UART1
_TE equ 0 ; Senderfreigabe
_TI equ 1 ; Sendepuffer leer ?
_RE equ 2 ; Empfängerfreigabe
_RI equ 3 ; Empfangspuffer voll ?
UCON equ 03b0h ; Steuerregister 2 UART0+1
U0IRS equ UCON<<3+0 ; Interruptgrund Sender UART0
U1IRS equ UCON<<3+1 ; Interruptgrund Sender UART1
U0RRM equ UCON<<3+2 ; kontinuierlicher Empfangsmodus UART0
U1RRM equ UCON<<3+3 ; kontinuierlicher Empfangsmodus UART1
CLKMD0 equ UCON<<3+4 ; Taktausgabe an CLK1/CLKS1
CLKMD1 equ UCON<<3+5
RCSP equ UCON<<3+6 ; RTS/CTS gemeinsam/einzeln
;----------------------------------------------------------------------------
; CRC-Generator
CRCD equ 03bch ; Ergebnis CRC-Berechnung
CRCIN equ 03beh ; Datumseingabe CRC-Berechnung
;----------------------------------------------------------------------------
; A/D-Wandler
AD0 equ 03c0h ; Datenregister Kanal 0
AD1 equ 03c2h ; Datenregister Kanal 1
AD2 equ 03c4h ; Datenregister Kanal 2
AD3 equ 03c6h ; Datenregister Kanal 3
AD4 equ 03c8h ; Datenregister Kanal 4
AD5 equ 03cah ; Datenregister Kanal 5
AD6 equ 03cch ; Datenregister Kanal 6
AD7 equ 03ceh ; Datenregister Kanal 7
ADCON0 equ 03d6h ; A/D-Steuerregister 0
CH0 equ ADCON0<<3+0 ; Kanalwahl
CH1 equ ADCON0<<3+1
CH2 equ ADCON0<<3+2
MD0 equ ADCON0<<3+3 ; Modus
MD1 equ ADCON0<<3+4
TRG equ ADCON0<<3+5 ; Soft/Hardwaretrigger
ADST equ ADCON0<<3+6 ; Konversion starten
CKS0 equ ADCON0<<3+7 ; Frequenzwahl
ADCON1 equ 03d7h ; A/D-Steuerregister 1
SCAN0 equ ADCON1<<3+0 ; Sweep-Modus
SCAN1 equ ADCON1<<3+1
MD2 equ ADCON1<<3+2 ; Modus
BITS equ ADCON1<<3+3 ; Breitenwahl (8/10 Bit)
VCUT equ ADCON1<<3+5
OPA0 equ ADCON1<<3+6
OPA1 equ ADCON1<<3+7
ADCON2 equ 03d4h
SMP equ ADCON2<<3+0 ; A-D Conversion method bit
;----------------------------------------------------------------------------
; D/A-Wandler
DA0 equ 03d8h ; Wert D/A-Wandler 0
DA1 equ 03dah ; Wert D/A-Wandler 1
DACON equ 03dch ; Steuerregister D/A-Wandler
DA0E equ DACON<<3+0 ; D/A-Wandler 0 freigeben
DA1E equ DACON<<3+1 ; D/A-Wandler 1 freigeben
;----------------------------------------------------------------------------
; feste Vektoren
Vec_UndefInstr equ 0fffdch ; UND ausgeführt
Vec_Overflow equ 0fffe0h ; INTO+Overflow ausgeführt
Vec_BRK equ 0fffe4h ; BRK ausgeführt
Vec_AddrMatch equ 0fffe8h ; Adressengleichheit aufgetreten
Vec_SingleStep equ 0fffech ; Einzelschrittverarbeitung
Vec_WDT equ 0ffff0h ; Watchdog hat zugeschlagen
Vec_DBC equ 0ffff4h
Vec_NMI equ 0ffff8h ; nichtmaskierbarer Interrupt
Vec_Reset equ 0ffffch
;----------------------------------------------------------------------------
; Variable Vektoren; hier Offset zu INTB
Vec_BRK2 equ 0 ; BRK ausgeführt (falls fester Vektor abgeschaltet)
Vec_DMA0 equ 44
Vec_DMA1 equ 48
Vec_KeyInp equ 52
Vec_AD equ 56
Vec_UART0T equ 68
Vec_UART0R equ 72
Vec_UART1T equ 76
Vec_UART1R equ 80
Vec_TA0 equ 84
Vec_TA1 equ 88
Vec_TA2 equ 92
Vec_TA3 equ 96
Vec_TA4 equ 100
Vec_TB0 equ 104
Vec_TB1 equ 108
Vec_TB2 equ 112
Vec_INT0 equ 116
Vec_INT1 equ 120
Vec_INT2 equ 124
;----------------------------------------------------------------------------
; Speicherbereiche
switch MOMCPUNAME
case "M30600M8"
IROM equ 0f0000h ; 64K ROM am Ende des Speicherraums
IROMEND equ 0fffffh
IRAM equ 000400h ; 10K RAM hinter SFRs
IRAMEND equ 002c00h
case "M30610" ; 128k ROM
IROM equ 0e0000h
IROMEND equ 0fffffh
IRAM equ 000400h
IRAMEND equ 002c00h ; 10k RAM
case "M30620"
IROM equ 0e0000h
IROMEND equ 0fffffh
IRAM equ 000400h
IRAMEND equ 002c00h ; 10k RAM
endcase
;----------------------------------------------------------------------------
endif
restore ; Listing wieder an