pp.46-73
Lチカで動作を確認する。IOの向きを設定するロジックがTRISxとAVRのDDRxとで逆であった。以後すべて、IDEはMPLAB Xを、コンパイラはXC8を 、書き込み装置はPICkit3を使い、MCCは一切使わない。
#include <xc.h> #define _XTAL_FREQ 4000000 // クロックを定義する(ディレイ函数用)。4 MHz。 __CONFIG( FOSC_INTOSC // 内蔵オシレーターを使う。 & MCLRE_OFF // MCLRを無効化する。だからRA5が使える。 & WDTE_OFF // ウォッチドッグタイマーを無効化する。 ); int main(){ OSCCON = (0b1101 << 3); // OSCILLATOR CONTROL REGISTER。4 MHz。 TRISB = 0x00; // ポートBのIOを全部OUTにする。0でOUT、1でIN。 LATB = 0xff; // 一旦ポートBを全部Hにする。シンクなので全部のLEDが消える。 while(1){ LATB0 = 0; __delay_ms(800); // RB0からLを出力する。シンクなのでLEDが点く。 LATB0 = 1; __delay_ms(200); // RB0からHを出力する。シンクなのでLEDが消える。 } return 0; }