MPLAB Xを試してみた @Linux その2

(続きです)
 では次にソースファイルを作ってみるべ。今回はテストなのでメインファイル一個を作るだけに留める。
 Projectsウィンドウに表示されてる"Source Files"を右クリックして、”New” → ”C Main File"を選択すれば”New C Main File”窓が開くので、ファイル名とフォルダを記入/選択してフィニッシュをポチ。

 するとこんなファイルが生成された。
/*
* File: newmain.c
* Author: kengpong
*
* Created on 2012/02/29, 0:00
*/

#include
#include

/*
*
*/
int main(int argc, char** argv) {

return (EXIT_SUCCESS);
}
テンプレートの内容は変えられるのかもしれないけどまだ探ってない。

ぶっちゃけマイコンのプログラムにおいて、メイン関数に引数が必要なことは無いし、勝手に終ってほしくないから無限ループにする訳でreturnも必要ない。ついでにいうとインクルードも場合によって違うのでいらない。…ってそれじゃテンプレートの意味ないじゃん。
そういう人は”Empty File"を選択すりゃいいのか。

---

そんなこんなで、テスト用プログラムを書いてみた。
こんなんでも、PICのプログラムを書くのは久々だったためちょっと手間取った。情けないのう。
/*
* テスト用プログラム
* PORTDのLEDを交互に点灯させる
*/

#include

/* Configuration bits */
__CONFIG(FOSC_INTRC_NOCLKOUT & FOSC_EC & WDTE_OFF & PWRTE_ON &
MCLRE_ON & CP_OFF & CPD_OFF & BOREN_ON & IESO_OFF & FCMEN_OFF &
LVP_OFF & DEBUG_OFF);

/*レジスタ設定もろもろ
OSCCON : 内蔵オシレータの設定 : 8MHz
ANSEL,ANSELH アナログ機能設定:全てデジタル*/
#define CONFIG_REG() \
OSCCON = 0x71;\
ANSEL = 0;\
ANSELH = 0;\
CCP1CON = 0;\
CCP2CON = 0;\
CM1CON0 = 0;\
CM2CON0 = 0;\
OPTION_REG = 0;\
IOCB = 0;\
WPUB = 0;\
TRISA = 0;\
TRISB = 0;\
TRISC = 0;\
TRISD = 0;\
TRISE = 0;\
PORTA = 0;\
PORTB = 0;\
PORTC = 0;\
PORTD = 0;\
PORTE = 0;

/* 割り込み設定 */
#define CONFIG_INTERRUPTS() \
INTCON = 0;\
PIE1 = 0;\
PIE2 = 0;\
PIR1 = 0;\
PIR2 = 0

/* オシレータ */
#define _XTAL_FREQ 8000000

/* main */
int main(void) {
CONFIG_REG();
CONFIG_INTERRUPTS();

PORTD = 0x55;
while(1){
PORTD ^= 0xff;
__delay_ms(1000);
}

return 0;
}
 特に問題なくプログラムは書けた。内蔵エディタにはEmacs風キーバインド設定が用意されていてありがたい。でも完全に一致してる訳でなく、うっかりすると全然違う操作をしてしまい焦る。細かく設定してやりゃいんだろうけど、とりあえず放置。

 ちなみに、こやつをマイコンに書き込んで実行すると、ポートDに繋がれている8個のLEDのうち偶数番目と奇数番目が、1秒おきに交互に点灯する。(なぜそういう動きをするのか分からない人はもう少しだけ勉強してくださいませ)

 ひとつ気になったのは、__deley_ms()がエディタ上では警告マークが付くこと。ご丁寧に波線でアンダーラインまでひかれる。HI-TECHコンパイラの組込み関数(マクロかもしれないけど)なので、エディタ(IDE)側からだと未定義の関数と解釈されてしまうらしい。融通きかねえなあ。(;^ω^)

 プログラムが出来たら次はコンパイル。上手く動いてくれよ~ ヽ(´ー`)ノ
(続きます)

この記事へのコメント


この記事へのトラックバック