インドアプレーンとロボット

趣味のロボットとインドアプレーンを紹介します。 K O B A R A

プログラム

2007-11-12 00:48:18 | 飛行機 技術情報

PICのプログラムを少し勉強してみました。
LEDピカピカも良いのですが、少し実用的なものという事で、
赤外センサの受けている信号を1個ずつ分けて各ポートに出すだけで
サーボやアンプの信号として使え、そのまま受信機としても使えます。
このプログラムは田中さんの”PICマイコンでつくるインドアプレーン”の本に詳しく解説されていて、プログラムもあるのですが、
あまり読むと同じ物になってしまいそうなので、横目でながめつつ、自分なりにプログラムを組んでみました、
そしてやっと何とか動くプログラムになりました




上がセンサの出力信号 下が各ポートに出力される信号






恥ずかしながら、ソースです。


        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






最新の画像もっと見る

23 コメント

コメント日が  古い順  |   新しい順
おお! (kobara)
2007-11-14 21:50:11
すばらしい!!やっぱジャパ~ンじゃないと!!!
返信する
ついでに (yas)
2007-11-14 20:35:31
10f200も見つけました


http://ww1.microchip.com/downloads/en/DeviceDoc/DS41239C_JP.pdf#search='DS41239C'

返信する
余談ですが・・・ (yas)
2007-11-14 20:23:08
別件でデーターシート検索していたら
PIC10F222の日本語データーシート見つけました

http://ww1.microchip.com/downloads/en/DeviceDoc/DS41270D_JP.pdf#search='PIC10F データシート'

参考までに
返信する
フォートランアレルギー (kobara)
2007-11-13 18:58:38
私も高校ではフォートランを習いましたが、一切覚えていません、覚えていることと言えば、
なんて紙を無駄に使う機械かと、びっくりしただけでした。
PICのプログラムはそんなに構えなくても、
このピンを5Vにする、0Vにする、同じ所をぐるぐる回ってちょっと時間をつぶす、みたいなことですから、大丈夫ですよ。
返信する
マハリキタ (野末)
2007-11-13 18:28:20
は、フィリピンパブでは必須ですよ、yasさん。
kobaraさんは、その道のベテランと見た。
うちの死んだ親父のようにならないことを祈ってます。
高校のときのフォートランで(機械科なのに必要だったの?、おまけに僕が3年のときに、僕の高校では情報処理科が出来た)完全にアレルギーになりました。
エクセルのマクロ程度が限界です。
返信する
マハリキタ (としちゃん)
2007-11-13 16:45:01
って思い出したー 昔とあるところで習ったなー
すっかり忘れていました。これ以上は言えません
返信する
使わなかったの (moto)
2007-11-13 13:15:29
前夜祭のカラオケパブで?
返信する
検索 (kobara)
2007-11-13 12:57:20
してみてください、
返信する
マハリキタ (yas)
2007-11-13 12:43:14
って何ですか? kobaraさんたちの年代でないとわかんない言葉かな?
野末さん 同じ電気屋さんとしてソフトがわかんなくても何とかなりますよ~ ^^;
私なんかZ80の頃から未だにLEDチカチカがやっとですから~
ゆっくり行きましょう
kobaraさんのプログラムができた時点でお願いモード で書き込んで貰いましょう
返信する
いえいえ (kobara)
2007-11-13 11:50:07
野末さんしょげることはありません、マハリキタが言えれば、大丈夫!!って何のことやら....
返信する
話題 (野末)
2007-11-13 11:44:45
についていけない。タガログ語より難しい。
一人しょんぼりです。
返信する
デコーダ (kobara)
2007-11-13 10:30:08
そのものですね、無線のデコーダーには信号が逆なので、信号の立ち上がりをチェックすれば出来ると思います。
頭がプログラムモードの時に一気に
今度はモーターとラダーのPWM機能を持った、受信機を作ってみようと、思います。
返信する
なるほど! (yas)
2007-11-13 10:02:15
デバッガを起動するとアセンブラと機械語が密接な関係であることが分かりますね。
しかし、上のプログラムだけでサーボが動くんですね~~
プログラムって便利だなぁ~
このプログラムってkobaraさんの言っていたpicでデコーダが作りたい って言ってたの もう出来たのでは?
返信する
エラーじゃなくて (kobara)
2007-11-13 00:29:46
Messageではありませんか?OUTPUTのウインドには
Error(間違い)Warning(警告)Messageとあるみたいで、Messageは無視しても問題ないみたいですよ。

バンク切り替えの時には出るみたいです、

PICマイコンで作るインドアプレーン250P参照
返信する
・・・ (yas)
2007-11-12 23:49:48
Register in operand not in bank 0. Ensure that bank bits are correct.

なんてエラーが出る
無視して良いのかな?
返信する
あら! (kobara)
2007-11-12 21:34:08
ほんと、綺麗に表示できました、ありがとうございます、なるほど~!!!
返信する
飛行リーマンさん すごい! (yas)
2007-11-12 21:07:54
早速以前の記事に付け足してみると!!
ちゃんとTABも表示されました
返信する
あれ? (飛行リーマン)
2007-11-12 19:40:36
上のコメントですが...肝心なところが~
コメント欄で入力したタグは取り除かれちゃうんですね。

全角で書きますが、実際に使うときには全部半角で書いてくださいね。

<pre>
ソース
</pre>

って書くとソースがそのまま表示される、かもしれません。コメント欄と同じくタグを取っちゃう仕様だとyasさんの言われるように画像を使うしかないですね。
返信する
ソースは (飛行リーマン)
2007-11-12 19:32:36
タグで囲めばTABやスペースもそのまま表示されると思います。
↓こんな感じで。


ソース


ただ、もしかしたらgooブログのシステムでこのが取り除かれちゃったりするかもしれません。
返信する
多忙 (kobara)
2007-11-12 17:49:17
飛行会後、たましいが抜けたのと、仕事が忙しくて
何も出来なかったのですが、2,3日前から取り組んでいました、1からと言っても、おまじないは切り貼りですし、田中さんのカンニングしながらですので....しかもこのプログラムは簡単、信号の立下りを見つけて順番に切り替えていくだけですから、
返信する
多忙で (としちゃん)
2007-11-12 16:55:07
飛行会後静かだと思ったら、PICお勉強していたとは早速コピーしてMAKEしてみました。MPLABで問題なくできます。これから焼き込んで遊んでみます。プログラム零から作るなんて凄いニャー
私はいつも切った貼ったばかりです。
返信する
そうなんですよ (yas)
2007-11-12 07:35:30
私も以前アップした時そうなりました。
ラベルと命令が一緒になって見にくくなりますね。
よくプログラムの説明に画像でアップされているのを見たことがあります。
あれって この原因で画像なんではないかな?
短いプログラムなら画面コピーでアップすれば大丈夫かも・・

しかし、いつもながら行動が早い ^^;
返信する
どうすれば (kobara)
2007-11-12 01:10:26
ソースファイルをブログに上げると、TABやスペースをなくされてしまって、読みずらいこと、どうすればいいの???
返信する

コメントを投稿