• ベストアンサー

PIC 文字 を 数値に 変換

アセンブラ言語(PIC)で、シリアルで受信した文字列数値を数値に変換したいのですが、どなたかプログラムを教えてくださいませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • hitunion
  • ベストアンサー率16% (12/74)
回答No.1

プログラムは教えませんが、アルゴリズムなら。 送信されてくるデータが、上位から送られてくるものとします。 本当は16進数が簡単ですが、10進数で話を進めます。 (1) データを保存するメモリ(以下、保存メモリ)を0クリアしておく。 (2) 保存メモリを10倍する。(16進数ならここで16倍する→4ビット左シフトする。) (3) 終端コードを受信したら、終了。 (4) 1文字受信したらASCII-数値変換し、保存メモリに加算する。 (5) 制御を(2)に移す。 以上です。 ※ ASCII-数値変換は、受信データから'0'を引けばいいです。 ※ 10倍は、8倍と2倍を加算すればいいです。 ※ 終端コードは、C言語との互換性を考慮してNULL(=0x00)にしておくといいです。

Nicpic
質問者

お礼

詳しい回答ありがとうございます。 何回か上記の処理を行うと保存メモリがオーバーフローしてしまうのですがどうすればよいですか?

その他の回答 (1)

  • hitunion
  • ベストアンサー率16% (12/74)
回答No.2

PICのレジスタ(Wレジスタ)は、8ビットなのですぐにオーバーフローしてしまうのですね。 そのような時は、キャリーフラグ(オーバーフローフラグ)をチェックし、オーバーフローしていたら、上位のメモリに足し込めば何バイトにも拡張できます。 頑張ってください。

Nicpic
質問者

補足

ご回答ありがとうございます。 何回もくどいですが、過程についてくわしくご説明お願いします。

関連するQ&A