忍者ブログ
ようこそ!JQ2RVNのブログです。 PICを使っていろいろな物を作ろうと画策中です。
[3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]
×

[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
UIデジピートのコマンドをまとめてみます。
(間違えがあるかも・・・(^^;;)

UIDIGI
(書式)UIDIGI (ON|OFF) CALL1[,CALL2,[CALL3…
CALLは4つまで(?)設定できる。
CALL1~4のいずれかとデジパスが一致していた場合、
デジピート済みフラグを付けて、MYCALLに置換する。

MYALIASとの違い。
CALLを複数設定できる。
MYCALLに置換する。


UITRACE
(書式)UITRACE Name
Nameを1つ設定できる。
デジパスがNameX-Y形式であればデジピートする。
ただし、Y=0ならばデジピートしない

デジピートする時、
デジピート済みフラグを付けMYCALLを挿入し、
さらにそのあとにNameX-(Y-1)をつける。

(e.g.) TRACE3-2 → JQ2RVN-3*,TRACE3-1

パケットの長さが長くなるので、マイコンではややこしい。
受信バッファーから送信バッファーに転送するときに置換する?



UIFLOOD
(書式)UIFLOOD Name,(ID|NOID|FIRST)
一番ややこしい。
デジピート条件はUITRACEと似ている。
ただし、今までデジしてきたパスを削除してしまうか、
MYCALLを挿入しなかったりする。
(UITRACEだと、パケットが長くなるのでその対策?)

IDの場合
デジピート済みリストを削除して、MYCALLと置換
そのあとに、NameX-(Y-1)を付ける
(e.g) JA1QQQ*,TRACE3-2 → JQ2RVN-7*,TRACE3-1

NOIDの場合
MYCALLと置換せずに、Yの減算のみ行う。
(e.g.) JA1QQQ*,TRACE3-2 → JA1QQQ*,TRACE3-1

FIRSTの場合
最初のデジピート局であった場合のみMYCALLを挿入
つまり、X=YのときのみMYCALLがパケットに表れる
(e.g.) TRACE3-3 → JQ2RVN*,TRACE3-2
(e.g.) JA1QQQ*,TRACE3-2 → JA1QQQ*,TRACE3-1

マイコンでどうするか、途方にくれそうな仕様(^^;;


忍者ブログ [PR]
カレンダー
03 2024/04 05
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]
最新トラックバック
バーコード
ブログ内検索
アクセス解析