/* * 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(); } }