#include <3664.h> // 1文字送信 ===================================== void rs_putc (char c) { while (SCI3.SSR.BIT.TDRE == 0) ; SCI3.TDR = c; } // 文字列送信 ==================================== void rs_puts (char *st) { while (*st) rs_putc (*st++); } // メイン ======================================== void main(void) { char txb[10], rxb[10]; char buf[5]; char bkAD; int swapAD; SCI3_INIT(br38400, txb, sizeof(txb), rxb, sizeof(rxb)); // SCI初期化 AD.ADCSR.BYTE = 0x38; // A/Dレジスタ設定 0011 1000 int count=0; while(1) { if(count>=30000) { while(!AD.ADCSR.BIT.ADF); // A/D変換が終わるまでループで待つ swapAD = (int)(AD.ADDRA >> 6); // ビットシフトで精度を落とす(0〜1023) buf[0] = ((swapAD / 1000) % 10) + 0x30; // 1000の位を文字コードに変換 buf[1] = ((swapAD / 100) % 10) + 0x30; // 100の位を文字コードに変換 buf[2] = ((swapAD / 10) % 10) + 0x30; // 10の位を文字コードに変換 buf[3] = (swapAD % 10) + 0x30; // 1の位を文字コードに変換 buf[4] = '\0'; // null文字(0x0dと同等?) /* 値が変化したときだけ送信 */ if(swapAD!=bkAD) { rs_puts(buf); // 文字列送信 rs_putc('\r'); // 改行送信(UNIXにはいらない) rs_putc('\n'); // 改行送信(MAC OSにはいらない) bkAD = swapAD; // 比較用 } count=0; } count++; } }