忍者ブログ
ようこそ!JQ2RVNのブログです。 PICを使っていろいろな物を作ろうと画策中です。
[25] [24] [23] [22] [21] [20] [19] [18] [17] [16] [15]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

16bitPICには、1つの演算でも色々な形式があるのでまとめてみます。

基本演算(ADDとかANDとか・・・)には引数の形が5つあります。
ADDの場合を例にして、解説します。

ADD f
(e.g.) ADD xxx
f = f + WREGの演算が行われます。
PIC16などと同じような演算ができます。
( ADDWF xxx , f と同様)
f はレジスタのアドレス。
WREGはW0に入っている実データです。


ADD f , WREG
(e.g.) ADD xxx , WREG
WREG = f + WREGの演算が行われます。
上記と同様ですが、結果が入る場所が違います。
(PIC16の ADDWF xxx , W と同等)


ADD #lit10,Wn
(e.g.) ADD #0x21 ,W1 (W1 = 0x21 + W1)
Wd = #lit10 + Wdのリテラル計算がおこなわれる。
Wnはポインタ指定可能??
lit10は10ビットのリテラル。
ADDLWと同等。


ADD Wb , Ws , Wd
(e.g.) ADD W2 , W3 , W1 ( W1 = W2 + W3 )
(e.g.) ADD W2 , [W3] , [W1 ] 
       (W2の値とW3の示すレジスタの値を足し、W1の示すレジスタに入れる)
Wd = Wb + Wsの計算がおこなわれる。
引数の順序は、逆ポーランドっぽいw
Ws , Wdはポインタ指定が可能。


ADD Wb , #lit5 , Wd
Wsが5ビットのリテラルに変わっただけ。
Wdはポインタ指定が可能。


以上の5つの形式。

なお、Ws , Wdはポインタ指定ができて、
たとえばW0にアドレスを入れてその数値を
読み書きしたい場合には[W0] と書く。

ポインタの場合には、インクリメント・デクリメントも書けるので
[W0++] [W0--] [++W0] [--W0]とすることもできる。

Wnは凡例に載ってないからポインタでできるかどうか不明です。


というか、データシートに例もなく、説明も少ない。
MicrochipとしてはC言語を使うのが前提なのでしょうね。
でも、アセンブラを使わないといけないこともあると思うので、
1つ位、例をあげてくれたらいいのになんて思いました。


この形式の演算は
 加減:ADD , ADDC , SUB , SUBB 
 シフト:ASR , LSR , SL 
 論理:AND , XOR , IOR
に適応できます。

PIC16にもあるのはパスして、
ADDCはキャリー付き。SUBBはボロー付き。
ASRは算術シフト。LSRは論理シフトです。
(PIC16に比べると便利そうですね~)

以上、もろもろの製作例や、データシートに断片的に出てくるアセンブラなどなどから
類推なども含めてまとめました。
よって間違えがあるかもしれないので、あしからず。
もし、間違えなどありましたら、ご指摘いただければうれしいです。
PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
プロフィール
コールサイン:
JQ2RVN
性別:
男性
自己紹介:
PICの開発を勉強中です。
目標はPICTNCの高性能版を作ること。
まずは、本家を解析しています。
最新コメント
[04/23 Eolande]
[04/16 太田和巳(JF2UJG)]
[09/10 je7ifp]
[08/06 JQ2RVN]
[08/03 OVC]
最新トラックバック
バーコード
ブログ内検索
アクセス解析