前回から時間がかかってすみませんガーン


さあ、続き行きましょー

前回のお話で、LEDを点滅させるためのプロジェクトまでできましたので、今回はソースコードを入力してコンパイル(ビルド)しちゃいましょうねビックリマーク


まずはヘッダファイルの入力からですよーチョキ

プロジェクトが表示されている、画面の右上にあるHeaderFilesを右クリックして




New-C Header File...を選択すると以下の画面が表示されます

ここでも、話をわかりやくするため、ファイル名には"led_test001_pic24f”と入力してくださいね音譜



これで、空のヘッダファイルが登録されますので、以下の内容を入力してください。もし、読者の皆さんが最短で勉強したいのであれば、コピペでなく手で入力してください。その方が早くおぼえますよ合格



##include "p24FJ64GA002.h"
#include <stdio.h>

_CONFIG1( JTAGEN_OFF &
GCP_OFF &
GWRP_OFF &
BKBUG_OFF &
COE_OFF &
ICS_PGx1 &
FWDTEN_OFF
)

_CONFIG2( POSCMOD_NONE &
OSCIOFNC_OFF &
FNOSC_FRCPLL &
FNOSC_FRCDIV &
FCKSM_CSDCMD &
IOL1WAY_OFF &
I2C1SEL_PRI &
IESO_ON
)


さあ、今度はソースコードの作成です。ヘッダファイルと同じように、Source Filesを右クリックして、"led_test001”と入力してくださいねビックリマーク


でで、ソースコードの入力ですよー、抜かりなくお願いしますねー

本来ならソースコードにはコメントを書くのですが、HTMLに変換されるカラムがガタガタになるのであえて省いてあります。コード意味は、別途説明しますねドキドキ


#include "led_test001_pic24f.h"

#define LED_OFF (0x01)
#define LED_ON (0x00)
#define INT_100MS (24499)
#define INTVL_1S ((1000 / (100 * 2)) - 1)

int cnt_down_time;


int main(void)
{
TRISB = 0x0000;
CLKDIV = 0;
T1CON = 0b1000000000100000;
PR1 = INT_100MS;
IEC0bits.T1IE = 1;
LATBbits.LATB6 = LED_ON;
cnt_down_time = INTVL_1S;

while(1) {
;
}
return 0;
}


void __attribute__((interrupt, no_auto_psv)) _T1Interrupt(void){
IFS0bits.T1IF = 0;
if (!cnt_down_time--) {
LATBbits.LATB6 = !LATBbits.LATB6;
cnt_down_time = INTVL_1S;
}
}

※すみません、HTML化した時にTABが変になっていますね シラー

  MATLAB Xに入力する時は、TABは4でお願いします


さあ、いよいよ、コンパイルですよー

MATLAB Xのアイコン一覧にあるトンカチマーク のボタンをポチっと押してくださいね。

画面の下に“BUILD SUCCESSFUL (total time ・・・)”とでたら成功ですよ合格

エラーがでたら入力ミスがないか確認してみてくださいな


いよいよ実行です ドキドキ

基板にPicKit3を接続してくださいね。あっ、慌てないであせる

PicKit3の▼マークが基板の1番ピンにあっているか確認を忘れずにね

次に、基板を動かすための電源をPicKit3から供給できるように設定しましょうね


画面右上の”led_test001”を右クリックして、"Properties”をクリックして、Pickit3を選択します

 

 

次に"Option Categories”から"Power”選択し、”Power terget circuit from PICKit3”をチェックします。

 

 


これでOKです、それでは、ビルドしてプログラムをPIC24Fに書き込んでみましょうね。

ICと下矢印の絵が書いてあるアイコン をクリックビックリマーク

画面下に"Programming/Verify complete”が表示されたら、ビルドとプログラム転送および実行が完了しました。


どうですか?

LEDが1秒間で一回点滅していますかはてなマーク


次回は「なぜ、LEDが1秒間に一回点滅しているか?」について、プログラムの意味を説明しますねー合格