/*
* 629test.c for PIC12F629
* CC5X FREE 4MH内部発振によるLED点滅テスト(0.5秒点灯0.5秒消灯の繰り返し)
*/
//#include ../"12f629.h" // MPLAB 統合環境でコンパイルする場合はあらかじめターゲット
// デバイスを選択するので左記の記述は不要
#define CP_off |= 0x2180 // Bandgap value + CPD(disable) + CP(disable)
// Bandbap value にはとりあえず手持ち個体の '10'
// この値は今回のプログラムでは使わないがとりあえずセット
#define MCLR_off &= ~0x80
#pragma config BODEN = off, MCLR_off, PWRTE = on, WDTE = off, FOSC = 4, CP_off
#pragma cdata[0x3ff] = 0x349c // とりあえず手持ち個体の周波数校正値 '9c' をセット
// 実際の書き込み時は個々の値にあわせてライター上で変更
void delay(char time)
{ // delay time の調整は MPLAB SIM で行うと楽にできる
uns8 i; // 8 bit unsigned (MIN 0, MAX 255)
do {
TMR0 = 0;
while (TMR0 < 127)
;
} while (-- time > 0);
for (i = 0; i < 178; i++)
;
}
void main(void)
{
// 初期設定
#pragma update_RP 1 // Bank1
#asm
DW /*CALL*/ 0x2000 + 0x3ff
#endasm
OSCCAL = W; // OSCCAL レジスタに読み出した校正値をセット
TRISIO = 0b.0000.0000; // すべてのポートを出力に設定
OPTION_REG = 0b.0000.0011; // TMR0 1:16 prescaler divide by 16
CMCON = 0b.0000.0111; // コンパレータ未使用
#pragma update_RP 0 // Bank0
GPIO = 0b.0000.0000; // ゼロで初期化
// メインルーチン
for(;;) {
GPIO0 = 1; // GP0 ON
delay(244); // 499.992 msec
nop();
nop();
nop();
nop();
nop();
nop();
GPIO0 = 0; // GP0 OFF
delay(244);
nop();
nop();
nop();
nop();
}
}