分かりにくいタイトルですみません。
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でもできますが、とてつもなく部品点数が多くなってしまうので、マイコンで制御したいと思います。
暇な時でも良いのでよろしくお願いします。
No.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つのデータの変換プログラム(命令文)でもいいので、教えて頂くことは可能でしょうか?
No.1
- 回答日時:
普通は16個のテーブルを作ります。
Aは0,8,4,12,2,10,6,14,1,9ですから
AでソートしてAの数字の場所にBを入れておけば一発検索できますね。
余談ですが汎用機ではこのコンバージョン(8ビット)の文字列変換を
やってくれる命令語があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- 工学 1つのタクトスイッチで複数の並列回路を閉じ、アースにつなげることができるスイッチはありますか。 2 2022/08/06 10:38
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- ドライブ・ストレージ SSDを追加したら昔のHDDがおかしくなった 4 2023/03/23 13:25
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マイコンからSDカード内のテキ...
-
SH7144でパルス幅を測定したい。
-
TCNTとTIFRの意味
-
PLCとPCの通信
-
フラッシュメモリへの書き込み
-
I2C I/OエクスパンダPCA9539動...
-
PICマイコンのCLRWDT動作について
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
バックグラウンドのプロセスの...
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
TCP/IP通信時のサーバーからの受信
-
explorer.exeが異様にメモリを食う
-
タスクマネージャーのプロセス...
-
C# シリアル通信でデータ受信...
-
DoEvents関数って何?
-
メッセージボックスのボタン名変更
-
ACCESS側からEXCELの書式を設定...
-
UDP通信におけるbind関数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PLCとPCの通信
-
レジスタマップって何ですか?
-
SH7144でパルス幅を測定したい。
-
組み込みマイコンでのソフトウ...
-
アセンブラプログラム
-
マイクロ秒で精度が出るタイマー
-
機械語のレジスタペアについて
-
シリアル通信でのデータ取りこぼし
-
H8マイコンのプロテクト方法
-
フラッシュメモリへの書き込み
-
マイコンからSDカード内のテキ...
-
TCNTとTIFRの意味
-
グラフィックLCD SG12...
-
2つのアナログ信号が一致して...
-
古い計量機器からのrs232cを使...
-
USBハブの自作について
-
RTCで取得した値をLCDに表示したい
-
printf文で変数のアドレスを表...
-
arduinoを使って重さ計測
-
マイコンSPI入門
おすすめ情報