前へ | 目次 | 次へ |
A/D変換の値を送信 | ||||||||||||||||||||||||||||||||||||||||||||||||
ここでは、A/D変換したデータを送信するプログラムを考えてみましょう。 値をどのように送信するかによって、受け取るパソコン側のプログラムも、 それに合わせないといけないことに注意しましょう。 センサはA/D変換の回路をつけたす(フォトリフレクタ)で やったようにCN1-9につないであるものとします。 また、A/D変換のプログラムについては、 A/D変換を行う(単一モード)をご覧ください。
| ||||||||||||||||||||||||||||||||||||||||||||||||
プログラム解説 | ||||||||||||||||||||||||||||||||||||||||||||||||
このプログラムでは、10ビットのデータを、 下位8ビットと上位2ビットに分けて送信しています。 アスキーコードを送信しているわけではないので、 ハイパーターミナルなどでは正常に表示できないことにご注意ください。 #include<sci.c> SCI3(シリアルコミュニケーションインタフェース)の初期化関数 InitSCI3を使うために、 ファイルsci.cを取り込みます。 InitSCI3(br31250) SCI3(シリアルコミュニケーションインタフェース)の初期化関数 InitSCI3は、 通信速度を引数として指定します。 ここでは、31250bit/s(調歩同期式モード、 データ長8ビット、 パリティチェックなし、 ストップビットの長さ1)に設定しています。 while(i<100) iはデータを一度送信するたびに1増やして(i++)、 データを送信した回数をカウントしています。 ここでは、100回データを送信することになります。 while (SCI3.SSR.BIT.TDRE == 0){} SCI3.SSR.BIT.TDREは、 送信用のレジスタが利用不可の場合には0、利用可能な場合には1ですから、 利用可能な間は次の命令に行かないように、 空のループを作っています。 SCI3.TDR =((AD.DRB>>6) & 0xff) AD.DRBには、CN1-9に繋いだセンサの値が格納されます。 変換の結果は10ビットで、上位10ビットに格納されます。
したがって、データの下位8ビットを取り出すには、 6ビットシフトして、下位8ビットを取り出せばよいことになります。 下位8ビットを取り出すのに0xffとの論理積を取り、 余分なビットの情報を落としています。
SCI3.TDR =((AD.DRB>>14) & 0xff) 上と同様に、残りの2ビット分のデータを送信するために、 14ビットシフトし、2ビット分を取り出しています。 0xffとの論理積を取っていますが、0x03との論理積でも同じ結果になります。
| ||||||||||||||||||||||||||||||||||||||||||||||||
やってみよう | ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
2003/06/02(Mon) | ||||||||||||||||||||||||||||||||||||||||||||||||
AKI-H8/3664 QFP版のトップページへ | ||||||||||||||||||||||||||||||||||||||||||||||||
トップページへ |
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||