#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[9]; // 送信用文字配列 int swapX, swapY, swapZ; // AN0の値, AN1の値, AN2の値 SCI3_INIT(br38400, txb, sizeof(txb), rxb, sizeof(rxb)); // SCI初期化 int i, count; while(1) { if(count>30000) { for(i=0; i<=2; i++) { switch(i) { case 0:AD.ADCSR.BYTE = 0x08; break; /* 0000 1000 AN0 */ case 1:AD.ADCSR.BYTE = 0x09; break; /* 0000 1001 AN1 */ case 2:AD.ADCSR.BYTE = 0x0A; break; /* 0000 1010 AN2 */ } AD.ADCSR.BIT.ADST = 1; // 変換スタート(1回だけ) while(!AD.ADCSR.BIT.ADF); // A/D変換が終わるまでループで待つ switch(i) { case 0:swapX = (int)(AD.ADDRA >> 10); break; // ビットシフトで精度を落とす(0〜63) case 1:swapY = (int)(AD.ADDRB >> 10); break; case 2:swapZ = (int)(AD.ADDRC >> 10); break; } } rs_putc('\r'); // 改行送信(UNIXにはいらない) rs_putc('\n'); // 改行送信(MAC OSにはいらない) buf[0] = ((swapX / 10) % 10) + 0x30; // 10の位を文字コードに変換 buf[1] = (swapX % 10) + 0x30; // 1の位を文字コードに変換 buf[2] = '-'; buf[3] = ((swapY / 10) % 10) + 0x30; buf[4] = (swapY % 10) + 0x30; buf[5] = '-'; buf[6] = ((swapZ / 10) % 10) + 0x30; buf[7] = (swapZ % 10) + 0x30; buf[8] = '\0'; // null文字(0x0dと同等?) rs_puts(buf); // 文字列送信 count=0; } count++; } }