![](https://blogimg.goo.ne.jp/user_image/59/42/0dc5c88e577d8cdeedfd8ce25e1de582.jpg)
PICのプログラムを少し勉強してみました。
LEDピカピカも良いのですが、少し実用的なものという事で、
赤外センサの受けている信号を1個ずつ分けて各ポートに出すだけで
サーボやアンプの信号として使え、そのまま受信機としても使えます。
このプログラムは田中さんの”PICマイコンでつくるインドアプレーン”の本に詳しく解説されていて、プログラムもあるのですが、
あまり読むと同じ物になってしまいそうなので、横目でながめつつ、自分なりにプログラムを組んでみました、
そしてやっと何とか動くプログラムになりました。
上がセンサの出力信号 下が各ポートに出力される信号
![](https://blogimg.goo.ne.jp/user_image/3a/d0/5bb89863b1b4ff6d64cb78b49121849d.jpg)
恥ずかしながら、ソースです。
LIST P=12F629 INCLUDE P12F629.INC CB = _CPD_OFF ;データEEPROMもプログラム・メモリも CB &= _CP_OFF ;コード・プロテクトしない。 CB &= _BODEN_OFF ;ブラウンアウト・リセットを使わない。 CB &= _MCLRE_OFF ;MCLRリセットを使わない。 CB &= _PWRTE_ON ;パワーアップ・タイマを使う。 CB &= _WDT_OFF ;ウォッチドッグ・タイマを使わない。 CB &= _INTRC_OSC_NOCLKOUT ;内部発振器を使う。 __CONFIG CB C1 equ 20h ;タイマカウンター C2 equ 21h ;カウンター上位 org 0 ;電源onスタート bsf STATUS,RP0 ;バンク 1 にする。 call 3FFh movwf OSCCAL ;内部発信校正値の書き込み movlw b'00001000' ;入出力ポートの設定GP3のみ入力 movwf TRISIO ;他は出力設定 bcf STATUS,RP0 ;バンク 0 にする。 movlw b'00000111' ;GP0~GP2までのコンパレータ解除 movwf CMCON ;//////////////////////////////////////////////////////////// ;メインルーチン MAIN clrf GPIO ;出力ポートクリア LOOP btfss GPIO,3 ;入力LOならループ goto LOOP movlw d'250' movwf C2 ;カウンタ250セット M1 btfss GPIO,3 ;入力LOならループ goto LOOP nop nop nop ;10us×250回=2.5ms nop nop decfsz C2,F ;C2-1=0なら先頭ブランク発見 goto M1 M2 btfsc GPIO,3 ;入力HIならループ goto M2 ;先頭の立下り待ち bsf GPIO,0 ;GP0をHIにする call T700us ;GP3入力立ち上がり待ち M3 btfsc GPIO,3 ;入力HIならループ goto M3 ;次の立下り待ち bcf GPIO,0 ;GP0をLOにする bsf GPIO,1 ;GP1をHIにする call T700us ;GP3入力立ち上がり待ち M4 btfsc GPIO,3 ;入力HIならループ goto M4 ;次の立下り待ち bcf GPIO,1 ;GP1をLOにする bsf GPIO,2 ;GP2をHIにする call T700us ;GP3入力立ち上がり待ち M5 btfsc GPIO,3 ;入力HIならループ goto M5 ;次の立下り待ち bcf GPIO,2 ;GP2をLOにする bsf GPIO,4 ;GP4をHIにする call T700us ;GP3入力立ち上がり待ち M6 btfsc GPIO,3 ;入力HIならループ goto M6 ;次の立下り待ち bcf GPIO,4 ;GP4をLOにする goto LOOP ;///////////////////////////////////////////////////////////// T700us movlw d'161' ;約700μsのタイマループ movwf C1 T700J1 nop decfsz C1,F goto T700J1 nop return ;///////////////////////////////////////////////////////////// end
http://ww1.microchip.com/downloads/en/DeviceDoc/DS41239C_JP.pdf#search='DS41239C'
PIC10F222の日本語データーシート見つけました
http://ww1.microchip.com/downloads/en/DeviceDoc/DS41270D_JP.pdf#search='PIC10F データシート'
参考までに
なんて紙を無駄に使う機械かと、びっくりしただけでした。
PICのプログラムはそんなに構えなくても、
このピンを5Vにする、0Vにする、同じ所をぐるぐる回ってちょっと時間をつぶす、みたいなことですから、大丈夫ですよ。
kobaraさんは、その道のベテランと見た。
うちの死んだ親父のようにならないことを祈ってます。
高校のときのフォートランで(機械科なのに必要だったの?、おまけに僕が3年のときに、僕の高校では情報処理科が出来た)完全にアレルギーになりました。
エクセルのマクロ程度が限界です。
すっかり忘れていました。
野末さん 同じ電気屋さんとしてソフトがわかんなくても何とかなりますよ~ ^^;
私なんかZ80の頃から未だにLEDチカチカがやっとですから~
ゆっくり行きましょう
kobaraさんのプログラムができた時点でお願いモード
一人しょんぼりです。
頭がプログラムモードの時に一気に
今度はモーターとラダーのPWM機能を持った、受信機を作ってみようと、思います。
しかし、上のプログラムだけでサーボが動くんですね~~
プログラムって便利だなぁ~
このプログラムってkobaraさんの言っていたpicでデコーダが作りたい って言ってたの もう出来たのでは?
Error(間違い)Warning(警告)Messageとあるみたいで、Messageは無視しても問題ないみたいですよ。
バンク切り替えの時には出るみたいです、
PICマイコンで作るインドアプレーン250P参照
なんてエラーが出る
無視して良いのかな?
ちゃんとTABも表示されました
コメント欄で入力したタグは取り除かれちゃうんですね。
全角で書きますが、実際に使うときには全部半角で書いてくださいね。
<pre>
ソース
</pre>
って書くとソースがそのまま表示される、かもしれません。コメント欄と同じくタグを取っちゃう仕様だとyasさんの言われるように画像を使うしかないですね。
↓こんな感じで。
ソース
ただ、もしかしたらgooブログのシステムでこのが取り除かれちゃったりするかもしれません。
何も出来なかったのですが、2,3日前から取り組んでいました、1からと言っても、おまじないは切り貼りですし、田中さんのカンニングしながらですので....しかもこのプログラムは簡単、信号の立下りを見つけて順番に切り替えていくだけですから、
私はいつも切った貼ったばかりです。
ラベルと命令が一緒になって見にくくなりますね。
よくプログラムの説明に画像でアップされているのを見たことがあります。
あれって この原因で画像なんではないかな?
短いプログラムなら画面コピーでアップすれば大丈夫かも・・
しかし、いつもながら行動が早い ^^;