A/D変換機能

簡単なサンプルプログラム

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 ;
}

プログラム


Last modified: Wed May 26 10:59:18 JST 2004