PICでもっと遊ぶその3「EEROMを使ってサーボを“ガガガ”と動かす」夏でも楽しい工作教室(2/3 ページ)

» 2005年07月22日 15時43分 公開
[小林哲雄,ITmedia]
 ;(……ソースコードの続き……)
 INTMAIN
▼▼  MOVWF WBUF ; レジスタ類退避
▼▼  SWAPF STATUS,W
▼▼  BCF STATUS,RP0
 MOVWFSBUF
 ;
 MOVLW0EAH; タイマー再セット
 
▼▼  MOVWF TMR1L
▼▼  MOVLW 0B1H
▼▼  MOVWF TMR1H
 BCFPIR1,TMR1IF
 ;
 RC1SET
▼▼  MOVF RC1POS,W ; サーボ1のデータを送る
▼▼  BTFSC STATUS,Z ; データが0なら送らない
▼▼  GOTO RC2SET ; 中心値128 1-128-255
▼▼  BSF GPIO,GPIO5
▼▼  ; サーボパルス調整値
▼▼  ; 01での幅 80での幅 FFでの幅 W値 前/後NOP数
▼▼ ; MOVLW 0F6H ; 01:0991 80:1499 FF:2007 F6 N1 N1
▼▼ ; MOVLW 0D6H ; 01:0864 80:1499 FF:2134 D6 N1 N2
▼▼  MOVLW 0B6H ; 01:0737 80:1499 FF:2261 B6 N1 N3
 MOVWFCOUNT
 INTLP1
▼▼  NOP ; 前NOP
▼▼  DECFSZ COUNT,F
▼▼  GOTO INTLP1
▼▼  MOVF RC1POS,W
 MOVWFCOUNT
 INTLP2
▼▼  NOP ; 後NOP
▼▼  NOP
▼▼  NOP
▼▼  DECFSZ COUNT,F
▼▼  GOTO INTLP2
 BCFGPIO,GPIO5
 RC2SET
 DECFRC1TIM,F
 RCSETE
 ;
▼▼  SWAPF SBUF,W ; レジスタ類復帰
▼▼  MOVWF STATUS
▼▼  SWAPF WBUF,F
▼▼  SWAPF WBUF,W
▼▼  BSF INTCON,GIE ; 割り込み再許可
 RETFIE
 ;
 ;
 ;
 MAIN
▼▼  CLRWDT ; 割り込み関連初期化
▼▼  CALL 3FFh ; 内蔵オシレーター調整
▼▼  MOVWF OSCCAL
▼▼  BANKSEL T1CON
▼▼  MOVLW B'00000001' ; TMR1 1:1
▼▼  MOVWF T1CON
▼▼  MOVLW B'11000000' ; GIE & PEIE
▼▼  MOVWF INTCON
▼▼  BANKSEL PIE1
▼▼  MOVLW B'10000001' ; EEIE & TMR1IE
▼▼  MOVWF PIE1
▼▼  BANKSEL TMR1L
▼▼  MOVLW 0F0H ; タイマ初期化 20ms
▼▼  MOVWF TMR1L
▼▼  MOVLW 0B1H
 MOVWFTMR1H
 ;
▼▼  CLRF GPIO
▼▼  MOVLW 07h
▼▼  MOVWF CMCON
▼▼  BANKSEL TRISIO
▼▼  CLRF TRISIO
▼▼  CLRF ANSEL
 BANKSELGPIO
 ;
▼▼  MOVLW 080H ; フェイルセーフ
 MOVWFRC1POS
 MAIN01
 CLRFEERPOS
 ;
 ;ここからループ開始
 ;
 MAIN02
 ; EEPOSから二バイト読み出し
 ; RC1POS(サーボ位置)
 ; RC1TOM(サーボ保持時間[20ms単位])
 ; を書き込む。RC1TIMが0ならデータエンドなのでループ
▼▼  BANKSEL EEADR
▼▼  MOVF EERPOS,W
▼▼  MOVWF EEADR ;Address to read
▼▼  BSF EECON1,RD ;EE Read
▼▼  MOVF EEDATA,W ;Move data to W
▼▼  MOVWF RC1POS
▼▼  INCF EEADR , F
▼▼  BSF EECON1,RD ;EE Read
▼▼  MOVF EEDATA,W ;Move data to W
▼▼  MOVWF RC1TIM
▼▼  BCF STATUS,RP0 ; Bank 0
▼▼  INCF EERPOS,F
▼▼  INCF EERPOS,F
▼▼  MOVF RC1TIM,F ; RC1TIM = 0 なら
▼▼  BTFSC STATUS,Z ; データ終了なのでリピート
 GOTOMAIN01
 MAIN03
 ;
 ; RC1TIMが0になるまで待つ
 ; (減算は割り込みルーチンが行う)
 ;
▼▼  MOVF RC1TIM , F
▼▼  BTFSC STATUS,Z
▼▼  GOTO MAIN02
 GOTOMAIN03
 ;(ソースコードは“もうちょっと”続く……)

Copyright © ITmedia, Inc. All Rights Reserved.

アクセストップ10

2026年05月16日 更新
  1. ノートPCもキーボードも丸ごと運べる! 収納付き膝上テーブル「デスクエニウェア2」を試す (2026年05月15日)
  2. 持ち運べる21型相当のディスプレイ! 14型×2画面でコスパに優れるアイ・オーのモバイルディスプレイ「LCD-YC1412DX」を試す (2026年05月14日)
  3. TVにも「Gemini」搭載の時代へ TCLが量子ドット&Mini LED採用の2026年モデルを発表 (2026年05月14日)
  4. 8TB SSDがまさかの50万円超え!? 連休明けのアキバで目立つストレージ高騰と注目の特価マザー (2026年05月16日)
  5. デルが厚さ約15.3mmの新型ノートPC「Dell 14S/16S」を発表 国内ではCore Ultra搭載モデルが発売済み (2026年05月14日)
  6. FIIO、円形パネルを備えたエントリー仕様のデジタルオーディオプレーヤー (2026年05月15日)
  7. エントリークラスの15.3型ゲーミングノートPC「Alienware 15」発表!  Intel/AMDモデルを用意し国内は5月15日発売 (2026年05月14日)
  8. スウェーデンのファンドが「価格.com」「食べログ」のカカクコムを約5900億円で買収へ AI戦略を加速 (2026年05月13日)
  9. カバンに収まるコンパクトな「Ewin 折りたたみ式ワイヤレスキーボード」が32%オフの4746円に (2026年05月13日)
  10. ノートPCの作業領域を劇的に広げる「15.6型 折りたたみトリプルディスプレイ」がタイムセールで8万982円に (2026年05月15日)
最新トピックスPR

過去記事カレンダー

2026年