アプリ版:「スタンプのみでお礼する」機能のリリースについて

PIC16F88で500という数字を8ビット+2ビットのレジスタに設定する方法を教えていただきたいです。

変数D1,D2,D3にそれぞれ、0,0,5 という500を意味する各桁の数字が入っているのですが、
これをPWMのDutyのレジスタに8ビット+2ビットで設定したいのですが、
どんな手順をとったら10ビットの2進数に変換できるでしょうか?

A 回答 (2件)

>変数D1,D2,D3にそれぞれ、0,0,5 という500を意味する各桁の数字が入っている


10進数の作り方そのままだと思います。
10進数「123」は
123=1*100+2*10+3*1
なので、
「D3*100+D2*10+D1」
を記述すれば大丈夫です。
PICの経験はないですが、一般論としてはこんな感じです。
    • good
    • 0

16bit単位アクセス可能なレジスタなら普通にshort型変数にD1~D3を合成した結果を入れた上で、その変数を直接レジスタに投げ込めば問題なく入ります。



8bit単位でアクセスするなら、このshort型変数を上位バイト・下位バイトに分割(ビット演算とビットシフトでできます)してそれぞれ投げればOK。

2bit側の残り6bit(以上)の部分に何かしらの意味がある場合はその部分を保持して合成する手順が入るので少し面倒ですが、単純には上記の考え方がベースになります。
    • good
    • 0

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