dポイントプレゼントキャンペーン実施中!

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

A 回答 (2件)

プログラムは教えませんが、アルゴリズムなら。



送信されてくるデータが、上位から送られてくるものとします。
本当は16進数が簡単ですが、10進数で話を進めます。

(1)
データを保存するメモリ(以下、保存メモリ)を0クリアしておく。

(2)
保存メモリを10倍する。(16進数ならここで16倍する→4ビット左シフトする。)

(3)
終端コードを受信したら、終了。

(4)
1文字受信したらASCII-数値変換し、保存メモリに加算する。

(5)
制御を(2)に移す。

以上です。

※ ASCII-数値変換は、受信データから'0'を引けばいいです。
※ 10倍は、8倍と2倍を加算すればいいです。
※ 終端コードは、C言語との互換性を考慮してNULL(=0x00)にしておくといいです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/25 11:40

PICのレジスタ(Wレジスタ)は、8ビットなのですぐにオーバーフローしてしまうのですね。


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

この回答への補足

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

補足日時:2007/02/25 19:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!