;(……ソースコードの続き……)
INTMAIN
▼▼ |
MOVWF |
WBUF |
|
|
; レジスタ類退避 |
▼▼ |
SWAPF |
STATUS,W |
▼▼ |
BCF |
|
STATUS,RP0 |
MOVWFSBUF |
;
▼▼ |
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
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
;
;
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.