忍者ブログ

PICのド素人のブログ

10年ほど前にヤフーブログにあった記録をここへ移しました。「PIC16F84Aで作ってみました 」というホームページも運営していました。今はそこも消滅し   http://picdetukutte.toshi-ie.com/PIC16F84A.html   にすべてではありませんが引っ越しています。あわせてご覧いただければ幸いです。

まだまだガンバレPIC16F84A

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

まだまだガンバレPIC16F84A

さて今日はこれで何回目だ?
まあいいや。つづきだぜ。
さっきの話をフマエタ上でT3から見て行くね。

T1 ;「CALL T1」より到着
MOVLW D'250' ;250という数を
MOVWF TIMER1 ;「TIMER1」という箱に入れる

T1_LOOP
NOP ;何もしないで下へ進む
DECFSZ TIMER1,F ;ここを通るたびに箱から「1」ずつ減っていく。
GOTO T1_LOOP ;まだ箱に数が残っていれば「T1_LOOP」へ戻る。
RETURN ;箱の数が0ならば「CALL T1」の下へ行く。③

T2 ;「CALL T2」より到着
MOVLW D'250' ;250という数を
MOVWF TIMER2 ;「TIMER2」という箱に入れる

T2_LOOP
CALL T1 ;T1へ行って「RETURN」でこの下へ戻ってくる。③

DECFSZ TIMER2,F ;ここを通るたびに箱から「1」ずつ減っていく。
GOTO T2_LOOP ;まだ箱に数が残っていれば「T2_LOOP」へ戻る。
RETURN ;箱の数が0ならば「CALL T2」の下へ行く。②

T3 ;「CALL T3」より到着
MOVLW D'10' ;10という数を <<<<<<時間の調整が出来ます。(数に比例)
MOVWF TIMER3 ;「TIMER3」という箱に入れる

T3_LOOP
CALL T2 ;T2へ行って「RETURN」でこの下へ戻ってくる。②

DECFSZ TIMER3,F ;ここを通るたびに箱から「1」ずつ減っていく。
GOTO T3_LOOP ;まだ箱に数が残っていれば「T3_LOOP」へ戻る。
RETURN ;箱の数が0ならば「CALL T3」の下へ行く。(MAIN1内)③

さあ行くよ。ついて来てね。

10をTIMER3へ入れる。
T2へ行ってまたここへ戻ってくる。(あ)
250をTIMER2へ入れる。
T1へ行ってまたここへ戻ってくる。(い)
250をTIMER1へ入れる。
NOPで何もしない。(c)
TIMER1の数字から1つ減らす。(a)
T1_LOOPへ行く(b)
※(a)(b)(c)を249回繰り返す。

TIMER1の数字から1つ減らす。
TIMER1がからっぽになった。
さっきのところへ戻っていく。
さっきのところってどこか?
(い)だよ。「CALL  T1」ってところね。
その下から行くよ。
TIMER2の数字から1つ減らす。
T2_LOOPへ行って またT1へ行くよ。 
で さっきTIMER1はからっぽになっちゃったのでまた250入れるよ。

感触わかる?
TIMER1に250入れて
からっぽになったらTIMER2を1つ減らす。
またTIMER1に250入れて・・・・
でTIMER2がからっぽになったら
TIMER3を1つ減らす・・・
でTIMER1も2も3も全部からっぽになったら
一番最初にいたところに戻る。
「CALL T3」
って書いてあったところの下へ戻るんだよ。
で 今までなにをしてたかと言うと ただの時間つぶしだよ。
この回路では10MHzってクロック(セラロック)を付けてるのだ。
で10MHzのときはこのプログラムを1行進むのに
なんと0.4マイクロ秒しか掛からないのだ。
わかるかい?1秒の1000分の1が1ミリ秒だよ。
その1000分の1が1マイクロ秒だよ。
で これは0.4マイクロ秒!
このプログラムでは約1秒 ひまをつぶしたことになるんだよ。

で全体の流れも理解できるよね。
スイッチを入れたら約1秒ごとにLEDが交互に点灯するってプログラムね。
少しづつわかった来たよね。
プログラムって こうやって進んで行くんだよ。
んじゃ また 明日ね。
忘れないで覚えておくんだぜ。 おやすみ。

拍手[0回]

PR

コメント

プロフィール

HN:
waewax
性別:
非公開

P R