生成されたコードに手を加えてプログラムを完成させよう
Appliletでコードを生成したフォルダを開いてください。図22のようなファイル群ができています。この中のmain.cをテキスト・エディタで開きます。テキスト・エディタの代表的なものは秀丸エディタですが、なければWindows標準のメモ帳でもOKです。
main.cを開くと、長いコメント文の最後に、以下のようなプログラムが記述されています。
void main( void )
{
/* TODO. add user code */
while(1){
;
}
}
これがmain関数(メインかんすう)というもので、C言語で書いたプログラムで一番最初に実行される部分です。どんなに小さなプログラムでも、このmain関数は必ず存在します。関数の中には、
/* TODO. add user code */
という文と、
while(1){
;
}
というコードが記述されています。このwhile文については次回以降で説明します。この部分は無限ループになっていて、今回はとりあえず一種のプログラム停止みたいなものと解釈しておいてください。
さてその上の文の部分は、コメントといって、プログラムに注釈を記述するためのものです。C言語では、/*と*/で囲まれた内容はコメントと解釈するきまりになっています。このコメントには、「ここにユーザ・コード、つまりあなたのプログラムを書いてください」という意味が記述されています。早速以下のように2行を追加してみましょう。行末の;(セミコロン)を忘れないように注意してください。C言語では、実行文の行末は必ず;で終わるきまりです。
void main( void )
{
/* TODO. add user code */
P2.2 = 1;
P4.5 = 1;
while(1){
;
}
}
P2.2 = 1;とP4.5 = 1;が追加したプログラムです。=記号は、代入文といって、左側の変数に右側の値を入れることを意味します。つまり、「P2.2=1;」は、P2.2という変数に1を入れることを意味します。
あれ? P2.2とかP4.5って突然どこから出てきたんだろう? と思われるかもしれません。これは今回使用する78K0S用のC言語の特別な機能のひとつなのです。マイコンには今回使うポートをはじめ、さまざまな機能が内蔵されています。それらの機能は、SFR(Special Function register)と呼ばれる、専用の設定メモリを経由して制御することができるようになっています。このSFRにはそれぞれ固有の名前が付いていて、78K0S用のC言語では、そのSFRの名前を変数として記述することができるようになっているのです。
もう一度、表1を見てみましょう。
| D7(赤) | P123 |
| D6(赤) | P45 |
| D5(赤) | P130 |
| D4(赤) | P23 |
| D3(緑) | P22 |
緑色のLED(D3)が接続されているポートは、P22でした。そして、赤色LED(D6)が接続されているポートはP45です。もう気づかれましたね。先ほど追加した実行文のSFR名ととても似ています。ただ少し違います。P22へのアクセスはP2.2 = 1となっていますし、P45はP4.5となっています。これは単に78K0S用C言語の記述のルールです。P22はAppliletの設定画面でもあったように、ポート2の2ビット目を意味しています、78K0S用C言語では、ポートのある1ビットを指定するときには、ポート名.ビット番号で記述するきまりになっているのです。なのでもし、D6の代わりにD5を点灯させたいときは、P130を1にすればよくて、P130はポート13の0ビット目なのでP13.0 = 1;と記述すればOKです。
では、記述を追加して改造したmain.cを保存してエディタを終了しましょう。

