
No.2ベストアンサー
- 回答日時:
PICは1サイクルを4クロックで実行します。
従って1サイクル実行するには、50ns*4=200nsecです。CNT1;-----------カウント値1
CNT2;-----------カウント値2
L1;-------------ループカウンタ1
L2;-------------ループカウンタ2
とします。
MOVF CNT1,W;---------WにCNT1を読み込む(1)
MOVWF L1;-------------L1にCNT1をセット(2)
LB1
MOVF CNT2,W;---------WにCNT2を読み込む(3)
MOVWF L2;-------------L2にCNT2をセット(4)
LB2
DECFSZ CNT2,F;-------CNT2を減算、0ならスキップ(5)
GOTO LB2;------------(6)
DECFSZ CNT1,F;-------CNT1を減算、0ならスキップ(7)
GOTO LB1;------------(7)
RETUEN;---------------(8)
MOV命令は1サイクルです。
GOTO命令は2サイクルです。
DECFSZ命令はスキップする場合2サイクル、スキップしない場合は1サイクルです。
CNT2を調整して(3)~(6)で0.01mSECのwaitを作っておけば、CNT1を変更するだけで、0.08~0.3msecのwaitを作れます。正確さを求めるのであれば、内側ループ内にNOP命令などを入れて、若干調整が必要かもしれません。
No.1
- 回答日時:
;***************************
; Timer Subroutines
;***************************
; 0.4msec Timer Subroutine
TIM10
MOVLW 0F9H ;1
MOVWF CNT1 ;1+1=2
TIMLP1NOP
DECFSZ CNT1,F ;1+1+2=4
GOTO TIMLP1 ;2+4*249-1=997
RETURN ;997+1=998*0.4usec=0.4msec
下記のURLのサンプルから引っ張って来ました。
あとはご自身で宜しく。
参考URL:http://www.picfun.com/picframe.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSCの終了の仕方
-
VBAでの一時停止と再開の方法
-
Do whileでExitせず、ループの...
-
テキストボックスの名前に変数...
-
VB.NETでFTPプログラム
-
xmplayの使い方
-
C言語でファクト関数を使わずに...
-
csh foreachで「*」でエラ...
-
ListBox 複数選択 で オートフ...
-
ループフリー
-
UWSCに制限時間を付けたいです
-
プログラミングで難しいと感じ...
-
EXCEL VBA(初心者)印刷ルー...
-
CSVファイルの特定の行だけを読...
-
エクセルの当番表を作っていま...
-
vb.netからエクセル関数書き込み
-
VBAで3秒だけ時間を止めたい
-
Excel VBAでIf 条件式 then か...
-
流れ図(フローチャート)が分か...
-
Dim flag(4) as boolean で配列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
UWSCの終了の仕方
-
DOSコマンドのループ内のTIMEコ...
-
範囲指定したセルを1つずつ飛...
-
VBAでの一時停止と再開の方法
-
Escキーを押すと、中断する時と...
-
乱数の桁数指定、または範囲指定。
-
イベントの発生を待つ
-
流れ図(フローチャート)が分か...
-
UWSCに制限時間を付けたいです
-
vb.netです。2次元配列の要素を...
-
VBA for i=1 to lastrow
-
DoEventsが必要な理由について
-
ループフリー
-
VBA Boxが空白の場合のメッセー...
-
VBA ニュースタイトル取得
-
エクセルの当番表を作っていま...
-
Javaの質問です。 この問題の答...
-
テキストボックスの名前に変数...
-
CSVファイルの特定の行だけを読...
おすすめ情報