---------------------------------------------------------------------
#include <pic.h>
#define T0COUT 61 // タイマー0用カウントの初期値(256 - 195 = 61)
int Count ; // タイマーの割込み発生回数をカウントする変数
int LEDflg ; // LEDのON/OFF状態フラグ
// メモリを保護しない(UNPROTECT):外部リセット信号は使用せずにデジタル入力(GP3)ピンとする(MCLRDIS)
// 電源電圧降下常時監視機能ON(BOREN):電源ONから72ms後にプログラムを開始する(PWRTEN)
// ウオッチドックタイマ無し(WDTDIS):内部クロック4MHz使用する(INTIO)
__CONFIG(UNPROTECT & MCLRDIS & BOREN & PWRTEN & WDTDIS & INTIO) ;
// タイマー割込みの処理
void interrupt InterTimer( void )
{
if (T0IF == 1) { // タイマー0の割込み発生か?
TMR0 = T0COUT ; // タイマー0の初期化
Count++ ; // 割込み発生の回数をカウントする
T0IF = 0 ; // タイマー0割込フラグをリセット
if (Count >= 40) { // 割込みを40回カウントすると約1秒
Count = 0 ;
// 1秒毎にLEDのフラグをON/OFFさせる処理
if (LEDflg == 0) LEDflg = 1 ;
else LEDflg = 0 ;
}
}
}
// メインの処理
void main()
{
CMCON = 0x07 ; // コンパレータは使用しない
ANSEL = 0b00000000 ; // アナログは使用しない(すべてデジタルI/Oに割当てる)
TRISIO = 0b00000000 ; // ピンは全て出力に割当てる(GP3は入力のみとなる)
GPIO = 0b00000000 ; // 出力ピンの初期化(全てLOWにする)
OPTION = 0b00000110 ; // 内部クロックでTIMER0を使用、プリスケーラカウント値 1:128
TMR0 = T0COUT ; // タイマー0の初期化
T0IF = 0 ; // タイマー0割込フラグを0にする
Count = 0 ; // 割込み発生の回数カウンターを0にする
T0IE = 1 ; // タイマー0割込みを許可する
GIE = 1 ; // 全割込み処理を許可する
LEDflg = 0 ; // LEDのフラグ状態をOFFとする
while(1) {
// LEDのフラグ状態ON/OFFによりLEDをON/OFFする処理
if (LEDflg == 0) GPIO2 = 0 ; // 5番ピンにLOWを出力する(LED OFF)
else GPIO2 = 1 ; // 5番ピンにHIGHを出力する(LED ON)
}
}
---------------------------------------------------------------------
CコンパイルとPIC書き込みを実行して下さい。
| ピン番号 | 7 | 6 | 5 | 4 | 3 | 2 |
| ピンの名前 | GP0 | GP1 | GP2 | GP3 | GP4 | GP5 |
| 出力ビット名 | GPIO0 | GPIO1 | GPIO2 | GPIO3 | GPIO4 | GPIO5 |
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2011 Shigehiro Kimura All Rights Reserved.