C言語関係掲示板

過去ログ

No.1302 SW入力(0xFF)→ 液晶に”255”、”66,66”を表示

[戻る] [ホームページ]
No.17459

16進→10進の方法
投稿者---やすすけ(2004/10/22 23:23:51)


OAKS16というCPUボードを使ってC言語の勉強をしているのですが行き詰っています。
ポート3(8bit)からのSW入力を確認し、その数値の10進数、ASCIIコードを液晶に表示させたいのですが16進数から10進数への変換の地点で躓いてます。
例)SW入力(0xFF)→ 液晶に”256”、”66,66”を表示

何かいい方法があれば教えてください。


No.17460

Re:16進→10進の方法
投稿者---YuO(2004/10/23 00:45:30)


>ポート3(8bit)からのSW入力を確認し、その数値の10進数、ASCIIコードを液晶に表示させたいのですが16進数から10進数への変換の地点で躓いてます。
>例)SW入力(0xFF)→ 液晶に”256”、”66,66”を表示

0xFFがどうして256や66,66になるのか,変換の法則を記述して下さい。
#255 / 70, 70ならわかるが。


とりあえず,printfだのsprintfだのが使えるのであればそれを使い,
使えないのであれば自分で書く必要があります。



No.17474

Re:16進→10進の方法
投稿者---やすすけ(2004/10/23 18:00:05)


>0xFFがどうして256や66,66になるのか,変換の法則を記述して下さい。
>#255 / 70, 70ならわかるが。

すみませんでした。0xffなので 255 / 66,66 ですね。
仮に0xffとした場合、液晶に送るデータとしては 2,5,5 が必要になってくると思うのですが、このデータの作り方としてはどのような方法があるのでしょうか?
ご回答、お願いします。



No.17475

Re:16進→10進の方法
投稿者---あかま(2004/10/23 18:27:32)


>仮に0xffとした場合、液晶に送るデータとしては 2,5,5 が必要になってくると思うのですが、このデータの作り方としてはどのような方法があるのでしょうか?
255を100で割る。2が出る。
2*100を引いて10で割る。5が出る
さらに5*10を引いて1で割る。5が出る

>ご回答、お願いします。
とりあえず、どんな出力方法があるのか分からないと書けないと思うのだけど。
出力関数にはどんなものが?
そもそも0xffをそのまま出力しようとするとどう表示されるのか興味が。

printfがないんじゃCの勉強としてはやりにくいのでは?




No.17476

Re:16進→10進の方法
投稿者---やすすけ(2004/10/23 19:08:35)


>255を100で割る。2が出る。
>2*100を引いて10で割る。5が出る
>さらに5*10を引いて1で割る。5が出る
>
>>ご回答、お願いします。
>とりあえず、どんな出力方法があるのか分からないと書けないと思うのだけど。
>出力関数にはどんなものが?
>そもそも0xffをそのまま出力しようとするとどう表示されるのか興味が。
>
>printfがないんじゃCの勉強としてはやりにくいのでは?
>
ご回答有難うございます。
学習用のCPUボード(cpu-MC16)を使用してまして8個のSWから8bitの信号入力を受けて、その数値を10進数に変換したものと、アスキーコードを液晶(16文字×2行)に表示させるという課題があるんですよ。
液晶表示用のルーチンは作成したんで問題ないんですが、16進→10進の変換方法がわからなくて困ってたんです。
あとアスキーコードへの変換方法は0〜9までは+30h、a〜fまでは+57hでいいんですよね?




No.17491

Re:16進→10進の方法
投稿者---REE(2004/10/25 10:26:45)


>液晶表示用のルーチンは作成したんで問題ないんですが、16進→10進の変換方法がわからなくて困ってたんです。

その表示用のルーチンの入力がどのようなものか分からないので、
回答者も何を求めればいいのか分からないのです。

>あとアスキーコードへの変換方法は0〜9までは+30h、a〜fまでは+57hでいいんですよね?

これで大丈夫そうです。


No.17492

Re:16進→10進の方法
投稿者---YuO(2004/10/25 10:59:45)


>あとアスキーコードへの変換方法は0〜9までは+30h、a〜fまでは+57hでいいんですよね?

そんな計算しなくても,たとえば
"0123456789abcdef"[val & 0x0F]
のようにすると,
valの下位4bitが16進文字に変換されますよ。
#というか,文字コードへの依存を無くすのでこちらの方が望ましいと思う。



No.17493

Re:16進→10進の方法
投稿者---やすすけ(2004/10/25 16:31:03)


>そんな計算しなくても,たとえば
"0123456789abcdef"[val & 0x0F]
のようにすると,
>valの下位4bitが16進文字に変換されますよ。
>#というか,文字コードへの依存を無くすのでこちらの方が望ましいと思う。

ありがとうございます。早速試してみます!
みなさんから色々とご意見を頂きすごく役立っています。
まだ、勉強を始めたばかりで解からないことばかりなので、また色々と質問させて頂きます。
本当に有難うございました。