アマチュア無線や電子工作,バイクの話などを徒然なるままに書き散らすメモ程度のblogです.


by jq1ocr

【mbed】DigitalOut と BusOut

最初に動作確認する為の HelloWorld はこんなでした.
d0106518_2061284.jpg

ここから分かるのは,最初に mbed.h を include して,LED1という I/O (Oだけだろうけど)をディジタル出力にするには DigitalOut というので宣言すること,あとは wait(#) で#秒間の delay がかけられることです.LPC1768 には四つの LED がついているので,多分 LED1〜LED4 という名前だろうと作ったのが次.
d0106518_20111153.jpg
ただ羅列しただけですが,LED1から4まで順番に点滅しました.ここまでは前回のお話

さて,LED を順番につけていったりするとき,このような宣言だとばらばらで困りますね.そこで BusOut というので宣言します.具体的にはこんな感じ.
d0106518_044571.jpg

順番に見ると分かりますが,myled を4ビットの変数とし,最初に1(1は0ビットずらしても1)を入れ LED1 を点灯,その後1ビット,2ビットとずらしたものを入れていきます.すると,前のプログラムと同じ事が出来るわけです.BusOut がこれで分かりました.

そういえばプログラムの授業ではY先生から(リソースが潤沢なら)プログラムは見てすぐ分かるように書け,短くしようとしてトリッキーにするな,ということを言われました.その点からすると,単に LED を点滅させるプログラムとしては,何らかの特別な意図がない限りは前者が正解で,後のは同じ結果でも見た瞬間分からなければダメなプログラムということになります.もちろんシフトさせていくことに意味があったりするのであれば後が正しいといえそうです.

結果が同じであったとしても,考え方によって書き方が違うというのは,正しいか否かという問題以前にも,プログラムににじみ出てきますよね.逆にプログラムを見ることで,その人がどのような考え方をしているのか分かっておもしろいと思うこともしばしばです.他人ではなく,自分が書いたプログラムでさえも,後日見ると「へぇ〜」と思ったりすることもあるくらいですが.笑
[PR]
by jq1ocr | 2012-03-31 20:22 | マイコン・電子工作 | Comments(0)