/************************************************************************/
/* CQBBEL GNU CC Common Control Software / (C) Toshio MURAI 2011, 2012	*/
/*      This is Free Software;   You can redistribute this software     */
/*      and/or modify it under the terms of the GNU General Public      */
/*      License version 3, or (at your option) any later version.       */
/************************************************************************/

#define	MSTPACMU0	0x00008000	//0xFFFF7FFF	B15	
#define	MATPACMU1	0x00004000	//0xFFFFBFFF	B14


#define		ICU 	((struct str_icu *)0x87000)
struct str_icu {
	volatile unsigned char	IR[256];	//00087010-FD,割り込み要求レジスタ016-253,8,8,2
	volatile unsigned char	DTCER[256];	//0008711B-FC,DTC起動許可レジスタ027-252,8,8
	volatile unsigned char	IER[32];	//00087202-1F,割り込み要求許可レジスタ02-1F,8,8
	volatile unsigned char	NOP0[192];	//
	volatile unsigned char	SWINTER;	//000872E0,ソフトウェア割り込み起動レジスタ,8,8
	volatile unsigned char	NOP1[15];
	volatile unsigned short	FIR;		//000872F0,高速割り込み設定レジスタ,16,16
	volatile unsigned short	D2[7];	
	volatile unsigned char	IPR[256];	//00087300-8F,割り込み要因プライオリティレジスタ00,8,8
	volatile unsigned char	DMRSR0;	//00087400,DMACA起動要因選択レジスタ0,8,8
	volatile unsigned char	NOPDMR0[3];
	volatile unsigned char	DMRSR1;	//00087404,DMACA起動要因選択レジスタ1,8,8
	volatile unsigned char	NOPDMR1[3];
	volatile unsigned char	DMRSR2;	//00087408,DMACA起動要因選択レジスタ2,8,8
	volatile unsigned char	NOPDMR2[3];
	volatile unsigned char	DMRSR3;	//0008740C,DMACA起動要因選択レジスタ3,8,8
	volatile unsigned char	NOPDMR3[3];
	volatile unsigned long	NOP2[60];
	volatile unsigned char	IRQCR[128];	//00087500-0F,IRQコントロールレジスタ0-15,8,8
	volatile unsigned char	NMISR;		//00087580,ノンマスカブル割り込みステータスレジスタ,8,8
	volatile unsigned char	NMIER;		//00087581,ノンマスカブル割り込み許可レジスタ,8,8
	volatile unsigned char	NMICLR;		//00087582,ノンマスカブル割り込みクリアレジスタ,8,8
	volatile unsigned char	NMICR;		//00087583,NMI端子割り込みコントロールレジスタ,8,8
};

#define	SYSTEM	((struct str_system *)0x80000)
struct str_system {		//0x0008 0000
	volatile unsigned short	MDMONR;	//00080000,モードモニタレジスタ,16,16
	volatile unsigned short	MDSR;	//00080002,モードステータスレジスタ,16,16
	volatile unsigned short	NOP0;	//00080004
	volatile unsigned short	SYSCR0;	//00080006,システムコントロールレジスタ0,16,16
	volatile unsigned short	SYSCR1;	//00080008,システムコントロールレジスタ1,16,16
	volatile unsigned short	NOP1;	//0008000A
	volatile unsigned short	SBYCR;	//0008000C,スタンバイコントロールレジスタ,16,16
	volatile unsigned short	NOP2;		//0008000E
	volatile unsigned long	MSTPCRA;	//00080010,モジュールストップコントロールレジスタA,32,32
	volatile unsigned long	MSTPCRB;	//00080014,モジュールストップコントロールレジスタB,32,32
	volatile unsigned long	MSTPCRC;	//00080018,モジュールストップコントロールレジスタC,32,32
	volatile unsigned long	NOP3;		//0008001C
	volatile unsigned long	SCKCR;	//00080020,システムクロックコントロールレジスタ,32,32
	volatile unsigned long	NOP4[3];	//00080024
	volatile unsigned char	BCKCR;	//00080030,外部バスクロックコントロールレジスタ,8,8
	volatile unsigned char	NOP5[15];
	volatile unsigned short	OSTDCR;	//00080040,発振停止検出コントロールレジスタ,16,16
};

#define	BSE	((struct str_bse *)0x00081300)
struct str_bse {
	volatile unsigned char	BERCLR;	//00081300,バスエラーステータスクリアレジスタ,8,8,2ICLK
	volatile unsigned char	NOP0[3];
	volatile unsigned char	BEREN;	//00081304,バスエラー監視許可レジスタ,8,8,2ICLK
	volatile unsigned char	NOP1[3];
	volatile unsigned char	BERSR1;	//00081308,バスエラーステータスレジスタ1,8,8,2ICLK
	volatile unsigned char	NOP2;
	volatile unsigned short	BERSR2;	//0008130A,バスエラーステータスレジスタ2,16,16,2ICLK
};

#define	DMAC0	((struct str_dmac *)0x00082000)
#define	DMAC1	((struct str_dmac *)0x00082040)
#define	DMAC2	((struct str_dmac *)0x00082080)
struct str_dmac {
	volatile unsigned long	DMSAR;	//00082000,DMA転送元アドレスレジスタ,32,32
	volatile unsigned long	DMDAR;	//00082004,DMA転送先アドレスレジスタ,32,32
	volatile unsigned long	DMCRA;	//00082008,DMA転送カウントレジスタ,32,32
	volatile unsigned short	DMCRB;	//0008200C,DMAブロック転送カウントレジスタ,16,16
	volatile unsigned short	NOP0;		//0008200E
	volatile unsigned short	DMTMD;	//00082010,DMA転送モードレジスタ,16,16
	volatile unsigned char	NOP1;		//00082012
	volatile unsigned char	DMINT;	//00082013,DMA割り込み設定レジスタ,8,8
	volatile unsigned short	DMAMD;	//00082014,DMAアドレスモードレジスタ,16,16
	volatile unsigned short	NOP2;		//00082016
	volatile unsigned long	DMOFR;	//00082018,DMAオフセットレジスタ,32,32
	volatile unsigned char	DMCNT;	//0008201C,DMA転送許可レジスタ,8,8
	volatile unsigned char	DMREQ;	//0008201D,DMAソフトウェア起動レジスタ,8,8
	volatile unsigned char	DMSTS;	//0008201E,DMAステータスレジスタ,8,8
	volatile unsigned char	DMCSL;	//0008201F,DMA起動要因フラグ制御レジスタ,8,8
};

#define	DCT	((struct str_dct *)0x00082400)
struct str_dct {
	volatile unsigned char	DTCCR;	//00082400,DTCコントロールレジスタ,8,8
	volatile unsigned char	NOP0[3];	//00082401
	volatile unsigned long	DTCVBR;	//00082404,DTCベクタベースレジスタ,32,32
	volatile unsigned char	DTCADMOD;	//00082408,DTCアドレスモードレジスタ,8,8
	volatile unsigned char	NOP1[3];	//00082409
	volatile unsigned char	DTCST;	//0008240C,DTCモジュール起動レジスタ,8,8
	volatile unsigned char	NOP2;		//0008240D
	volatile unsigned short	DTCSTS;	//0008240E,DTCステータスレジスタ,16,16
};

#define	EXDMAC0	((struct str_edmac *)0x00082800)
#define	EXDMAC1	((struct str_edmac *)0x00082840)
struct str_edmac {
	volatile unsigned long	EDMSAR;	//00082800,EXDMA転送元アドレスレジスタ,32,32
	volatile unsigned long	EDMDAR;	//00082804,EXDMA転送先アドレスレジスタ,32,32
	volatile unsigned long	EDMCRA;	//00082808,EXDMA転送カウントレジスタ,32,32
	volatile unsigned short	EDMCRB;	//0008280C,EXDMAブロック転送カウントレジスタ,16,16
	volatile unsigned short	NOP1;	//0008280E,
	volatile unsigned short	EDMTMD;	//00082810,EXDMA転送モードレジスタ,16,16
	volatile unsigned char	EDMOMD;	//00082812,EXDMA出力設定レジスタ,8,8
	volatile unsigned char	EDMINT;	//00082813,EXDMA割り込み設定レジスタ,8,8
	volatile unsigned long	EDMAMD;	//00082814,EXDMAアドレスモードレジスタ,32,32
	volatile unsigned long	EDMOFR;	//00082818,EXDMAオフセットレジスタ,32,32
	volatile unsigned char	EDMCNT;	//0008281C,EXDMA転送許可EDMCNT,8,8
	volatile unsigned char	EDMREQ;	//0008281D,EXDMAソフトウェア起動レジスタ,8,8
	volatile unsigned char	EDMSTS;	//0008281E,EXDMAステータスレジスタ,8,8
	volatile unsigned char	NOP2;	//0008281F,
	volatile unsigned char	EDMRMD;	//00082820,EXDMA外部要求センスモードレジスタ,8,8
	volatile unsigned char	EDMERF;	//00082821,EXDMA外部要求フラグレジスタ,8,8
	volatile unsigned char	EDMPRF;	//00082822,EXDMA周辺要求フラグレジスタ,8,8
};

#define	EXDMACS	((struct str_exdmacs *)0x00082A00)
struct	str_exdmacs{
	volatile unsigned char	EDMAST;	//00082A00,EXDMAモジュール起動レジスタ,8,8
};

#define	EXDMAC	((struct str_edmac *)0x00082BE0)
struct	str_exdmac{
	volatile unsigned long	CLSBR0;	//00082BE0,クラスタバッファレジスタ0,32,32
	volatile unsigned long	CLSBR1;	//00082BE4,クラスタバッファレジスタ1,32,32
	volatile unsigned long	CLSBR2;	//00082BE8,クラスタバッファレジスタ2,32,32
	volatile unsigned long	CLSBR3;	//00082BEC,クラスタバッファレジスタ3,32,32
	volatile unsigned long	CLSBR4;	//00082BF0,クラスタバッファレジスタ4,32,32
	volatile unsigned long	CLSBR5;	//00082BF4,クラスタバッファレジスタ5,32,32
	volatile unsigned long	CLSBR6;	//00082BF8,クラスタバッファレジスタ6,32,32
};

#define	BSCM0	((struct str_bscm *)0x00083000)	
#define	BSCM1	((struct str_bscm *)0x00083010)	
#define	BSCM2	((struct str_bscm *)0x00083020)	
#define	BSCM3	((struct str_bscm *)0x00083030)	
#define	BSCM4	((struct str_bscm *)0x00083040)	
#define	BSCM5	((struct str_bscm *)0x00083050)	
#define	BSCM6	((struct str_bscm *)0x00083060)	
#define	BSCM7	((struct str_bscm *)0x00083070)	
struct str_bscm {
	volatile unsigned short	NOP0;	//00083000
	volatile unsigned short	CSxMOD;	//00083002-72,CS0-7モードレジスタ,16,16,1〜2BCLK
	volatile unsigned long	CSxWCR1;//00083004-74,CS0-7ウェイト制御レジスタ1,32,32,1〜2BCLK
	volatile unsigned long	CSxWCR2;//00083008-78,CS0-7ウェイト制御レジスタ2,32,32,1〜2BCLK
};

#define	BSCC0	((struct str_bscc *)0x00083800)	
#define	BSCC1	((struct str_bscc *)0x00083810)	
#define	BSCC2	((struct str_bscc *)0x00083820)	
#define	BSCC3	((struct str_bscc *)0x00083830)	
#define	BSCC4	((struct str_bscc *)0x00083840)	
#define	BSCC5	((struct str_bscc *)0x00083850)	
#define	BSCC6	((struct str_bscc *)0x00083860)	
#define	BSCC7	((struct str_bscc *)0x00083870)	
struct str_bscc {
	volatile unsigned short	NOP0;	//00083800
	volatile unsigned short	CSxCR;	//00083802-72,CS0-7制御レジスタ,16,16,1〜2BCLK
	volatile unsigned short	NOP1[3];
	volatile unsigned short	CSxREC;	//0008380A-7A,CS0-7リカバリサイクル設定レジスタ,16,16,1〜2BCLK
};

#define	BSCS	((struct str_bscs *)0x00083C00)	
struct str_bscs {
	volatile unsigned char	SDCCR;	//00083C00,SDC制御レジスタ,8,8
	volatile unsigned char	SDCMOD;	//00083C01,SDCモードレジスタ,8,8
	volatile unsigned char	SDAMOD;	//00083C02,SDRAMアクセスモードレジスタ,8,8
	volatile unsigned char	NOP0[13];
	volatile unsigned char	SDSELF;	//00083C10,SDRAMセルフリフレッシュ制御レジスタ,8,8
	volatile unsigned char	NOP1[3];
	volatile unsigned short	SDRFCR;	//00083C14,SDRAMリフレッシュ制御レジスタ,16,16,
	volatile unsigned char	SDRFEN;	//00083C16,SDRAMオートリフレッシュ制御レジスタ,8,8
	volatile unsigned char	NOP2[9];
	volatile unsigned char	SDICR;	//00083C20,SDRAM初期化シーケンス制御レジスタ,8,8
	volatile unsigned char	NOP3[3];
	volatile unsigned short	SDIR;	//00083C24,SDRAM初期化レジスタ,16,16
	volatile unsigned short	NOP4[13];
	volatile unsigned char	SDADR;	//00083C40,SDRAMアドレスレジスタ,8,8
	volatile unsigned char	NOP5[3];
	volatile unsigned long	SDTR;	//00083C44,SDRAMタイミングレジスタ,32,32
	volatile unsigned short	SDMOD;	//00083C48,SDRAMモードレジスタ,16,16
	volatile unsigned char	SDSR;	//00083C50,SDRAMステータスレジスタ,8,8
};

#define	CMTU01		((struct str_cmtu *)0x88000)
#define	CMTU23		((struct str_cmtu *)0x88010)
struct str_cmtu {
	volatile unsigned short	CMSTR;	//00 1:STR1 0:STR0
	volatile unsigned short	CMCRA;	//02	6:CMIE	1-0:CKS
	volatile unsigned short	CMCNTA;	//04
	volatile unsigned short	CMCORA;	//06
	volatile unsigned short	CMCRB;	//08	6:CMIE	1-0:CKS
	volatile unsigned short	CMCNTB;	//0A
	volatile unsigned short	CMCORB;	//0C
};

#define	WDTR		((struct str_wdtr     *)0x00088028)
#define	WDTW		((struct str_wdtw     *)0x00088028)
struct str_wdtr {	//0x0008 8028	READ
	volatile unsigned char	TCSR;	//00088028,タイマコントロール／ステータスレジスタ,8,8
	volatile unsigned char	TCNT;	//00088029,タイマカウンタREAD.TCNT,8,8
	volatile unsigned char	NOP0;
	volatile unsigned char	RSTCSR;	//0008802B,リセットコントロール／ステータスレジスタ,8,8
};

#define	WDT		((volatile union str_wdtw     *)0x00088028)
struct str_wdtw {	//0x0008 8028
	volatile unsigned short	WINA;	//00088028,ライトウインドウAレジスタ,16,16
				//	5AXX TCNT		: A5XX TCSR 
	volatile unsigned short	WINB;	//0008802A,ライトウインドウBレジスタ,16,16	
				//	5AXX RSRCSR.RSTE: A500 RSRCSR.WOVF(0)
};

#define	IWDT	((volatile union str_iwdt	*)0x00080030)
struct str_iwdt {
	volatile unsigned char	IWDTRR;	//00088030,IWDTリフレッシュレジスタ,8,8,
	volatile unsigned short	IWDTCR;	//00088032,IWDTコントロールレジスタ,16,16
	volatile unsigned short	IWDTSR;	//00088034,IWDTステータスレジスタ,16,16,
};

#define	AD0	((struct str_ad *)0x00088040)
#define	AD1	((struct str_ad *)0x00088060)
struct str_ad {
	volatile unsigned short	ADDRA;	//00088040,A/DデータレジスタA,16,16
	volatile unsigned short	ADDRB;	//00088042,A/DデータレジスタB,16,16
	volatile unsigned short	ADDRC;	//00088044,A/DデータレジスタC,16,16
	volatile unsigned short	ADDRD;	//00088046,A/DデータレジスタD,16,16
	volatile unsigned short	NOP0[4];
	volatile unsigned char	ADCSR;	//00088050,A/Dコントロール／ステータスレジスタ,8,8
	volatile unsigned char	ADCR;	//00088051,A/Dコントロールレジスタ,8,8
	volatile unsigned char	ADDPR;	//00088052,ADDRnフォーマット選択レジスタ,8,8
	volatile unsigned char	ADSSTR;	//00088053,A/Dサンプリングステートレジスタ,8,8
	volatile unsigned char	NOP1[11];
	volatile unsigned char	ADDIAGR;	//0008805F,A/D自己診断レジスタ,8,8
};

#define	DA	((struct str_da *) 0x000880C0)
struct str_da {
	volatile unsigned short	DADR0;	//000880C0,D/Aデータレジスタ0,16,16
	volatile unsigned short	DADR1;	//000880C2,D/Aデータレジスタ1,16,16
	volatile unsigned char	DACR;	//000880C4,D/Aコントロールレジスタ,8,8
	volatile unsigned char	DADPR;	//000880C5,DADRmフォーマット選択レジスタ,8,8
};

#define	PPG0	((struct str_ppg0 *)0x000881E0)
#define	PPG1 	((struct str_ppg1 *)0x000881F0)
struct str_ppg0	{
	volatile unsigned char	PTRSLR;	//O000881E0-F0,PPGトリガセレクトレジスタ,8,8 Only PPG1
	volatile unsigned char	TOP[5];
	volatile unsigned char	PCR;	//0x00881E6-F6,PPG出力コントロールレジスタ,8,8
	volatile unsigned char	PMR;	//0x00881E7-F7,PPG出力モードレジスタ,8,8
	volatile unsigned char	NDERH;	//0x00881E8-F8,ネクストデータイネーブルレジスタH,8,8
	volatile unsigned char	NDERL;	//0x00881E9-F9,ネクストデータイネーブルレジスタL,8,8
	volatile unsigned char	PODRH;	//0x00881EA-FA,アウトプットデータレジスタH,8,8
	volatile unsigned char	PODRL;	//0x00881EB-FB,アウトプットデータレジスタL,8,8
	volatile unsigned char	NDRH;	//0x00881EC-FC,ネクストデータレジスタH,8,8
	volatile unsigned char	NDRL;	//0x00881ED-FD,ネクストデータレジスタL,8,8
	volatile unsigned char	NDRH2;	//0x00881EE-FE,ネクストデータレジスタH2,8,8
	volatile unsigned char	NDRL2;	//0x00881EF-FF,ネクストデータレジスタL2,8,8
};

#define	SCI0 	((struct str_sci *)0x00088240)
#define	SCI1 	((struct str_sci *)0x00088248)
#define	SCI2 	((struct str_sci *)0x00088250)
#define	SCI3 	((struct str_sci *)0x00088258)
#define	SCI4 	((struct str_sci *)0x00088260)
#define	SCI5 	((struct str_sci *)0x00088268)
#define	SCI6 	((struct str_sci *)0x00088270)
struct str_sci	{
	volatile unsigned char	SMR;	//00088240,シリアルモードレジスタ,8,8
	volatile unsigned char	BRR;	//00088241,ビットレートレジスタ,8,8
	volatile unsigned char	SCR;	//00088242,シリアルコントロールレジスタ,8,8
	volatile unsigned char	TDR;	//00088243,トランスミットデータレジスタ,8,8
	volatile unsigned char	SSR;	//00088244,シリアルステータスレジスタ,8,8
	volatile unsigned char	RDR;	//00088245,レシーブデータレジスタ,8,8
	volatile unsigned char	SCMR;	//00088246,スマートカードモードレジスタ,8,8
	volatile unsigned char	SEMR;	//00088247,シリアル拡張モードレジスタ,8,8
};

#define	MTU34A	((struct str_mtua *)0x00088600)
struct str_mtua {
	volatile unsigned char	TCR3;	//MTU3 0x00088600,タイマコントロールレジスタ,8,8
	volatile unsigned char	TCR4;	//MTU4 0x00088601,タイマコントロールレジスタ,8,8
	volatile unsigned char	TMDR3;	//MUT3 0x00088602,タイマモードレジスタ,8,8
	volatile unsigned char	TMDR4;	//MTU4 0x00088603,タイマモードレジスタ,8,8
	volatile unsigned char	TIORH3;	//MUT3 0x00088604,タイマI/OコントロールレジスタH,8,8
	volatile unsigned char	TIORL3;	//MUT3 0x00088605,タイマI/OコントロールレジスタL,8,8
	volatile unsigned char	TIORH4;	//MTU4 0x00088606,タイマI/OコントロールレジスタH,8,8
	volatile unsigned char	TIORL4;	//MTU4 0x00088607,タイマI/OコントロールレジスタL,8,8
	volatile unsigned char	TIER3;	//MUT3 0x00088608,タイマインタラプトイネーブルレジスタ,8,8
	volatile unsigned char	TIER4;	//MTU4 0x00088609,タイマインタラプトイネーブルレジスタ,8,8
	volatile unsigned char	TOER;	//MUTA 0x0008860A,タイマアウトプットマスタイネーブルレジスタ,8,8
	volatile unsigned char	NOP0;
	volatile unsigned char	NOP1;
	volatile unsigned char	TGCR;	//MUTA 0x0008860D,タイマゲートコントロールレジスタ,8,8
	volatile unsigned char	TOCR1;	//MUTA 0x0008860E,タイマアウトプットコントロールレジスタ1,8,8
	volatile unsigned char	TOCR2;	//MUTA 0x0008860F,タイマアウトプットコントロールレジスタ2,8,8
	volatile unsigned short	TCNT3;	//MUT3 0x00088610,タイマカウンタTCNT,16,16
	volatile unsigned short	TCNT4;	//MTU4 0x00088612,タイマカウンタTCNT,16,16
	volatile unsigned short	TCDR;	//MUTA 0x00088614,タイマ周期データレジスタ,16,16
	volatile unsigned short	TDDR;	//MUTA 0x00088616,タイマデッドタイムデータレジスタ,16,16
	volatile unsigned short	TGRA3;	//MUT3 0x00088618,タイマジェネラルレジスタA,16,16
	volatile unsigned short	TGRB3;	//MUT3 0x0008861A,タイマジェネラルレジスタB,16,16
	volatile unsigned short	TGRA4;	//MTU4 0x0008861C,タイマジェネラルレジスタA,16,16
	volatile unsigned short	TGRB4;	//MTU4 0x0008861E,タイマジェネラルレジスタB,16,16
	volatile unsigned short	TCNTS;	//MUTA 0x00088620,タイマサブカウンタTCNTS,16,16
	volatile unsigned short	TCBR;	//MUTA 0x00088622,タイマ周期バッファレジスタ,16,16
	volatile unsigned short	TGRC3;	//MUT3 0x00088624,タイマジェネラルレジスタC,16,16
	volatile unsigned short	TGRD3;	//MUT3 0x00088626,タイマジェネラルレジスタD,16,16
	volatile unsigned short	TGRC4;	//MTU4 0x00088628,タイマジェネラルレジスタC,16,16
	volatile unsigned short	TGRD4;	//MTU4 0x0008862A,タイマジェネラルレジスタD,16,16
	volatile unsigned char	TSR3;	//MUT3 0x0008862C,タイマステータスレジスタ,8,8
	volatile unsigned char	TSR4;	//MTU4 0x0008862D,タイマステータスレジスタ,8,8
	volatile unsigned char	NOP3;	//2E
	volatile unsigned char	NOP4;	//2F
	volatile unsigned char	TITCR;	//MUTA 0x00088630,タイマ割り込み間引き設定レジスタ,8,8
	volatile unsigned char	TITCNT;	//MUTA 0x00088631,タイマ割り込み間引き回数カウンタTITCNT,8,8
	volatile unsigned char	TBTER;	//MUTA 0x00088632,タイマバッファ転送設定レジスタ,8,8
	volatile unsigned char	NOP6;	//33
	volatile unsigned char	TDER;	//MUTA 0x00088634,タイマデッドタイムイネーブルレジスタ,8,8
	volatile unsigned char	NOP5;	//35
	volatile unsigned char	TOLBR;	//MUTA 0x00088636,タイマアウトプットレベルバッファレジスタ,8,8
	volatile unsigned char	NOP7;	//37
	volatile unsigned char	TBTM;	//MUT3 0x00088638,タイマバッファ動作転送モードレジスタ,8,8
	volatile unsigned char	TBTM4;	//MTU4 0x00088639,タイマバッファ動作転送モードレジスタ,8,8
	volatile unsigned char	NOP8[6];
	volatile unsigned short	TADCR;	//MTU4 0x00088640,タイマA/D変換開始要求コントロールレジスタ,16,16
	volatile unsigned short	NOP9;	//42
	volatile unsigned short	TADCORA4;	//MTU4 0x00088644,タイマA/D変換開始要求周期設定レジスタA,16,16
	volatile unsigned short	TADCORB4;	//MTU4 0x00088646,タイマA/D変換開始要求周期設定レジスタB,16,16
	volatile unsigned short	TADCOBRA4;	//MTU4 0x00088648,タイマA/D変換開始要求周期設定バッファレジスタA,16,16
	volatile unsigned short	TADCOBRB4;	//MTU4 0x0008864A,タイマA/D変換開始要求周期設定バッファレジスタB,16,16
	volatile unsigned long	NOP10[5];
	volatile unsigned char	TWCR;	//MUTA 0x00088660,タイマ波形コントロールレジスタ,8,8
	volatile unsigned char	NOP12[31];
	volatile unsigned char	TSTR;	//MUTA 0x00088680,タイマスタートレジスタ,8,8
	volatile unsigned char	TSYR;	//MUTA 0x00088681,タイマシンクロレジスタ,8,8
	volatile unsigned char	NOP13;	//82
	volatile unsigned char	NOP14;	//83
	volatile unsigned char	TRWER;	//MUTA 0x00088684,タイマリードライトイネーブルレジスタ,8,8
};

#define	MTU0 	((struct str_mtub0 *)0x00088700)
struct str_mtub0 {
	volatile unsigned char	TCR;	//MTU0 0x00088700,タイマコントロールレジスタ,8,8
	volatile unsigned char	TMDR;	//MTU0 0x00088701,タイマモードレジスタ,8,8
	volatile unsigned char	TIORH;	//MTU0 0x00088702,タイマI/OコントロールレジスタH,8,8
	volatile unsigned char	TIORL;	//MTU0 0x00088703,タイマI/OコントロールレジスタL,8,8
	volatile unsigned char	TIER;	//MTU0 0x00088704,タイマインタラプトイネーブルレジスタ,8,8
	volatile unsigned char	TSR;	//MTU0 0x00088705,タイマステータスレジスタ,8,8
	volatile unsigned short	TCNT;	//MTU0 0x00088706,タイマカウンタTCNT,16,16
	volatile unsigned short	TGRA;	//MTU0 0x00088708,タイマジェネラルレジスタA,16,16
	volatile unsigned short	TGRB;	//MTU0 0x0008870A,タイマジェネラルレジスタB,16,16
	volatile unsigned short	TGRC;	//MTU0 0x0008870C,タイマジェネラルレジスタC,16,16
	volatile unsigned short	TGRD;	//MTU0 0x0008870E,タイマジェネラルレジスタD,16,16
	volatile unsigned short	TGRE;	//MTU0 0x00088720,タイマジェネラルレジスタE,16,16
	volatile unsigned short	TGRF;	//MTU0 0x00088722,タイマジェネラルレジスタF,16,16
	volatile unsigned char	TIER02;	//MTU0 0x00088724,タイマインタラプトイネーブルレジスタ2,8,8
	volatile unsigned char	NOP;	//25
	volatile unsigned char	TBTM;	//MTU0 0x00088726,タイマバッファ動作転送モードレジスタ,8,8
};

#define	MTU1 	((struct str_mtub *)0x00088780)
#define	MTU2 	((struct str_mtub *)0x00088800)
struct str_mtub {
	volatile unsigned char	TCR;	//MTU1 0x00088780,タイマコントロールレジスタ,8,8
	volatile unsigned char	TMDR;	//MTU1 0x00088781,タイマモードレジスタ,8,8
	volatile unsigned char	TIOR;	//MTU1 0x00088782,タイマI/Oコントロールレジスタ,8,8
	volatile unsigned char	NOP;	//83
	volatile unsigned char	TIER;	//MTU1 0x00088784,タイマインタラプトイネーブルレジスタ,8,8
	volatile unsigned char	TSR;	//MTU1 0x00088785,タイマステータスレジスタ,8,8
	volatile unsigned short	TCNT;	//MTU1 0x00088786,タイマカウンタTCNT,16,16
	volatile unsigned short	TGRA;	//MTU1 0x00088788,タイマジェネラルレジスタA,16,16
	volatile unsigned short	TGRB;	//MTU1 0x0008878A,タイマジェネラルレジスタB,16,16
	volatile unsigned long	NOP1;
	volatile unsigned char	TICCR;	//MTU1 0x00088790,タイマインプットキャプチャコントロールレジスタ,8,8
};

#define	MTU5 	((struct str_mtub5 *)0x00088880)
struct str_mtub5 {
	volatile unsigned short	TCNTU;	//MTU5 0x00088880,タイマカウンタU,16,16
	volatile unsigned short	TGRU;	//MTU5 0x00088882,タイマジェネラルレジスタU,16,16
	volatile unsigned char	TCRU;	//MTU5 0x00088884,タイマコントロールレジスタU,8,8
	volatile unsigned char	NOP0;	//85
	volatile unsigned char	TIORU;	//MTU5 0x00088886,タイマI/OコントロールレジスタU,8,8
	volatile unsigned char	NOP1[9];
	volatile unsigned short	TCNTV;	//MTU5 0x00088890,タイマカウンタV,16,16
	volatile unsigned short	TGRV;	//MTU5 0x00088892,タイマジェネラルレジスタV,16,16
	volatile unsigned char	TCRV;	//MTU5 0x00088894,タイマコントロールレジスタV,8,8
	volatile unsigned char	NOP2;	//95
	volatile unsigned char	TIORV;	//MTU5 0x00088896,タイマI/OコントロールレジスタV,8,8
	volatile unsigned char	NOP[9];
	volatile unsigned short	TCNTW;	//MTU5 0x000888A0,タイマカウンタW,16,16
	volatile unsigned short	TGRW;	//MTU5 0x000888A2,タイマジェネラルレジスタW,16,16
	volatile unsigned char	TCRW;	//MTU5 0x000888A4,タイマコントロールレジスタW,8,8
	volatile unsigned char	NOP4;	//A5
	volatile unsigned char	TIORW;	//MTU5 0x000888A6,タイマI/OコントロールレジスタW,8,8
	volatile unsigned char	NOP5[11];	//A7-B1
	volatile unsigned char	TIER5;	//MTU5 0x000888B2,タイマインタラプトイネーブルレジスタ,8,8
	volatile unsigned char	NOP6;	//B3
	volatile unsigned char	TSTR;	//MTU5 0x000888B4,タイマスタートレジスタ,8,8
	volatile unsigned char	NOP7;	//B5
	volatile unsigned char	TCNTCMPCLR;	//MTU5 0x000888B6,タイマコンペアマッチクリアレジスタ,8,8
};

#define	S12AD	((struct str_s12ad *) 0x00089000)
struct	str_s12ad {
	volatile unsigned char	ADCSR;	//00089000,A/Dコントロールレジスタ,8,8
	volatile unsigned char	NOP0[3];
	volatile unsigned short	ADANS;	//00089004,A/Dチャネル選択レジスタ,16,16
	volatile unsigned short	NOP1;
	volatile unsigned short	ADADS;	//00089008,A/D変換値加算モード選択レジスタ,16,16
	volatile unsigned short	NOP2;
	volatile unsigned char	ADADC;	//0008900C,A/D変換値加算回数選択レジスタ,8,8
	volatile unsigned char	NOP3;
	volatile unsigned short	ADCER;	//0008900E,A/Dコントロール拡張レジスタ,16,16
	volatile unsigned char	ADSTRGR;	//00089010,A/D開始トリガ選択レジスタ,8,8
	volatile unsigned char	NOP4[15];
	volatile unsigned short	ADDR0;	//00089020,A/Dデータレジスタ0,16,16
	volatile unsigned short	ADDR1;	//00089022,A/Dデータレジスタ1,16,16
	volatile unsigned short	ADDR2;	//00089024,A/Dデータレジスタ2,16,16
	volatile unsigned short	ADDR3;	//00089026,A/Dデータレジスタ3,16,16
	volatile unsigned short	ADDR4;	//00089028,A/Dデータレジスタ4,16,16
	volatile unsigned short	ADDR5;	//0008902A,A/Dデータレジスタ5,16,16
	volatile unsigned short	ADDR6;	//0008902C,A/Dデータレジスタ6,16,16
	volatile unsigned short	ADDR7;	//0008902E,A/Dデータレジスタ7,16,16
};

#define	PORT_DDR	((struct str_port *)0x0008C000)
#define	PORT_DR		((struct str_port *)0x0008C020)
#define	PORT_PORT	((struct str_port *)0x0008C040)
#define	PORT_ICR	((struct str_port *)0x0008C060)
#define	PORT_OCR	((struct str_port *)0x0008C080)
#define	PORT_PCR	((struct str_port *)0x0008C0C0)
struct str_port {	//0x0008 C0000
	volatile unsigned char	PORT0;	//0008C000,データディレクションレジスタ,8,8
	volatile unsigned char	PORT1;	//0008C001,データディレクションレジスタ,8,8
	volatile unsigned char	PORT2;	//0008C002,データディレクションレジスタ,8,8
	volatile unsigned char	PORT3;	//0008C003,データディレクションレジスタ,8,8
	volatile unsigned char	PORT4;	//0008C004,データディレクションレジスタ,8,8
	volatile unsigned char	PORT5;	//0008C005,データディレクションレジスタ,8,8
	volatile unsigned char	PORT6;	//0008C006,データディレクションレジスタ,8,8
	volatile unsigned char	PORT7;	//0008C008,データディレクションレジスタ,8,8
	volatile unsigned char	PORT8;	//0008C008,データディレクションレジスタ,8,8
	volatile unsigned char	PORT9;	//0008C009,データディレクションレジスタ,8,8
	volatile unsigned char	PORTA;	//0008C00A,データディレクションレジスタ,8,8
	volatile unsigned char	PORTB;	//0008C00B,データディレクションレジスタ,8,8
	volatile unsigned char	PORTC;	//0008C00C,データディレクションレジスタ,8,8
	volatile unsigned char	PORTD;	//0008C00D,データディレクションレジスタ,8,8
	volatile unsigned char	PORTE;	//0008C00E,,データディレクションレジスタ,8,8
	volatile unsigned char	PORTF; 	//0008C00F,データディレクションレジスタ,8,8
	volatile unsigned char	PORTG;	//0008C010,データディレクションレジスタ,8,8
};

#define	IOPORT	((struct str_ioport *) 0x0008C100)
struct str_ioport {
	volatile unsigned char	PF0CSE;	//0008C100,ポートファンクションレジスタ0,8,8
	volatile unsigned char	PF1CSS;	//0008C101,ポートファンクションレジスタ1,8,8
	volatile unsigned char	PF2CSS;	//0008C102,ポートファンクションレジスタ2,8,8
	volatile unsigned char	PF3BUS;	//0008C103,ポートファンクションレジスタ3,8,8
	volatile unsigned char	PF4BUS;	//0008C104,ポートファンクションレジスタ4,8,8
	volatile unsigned char	PF5BUS;	//0008C105,ポートファンクションレジスタ5,8,8
	volatile unsigned char	PF6BUS;	//0008C106,ポートファンクションレジスタ6,8,8
	volatile unsigned char	PF7DMA;	//0008C107,ポートファンクションレジスタ7,8,8
	volatile unsigned char	PF8IRQ;	//0008C108,ポートファンクションレジスタ8,8,8
	volatile unsigned char	PF9IRQ;	//0008C109,ポートファンクションレジスタ9,8,8
	volatile unsigned char	PFAADC;	//0008C10A,ポートファンクションレジスタA,8,8
	volatile unsigned char	PFBTMR;	//0008C10B,ポートファンクションレジスタB,8,8
	volatile unsigned char	PFCMTU;	//0008C10C,ポートファンクションレジスタC,8,8
	volatile unsigned char	PFDMTU;	//0008C10D,ポートファンクションレジスタD,8,8
	volatile unsigned char	PFENET;	//0008C10E,ポートファンクションレジスタE,8,8
	volatile unsigned char	PFFSCI;	//0008C10F,ポートファンクションレジスタF,8,8
	volatile unsigned char	PFGSPI;	//0008C110,ポートファンクションレジスタG,8,8
	volatile unsigned char	PFHSPI;	//0008C111,ポートファンクションレジスタH,8,8
	volatile unsigned char	PFJCAN;	//0008C113,ポートファンクションレジスタJ,8,8
	volatile unsigned char	PFKUSB;	//0008C114,ポートファンクションレジスタK,8,8
	volatile unsigned char	PFLUSB;	//0008C115,ポートファンクションレジスタL,8,8
	volatile unsigned char	PFMPOE;	//0008C116,ポートファンクションレジスタM,8,8
	volatile unsigned char	PFNPOE;	//0008C117,ポートファンクションレジスタN,8,8
};

#define	RTC	((struct str_rtc *) 0x0008C400)
struct str_rtc {
	volatile unsigned char	R64CNT;	//0008C400,64HzカウンタR64CNT,8,8
	volatile unsigned char	RSECCNT;	//0008C402,秒カウンタRSECCNT,8,8
	volatile unsigned char	RMINCNT;	//0008C404,分カウンタRMINCNT,8,8
	volatile unsigned char	RHRCNT;	//0008C406,時カウンタRHRCNT,8,8
	volatile unsigned char	RWKCNT;	//0008C408,曜日カウンタRWKCNT,8,8
	volatile unsigned char	RDAYCNT;	//0008C40A,日カウンタRDAYCNT,8,8
	volatile unsigned char	RMONCNT;	//0008C40C,月カウンタRMONCNT,8,8
	volatile unsigned short	RYRCNT;	//0008C40E,年カウンタRYRCNT,16,16
	volatile unsigned char	RSECAR;	//0008C410,秒アラームレジスタ,8,8
	volatile unsigned char	RMINAR;	//0008C412,分アラームレジスタ,8,8
	volatile unsigned char	RHRAR;	//0008C414,時アラームレジスタ,8,8
	volatile unsigned char	RWKAR;	//0008C416,曜日アラームレジスタ,8,8
	volatile unsigned char	RDAYAR;	//0008C418,日アラームレジスタ,8,8
	volatile unsigned char	RMONAR;	//0008C41A,月アラームレジスタ,8,8
	volatile unsigned short	RYRAR;	//0008C41C,年アラームレジスタ,16,16
	volatile unsigned char	RYRAREN;	//0008C41E,年アラームイネーブルレジスタ,8,8
	volatile unsigned char	RCR1;	//0008C422,RTCコントロールレジスタ1,8,8
	volatile unsigned char	RCR2;	//0008C424,RTCコントロールレジスタ2,8,8
};
