• ベストアンサー

PIC16F88で500という数字を8ビット+2ビットのレジスタに設定

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

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

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

16bit単位アクセス可能なレジスタなら普通にshort型変数にD1~D3を合成した結果を入れた上で、その変数を直接レジスタに投げ込めば問題なく入ります。 8bit単位でアクセスするなら、このshort型変数を上位バイト・下位バイトに分割(ビット演算とビットシフトでできます)してそれぞれ投げればOK。 2bit側の残り6bit(以上)の部分に何かしらの意味がある場合はその部分を保持して合成する手順が入るので少し面倒ですが、単純には上記の考え方がベースになります。

その他の回答 (1)

回答No.2

>変数D1,D2,D3にそれぞれ、0,0,5 という500を意味する各桁の数字が入っている 10進数の作り方そのままだと思います。 10進数「123」は 123=1*100+2*10+3*1 なので、 「D3*100+D2*10+D1」 を記述すれば大丈夫です。 PICの経験はないですが、一般論としてはこんな感じです。

関連するQ&A