/************************************************************************/
/* 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 USE_SCI1

struct str_port {
	volatile unsigned short	PADRH;//ポートA・データレジスタH PADRH 16 H'FFFF8380 I/O 8、16、32 φ基準
	volatile unsigned short	PADRL;//ポートA・データレジスタL PADRL 16 H'FFFF8382 8、16 B:2
	volatile unsigned short	PAIORH;//ポートA・IO レジスタH PAIORH 16 H'FFFF8384 PFC 8、16、32 W:2
	volatile unsigned short	PAIORL;//ポートA・IO レジスタL PAIORL 16 H'FFFF8386 8、16 L:4
	volatile unsigned short	PACRH;//ポートA コントロールレジスタH PACRH 16 H'FFFF8388 8、16、32
	volatile unsigned short	DUMP0;//― ― ― H’FFFF838A ―
	volatile unsigned short	PACRL1;//ポートA コントロールレジスタL1 PACRL1 16 H’FFFF838C 8、16、32
	volatile unsigned short	PACRL2;//ポートA コントロールレジスタL2 PACRL2 16 H’FFFF838E 8、16
	volatile unsigned short	PBDR;//ポートB・データレジスタPBDR 16 H’FFFF8390 I/O 8、16、32
	volatile unsigned short	PCDR;//ポートC・データレジスタPCDR 16 H’FFFF8392 8、16
	volatile unsigned short	PBIOR;//ポートB・IO レジスタPBIOR 16 H'FFFF8394 PFC 8、16、32
	volatile unsigned short	PCIOR;//ポートC・IO レジスタPCIOR 16 H'FFFF8396 8、16
	volatile unsigned short	PBCR1;//ポートB コントロールレジスタ1 PBCR1 16 H'FFFF8398 PFC 8、16、32 φ基準
	volatile unsigned short	PBCR2;//ポートB コントロールレジスタ2 PBCR2 16 H'FFFF839A 8、16 B:2
	volatile unsigned short	PCCR;//ポートC コントロールレジスタ2 PCCR 16 H'FFFF839C 8、16、32 W:2
	volatile unsigned short	DUMP1;//― ― ― H'FFFF839E〜H'FFFF839F― ― L:4
	volatile unsigned short	PDDRH;//ポートD・データレジスタH PDDRH 16 H'FFFF83A0 I/O 8、16、32
	volatile unsigned short	PDDRL;//ポートD・データレジスタL PDDRL 16 H'FFFF83A2 8、16
	volatile unsigned short	PDIORH;//ポートD・IO レジスタH PDIORH 16 H'FFFF83A4 PFC 8、16、32
	volatile unsigned short	PDIORL;//ポートD・IO レジスタL PDIORL 16 H'FFFF83A6 8、16
	volatile unsigned short	PDCRH1;//ポートD コントロールレジスタH1 PDCRH1 16 H'FFFF83A8 8、16、32
	volatile unsigned short	PDCRH2;//ポートD コントロールレジスタH2 PDCRH2 16 H'FFFF83AA 8、16
	volatile unsigned short	PDCRL1;//ポートD コントロールレジスタL1 PDCRL1 16 H'FFFF83AC 8、16、32
	volatile unsigned short	PDCRL2;//ポートD コントロールレジスタL2 PDCRL2 16 H'FFFF83AE 8、16
	volatile unsigned short	PEDRL;//ポートE・データレジスタL PEDRL 16 H'FFFF83B0 I/O 8、16、32
	volatile unsigned char	DUMP2;//― ― ― H'FFFF83B2 ― ―
	volatile unsigned char	PFDR;//ポートF・データレジスタPFDR 8 H'FFFF83B3 I/O 8
	volatile unsigned short	PEIORL;//ポートE・IO レジスタL PEIORL 16 H'FFFF83B4 PFC 8、16、32
	volatile unsigned short	DUMP3;//― ― ― H'FFFF83B6〜H'FFFF83B7― ―
	volatile unsigned short	PECRL1;//ポートE コントロールレジスタL1 PECRL1 16 H'FFFF83B8 PFC 8、16、32
	volatile unsigned short	PECRL2;//ポートE コントロールレジスタL2 PECRL2 16 H'FFFF83BA 8、16
};
#define	PORT	((struct str_port*)0xFFFF8380)

struct str_cmt {// 12MHz CPU 48MHz 周辺24MHz
	volatile unsigned short CMSTR;	//コンペアマッチタイマスタートレジスタ CMSTR 16 H'FFFF83D0 CMT 8、16、32
	volatile unsigned short CMCSR_0;	//コンペアマッチタイマコントロール／ステータスレジスタ_0 CMCSR_0 16 H'FFFF83D2 8、16Pφ基準B:2W:2L:4
	volatile unsigned short CMCNT_0;	//コンペアマッチタイマカウンタ_0 CMCNT_0 16 H'FFFF83D4 8、16、32
	volatile unsigned short CMCOR_0;	//コンペアマッチタイマコンスタントレジスタ_0 CMCOR_0 16 H'FFFF83D6 8、16
	volatile unsigned short CMCSR_1;	//コンペアマッチタイマコントロール／ステータスレジスタ_1 CMCSR_1 16 H'FFFF83D8 8、16、32
	volatile unsigned short CMCNT_1;	//コンペアマッチタイマカウンタ_1 CMCNT_1 16 H'FFFF83DA 8、16
	volatile unsigned short CMCOR_1;	//コンペアマッチタイマコンスタントレジスタ_1 CMCOR_1 16 H'FFFF83DC 8、16
};
#define CMT	((struct str_cmt*)0xFFFF83D0)

struct str_lowp {	
	volatile unsigned char	SBYCR;	//スタンバイコントロールレジスタSBYCR 8 H'FFFF8614 低消費電力状態8 φ基準B:3
	volatile unsigned char	DUMP0[7];	//― ― ― H'FFFF8615〜H'FFFF8617― ― ―
		//システムコントロールレジスタSYSCR 8 H'FFFF8618 低消費電力状態8
		//― ― ― H'FFFF8619〜H'FFFF861B―
	volatile unsigned short	MSTCR1;	//モジュールスタンバイコントロールレジスタ1 MSTCR1 16 H'FFFF861C 8、16、32
	volatile unsigned short	MSTCR2;	//モジュールスタンバイコントロールレジスタ2 MSTCR2 16 H'FFFF861E 8、16Pφ基準B:3W:3L:6
	volatile unsigned short	BCR1;	//バスコントロールレジスタ1 BCR1 16 H'FFFF8620 BSC 8、16、32
	volatile unsigned short	BCR2;	//バスコントロールレジスタ2 BCR2 16 H'FFFF8622 8、16
	volatile unsigned short	WCR1;	//ウェイトコントロールレジスタ1 WCR1 16 H'FFFF8624 8、16、32
	volatile unsigned short	WCR2;	//ウェイトコントロールレジスタ2 WCR2 16 H'FFFF8626 8、16φ基準:3W:3L:6
};
#define	LOWP	((struct str_lowp*) 0xFFFF8614)

struct	sci {
	volatile unsigned char	SMR;//シリアルモードレジスタ_0 SMR_0 8 H'FFFF81A0 SCI 8、16 Pφ基準
	volatile unsigned char	BRR;//ビットレートレジスタ_0 BRR_0 8 H'FFFF81A1 （チャネル0） 8 B:2
	volatile unsigned char	SCR;//シリアルコントロールレジスタ_0 SCR_0 8 H'FFFF81A2 8、16 W:4
	volatile unsigned char	TDR;	//トランスミットデータレジスタ_0 TDR_0 8 H'FFFF81A3 8
	volatile unsigned char	SSR;	//シリアルステータスレジスタ_0 SSR_0 8 H'FFFF81A4 8、16
	volatile unsigned char	RDR;	//レシーブデータレジスタ_0 RDR_0 8 H'FFFF81A5 8
	volatile unsigned char	SDCR;	//シリアルディレクションコントロールレジスタ_0 SDCR_0 8 H'FFFF81A6 8
};

#define	SCI0	((struct str_sci*)0xFFFF81A0)
#define	SCI1	((struct str_sci*)0xFFFF81B0)
#define	SCI2	((struct str_sci*)0xFFFF81C0)
#define	SCI3	((struct str_sci*)0xFFFF81D0)


struct str_ireq {
	volatile unsigned short	IPRA;//インタラプトプライオリティレジスタ A IPRA 16 H'FFFF8348 8、16、32 W:2
	volatile unsigned short	IPRB;//インタラプトプライオリティレジスタ B IPRB 16 H'FFFF834A 8、16 L:4
	volatile unsigned short	IPRC;//インタラプトプライオリティレジスタ C IPRC 16 H'FFFF834C 8、16、32
	volatile unsigned short	IPRD;//インタラプトプライオリティレジスタ D IPRD 16 H'FFFF834E 8、16
	volatile unsigned short	IPRE;//インタラプトプライオリティレジスタ E IPRE 16 H'FFFF8350 8、16、32
	volatile unsigned short	IPRF;//インタラプトプライオリティレジスタ F IPRF 16 H'FFFF8352 8、16
	volatile unsigned short	IPRG;//インタラプトプライオリティレジスタ G IPRG 16 H'FFFF8354 8、16、32
	volatile unsigned short	IPRH;//インタラプトプライオリティレジスタ H IPRH 16 H'FFFF8356 8、16
	volatile unsigned short	ICR1;//割り込みコントロールレジスタ1 ICR1 16 H'FFFF8358 8、16、32
	volatile unsigned short	ISR;//IRQ ステータスレジスタISR 16 H'FFFF835A 8、16
	volatile unsigned short	IPRI;//インタラプトプライオリティレジスタ I IPRI 16 H'FFFF835C 8、16、32
	volatile unsigned short	IPRJ;//インタラプトプライオリティレジスタ J IPRJ 16 H'FFFF835E 8、16
	volatile unsigned short	DUMP[3];//― ― ― H'FFFF8360〜H'FFFF8365―
	volatile unsigned short	ICR2;//割り込みコントロールレジスタ 2 ICR2 16 H'FFFF8366 8、16

};
#define	IREQ	((struct str_ireq*)0xFFFF8348)

struct str_module {
		//タイマコントロール／ステータスレジスタTCSR 8 H'FFFF8610 WDT 8*2/16*1 φ基準
		//タイマカウンタTCNT*1 8 H'FFFF8610 *1：WRITE 時16 B:3
		//タイマカウンタTCNT*2 8 H'FFFF8611 *2：READ 時8 W:3
		//リセットコントロール／ステータスレジスタRSTCSR*1 8 H'FFFF8612 16 φ基準
		//リセットコントロール／ステータスレジスタRSTCSR*2 8 H'FFFF8613 8 B:3 W:3
		//スタンバイコントロールレジスタSBYCR 8 H'FFFF8614 低消費電力状態8 φ基準 B:3
		//― ― ― H'FFFF8615〜H'FFFF8617― ― ―
		//システムコントロールレジスタSYSCR 8 H'FFFF8618 低消費電力状態8
		//― ― ― H'FFFF8619〜H'FFFF861B―
	volatile unsigned short MSTCR1;	//モジュールスタンバイコントロールレジスタ1 MSTCR1 16 H'FFFF861C 8、16、32
	volatile unsigned short MSTCR2;	//モジュールスタンバイコントロールレジスタ2 MSTCR2 16 H'FFFF861E 8、16 φ基準 B:3 W:3 L:6
		//バスコントロールレジスタ1 BCR1 16 H'FFFF8620 BSC 8、16、32
		//バスコントロールレジスタ2 BCR2 16 H'FFFF8622 8、16
		//ウェイトコントロールレジスタ1 WCR1 16 H'FFFF8624 8、16、32
		//ウェイトコントロールレジスタ2 WCR2 16 H'FFFF8626 8、16 φ基準 B:3 W:3 L:6
		//RAM エミュレーションレジスタRAMER 16 H'FFFF8628 FLASH
};
#define MODULE	((struct str_module *) 0xFFFF861C)


struct str_add {	// PORTF
	volatile unsigned short ADDR0;	//A/D データレジスタ0 ADDR0 16 H'FFFF8420 A/D 8、16
	volatile unsigned short ADDR1;	//A/D データレジスタ1 ADDR1 16 H'FFFF8422 （チャネル0） 8、16
	volatile unsigned short ADDR2;	//A/D データレジスタ2 ADDR2 16 H'FFFF8424 8、16
	volatile unsigned short ADDR3;	//A/D データレジスタ3 ADDR3 16 H'FFFF8426 8、16
	volatile unsigned short ADDR4;	//A/D データレジスタ4 ADDR4 16 H'FFFF8428 A/D 8、16
	volatile unsigned short ADDR5;	//A/D データレジスタ5 ADDR5 16 H'FFFF842A （チャネル1） 8、16
	volatile unsigned short ADDR6;	//A/D データレジスタ6 ADDR6 16 H'FFFF842C 8、16
	volatile unsigned short ADDR7;	//A/D データレジスタ7 ADDR7 16 H'FFFF842E 8、16
};			//	unsigned short ;	//― ― ― H'FFFF8430〜H'FFFF847F

struct str_ads {
	volatile unsigned char ADCSR_0;	//A/D コントロール／ステータスレジスタ_0 ADCSR_0 8 H'FFFF8480 A/D 8、16
	volatile unsigned char ADCSR_1;	//A/D コントロール／ステータスレジスタ_1 ADCSR_1 8 H'FFFF8481 8
};

struct str_adc {
//	unsigned short ;	//― ― ― H'FFFF8482〜	//H'FFFF8487
	volatile unsigned char ADCR_0;	//A/D コントロールレジスタ_0 ADCR_0 8 H'FFFF8488 A/D 8、16
	volatile unsigned char ADCR_1;	//A/D コントロールレジスタ_1 ADCR_1 8 H'FFFF8489 8
};

#define	ADD	((struct str_add*)0xFFFF8420)
#define	ADS	((struct str_ads*)0xFFFF8480)
#define	ADC	((struct str_adc*)0xFFFF8488)
