#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; // 汎用I/Oポートレジスタ定義 #define ABWCR (*(volatile _IOREG *)0xFEE020) #define P4DDR (*(volatile _IOREG *)0xFEE003) #define P4DR (*(volatile _IOREG *)0xFFFFD3) #define LCD (*(volatile _LCDREG *)0xFFFFD3) #define P4PCR (*(volatile _IOREG *)0xFEE03E) #define P5DDR (*(volatile _IOREG *)0xFEE004) #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) // 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