volatile int ad0 ; /* AD変換した値 */ #pragma interrupt void int_adi(void) /* AD変換終了割り込み */ { ad0 = ADDRA; /* AN0から入力 */ PDR1 = ad0 >> 9; /* 上位7ビットだけ出力 */ ADCSR = 0x60; /* AD割込許可,ADスタート */ } int main() { /* データシート 9.1 ポート1 を参照 */ PMR1 = 0x00; /* 兼用のポートをポート1に設定 */ PCR1 = 0xff; /* ポート1を全ビット出力用に使用 */ PDR1 = 0x00; /* ポート1をクリア */ /* データシート 16.3 を参照 */ ADCSR = 0x00; /* 単一モード,134ステート,AN0 */ ADCR = 0x00; /* 外部トリガなし */ ADCSR = 0x60; /* AD割込許可,ADスタート,AN0単一 */ STI(); /* 割り込み全体を許可する */ while(1){ SLEEP(); /* 割り込み発生を待つ */ } return 0 ; }