- ベストアンサー
PIC 文字 を 数値に 変換
アセンブラ言語(PIC)で、シリアルで受信した文字列数値を数値に変換したいのですが、どなたかプログラムを教えてくださいませんか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
プログラムは教えませんが、アルゴリズムなら。 送信されてくるデータが、上位から送られてくるものとします。 本当は16進数が簡単ですが、10進数で話を進めます。 (1) データを保存するメモリ(以下、保存メモリ)を0クリアしておく。 (2) 保存メモリを10倍する。(16進数ならここで16倍する→4ビット左シフトする。) (3) 終端コードを受信したら、終了。 (4) 1文字受信したらASCII-数値変換し、保存メモリに加算する。 (5) 制御を(2)に移す。 以上です。 ※ ASCII-数値変換は、受信データから'0'を引けばいいです。 ※ 10倍は、8倍と2倍を加算すればいいです。 ※ 終端コードは、C言語との互換性を考慮してNULL(=0x00)にしておくといいです。
その他の回答 (1)
- hitunion
- ベストアンサー率16% (12/74)
回答No.2
PICのレジスタ(Wレジスタ)は、8ビットなのですぐにオーバーフローしてしまうのですね。 そのような時は、キャリーフラグ(オーバーフローフラグ)をチェックし、オーバーフローしていたら、上位のメモリに足し込めば何バイトにも拡張できます。 頑張ってください。
質問者
補足
ご回答ありがとうございます。 何回もくどいですが、過程についてくわしくご説明お願いします。
お礼
詳しい回答ありがとうございます。 何回か上記の処理を行うと保存メモリがオーバーフローしてしまうのですがどうすればよいですか?