PIC16F84Aで作ってみました掲示板


| トップに戻る | 検索 | アルバム | 管理用 | ▼掲示板作るならRara掲示板 |

お世話になります。
けんたろう 投稿日:2016年02月23日 11:16 No.15
はじめて投稿させて頂きます
私、そろそろ還暦を迎えますが、60の手習いでマイコンに興味をもちまして、PICに興味を持ちました。
オートバイや自動車のメカ畑で育ったものとしては、電気に弱みを抱えています。
まぁそこで一念発起をいたしまして、所詮人が作ったもの、人にできて自分にできない訳は無い・・・。
という事で、果敢に立ち向かったまでは良かったのですが。
はじめて7か月ちょっと、早くも挫折の危機に瀕しております。
回路の勉強はしなきゃならない、プログラムの本を睨み付けるも、ものの3分もたたないうちに欠伸。
まぁ、こんな事をしている訳にはいかないとは思いつつも、壁は予想以上に高く、予想以上に厚く堅牢であると。
あちこちのWEBを覗いて見ても、初心者にとってはまるでチンプンカンプン。
そんななかこのサイトに辿りつきました。
もう、半ば諦めの境地のままにサイトに入ると、何やらいきなりけたたましい音が。
「なんだよ~」と思いボリュームを絞ってやり過ごしました。
で、中を覗いて見ると、色々回路とともにソースも開示して頂いており、大いに参考にさせて頂きました。
まだまだこれからじっくりと見せて頂くことになりますが、
このサイトの存在に感謝申し上げるとともに、これからお世話になるであろうことをお伝えしておかねばと思い
ごあいさつかたがた、これからのご指導ご鞭撻をお願いしたいと思います。
不束ものではございますが、以後よろしくお願いいたします。


Re: お世話になります。 管理人 投稿日:2016年02月24日 12:11 No.16
当サイトにお越しいただきありがとうございます。
返信が遅れましてすみませんでした。
当方も電気についての教育は受けた事はなく趣味として楽しんでおります。
仕事と違って期限、納期があるわけではありませんでの気楽に進んで行けば良いと思います。
今後ともよろしくお願いいたします。


Re: お世話になります。 けんたろう 投稿日:2016年04月24日 13:15 No.19
お世話になっております。
只今、PIC16F84A-タコメーターに喰い付かせて頂いております。
なんとか自分なりに理解を進めようとしておりますが、どうしても分からないところが有ります。「PIC,初めての〇〇〇」と言った本を何冊か購入し、命令語やら回路やらを盲勉強しておりますが。
タコメーターの回転の検出の辺りがどうしても理解できないので、どうかご教授願いたいと思っております。
割り込みルーチンの部分で
MOVLW D'207'
MOVWF TMRO ・・・ここはタイマーなので何となく理解しましたが

MOVLW D'239'
MOVWF OVFL_C ・・・ここです。タイマーでも無いように思えるのですが、何をされているのでしょうか。
また、CNT1,CNT2,CNT3 と有りますが、ここに数値が収められるからくりが分かりません。
大変お忙しい中、恐縮でございますが、お教え願いたいと思います。
よろしくお願いします。


Re: お世話になります。 管理人 投稿日:2016年04月24日 20:58 No.20
毎度お越しいただきありがとございます。
ご指摘のとおり
MOVLW D'207'
MOVWF TMRO
はタイマーで割り込み時間を決めています。
プログラムに
O.4X128X(256-207)=25088μ秒 とありますが書き間違いです。ごめんなさい。
O.4X128X(256-207)=2508.8μ秒
という式で計算されます。
「256-207」という意味が上記のプログラムで表されます。
0.4は外部クロックが10MHzのときのプログラムの進むクロック時間で0.4μ秒ということです。
128は初期ルーチンの
MOVLW B'10000110' ;割り込みプリスケーラ128((TMR0)PS2,1,0)
MOVWF OPTION_REG ;
の割り込みプリスケーラの「110」の部分で128と決めています。
その計算で2508.8μ秒、つまり約2.51m秒ごとに割り込みが発生してプログラムは割り込みルーチンへ飛ばされます。
そしてその割り込みを239回数えるのが次にある
MOVLW D'239'
MOVWF OVFL_C
です。プログラム的には
2.51秒x239回=約0.6秒
という計算をさせて
0.6秒ごとにパルスを数えてそれを倍率の5で5倍にして表示をさせています。
4サイクル自動車では600rpmのときには0.6秒で12回パルスが来ます。
12回x倍率5=60
「060」と表示されます。
上手く説明出来ているかわかりませんがおわかりになりましたか。
以上よろしくお願いたします。
 ありがとうございました。


Re: お世話になります。 管理人 投稿日:2016年04月24日 22:53 No.21
CNT1,CNT2,CNT3 のご質問ですがこれらは7セグメントLEDにどの数値を表すかを決めています。
PLS_CHECK4<<パルス取り込み>>の項でパルスがひとつ来ると倍率5の場合は5加算させる式を作っています。
INCF CNT1,F ;CNT1+1→CNT1
の部分と
PLS_CHECK5
DECFSZ _BY_1,F ;_BY_1-1=0? ;パルス倍率代入値
GOTO PLS_CHECK4 ;NO
;YES
GOTO PLS_CHECK8
です。
10になると次の桁が1加算させます。
MOVLW D'10' ;<10の位>
SUBWF CNT1,W ;10-CNT1=?
BTFSS STATUS,C ;=0?
GOTO PLS_CHECK5 ;NO
;YES
CLRF CNT1 ;

INCF CNT2,F ;CNT2+1→CNT2
がそのプログラムです。


Re: お世話になります。 管理人 投稿日:2016年04月26日 06:46 No.22
ご理解頂けてますでしょうか。
プログラムの難易度は高い作品です。
いわゆるLEDパカパカのプログラムからはじめたほうが良いと思いますが
そのあたりはもうクリアされていますでしょうか。
当サイトにはそのような作品も用意して有ります。
今後ともよろしくおねがいします。
ありがとうございました。




お名前
メール
タイトル
URL
画像添付


削除キー ( 記事を削除する際に使用 )
文字色