CodeZine(コードジン)

特集ページ一覧

繰り返し

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/10/10 15:30

目次

プログラムを書く

 練習プログラムは、main.cに書きます。ソース・ファイルのmain.cをダブルクリックするとmain.cの編集ウィンドウが開きます。冒頭にコメント文がたくさんありますが、これはとばして、ファイルの末尾に初期のサンプル・ソースが記述されています。

void main( void )
{
    /* TODO. add user code */
    while(1){
        ;
    }
}

 これは以前の連載記事「ハードウェアの話とコードの生成」でも登場しました。もうこのプログラムはもう読めますね。はい、無限ループが記述されています。今回の練習プログラムでも、最後は無限ループにする予定ですから、これはそのまま使いましょう。そして、今回やりたい内容は/* TODO. add user code */を消して、そこに記述します。

/* TODO. add user code */は残しておいてもかまいません

LEDの全消灯

 まず最初にやることは、LEDの全消灯です。以前の連載記事「ハードウェアの話とコードの生成」にも出てきましたが再度掲載します。各LEDはそれぞれ表1のようにポートに接続されています。各ポートを1にすると点灯、0にすると消灯です。

表1:LEDの接続ポート
D7(赤) P123
D6(赤) P45
D5(赤) P130
D4(赤) P23
D3(緑) P22

 これをプログラムに書くと、以下のようになります。

void main( void )
{
    P12.3 = 0 ;
    P4.5 = 0 ;
    P13.0 = 0 ;
    P2.3 = 0 ;
    P2.2 = 0;

    while(1){
        ;
    }
}

 あれ?P123はP12.3なの?と思った方は、もう一度「ハードウェアの話とコードの生成」を読み直してみてください。P123は実際はポート12の第3番目の端子なので、プログラムではP12.3という記述をします。他のポートも同様です。

スプーンの音待ち

 次に、スプーンの音待ちです。これは少し前に説明した通りです。P30が1の間待ちましょう。

void main( void )
{
    P12.3 = 0 ;
    P4.5 = 0 ;
    P13.0 = 0 ;
    P2.3 = 0 ;
    P2.2 = 0;

    while( P3.0 == 1 ){
;
}
while(1){ ; } }

LEDを点灯

 最後に、音待ちループを抜けたときにLEDを点灯させる命令を書きます。D7を光らせる場合は、P123ですから以下のようになります。

void main( void )
{
    P12.3 = 0 ;
    P4.5 = 0 ;
    P13.0 = 0 ;
    P2.3 = 0 ;
    P2.2 = 0;

    while( P3.0 == 1 ){
        ;
    }

    P12.3 = 1 ;

    while(1){
        ;
    }
}

 これで、当初の目的の、「スプーンを叩いたらLEDが点灯する」動作をするはずですね。長くなってしまいましたので、今回はここまでにします。

 もうシミュレータも実際の基板へのプログラムの転送方法もこれまでにやりました。自信のあるひとは、以前の記事を参考に、今回作ったプログラムがうまくいくか試してみてください。ひとつヒントを書きますと、シミュレータでは超音波マイクはありませんので、かわりに押しボタンスイッチである(ボタン)を使います。

 次回はこれらの解説と、もうひとつのwhile文であるdo~while文を学びます。それではまた。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:たった5つのルールではじめるC言語開発

もっと読む

著者プロフィール

  • 舘 伸幸(タチ ノブユキ)

    NECマイクロシステム株式会社 勤務 NPO法人SESSAME 所属 開発ツールのソフトウェア開発を経て組込みソフトウェア開発に従事。プライベートにも半田ごては手放さない。 2006年からSESSAME に参加。若い世代に物を作る楽しさを伝えていきたい。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5