save ; listing off ; kein Listing über diesen File ;**************************************************************************** ;* * ;* AS 1.41 - Datei REG53x.INC * ;* * ;* Sinn : enthält Register- und Adreßdefinitionen für H8/53x * ;* * ;* letzte Änderungen : 12.11.1995 * ;* * ;**************************************************************************** ifndef reg53xinc ; verhindert Mehrfacheinbindung reg53xinc equ 1 if (MOMCPUNAME<>"HD6475328")&&(MOMCPUNAME<>"HD6475348")&&(MOMCPUNAME<>"HD6475368")&&(MOMCPUNAME<>"HD6475388") fatal "Falscher Prozessortyp eingestellt: nur HD6475328, HD6475348, HD6475368 oder HD6475388 erlaubt!" endif if MOMPASS=1 message "H8/53x-Definitionen (C) 1994 Alfred Arnold" endif __cpunum equ MOMCPU-$6475000 ; ist halt bequemer... if __cpunum=$328 ; Peripherie verschiebt sich beim __regbase equ $ff00 ; H8/532 um eine Seite nach oben elseif __regbase equ $fe00 endif ;---------------------------------------------------------------------------- ; Adressen: if __cpunum=$328 IRAM equ $fb80 ; Anfang internes RAM (1 kByte) IRAMEND equ $ff7f ; Ende internes RAM elseif IRAM equ $f680 ; Anfang internes RAM (2 kByte) IRAMEND equ $fe7f ; Ende internes RAM endif IROM equ $0000 ; Anfang internes ROM if __cpunum=$368 IROMEND equ $f67f ; Ende internes ROM (62 kByte) elseif IROMEND equ $7fff ; Ende internes ROM (32 kByte) endif ;---------------------------------------------------------------------------- ; CPU-Konfiguration: if __cpunum=$328 __sysbase equ $fff8 elseif __sysbase equ $ff10 endif WCR equ __sysbase+0 ; Wait-state control register WC0 equ 0 ; Anzahl Wartezyklen (rw) WC1 equ 1 WMS0 equ 2 ; Wartemodus (rw) WMS1 equ 3 RAMCR equ __sysbase+1 ; RAM control register RAME equ 7 ; Freigabe internes RAM MDCR equ __sysbase+2 ; Mode control register MDS0 equ 0 ; Modusauswahl (r) MDS1 equ 1 MDS2 equ 2 SBYCR equ __sysbase+3 ; Software standby control register SSBY equ 7 ; Sleep/Standby-Moduswahl (rw) ;---------------------------------------------------------------------------- ; Interruptsteuerung: if __cpunum=$328 IPRA equ $fff0 ; Interrupt-Priorität IRQ1 / IRQ0 (rw) IPRB equ $fff1 ; Interrupt-Priorität FRT2 / FRT1 (rw) IPRC equ $fff2 ; Interrupt-Priorität 8-Bit-Timer / FRT3 (rw) IPRD equ $fff3 ; Interrupt-Priorität AD-Wandler / SCI (rw) elseif IPRA equ $ff00 ; Interrupt-Priorität IRQ1 / IRQ0|I.-Timer (rw) IPRB equ $ff01 ; Interrupt-Priorität IRQ5|IRQ4 / IRQ3|IRQ2 (rw) IPRC equ $ff02 ; Interrupt-Priorität FRT2 / FRT1 (rw) IPRD equ $ff03 ; Interrupt-Priorität 8-Bit-Timer / FTR3 (rw) IPRE equ $ff04 ; Interrupt-Priorität SCI2 / SCI1 (rw) IPRF equ $ff05 ; Interrupt-Priorität - / AD-Wandler endif ;---------------------------------------------------------------------------- ; Data Transfer Controller: if __cpunum=$328 DTEA equ $fff4 ; Umschaltung normaler/DTC-Interrupt DTEB equ $fff5 ; (Belegung der Nibbles analog zu IPRx) DTEC equ $fff6 DTED equ $fff7 elseif DTEA equ $ff08 DTEB equ $ff09 DTEC equ $ff0a DTED equ $ff0b DTEE equ $ff0c DTEF equ $ff0d endif ;---------------------------------------------------------------------------- ; Ports: __portbase equ __regbase+$80 P1DR equ __portbase+2 ; Datenregister Port 1 (rw/r) P1DDR equ __portbase+0 ; Datenrichtungsregister Port 1 (w) if __cpunum=$328 P1CR equ $fffc ; Steuerregister Port 1 (rw) elseif SYSCR1 equ $fefc ; Systemsteuerregister 1 (rw) endif BRLE equ 3 ; P1CR/SYSCR1: Bus-Release-Modus NMIEG equ 4 ; Flanke, auf die NMI-Eingang triggert IRQ0E equ 5 ; Nutzung P15 als IRQ0 ? IRQ1E equ 6 ; Nutzung P16 als IRQ1 ? P2DR equ __portbase+3 ; Datenregister Port 2 (rw) P2DDR equ __portbase+1 ; Datenrichtungsregister Port 2 (w) P3DR equ __portbase+6 ; Datenregister Port 3 (rw) P3DDR equ __portbase+4 ; Datenrichtungsregister Port 3 (w) P4DR equ __portbase+7 ; Datenregister Port 4 (rw) P4DDR equ __portbase+5 ; Datenrichtungsregister Port 4 (w) P5DR equ __portbase+10 ; Datenregister Port 5 (rw) P5DDR equ __portbase+8 ; Datenrichtungsregister Port 5 (w) P6DR equ __portbase+11 ; Datenregister Port 6 (rw) P6DDR equ __portbase+9 ; Datenrichtungsregister Port 6 (w) if __cpunum<>$328 SYSCR2 equ $fefd ; Systemsteuerregister 2 (w) P9SCI2E equ 0 ; P92..P94 für SCI2 nutzen ? P9PWME equ 1 ; P92..P94 für PWM nutzen ? P6PWME equ 2 ; P61..P63 als PWM-Ausgang nutzen ? IRQ2E equ 3 ; Nutzung P60 als IRQ2 ? IRQ3E equ 4 ; Nutzung P61 als IRQ3 ? IRQ4E equ 5 ; Nutzung P62 als IRQ4 ? IRQ5E equ 6 ; Nutzung P63 als IRQ5 ? endif P7DR equ __portbase+14 ; Datenregister Port 7 (rw) P7DDR equ __portbase+12 ; Datenrichtungsregister Port 7 (w) P8DR equ __portbase+15 ; Datenregister Port 8 (r) if __cpunum=$388 P9DR equ __portbase+18 ; Datenregister Port 9 (r) PADR equ __portbase+19 ; Datenregister Port A (rw) PADDR equ __portbase+17 ; Datenrichtungsregister Port A (w) PBDR equ __portbase+22 ; Datenregister Port B (rw) PBDDR equ __portbase+20 ; Datenrichtungsregister Port B (w) PBPCR equ __portbase+24 ; Pullup-Register Port B (w) PCDR equ __portbase+23 ; Datenregister Port C (rw) PCDDR equ __portbase+21 ; Datenrichtungsregister Port C (w) PCPCR equ __portbase+25 ; Pullup-Register Port C (w) elseif __cpunum=$328 P9DR equ __portbase+$7f ; Datenregister Port 9 (rw) P9DDR equ __portbase+$7e ; Datenrichtungsregister Port 9 (w) elseif P9DR equ __portbase+$ff ; Datenregister Port 9 (rw) P9DDR equ __portbase+$fe ; Datenrichtungsregister Port 9 (w) endif ;---------------------------------------------------------------------------- ; Timer: __deftimer macro Base,NAME TCR{NAME} equ Base+0 ; Steuerregister (rw) TCSR{NAME} equ Base+1 ; Steuer/Statusregister (rw/r) FRC{NAME} equ Base+2 ; Zählerregister (rw, 16 Bit) OCRA{NAME} equ Base+4 ; Vergleicher A (rw, 16 Bit) OCRB{NAME} equ Base+6 ; Vergleicher B (rw, 16 Bit) ICR{NAME} equ Base+8 ; Eingabe-Fangregister (r, 16 Bit) endm __deftimer __regbase+$90,"1" __deftimer __regbase+$a0,"2" __deftimer __regbase+$b0,"3" CKS0 equ 0 ; TCRx: Taktquellenwahl (rw) CKS1 equ 1 OEA equ 2 ; Vergleichsergebnis OCRA ausgeben ? (rw) OEB equ 3 ; Vergleichsergebnis OCRB ausgeben ? (rw) OVIE equ 4 ; Interrupt bei FRC-Überlauf auslösen? (rw) OCIEA equ 5 ; Interrupt bei Gleichheit mit OCRA auslösen? (rw) OCIEB equ 6 ; Interrupt bei Gleichheit mit OCRB auslösen? (rw) ICIE equ 7 ; Interrupt bei ICR-Fang auslösen? (rw) CCLRA equ 0 ; TCSRx: FRC bei Gleichheit mit OCRA rücksetzen ? (rw) IEDG equ 1 ; Eingabefang bei welcher Flanke ? (rw) OLVLA equ 2 ; Polarität für OCRA-Ausgangssignal (rw) OLVLB equ 3 ; Polarität für OCRB-Ausgangssignal (rw) OVF equ 4 ; FRC-Überlauf aufgetreten ? (r) OCFA equ 5 ; war FRC=OCRA ? (r) OCFB equ 6 ; war FRC=OCRB ? (r) ICF equ 7 ; Eingabe-Fang aufgetreten ? (r) ; 8-Bit-Timer: __tcntbase equ __regbase+$d0 TCR4 equ __tcntbase+0 ; Steuerregister (rw) CKS2 equ 2 ; Taktauswahl (Rest identisch zu FRCx) CCLR0 equ 3 ; Rücksetzmodus CCLR1 equ 4 OVIE_4 equ 5 ; Interrupt bei Überlauf auslösen ? CMIEA equ 6 ; Interrupt bei TCNT=TCORA? CMIEB equ 7 ; Interrupt bei TCNT=TCORB? TCSR4 equ __tcntbase+1 ; Steuer/Statusregister (rw/r) OS0 equ 0 ; Auswirkung von TCORA=TCNT auf TMO OS1 equ 1 OS2 equ 2 ; Auswirkung von TCORB=TCNT auf TMO OS3 equ 3 OVF_4 equ 5 ; Überlauf aufgetreten CMFA equ 6 ; TCNT=TCORA aufgetreten CMFB equ 7 ; TCNT=TCORB aufgetreten TCORA equ __tcntbase+2 ; Zeitkonstante 1 (rw) TCORB equ __tcntbase+3 ; Zeitkonstante 2 (rw) TCNT equ __tcntbase+4 ; Zählwert (rw) ;---------------------------------------------------------------------------- ; Pulsweitenmodulatoren: __defpwm macro Base,NAME PW{NAME}_TCR equ Base ; Steuerregister (rw) PW{NAME}_DTR equ Base+1 ; Pulsweitenregister (rw) PW{NAME}_TCNT equ Base+2 ; Zählwert (rw) endm __defpwm __regbase+$c0,"1" __defpwm __regbase+$c4,"2" __defpwm __regbase+$c8,"3" OS equ 6 ; PWx_TCR: Logik des Ausgangs OE equ 7 ; Ausgang freischalten ;---------------------------------------------------------------------------- ; Watchdog: __wdtbase equ __regbase+$ec WDT_TCSR_R equ __wdtbase+0 ; Steuer/Statusregister (unterschied- WDT_TCSR_W equ __wdtbase+1 ; liche Schreib/Leseadressen) TME equ 5 ; Timer freigeben WTIT equ 6 ; Watchdog/Timermodus WDT_OVF equ 7 ; Watchdog-Überlauf ? WDT_TCNT equ __wdtbase+1 ; Zählregister (rw) if __cpunum<>$328 RSTCSR_W equ $ff14 ; Reset-Register (unterschiedliche RSTCSR_R equ $ff15 ; Schreib/Leseadressen) RSTOE equ 6 ; Watchdog-Reset nach außen geben ? WRST equ 7 ; Reset durch Watchdog ? endif ;---------------------------------------------------------------------------- ; serielle Schnittstelle: __defsci macro Base,NAME SMR{NAME} equ Base+0 ; Modusregister (rw) BRR{NAME} equ Base+1 ; Bitratenregister (rw) SCR{NAME} equ Base+2 ; Steuerregister (rw) TDR{NAME} equ Base+3 ; Sendedaten (rw) SSR{NAME} equ Base+4 ; Statusregister (rw) RDR{NAME} equ Base+5 ; Empfangsdaten (r) endm if __cpunum=$328 __defsci __regbase+$d8,"" elseif __defsci __regbase+$d8,"1" __defsci __regbase+$f0,"2" endif STOP equ 3 ; SMRx: #Stopp-Bits O_E equ 4 ; odd/even Parity PE equ 5 ; mit/ohne Parität CHR equ 6 ; 7/8 Datenbits C_A equ 7 ; synchron/asynchron CKE0 equ 0 ; SCRx: bei synchroner Kommunikation Takt an SCK ausgeben ? CKE1 equ 1 ; Takt intern/extern (-->SCK Ein-oder Ausgang) ? RE equ 4 ; Empfänger freigeben TE equ 5 ; Sender freigeben RIE equ 6 ; Empfangs-Interrupt freigeben TIE equ 7 ; Sende-Interrupt freigeben PER equ 3 ; SSRx: Paritäts-Fehler FER equ 4 ; ungültiger Rahmen ORER equ 5 ; Empfänger-Überlauf RDRF equ 6 ; Empfänger voll ? TDRE equ 7 ; Sender leer ? ;---------------------------------------------------------------------------- ; A/D-Wandler __adbase equ __regbase+$e0 ADDRA equ __adbase+0 ; Wandelergebnis Kanal A (r, 16Bit) ADDRB equ __adbase+2 ; Wandelergebnis Kanal B (r, 16Bit) ADDRC equ __adbase+4 ; Wandelergebnis Kanal C (r, 16Bit) ADDRD equ __adbase+6 ; Wandelergebnis Kanal D (r, 16Bit) ADCSR equ __adbase+8 ; Steuer/Statusregister (rw) CH0 equ 0 ; Kanalauswahl CH1 equ 1 CH2 equ 2 CKS equ 3 ; Wandelzeit 274/138 Takte SCAN equ 4 ; Single Channel/Scan-Modus ADST equ 5 ; Wandler starten/stoppen ADIE equ 6 ; Interrupt bei Wandelende auslösen ? ADF equ 7 ; Wandlung abgeschlossen ? if __cpunum<>$328 ADCR equ __adbase+9 ; Steuerregister (rw) TRGE equ 7 ; externer Trigger ? endif ;---------------------------------------------------------------------------- endif restore ; wieder erlauben