diff options
author | fishsoupisgood <github@madingley.org> | 2019-05-27 02:41:51 +0100 |
---|---|---|
committer | fishsoupisgood <github@madingley.org> | 2019-05-27 02:41:51 +0100 |
commit | 333b605b2afd472b823aeda0adf0e8b1ea9843c0 (patch) | |
tree | bc8f581317897e2e53f278f1716b4471fcdccd4f /include/regm16c.inc | |
download | asl-333b605b2afd472b823aeda0adf0e8b1ea9843c0.tar.gz asl-333b605b2afd472b823aeda0adf0e8b1ea9843c0.tar.bz2 asl-333b605b2afd472b823aeda0adf0e8b1ea9843c0.zip |
Diffstat (limited to 'include/regm16c.inc')
-rw-r--r-- | include/regm16c.inc | 421 |
1 files changed, 421 insertions, 0 deletions
diff --git a/include/regm16c.inc b/include/regm16c.inc new file mode 100644 index 0000000..1ac7b35 --- /dev/null +++ b/include/regm16c.inc @@ -0,0 +1,421 @@ + 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 + |