Blame | Last modification | View Log | Download | RSS feed
ifndef __regh16inc ; avoid multiple inclusion__regh16inc equ 1;****************************************************************************;* *;* AS 1.42 - File regh16.inc *;* *;* Contins register & bit definitions for Hittachi H16 *;* *;****************************************************************************savelisting off ; disable listing on this file__savepc label *switch MOMCPUNAMEcase "HD641016"elsecasefatal "wrong processor type: only HD641016 supported."endcaseif MOMPASS=1message "Hitachi H16 SFR Definitions (C) 2019 Alfred Arnold"endififndef ibrvalueibrvalue set $fe00endif;----------------------------------------------------------------------------; Chip Select Controller__cs structABR ds.w 1 ; Area base register nARR ds.w 1 ; Area range register nAWCR ds.w 1 ; Area wait control register nWTOE bit #7,AWCR ; Wait Output EnableALV bit #6,AWCR ; Access LevelBWC2 bit #2,AWCR ; Bus Wait CyclesBWC1 bit #1,AWCRBWC0 bit #0,AWCR__cs endstructorg ibrvalue+$128CS0 __csCS1 __csCS2 __csCS3 __cs;----------------------------------------------------------------------------; Interrupt ControllerIPR0 equ ibrvalue+$140 ; Interrupt priority register 0S0P1 bit.w #13,IPR0 ; ASCI0 priorityS0P0 bit.w #12,IPR0S1P1 bit.w #9,IPR0 ; ASCI1 priorityS1P0 bit.w #8,IPR0T1P1 bit.w #9,IPR0 ; Timer1 priorityT1P0 bit.w #8,IPR0IPR1 equ ibrvalue+$142 ; Interrupt priority register 1T2P1 bit.w #13,IPR1 ; Timer2 priorityT2P0 bit.w #12,IPR1DM0P1 bit.w #5,IPR1 ; DMAC0 priorityDM0P0 bit.w #4,IPR1DM1P1 bit.w #1,IPR1 ; DMAC1 priorityDM1P0 bit.w #0,IPR1IPR2 equ ibrvalue+$144 ; Interrupt priority register 2DM2P1 bit.w #13,IPR1 ; DMAC2 priorityDM2P0 bit.w #12,IPR1DM3P1 bit.w #9,IPR1 ; DMAC3 priorityDM3P0 bit.w #8,IPR1IR0P1 bit.w #5,IPR1 ; IRQ0 priorityIR0P0 bit.w #4,IPR1IR1P1 bit #1,IPR1 ; IRQ1 priorityIR1P0 bit #0,IPR1ICR equ ibrvalue+$146 ; Interrupt control registerIMOD bit.w 7,ICR ; Interrupt ModeNMIV bit.w 6,ICR ; NMI Vector SelectIRQV0 bit.w 5,ICR ; IRQ0 Vector SelectIRQV1 bit.w 4,ICR ; IRQ1 Vector SelectIRQIM0 bit.w 3,ICR ; /IRQ0 Input ModeIRQIM1 bit.w 2,ICR ; /IRQ1 Input Mode;----------------------------------------------------------------------------; Peripheral ControllerPCR0 equ ibrvalue+$14e ; Peripheral control register 0PTF1 bit.w #12,PCR0 ; Peripheral Terminal Function 1PTF0 bit.w #10,PCR0 ; Peripheral Terminal Function 0;----------------------------------------------------------------------------; Asynchronous communication interfaces__aci struct dotsTRB ds.b 1 ; TX/RX buffer registerST0 ds.b 1 ; Status register 0TXINT bit #7,ST0 ; TXINT interruptRXINT bit #6,ST0 ; RXINT interruptTXRDY bit #1,ST0 ; TX buffer emptyRXRDY bit #0,ST0 ; Receive dataST1 ds.b 1 ; Status register 1IDL bit #6,ST1 ; TX idleCCTS bit #3,ST1 ; Change of /CTSCDCD bit #2,ST1 ; Change Of /DCDBRKD bit #1,ST1 ; Break Start DetectBRKE bit #0,ST1 ; Break End DetectST2 ds.b 1 ; Status register 2PMP bit #6,ST2 ; Parity/MultiprocessorPE bit #5,ST2 ; Parity ErrorFRME bit #4,ST2 ; Framing ErrorOVRN bit #3,ST2 ; Overrun ErrorST3 ds.b 1 ; Status register 3CTS bit #3,ST3 ; Clear To SendDCD bit #2,ST3 ; Data Carrier DetectTXENBL bit #1,ST3 ; TX EnableRXENBL bit #0,ST3 ; RX Enableds.b 1IE0 ds.b 1 ; Interrupt enable register 0TXINTE bit #7,IE0 ; TXINT Interrupt EnableRXINTE bit #6,IE0 ; RXINT Interrupt EnableTXRDYE bit #1,IE0 ; TXRDY Interrupt EnableRXRDYE bit #0,IE0 ; RXRDY Interrupt EnableIE1 ds.b 1 ; Interrupt enable register 1IDLE bit #6,IE1 ; IDL Interrupt EnableCCTSE bit #3,IE1 ; CCTS Interrupt EnableCDCDE bit #2,IE1 ; CDCD Interrupt EnableBRKDE bit #1,IE1 ; BRKD Interrupt EnableBRKEE bit #0,IE1 ; BRKE Interrupt EnableIE2 ds.b 1 ; Interrupt enable register 2PMPE bit #6,IE2 ; PMP Interrupt EnablePEE bit #5,IE2 ; PE Interrupt EnableFRMEE bit #4,IE2 ; FRME Interrupt EnableOVRNE bit #3,IE2 ; OVRN Interrupt Enableds.b 1 ;CMD ds.b 1 ; Command registerMD0 ds.b 1 ; Mode register 0PRTCL2 bit #7,MD0 ; Protocol ModePRTCL1 bit #6,MD0PRTCL0 bit #5,MD0AUTO bit #4,MD0 ; Auto EnableSTOP1 bit #1,MD0 ; Stop Bit lengthSTOP0 bit #0,MD0MD1 ds.b 1 ; Mode register 1BRATE1 bit #7,MD1 ; Bit RateBRATE0 bit #6,MD1TXCHR1 bit #5,MD1 ; TX Character LengthTXCHR0 bit #4,MD1RXCHR1 bit #3,MD1 ; RX Character LengthRXCHR0 bit #2,MD1PMPM1 bit #1,MD1 ; Parity/Multiprocessor ModePMPM0 bit #0,MD1MD2 ds.b 1 ; Mode register 2CNCT1 bit #1,MD2 ; Channel ConnectionCNCT0 bit #0,MD2CTL ds.b 1 ; Control registerBRK bit #3,CTL ; Send BreakRTS bit #0,CTL ; Request To Sendds.b 3TMC ds.b 1 ; Time constant registerRXS ds.b 1 ; RX clock source registerRXCS2 bit #6,RXS ; RX Clock Source SelectRXCS1 bit #5,RXSRXCS0 bit #4,RXSTXS ds.b 1 ; TX clock source registerTXCS2 bit #6,TXS ; TX Clock Source SelectTXCS1 bit #5,TXSTXCS0 bit #4,TXSTXBR3 bit #3,TXS ; TX Baud Rate SelectTXBR2 bit #2,TXSTXBR1 bit #1,TXSTXBR0 bit #0,TXS__aci endstructorg ibrvalue+$158ACI0 __aciorg ibrvalue+$170ACI1 __aci; ACI Commands:ACI_CMD_TXRESET equ $01 ; TX resetACI_CMD_TXENABLE equ $02 ; TX enableACI_CMD_TXDISABLE equ $03 ; TX disableACI_CMD_MPBIT_ON equ $08 ; MP bit onACI_CMD_TXBUFCLR equ $09 ; TX buffer clearACI_CMD_RXRESET equ $11 ; RX resetACI_CMD_RXENABLE equ $12 ; RX enableACI_CMD_RXDISABLE equ $13 ; RX disableACI_CMD_SEARCHMPBIT equ $16 ; Search for MP bitACI_CMD_CHANRESET equ $21 ; Channel resetACI_CMD_NOP equ $00 ; No operation;----------------------------------------------------------------------------; Timer__timer struct dotsUCR ds.w 1 ; Upcount registerCCRA ds.w 1 ; Count compare register ACCRB ds.w 1 ; Count compare register BCNTR ds.w 1 ; Control registerMDS1 bit #15,CNTR ; Mode SelectMDS0 bit #14,CNTRCSS2 bit #13,CNTR ; Clock Source SelectCSS1 bit #12,CNTRCSS0 bit #11,CNTRTSS1 bit #10,CNTR ; Trigger Source SelectTSS0 bit #9,CNTRDMA bit #8,CNTR ; Direct Memory Access RequestCIE bit #7,CNTR ; Compare Interrupt EnableOIE bit #6,CNTR ; Overflow Interrupt EnableMIE bit #5,CNTR ; Measurement End Interrupt EnableOLB bit #4,CNTR ; Output LevelOLA bit #3,CNTRUCE bit #2,CNTR ; Upcount EnableUCRC bit #1,CNTR ; Upcount Register ClearSTP bit #0,CNTR ; Stop PointSTR ds.w 1 ; Status registerCF bit #3,STR ; Compare FlagOF bit #2,STR ; Overflow FlagMF bit #1,STR ; Measurement End FlagOLS bit #0,STR ; Output Level Status__timer endstructorg ibrvalue+$18eTIMER1 __timerTIMER2 __timer;----------------------------------------------------------------------------; DMA Controller__dmactrl struct dotsMADR ds.l 1 ; Memory address registerDADR ds.l 1 ; Device/Next block address registerETCR ds.w 1 ; Execute transfer count registerBTCR ds.w 1 ; Base transfer count registerCHCRA ds.w 1 ; Channel control registerMRC bit #15,CHCRA ; Memory Address Register ChangeMS1 bit #14,CHCRA ; Memory SpaceMS0 bit #13,CHCRADC2 bit #12,CHCRA ; Device ClassificationDC1 bit #11,CHCRADC0 bit #10,CHCRADPS bit #9,CHCRA ; Device Port SizeOPS bit #8,CHCRA ; Operand SizeRQS bit #7,CHCRA ; Request Signal SenseBM bit #6,CHCRA ; Bus ModeDIR bit #5,CHCRA ; DirectionP bit #4,CHCRA ; PriorityBIE bit #3,CHCRA ; BTF Interrupt EnableBTF bit #2,CHCRA ; Block Transfer FinishedTIE bit #1,CHCRA ; TF Interrupt EnableTF bit #0,CHCRA ; Transfer FinishedCHCRB ds.w 1 ; Channel control register BDRC1 bit #15,CHCRB ; Device Address Register ChangeDRC0 bit #14,CHCRBDS1 bit #13,CHCRB ; Device SpaceDS0 bit #12,CHCRBDBER bit #11,CHCRB ; DMA Bus Error__dmactrl endstructorg ibrvalue+$1b0DMAC0 __dmactrlDMAC1 __dmactrlDMAC2 __dmactrlDMAC3 __dmactrlOPCR equ ibrvalue+$1f0 ; Operation control registerWE0 bit.w #15,OPCR ; Write Enable Channel 0DE0 bit.w #14,OPCR ; DMA Enable Channel 0SUC0 bit.w #13,OPCR ; Successive Operation Channel 0WE1 bit.w #11,OPCR ; Write Enable Channel 1DE1 bit.w #10,OPCR ; DMA Enable Channel 1SUC1 bit.w #9,OPCR ; Successive Operation Channel 1WE2 bit.w #7,OPCR ; Write Enable Channel 2DE2 bit.w #6,OPCR ; DMA Enable Channel 2SUC2 bit.w #5,OPCR ; Successive Operation Channel 2WE3 bit.w #3,OPCR ; Write Enable Channel 3DE3 bit.w #2,OPCR ; DMA Enable Channel 3SUC3 bit.w #1,OPCR ; Successive Operation Channel 3DME bit.w #0,OPCR ; DMA Master Enable;----------------------------------------------------------------------------; Memory ControllerMCR equ ibrvalue+$1f8 ; Memory control registerWTIE bit.w #15,MCR ; /WAIT Input EnableASWC bit.w #14,MCR ; AS Wait ControlIWC1 bit.w #13,MCR ; Interrupt Wait CycleIWC0 bit.w #12,MCRROPL bit.w #8,MCR ; Refresh Priority LabelREFE bit.w #7,MCR ; Refresh EnableRWC1 bit.w #6,MCR ; Refresh Wait CycleRWC0 bit.w #5,MCRRRN1 bit.w #4,MCR ; Refresh Request NumberRRN0 bit.w #3,MCRCYC2 bit.w #2,MCR ; Refresh CycleCYC1 bit.w #1,MCRCYC0 bit.w #0,MCR;----------------------------------------------------------------------------org __savepcrestore ; re-enable listingendif ; __regh16inc