TOPMPLAB XC8編(PIC12F675)> (02)LEDを点滅させる(PIC12F675 XC8)> ソース

LEDを点滅させる(ソース)
(PIC12F675 XC8)

更新日2012.5.20
作成日2008.10.5


以下のソースを取り込んで、コンパイル→PIC書き込み→実行して下さい。

// ========================== ここから ==============================
//ファイル名	led_onoff.c
//作成日	2008.9.28
//更新日	2012.5.12
//作成者	mit.ueno
//バージョン	1.1
//コンパイラ	MPLAB XC8
//PIC	PIC12F675
//クロック	4MHz(INTIO)
//概要
//	GP4,5のLEDを0.5秒間隔で点滅させる
//	XC8用に非互換修正
//使用ポート
//	GP4:LED
//	GP5:LED

#include "pic.h"

//xc8	__CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS);
__CONFIG(FOSC_INTRCIO & WDTE_OFF & PWRTE_ON & MCLRE_OFF);

static void pic_init();
static void Delay_ms(unsigned char ms);
static void Delay_1ms();

// ================ メイン処理 ======================
main()	{
	pic_init();			// PICの初期化

	while(1) {
		GPIO5 = 1;
		GPIO4 = 0;
		Delay_ms(250);
		Delay_ms(250);
		GPIO5 = 0;
		GPIO4 = 1;
		Delay_ms(250);
		Delay_ms(250);
	}
}

// =============== PICの初期化 ======================
static void pic_init() {
	GPIO = 0;
	CMCON = 0x07;		// コンパレータ未使用
	ANSEL = 0x00;		// AN未使用
	TRISIO = 0x0F;		// GP4,5:out
}

// =============== 1mS×ms ウェイトルーチン =======
static void Delay_ms(unsigned char ms) {
	unsigned char c;
	for (c=ms ; c>0 ; c--) {
		Delay_1ms();
	}
}

// =============== 1mSウェイトルーチン ============
static void Delay_1ms() {
	unsigned int cnt;
	unsigned int i;
	cnt = 76;

	for	(i=0 ; i<cnt ; i++) {
		NOP();
	}
}
// ========================== ここまで ==============================