#ifndef _H8_SAMPLE_H #define _H8_SAMPLE_H // 一般的なI/Oレジスタのビットフィールド定義 typedef union { unsigned char BYTE; struct { unsigned char B7:1; unsigned char B6:1; unsigned char B5:1; unsigned char B4:1; unsigned char B3:1; unsigned char B2:1; unsigned char B1:1; unsigned char B0:1; } BIT; } _IOREG; // AKI-3069用ポート4ビットフィールド定義 typedef union { unsigned char BYTE; struct { unsigned char LED2:1; unsigned char LED1:1; unsigned char E:1; unsigned char RS:1; unsigned char D:4; } BIT; } _LCDREG; // 8ビットタイマー用 // タイマーコントロールレジスタ typedef union { unsigned char BYTE; struct { unsigned char CMIEB:1; unsigned char CMIEA:1; unsigned char OVIE:1; unsigned char CCLR:2; unsigned char CKS:3; } BIT; } _8TCR; // タイマーコントロール/ステータスレジスタ typedef union { unsigned char BYTE; struct { unsigned char CMFB:1; unsigned char CMFA:1; unsigned char OVF:1; unsigned char ADTE_ICE:1; unsigned char OIS:2; unsigned char OS:2; } BIT; } _8TCSR; // バス幅コントロールレジスタ #define ABWCR (*(volatile _IOREG *)0xFEE020) // 汎用I/Oポートデータディレクションレジスタ #define P1DDR (*(volatile _IOREG *)0xFEE000) #define P2DDR (*(volatile _IOREG *)0xFEE001) #define P3DDR (*(volatile _IOREG *)0xFEE002) #define P4DDR (*(volatile _IOREG *)0xFEE003) #define P5DDR (*(volatile _IOREG *)0xFEE004) #define P6DDR (*(volatile _IOREG *)0xFEE005) #define P7DDR (*(volatile _IOREG *)0xFEE006) #define P8DDR (*(volatile _IOREG *)0xFEE007) #define P9DDR (*(volatile _IOREG *)0xFEE008) #define PADDR (*(volatile _IOREG *)0xFEE009) #define PBDDR (*(volatile _IOREG *)0xFEE00A) // 秋月ベースボード用 #define P4DR (*(volatile _IOREG *)0xFFFFD3) #define LCD (*(volatile _LCDREG *)0xFFFFD3) #define P4PCR (*(volatile _IOREG *)0xFEE03E) #define P5DR (*(volatile _IOREG *)0xFFFFD4) #define P5PCR (*(volatile _IOREG *)0xFEE03F) // 8ビットタイマーレジスタ定義 #define T8TCNT0 (*(volatile unsigned char *)0xFFFF88) #define T8TCNT1 (*(volatile unsigned char *)0xFFFF89) #define T8TCNT (*(volatile unsigned short *)0xFFFF88) #define T8TCORA0 (*(volatile unsigned char *)0xFFFF84) #define T8TCORA1 (*(volatile unsigned char *)0xFFFF85) #define T8TCORA (*(volatile unsigned short *)0xFFFF84) #define T8TCORB0 (*(volatile unsigned char *)0xFFFF86) #define T8TCORB1 (*(volatile unsigned char *)0xFFFF87) #define T8TCORB (*(volatile unsigned short *)0xFFFF86) #define T8TCR0 (*(volatile _8TCR *)0xFFFF80) #define T8TCR1 (*(volatile _8TCR *)0xFFFF81) #define T8TCSR0 (*(volatile _8TCSR *)0xFFFF82) #define T8TCSR1 (*(volatile _8TCSR *)0xFFFF83) // DRAM初期化関連 // リフレッシュタイムコンスタントレジスタ #define RTCOR (*(volatile unsigned char *)0xFEE02A) // リフレッシュタイマーコントロールレジスタ typedef union { unsigned char BYTE; struct { unsigned char CMF:1; unsigned char CMIE:1; unsigned char CKS:3; unsigned char RESERVE:3; } BIT; } _RTMCSR; #define RTMCSR (*(volatile _RTMCSR *)0xFEE028) // DRAMコントロールレジスタA typedef union { unsigned char BYTE; struct { unsigned char DRAS:3; unsigned char RESERVE:1; unsigned char BE:1; unsigned char RDM:1; unsigned char SRFMD:1; unsigned char RFSHE:1; } BIT; } _DRCRA; #define DRCRA (*(volatile _DRCRA *)0xFEE026) // DRAMコントロールレジスタB typedef union { unsigned char BYTE; struct { unsigned char MXC:2; unsigned char CSEL:1; unsigned char RCYCE:1; unsigned char RESERVE:1; unsigned char TPC:1; unsigned char RCW:1; unsigned char RLW:1; } BIT; } _DRCRB; #define DRCRB (*(volatile _DRCRB *)0xFEE027) //バス関連 // ウェイトコントロールレジスタH typedef union { unsigned char BYTE; struct { unsigned char W7:2; unsigned char W6:2; unsigned char W5:2; unsigned char W4:2; } BIT; } _WCRH; #define WCRH (*(volatile _WCRH *)0xFEE022) // ウェイトコントロールレジスタL typedef union { unsigned char BYTE; struct { unsigned char W3:2; unsigned char W2:2; unsigned char W1:2; unsigned char W0:2; } BIT; } _WCRL; #define WCRL (*(volatile _WCRL *)0xFEE023) // アクセスステートコントロールレジスタ typedef union { unsigned char BYTE; struct { unsigned char AST7:1; unsigned char AST6:1; unsigned char AST5:1; unsigned char AST4:1; unsigned char AST3:1; unsigned char AST2:1; unsigned char AST1:1; unsigned char AST0:1; } BIT; } _ASTCR; #define ASTCR (*(volatile _ASTCR *)0xFEE021) // 20us ウェイト関数 extern void wait20us(void); // ミリ秒用ウェイト関数 void wait( unsigned int ms ) { unsigned int i; for( i=ms * 50 ; i > 0 ; i-- ) wait20us(); } // 割り込み許可/禁止/nop命令 #define _sti() asm volatile ("andc.b #0x7f,ccr") #define _cli() asm volatile ("orc.b #0x80,ccr") #define _nop() asm volatile ("nop" ) # #endif