最近ずーといじっていたタコメーターの試作のヤツをネタとしてニコニコ動画にアップ中です。今日はやや混雑していてアップロードの順番待ちが長いでした。
前に作ったスロットマシーンの基板をそっくりそのまま流用しちゃったってヤツですけど。また暇があったら見てください。
http://www.nicovideo.jp/watch/sm12353749
さて今日は新しい
http://picdetukutte.toshi-ie.com/info_2A.zip
のSAMPLE4を見て行きましょう。
どんな動作かはサンプルの動画を見てください。
http://nicozon.blog64.fc2.com/?video_id=sm7548056
まずは動作前の条件で いろいろクリアにしてます。
これは前にも話しましたが 前の記憶が残っているときがたまにあるので念のためクリアの命令を入れておきます。 で、次。
MAIN1とMAIN2はRA0かRA1が押されないか監視してるところです。わかりますよね。
BTFSSの命令ですよ。で、次。
MAIN10とMAIN20です。これはどちらも同じ命令です。表示パターンが違うだけね。
これはまずは丸覚えでいいと思う。
理屈はもう少し理解が進んでからのがわかりやすです。
なので今回はこれの利用法を教えます。
MAIN10を見てちょーだい。
進む順序が違うけど付いてきてね。
INCF CNT,F
ってあるよね。
ここをプログラムが通るたびにCNTの中の数字が0から1つづ増えていきます。
でその結果
CALL LED_PTN1
ってところからLED_PTN1へ行ってみるといろんなパターンが並んでいる。
このパターンがPORTBに入るんだよ。
でさっき話したCNTが1づつ増えるとこのパターンが1行ずつ下に移動するんだ。
で、この行は34行有るヨねえ。
MOVLW D'34' ;パターン総数
SUBWF CNT,W ;CNT-'34'=0まで数える
BTFSC STATUS,C ;=0になったときここがオンします。
CLRF CNT ;オンした。CNTは34になっているので0(クリア)に戻す。
GOTO MAIN10
こんなことが書いているでしょ。
34まで数え終わったらCNTの中の数字は0に戻してMAIN10へ戻れってこと。
まだ34まで数えていないときはCNTの中の数字はそのままにしてMAIN10へ戻れってことね。
SUBWF は引き算ってことなんだよ。MOVWFはただの移動だったけどね。
で引き算の答えが0かそれより向こうになったときにSTATUSって場所のCって名前の小部屋が「1」に変化するんだょ。(このPICは0の向こうは255 その向こうが254なんだけどね。)
で そこが1になったときが34になったって意味になるんだよね。わかるよね。
BTFSCもわかるよね「1」のときはすぐ下の行、そうじゃないとき つまり「0」のときは2行目へ行くんだよ。
これだけわかればSAMPLE4はOKだね。
わからないことがあったら教えてあげるけど難しいことは答えられません。
んじゃ 今日はここまでじゃ。 ドロン!