今回使用するピン番号は1番(VDD)と8番(VSS)と5番(GP2)です。
AMPLAB IDEを起動させます。
--------------------------------------------------------------------- #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書き込みを実行して下さい。
LEDには極性が有ります、
ピン番号 | 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.