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; // 全体割り込み許可
}
// ========================== ここまで ==============================