TOP>MPLAB XC8編(PIC12F675)> (03)LEDを点滅させる(TMR0割込み,PIC12F675 XC8)> ソース
LEDを点滅させる(ソース)
− TMR0割込み −
(PIC12F675 XC8)
更新日2012.5.20 |
作成日2008.10.5 |
以下のソースを取り込んで、コンパイル→PIC書き込み→実行して下さい。
// ========================== ここから ============================== //ファイル名 led_onoff.c //作成日 2008.9.28 //更新日 2012.5.11 //作成者 mit.ueno //バージョン 1.1 //コンパイラ MPLAB XC8 //PIC PIC12F675 //クロック 4MHz(INTIO) //概要 // GP4,5のLEDを0.5秒間隔で点滅させる // TMR0割り込み使用 // clock 4MHz // 命令 1μS // TMR0 256(フリーラン) // PRE_sc 32 // 割込み 1μS×256×32=8.192mS //使用ポート // GP4:LED // GP5:LED #include "pic.h" static void pic_init(); static unsigned char Cnt500mS; // 8.192mS*61=499.7mS static bit T500mS; //XC8 __CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS); __CONFIG(FOSC_INTRCIO & WDTE_OFF & PWRTE_ON & MCLRE_OFF); // =================== 割り込み処理 ==================== static void interrupt intr(void) { T0IF = 0; // TMR0割り込みクリア Cnt500mS--; if (Cnt500mS == 0) { Cnt500mS = 61; T500mS = 1; // 500mSフラグセット } } // ==================== メイン処理 =========================== main() { pic_init(); // PICの初期化 Cnt500mS = 61; T500mS = 0; while(1) { if (T500mS) { T500mS = 0; if (GPIO5) { GPIO5 = 0; GPIO4 = 1; } else { GPIO5 = 1; GPIO4 = 0; } } } } // ==================== PICの初期化 =========================== static void pic_init() { GPIO = 0; CMCON = 0x07; // コンパレータ未使用 ANSEL = 0; // AN未使用 TRISIO = 0x0F; // GP4,5:out GPIO = 0; //XC8 OPTION = 0x84; // プリスケーラ:32 OPTION_REG = 0x84; // プリスケーラ:32 TMR0 = 0x00; T0IE = 1; // TMR0割り込み許可 GIE = 1; // 全体割り込み許可 } // ========================== ここまで ==============================