お初の方は右側カテゴリーより興味のある記事をご覧ください。まとめシリーズがおすすめです。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
;------------------------------------------------
;PIC16F886でタイマー0割り込みを使い、
;PORTCに接続したLEDを順番に点灯させる
;------------------------------------------------
LIST P=PIC16F886
INCLUDE P16F886.INC
;内部クロック使用、番犬OFF、起動時リセットON、コードプロテクトOFF、データプロテクトOFF、デバッガOFF、PortB.3特殊用途無効、PortE.3MCLRE無効
__CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_ON & _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _MCLRE_OFF
ORG 0
GOTO INIT;初期化
ORG 4
GOTO TIMER0;タイマー0割り込み
;------------------------------------------------
INIT
;内部クロック設定
BANKSEL OSCCON
MOVLW 0x00
MOVWF OSCCON
;各入出力ピンをアナログ入力設定からデジタル入出力へ変更
BANKSEL ANSEL
CLRF ANSEL
;タイマー0設定
BANKSEL OPTION_REG
MOVLW 0x04;タイマー0用ククロック分周比
MOVWF OPTION_REG
BANKSEL INTCON
MOVLW 0xA0;タイマー0割り込み有効
MOVWF INTCON
BANKSEL TMR0
CLRF TMR0;タイマー0カウンターリセット
;------------------------------------------------
MAIN
BANKSEL TRISC
CLRF TRISC;PORTC出力
BANKSEL PORTC
MOVLW 0x01;LED1個点灯
MOVWF PORTC
LOOP
NOP;タイマー0割り込み待ち
GOTO LOOP
;------------------------------------------------
TIMER0
BCF INTCON,T0IF;タイマー0割り込みクリア
BANKSEL PORTC
RLF PORTC;点灯LEDをスライド
RETFIE;割り込みから復帰
END
;PIC16F886 LED制御実験
LIST P=PIC16F886
INCLUDE P16F886.INC
;内部クロック利用、番犬OFF、起動時リセットON、コードプロテクトOFF、データプロテクトOFF、デバッガOFF、PortB.3特殊用途無効、PortE.3MCLRE無効
__CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_ON & _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _MCLRE_OFF
ORG 0
;アナログ入力->デジタル入出力
BANKSEL ANSEL
CLRF ANSEL
;各ポートを入力->出力
BANKSEL TRISA
CLRF TRISA
BANKSEL TRISB
CLRF TRISB
BANKSEL TRISC
CLRF TRISC
BANKSEL PORTA
MOVLW 0xFF
MOVWF PORTA
BANKSEL PORTB
MOVLW 0xFF
MOVWF PORTB
BANKSEL PORTC
MOVLW 0xFF
MOVWF PORTC
END
配線はこんな感じ。写真の電源は会社からパクってきたアダプタを使いましたが、どうやらCPUの電源PINを間違えていたらしく、この配線で+-に昨日のUSBモジュールの電源を繋いだら動いたので晴れてUSB電源駆動も出来るようになりました。
__CONFIGの内容をしっかり設定しないとやっぱりちゃんと動かないみたいです。設定内容一覧みたいなのは検索しても見つからなかったので、結構テキトウです。一個一個調べてサンプルコードのコメントとかTips的な解説を読み集めて上のコードになってます。
PIC16F88xは起動時に各ポートがアナログ入力に設定されているらしく、これをちゃんとデジタル入出力に設定したほうがいいみたいです。
今日やっと20個のLEDを点灯させた時点で気づいたんですが、886だと一つで0~9の二桁を表示すると、殆どのポートを使ってしまう為、886で今回の要求を満たせるか怪しくなってきました。購入したRTCモジュールの通信方式はI2Cなのですが、使った事ないので明日から頑張って調べます。
2007/12/09設置