- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PICで小数点の演算)
PICで小数点の演算
このQ&Aのポイント
- PIC16F877Aを使ってセンサーデータを処理する際に小数点の演算を行いたいという要望があります。
- 現在、A/D変換後の値をアナログ電圧値に変換し、その後の計算で小数点を扱う必要がありますが、PICには乗除命令がないため、うまく対応できていない状況です。
- 最終的には固定小数点形式で計算を行い、結果を四捨五入したいとのことです。具体的なソースコードの例も提示していただけると助かります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
y0=(21850-12500*v)/100; y1=((21850-12500*v)%100+5)/10; y0は整数部、y1は小数点第1位の値となります。 乗算は、左シフトとANDと加算があればできます。 例えば、0110×0101であれば、 (00110000(←被乗数を3ビット左シフト) AND 0(←乗数のビット3)) +(00011000(←被乗数を2ビット左シフト) AND 1(←乗数のビット2)) +(00001100(←被乗数を1ビット左シフト) AND 0(←乗数のビット1)) +(00000110(←被乗数を0ビット左シフト) AND 1(←乗数のビット0)) となります。 値のビット数は、12500が16ビットなので、vが8ビットであっても16ビット×16ビット(ビット数の拡張が必須)=32ビットが必要になります。 プログラムは、自分の力でコーディングしてください。
お礼
回答ありがとうございます。 アセンブラはほとんど書いたことがなく初めてに近かったので、実際のソースと見比べてどのようになっているのかを一行ずつ理解していこうと考えていたのでついソースを要求するような質問になってしまいました。 もう少し時間をかけて考えてみたいと思います。