お世話になっています。あっちゃんです。 まえのモニターデバッガソフトの件は解決いたしました。 今度は、Htermを使用してセンサの値を表示させるプログラムを作りました。 前の文字と数字を出力するのものを参考につくりましたが、なぜか、right=のところ しか表示されません。後、数字がいつも違うのです。センサをCPUに取り付けていな いので常に0じゃないとおかしいと思うのですが・・・。センサは3つと考えていて 左、中、右としています。 マイコン:AKI-H8 3067F モニター:AKI-H8 3067Fに付属していたものモニターデバッガソフト(モードは5) コンパイラ:AKI-H8マイコン専用Cコンパイラ(秋月のもの) 通信ソフト:Hterm OS:Windows 2000 通信:RS232C Cソースプログラムを下記に示します。 /* センサプログラム */ /* モニターにセンサの値を表示する */ /* AN0〜AN2までスキャンモードでA/D変換する */ /* sensor.c */ #include <stdio.h> #include <string.h> #include <stdarg.h> #include <stddef.h> #include <3067f.h> /* シリアルコミュニケーションのプログラム */ typedef enum { br4800=129,br9600=64,br19200=32,br38400=15}BAUDRATE; /* 初期化 */ /* ボーレートを設定。9600から19200まで定義 動作クロック 20MHz */ void H8SCI_INIT(char b){ int i; SCI1.SCR.BYTE=SCI1.SMR.BYTE=0; SCI1.BRR=b; /* ボーレート */ for(i=0;i<1000;i++); /* 待つ */ SCI1.SCR.BYTE=0x30; /* 送受信許可 */ SCI1.SSR.BYTE; /* ダミーリード */ SCI1.SSR.BYTE=0x80; /* エラーフラグクリア */ } /* 1文字送信 */ void H8SCI_OUT_DATA(char c){ while(SCI1.SSR.BIT.TDRE==0); /* TDREが1になるのを待つ */ SCI1.TDR=c; /* データを入れる */ SCI1.SSR.BIT.TDRE=0;/* フラグをクリアにする */ } /* 文字列送信 */ void H8SCI_OUT_STRING(char *st){ while(*st) H8SCI_OUT_DATA(*st++);/* 文字列がなくなるまで順次出力 */ } /* mainスタート */ void main(void){ int i,AN0,AN1,AN2; char buf[150]; /* 文字列バッファを用意 */ AD.CSR.BYTE = 0x32; /* AN0〜AN2(ライン用センサ)までをスキャン モードに設定 */ while(AD.CSR.BIT.ADF == 0){} /* AN0〜AN2まですべてのデータがA/D変 換されて揃うまで待つ */ AN0= AD.DRA >>6; AN1 = AD.DRB >> 6; AN2 = AD.DRC >> 6 ; H8SCI_INIT(br19200); /* 19200に通信速度を設定 */ sprintf(buf,"sensor \n\r");/* bufに"センサの値を設定" */ H8SCI_OUT_STRING(buf); /* 通信ポードに通信 */ for(i=0;i<1000;i++) /* 0〜19までの数字を送信 */ { sprintf(buf, "left=%d\n\r",AN0); sprintf(buf, "center=%d\n\r",AN1); sprintf(buf, "right=%d\n\r",AN2); H8SCI_OUT_STRING(buf); /* 文字列を通信ポートに出力する */ } while(1){} } 宜しくお願いいたします。 かなり追い込まれています。 _________________________________________________________________ ハイセンスな商品を気軽に購入 MSN ショッピング http://shopping.msn.co.jp/