さて今日の2時間目です。
教材はさっきと一緒。初期設定と書かれているところからの説明だす。
ちょと面倒な話なのでよく聞くように。聞かなくても丸写しでも良いんだよ。安心しな。
ここではPICにはいっぱい足があってどの足を出力、入力にするか決定させるのだ。その他割り込みタイミングとかいろいろPICの使い方を決めるのだ。今 割り込みって言っちゃったけど いつか説明するから今は忘れてください。
PICの使い方を設定するここはバンク0とバンク1に分かれている。大きいPICはバンク2や3もあるのだけど今は関係ないので話さない。通常のプログラムはバンク0という場所で行うのだ。でだ、さっき言った足を入力か出力か決める場所はバンク1にあるのだ。面倒な話だろ?でもね知らなくてもいいのさ。俺の書いたファイルを丸写しにして使えば問題ない。でも 一応 お話するぜ。さっきのファイルをみてくれ。84A_SAMPLE1.ASMだ。
BSF STATUS,RP0
って書いてある。STATUSって場所があってそこにはRP0って小部屋があるんだ。この小部屋を1にするか0にするかでバンク1にいくか0にいくか決めることが出来るんだ。
BSFってのはこれから死ぬほど使うから覚えておけ。「1にする!」って意味だ。別の考え方で「オンにする!」ってことでも良い。逆に「0にする!!」「オフにする!」って記号はBCFって言うのだ。まずこの2つ覚えろよ。
だからここではSTATUSって場所のRP0って小部屋を1にする! ってことでバンク1にワープって意味になるのだ。ここはそういう意味合いの場所であり小部屋なのだ。でバンク1になったところで次だ。
MOVLW B'000011'
MOVWF TRISA
これは足の番号でRA0~RA4を入力にするか出力にするか決める場所だ。それがTRISA。
こいつらがバンク1にあるのでわざわざバンク1へ切り替えたのだ。
MOVLWって記号とMOVWFて記号で熟語として覚えてくれ。
MOVLWのとなりは必ず数値がくる。今回はB'000011'。数値で書くと「3」。16進数では「03H」とか「H'03'」とか「OX03」と書く。10進数では「D'3'」と書く。
B'000011'が何で「3」なのか?それはまた今度書くね。
MOVWF TRISAは上の数値をTRISAへ入れるって意味。
で、000011の見方は右から RA0 RA1 RA2 RA3 RA4 なのだ。最後に0が一個多いがもともとそこには足が無いのでPICさんはプログラムの間違いに気付かない。
つまりRA0 と RA1が1で後は全部0ってことが書いてある。ここでの「1」とは「入力」という意味なのだ。当然「0」は「出力」という意味。これは約束ごと。「1」が入力で「0」が「出力」。PICのライバル関係にあるAVRっていうマイコンはこの「0,1」が逆なのだ。 PICではRA0 RA1は入力であとのRA足は出力に設定しました ってことね。
次の
MOVLW B'00000000'
MOVWF TRISB
はわかるね。
RB0~RB7まで全部「0」。つまり出力ってこと。
最後に
BCF STATUS,RP0
覚えてる?はじめにここをBSFで「1」にしただろ。だから最後はBCFで「0」に戻すのさ。
BSFも1だし B'000011'のときも1だし どう違うのさ? って思う?
一緒なのさ。書き方がちがうだけ。そのうちわかるようにしてあげるよ。
最後にとどめ
MOVLW 数値
MOVWF 場所
「この数値をこの場所に入れる」の意味。
これも死ぬほど使う。まずは丸暗記してちょーだい。
質問はいつでも受け付けます。が難しいことは聞かないでね。
またね~~。 歯磨けよ。