picマイコンのプログラムについて質問です。


LED EQU 0CH
CLRF LED

省略、、、
SUB

MOVF LED,W
ADDWF PCL,F
①RETW B'00000000'
②RETW B'00000001'
③RETW B'00000011'
④RETW B'00000111'
⑤RETW B'00001111'
⑥RETW B'00011111'
⑦RETW B'00111111'
⑧RETW B'01111111'
⑨RETW B'11111111'

となっていた場合、
一回目の命令では、
MOVF LED,W ;b'00000000'がWレジスタに挿入され、
ADDWF PCL,F でFレジスタにb'00000000'が代入され
ますと、いったいどこに行くのでしょうか?
①のアドレスに行くのでしょうか?
それとも、
仮にLEDレジスタがb0000001'だとしたら、①の場所に行くのでしょうか?

初心者です。
どうぞ、よろしくおねがいします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/02/25 22:35:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:kuakua No.1

回答回数135ベストアンサー獲得回数11

ポイント60pt

Fの内容が0だった場合は①の命令に行って、

Wレジスタに'00000000'を入れてサブルーチンの読み出し元のリターンします。

 

ADDWF PCL,Fの命令実行時の、Fに入っている数値の0,1,2,3,4,5,6,7,8 に対応して

①,②,③,④,⑤,⑥,⑦,⑧,⑨にジャンプしRETW命令で各々違う値を呼び出し元に戻す、

いわゆるテープル引きの動作を行います。

この例ではLEDのバーの長さを数字に対応させるような動作ですね。

 

電子工作の実験室

http://www.picfun.com/arch10.html

【サブルーチンの例】

には、数値0~9から7セグメントLEDのパターンに変換するルーチンが載っています。

 

id:demati

とても有り難うございます。どうぞまたよろしく御願いします。

2009/02/18 23:28:19

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません