![](https://blogimg.goo.ne.jp/user_image/74/42/d21d0392a75aca08ce8965ca229aea77.jpg)
初期設定
PIC12f629使用
PIC内部オシレーター使用
汎用レジスターをタイマーカウントレジスターとして定義
![](https://blogimg.goo.ne.jp/user_image/6f/05/3af67a36e3412d4525775d3e966c19d5.jpg)
start
bsf GPUIO,0
call tim_n
bcf GPIOP,0
goto start
メインプログラムの call tim_n が呼び出されたら以下のサブルーチンにジャンプする
![](https://blogimg.goo.ne.jp/user_image/38/6f/b12083b656bd61e7d1d350169f656ad8.jpg)
行№39 Wレジスタに任意(n)を代入 1<n<255
行№40 Wレジスタ数値をCNT1に移す
行№42 wait_sub にジャンプ
行№47 Wレジスタに200を代入
行№48 Wレジスタ数値をCNT2に移す
行№50 何もしないで1サイクル消費
行№51 何もしないで1サイクル消費
行№52 CNT2の値 200ー1 を実行して 0 になるまで繰り返す
行№54 0になったら、return で 行№42に戻る
行№43 CNT1の値 n-1 を実行して 0 になるまで繰り返す
行№45 0になったら、return でメインプログラムに戻る
このようにして、メインプログラムの call 命令呼び出しからサブルーチンのreturn 命令でメインプログラムに戻るまでプログラムが巡って、結果としてnmsecの時間ができる
ご不明の点はご遠慮なくお尋ね下さい。存じ上げていることは丁寧にご案内させていただきます。
TEL 090-3194-4902
TEL 090-3194-4902
![](https://blogimg.goo.ne.jp/user_image/5f/c6/5269333fb847c30d62024de645af6a19.jpg)
※コメント投稿者のブログIDはブログ作成者のみに通知されます