Blame | Last modification | View Log | Download | RSS feed
ifndef regm16cinc ; avoid multiple inclusionregm16cinc equ 1savelisting off ; no listing over this file;****************************************************************************;* *;* AS 1.42 - File REGM16C.INC *;* *;* Contains Register Definitions for the M16C *;* *;****************************************************************************if MOMPASS=1switch MOMCPUNAMEcase "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"elsecasefatal "Invalid processor type: only M30600M8, M30610, or M30620 allowed."endcaseendif;----------------------------------------------------------------------------; Required Macros__bitreg macro Name,Adr,MaskName equ Adrirp BIT,0,1,2,3,4,5,6,7if Mask&(1<<BIT)Name{"BIT"} equ Adr<<3+BITendifendmendm;----------------------------------------------------------------------------; Processor Control__bitreg PM,0004h,0ffh ; CPU Mode Register__bitreg CM0,0006h,0ffh ; System Clock Control 0__bitreg CM1,0007h,02bh ; System Clock Control 1PRCR equ 000ah ; Protection RegisterPRC0 equ PRCR<<3+0 ; Write Protection CM0/CM1PRC1 equ PRCR<<3+1 ; Write Protection PMPRC2 equ PRCR<<3+2 ; Write Protection PD9;----------------------------------------------------------------------------; PortsP0 equ 03e0h ; Port 0 Data RegisterPD0 equ 03e2h ; Port 0 Data Direction RegisterP1 equ 03e1h ; Port 1 Data RegisterPD1 equ 03e3h ; Port 1 Data Direction RegisterP2 equ 03e4h ; Port 2 Data RegisterPD2 equ 03e6h ; Port 2 Data Direction RegisterP3 equ 03e5h ; Port 3 Data RegisterPD3 equ 03e7h ; Port 3 Data Direction RegisterP4 equ 03e8h ; Port 4 Data RegisterPD4 equ 03eah ; Port 4 Data Direction RegisterP5 equ 03e9h ; Port 5 Data RegisterPD5 equ 03ebh ; Port 5 Data Direction RegisterP6 equ 03ech ; Port 6 Data RegisterPD6 equ 03eeh ; Port 6 Data Direction RegisterP7 equ 03edh ; Port 7 Data RegisterPD7 equ 03efh ; Port 7 Data Direction RegisterP8 equ 03f0h ; Port 8 Data RegisterPD8 equ 03f2h ; Port 8 Data Direction RegisterP9 equ 03f1h ; Port 9 Data RegisterPD9 equ 03f3h ; Port 9 Data Direction RegisterP10 equ 03f4h ; Port 10 Data RegisterPD10 equ 03f6h ; Port 10 Data Direction RegisterPUR0 equ 03fch ; Pull Up RegistersPUR1 equ 03fdhPUR2 equ 03fehPUR3 equ 03ffh;----------------------------------------------------------------------------; Interrupt ControlDM0IC equ 004bh ; DMA Channel 0DM1IC equ 004ch ; DMA Channel 1KUPIC equ 004dh ; Keyboard InputADIC equ 004eh ; A/D ConverterS0TIC equ 0051h ; UART0 TransmitS0RIC equ 0052h ; UART0 ReceiveS1TIC equ 0053h ; UART1 TransmitS1RIC equ 0054h ; UART1 ReceiveTA0IC equ 0055h ; Timer A0TA1IC equ 0056h ; Timer A1TA2IC equ 0057h ; Timer A2TA3IC equ 0058h ; Timer A3TA4IC equ 0059h ; Timer A4TB0IC equ 005ah ; Timer B0TB1IC equ 005bh ; Timer B1TB2IC equ 005ch ; Timer B2INT0IC equ 005dh ; External Imterrupt 0INT1IC equ 005eh ; External Interrupt 1INT2IC equ 005fh ; External Interrupt 2_ILVL0 equ 0 ; Priority Level_ILVL1 equ 1_ILVL2 equ 2_IR equ 3 ; Interrupt Flags_POL equ 4 ; Polarity Selection (only INTxIC)_LVS equ 5 ; Levell/Edge Trigger (nur INTxIC);----------------------------------------------------------------------------; Chip SelectsCSR equ 0008hCS0 equ CSR<<3+0 ; Chip Select EnableCS1 equ CSR<<3+1CS2 equ CSR<<3+2CS3 equ CSR<<3+3CS0W equ CSR<<3+4 ; With or Without Wait StateCS1W equ CSR<<3+5CS2W equ CSR<<3+6CS3W equ CSR<<3+7;----------------------------------------------------------------------------; Address ComparatorRMAD0 equ 0010h ; Comparison Address 0RMAD1 equ 0014h ; Comparison Address 1__bitreg AIER,0009h,03h ; Interrupt Enable;----------------------------------------------------------------------------; DMA ControllerDM0SL equ 03b8h ; Channel 0 Request SelectionDM1SL equ 03bah ; Channel 1 Request Selection_DSEL0 equ 0 ; Request Reason_DSEL1 equ 1_DSEL2 equ 2_DSEL3 equ 3_DSR equ 7 ; Software TriggerDM0CON equ 002ch ; Channel 0 Control RegisterDM1CON equ 003ch ; Channel 1 Control Register_DMBIT equ 0 ; Transfer Unit (1/2 Bytes)_DMASL equ 1 ; Single/Block Transfer_DMAS equ 2 ; Request Indication_DMAE equ 3 ; Enable_DSD equ 4 ; Source Address Fixed or Auto-Increment_DAD equ 5 ; Destination Address Fixed or Auto-IncrementSAR0 equ 0020h ; Channel 0 Source AddressDAR0 equ 0024h ; Channel 0 Destination AddressTCR0 equ 0028h ; Channel 0 CountSAR1 equ 0030h ; Channel 1 Source AddressDAR1 equ 0034h ; Channel 1 Destination AddressTCR1 equ 0038h ; Channel 1 Count;----------------------------------------------------------------------------; TimerTA0MR equ 0396h ; Timer A0 Mode RegisterTA1MR equ 0397h ; Timer A1 Mode RegisterTA2MR equ 0398h ; Timer A2 Mode RegisterTA3MR equ 0399h ; Timer A3 Mode RegisterTA4MR equ 039ah ; Timer A4 Mode RegisterTB0MR equ 039bh ; Timer B0 Mode RegisterTB1MR equ 039ch ; Timer B1 Mode RegisterTB2MR equ 039dh ; Timer B2 Mode Register_TMOD0 equ 0 ; Mode Selection_TMOD1 equ 1_MR0 equ 2 ; Sub Function Selection_MR1 equ 3_MR2 equ 4_MR3 equ 5_TCK0 equ 6 ; Clock Source Selection_TCK1 equ 7TA0 equ 0386h ; Timer A0 Count RegisterTA1 equ 0388h ; Timer A1 Count RegisterTA2 equ 038ah ; Timer A2 Count RegisterTA3 equ 038ch ; Timer A3 Count RegisterTA4 equ 038eh ; Timer A4 Count RegisterTB0 equ 0390h ; Timer B0 Count RegisterTB1 equ 0392h ; Timer B1 Count RegisterTB2 equ 0394h ; Timer B2 Count RegisterTABSR equ 0380h ; Start/Stop Registers:TA0S equ TABSR<<3+0 ; Timer A0TA1S equ TABSR<<3+1 ; Timer A1TA2S equ TABSR<<3+2 ; Timer A2TA3S equ TABSR<<3+3 ; Timer A3TA4S equ TABSR<<3+4 ; Timer A4TB0S equ TABSR<<3+5 ; Timer B0TB1S equ TABSR<<3+6 ; Timer B1TB2S equ TABSR<<3+7 ; Timer B2CPSRF equ 0381h ; Prescaler Register:CPSR equ CPSRF<<3+7 ; Prescaler ResetONSF equ 0382h ; Monoflop Trigger BitsTA0OS equ ONSF<<3+0 ; Timer A0TA1OS equ ONSF<<3+1 ; Timer A1TA2OS equ ONSF<<3+2 ; Timer A2TA3OS equ ONSF<<3+3 ; Timer A3TA4OS equ ONSF<<3+4 ; Timer A4TA0TGL equ ONSF<<3+6 ; Timer A0 Trigger SelectionTA0TGH equ ONSF<<3+7TRGSR equ 0383h ; Trigger Selection RegisterTA1TGL equ TRGSR<<3+0 ; Timer A1 Trigger SelectionTA1TGH equ TRGSR<<3+1TA2TGL equ TRGSR<<3+2 ; Timer A2 Trigger SelectionTA2TGH equ TRGSR<<3+3TA3TGL equ TRGSR<<3+4 ; Timer A3 Trigger SelectionTA3TGH equ TRGSR<<3+5TA4TGL equ TRGSR<<3+6 ; Timer A4 Trigger SelectionTA4TGH equ TRGSR<<3+7UDF equ 0384h ; Count Directions (A) / Dual Phase Modes (A2-A4)TA0UD equ UDF<<3+0 ; Timer A0TA1UD equ UDF<<3+1 ; Timer A1TA2UD equ UDF<<3+2 ; Timer A2TA3UD equ UDF<<3+3 ; Timer A3TA4UD equ UDF<<3+4 ; Timer A4TA2P equ UDF<<3+5 ; Timer A2TA3P equ UDF<<3+6 ; Timer A3TA4P equ UDF<<3+7 ; Timer A4;----------------------------------------------------------------------------; WatchdogWDTS equ 000eh ; Start Value__bitreg WDC,000fh,80h ; Prescaler Selection / Upper Counter Bits;----------------------------------------------------------------------------; serielle Ports:U0TB equ 03a2h ; UART0 Transmit RegisterU1TB equ 03aah ; UART1 Transmit RegisterU0RB equ 03a6h ; UART0 Receive RegisterU1RB equ 03aeh ; UART1 Receive Register_OER equ 4 ; Overrun Error_FER equ 5 ; Framing Error_PER equ 6 ; Parity Error_SUM equ 7 ; Summ ErrorU0BRG equ 03a1h ; UART0 Baud Rate GeneratorU1BRG equ 03a9h ; UART1 Baud Rate GeneratorU0MR equ 03a0h ; UART0 Mode RegisterU1MR equ 03a8h ; UART1 Mode Register_SMD0 equ 0 ; Mode_SMD1 equ 1_SMD2 equ 2_CKDIR equ 3 ; Internal/External Clock_STPS equ 4 ; Anzahl Stopbits_PRY equ 5 ; Parity Enable_PRYE equ 6 ; Parity Type_SLEP equ 7 ; Sleep-ModusU0C0 equ 03a4h ; UART0 Control Register 0U1C0 equ 03ach ; UART0 Control Register 1_CLK0 equ 0 ; Baud Rate Generator Clock Source_CLK1 equ 1_CRS equ 2 ; RTS/CTS Selection_TXEPT equ 3 ; Transmit Register Full_CRD equ 4 ; CTS/RTS Selection_NCH equ 5 ; TXD in Open Collector Mode_CKPOL equ 6 ; Clock Polarity Selection_UFORM equ 7 ; Bit OrderU0C1 equ 03a5h ; UART0 Control Register 1U1C1 equ 03adh ; UART1 Control Register 1_TE equ 0 ; Enable Transmitter_TI equ 1 ; Transmit Buffer Empty_RE equ 2 ; Receiver Enable_RI equ 3 ; Receive Buffer FullUCON equ 03b0h ; UART0+1 Control Register 2U0IRS equ UCON<<3+0 ; UART0 Transmitter Interrupt CauseU1IRS equ UCON<<3+1 ; UART1 Transmitter Interrupt CauseU0RRM equ UCON<<3+2 ; UART0 Continuous Receive ModeU1RRM equ UCON<<3+3 ; UART1 Continuous Receive ModeCLKMD0 equ UCON<<3+4 ; Clock Output on CLK1/CLKS1CLKMD1 equ UCON<<3+5RCSP equ UCON<<3+6 ; RTS/CTS Common/Single;----------------------------------------------------------------------------; CRC GeneratorCRCD equ 03bch ; CRC Computation ResultCRCIN equ 03beh ; CRC Computation Input;----------------------------------------------------------------------------; A/D ConverterAD0 equ 03c0h ; Channel 0 Data RegisterAD1 equ 03c2h ; Channel 1 Data RegisterAD2 equ 03c4h ; Channel 2 Data RegisterAD3 equ 03c6h ; Channel 3 Data RegisterAD4 equ 03c8h ; Channel 4 Data RegisterAD5 equ 03cah ; Channel 5 Data RegisterAD6 equ 03cch ; Channel 6 Data RegisterAD7 equ 03ceh ; Channel 7 Data RegisterADCON0 equ 03d6h ; A/D-Control Register 0CH0 equ ADCON0<<3+0 ; Channel SelectionCH1 equ ADCON0<<3+1CH2 equ ADCON0<<3+2MD0 equ ADCON0<<3+3 ; ModeMD1 equ ADCON0<<3+4TRG equ ADCON0<<3+5 ; Soft/Hardware TriggerADST equ ADCON0<<3+6 ; Start ConversionCKS0 equ ADCON0<<3+7 ; Frequeny SelectionADCON1 equ 03d7h ; A/D Control Register 1SCAN0 equ ADCON1<<3+0 ; Sweep ModeSCAN1 equ ADCON1<<3+1MD2 equ ADCON1<<3+2 ; ModeBITS equ ADCON1<<3+3 ; Width Selection (8/10 Bits)VCUT equ ADCON1<<3+5OPA0 equ ADCON1<<3+6OPA1 equ ADCON1<<3+7ADCON2 equ 03d4hSMP equ ADCON2<<3+0 ; A/D Conversion Method Bit;----------------------------------------------------------------------------; D/A ConverterDA0 equ 03d8h ; D/A Converter 0 ValueDA1 equ 03dah ; D/A Converter 1 ValueDACON equ 03dch ; D/A ConverterControl RegisterDA0E equ DACON<<3+0 ; D/A Converter 0 EnableDA1E equ DACON<<3+1 ; D/A Converter 1 Enable;----------------------------------------------------------------------------; Fixed VectorsVec_UndefInstr equ 0fffdch ; Undefined InstructionVec_Overflow equ 0fffe0h ; INTO + OverflowVec_BRK equ 0fffe4h ; BRKVec_AddrMatch equ 0fffe8h ; Address MatchVec_SingleStep equ 0fffech ; Single StepVec_WDT equ 0ffff0h ; WatchdogVec_DBC equ 0ffff4hVec_NMI equ 0ffff8h ; Non Maskable InterruptVec_Reset equ 0ffffch;----------------------------------------------------------------------------; Variable Vectors; here the Offsets to INTBVec_BRK2 equ 0 ; BRK (if fixed vector disabled)Vec_DMA0 equ 44Vec_DMA1 equ 48Vec_KeyInp equ 52Vec_AD equ 56Vec_UART0T equ 68Vec_UART0R equ 72Vec_UART1T equ 76Vec_UART1R equ 80Vec_TA0 equ 84Vec_TA1 equ 88Vec_TA2 equ 92Vec_TA3 equ 96Vec_TA4 equ 100Vec_TB0 equ 104Vec_TB1 equ 108Vec_TB2 equ 112Vec_INT0 equ 116Vec_INT1 equ 120Vec_INT2 equ 124;----------------------------------------------------------------------------; Memory Areasswitch MOMCPUNAMEcase "M30600M8"IROM equ 0f0000h ; 64K ROM at End of Address SpaceIROMEND equ 0fffffhIRAM equ 000400h ; 10K RAM behind SFRsIRAMEND equ 002c00hcase "M30610" ; 128K ROMIROM equ 0e0000hIROMEND equ 0fffffhIRAM equ 000400hIRAMEND equ 002c00h ; 10K RAMcase "M30620"IROM equ 0e0000hIROMEND equ 0fffffhIRAM equ 000400hIRAMEND equ 002c00h ; 10K RAMendcase;----------------------------------------------------------------------------endif ; regm16cincrestore ; re-enable listing