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

分かりにくいタイトルですみません。

PICに入力された4bitのデータを、違う4bitのデータにして出力させるプログラムを作りたいのですが、

いろいろなサイトを探してもそのような記事が無くて困ってます。

下記のような動作をするプログラムをご教示ください。


言語はアセンブラ
使用マイコン:PIC16F88
内部オシレーター使用

ポートAを4bit入力用
ポートBを4bit出力用

ポートAの入力が       ポートBの出力では
・LLLL             ・LLLL     
・HLLL             ・LHLL
・LHLL             ・LLHL
・HHLL             ・HLHL
・LLHL      の時    ・HHHL
・HLHL             ・LLLH
・LHHL             ・LHLH
・HHHL             ・HHLH
・LLLH             ・LLHH
・HLLH             ・HLHH




このような動作です。


使用目的は簡単に書くと、自作のサラウンドプロセッシングアンプのチャンネルテストという機能のメイン制御用に使います。ロジックICでもできますが、とてつもなく部品点数が多くなってしまうので、マイコンで制御したいと思います。


暇な時でも良いのでよろしくお願いします。

A 回答 (2件)

RETLW命令を使用するのが一番簡単と思います。


以下はマニュアル記載の説明です。

Description: 8 ビットのリテラル“k”をW レジスタにロードして、スタックの最上位(リターンアドレス)をプログラムカウン
タへロードします。これは2 サイクルの命令です。
Words: 1
Cycles: 2

Example:

  CALL TABLE ;W contains
          ;table offset
          ;value.
  •        ;W now has table
  •        ;value.
  •
TABLE  ADDWF PC ;W = offset 
      RETLW k1 ;Begin table
      RETLW k2 ;
      •
      •
      •
      RETLW kn ; End of table
命令実行前
W = 0x07
命令実行後
W = k8の値

この回答への補足

44060様、回答ありがとうございます。

理解力の乏しい自分で、お恥ずかしい限りです。


お手数をおかけしてしまいますが、1つのデータの変換プログラム(命令文)でもいいので、教えて頂くことは可能でしょうか?

補足日時:2011/05/14 18:26
    • good
    • 0

普通は16個のテーブルを作ります。


Aは0,8,4,12,2,10,6,14,1,9ですから
AでソートしてAの数字の場所にBを入れておけば一発検索できますね。

余談ですが汎用機ではこのコンバージョン(8ビット)の文字列変換を
やってくれる命令語があります。
    • good
    • 0

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