忍者ブログ

InstantHomepage

お初の方は右側カテゴリーより興味のある記事をご覧ください。まとめシリーズがおすすめです。

P16F886タイマー割り込み

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

P16F886タイマー割り込み


UNI_1817.jpg

タイマー割り込みでLED点灯っていうのをやってみました。当初はRTCに繋いでちゃんとやる予定だったんですが、殆どのRTCで採用されている通信形式であるI2Cが思った以上に難しそうだったので諦めて実現方法を大きく変えました。

単純にPIC内部のタイマー割り込みを1秒周期にして、その割り込みで時間のカウントアップ、メインルーチン内での出力処理という形にする予定です。精度はおそらく犠牲になりますが、まともな水晶振動子を使えば、実用範囲内じゃなかと思ってます。

ただ、買ってきた水晶振動子から1秒を作るのは周波数的にめんどくさいので、来週また秋葉へ行かなければならなそうです。一応今日作ったサンプルソースで予定の水晶振動子を接続したら、タイマー用のクロック選択だけ変更すれば綺麗に1秒が取れると思ってます。

サンプルソース

;------------------------------------------------
;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


使う予定の水晶振動子
akizukidenshi.com/catalog/g/gP-04005/

拍手[0回]

PR

コメント

最新トラックバック

プロフィール

名前:120
年齢:1904
性別:男性
誕生:0120/02/28
職業:情報系奴隷
趣味:色々
自己紹介:
熱し易く冷め易い、そんな人間です。

mail(@要変更)
xelloss120@hotmail.com

カウンター

2007/12/09設置

バーコード