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'だとしたら、①の場所に行くのでしょうか?
初心者です。
どうぞ、よろしくおねがいします。
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のパターンに変換するルーチンが載っています。
とても有り難うございます。どうぞまたよろしく御願いします。