« AVRライタ その2 | トップページ | キーボード »

2006年6月 9日 (金)

AVR入門

printf( "hello world !\n" );

ぽちぽちとテストプログラムを書いて AVR の世界を味わって
見たいと思う。テストプログラムと言えば(文字出力のある
処理系ならば)お約束として"hello world !"と表示したいところ。
しかし、コントローラーワンチップのテストに文字出力なんて
望めるはずもない。

なので、この手の場合のお約束として"LEDチカチカ"をやって
見たいと思う。あまりにベタな展開だと思うが。

  1. PB0 → タクトスイッチ → VSS
  2. PB1 → LED → それなりの電流制限抵抗 → VCC

こんな具合にブレッドボードに部品を配置

Avrtest00 

 

 

タクトスイッチを押すとLEDが灯るというコードを書くことにする。

「スイッチを押すとLEDが点灯するだけの回路なら、
間に AVR なんか挟むことないじゃん。」

という気分が猛烈に沸いてくるが、構わず AVRStudio を起動する。
インストラクション表を片手にコーディングしていると

LDI     R0, ( 1<< SWITCHBIT ) ; SWITCHBIT = 0 ← PortB 第0ビット

でつまづく。
何でこれがエラーなの?とパニックになりかけるが、コード一覧表で
LDI 命令のディスティネーションオペランドの指定に4ビット分しか
割り当てが無い事を発見し納得。よくよく見ると LDI 命令は
R16 から R31 しか使えないという記述もある。

マニュアルはよく読め>自分。

確かに、他人が書いたコードを見るとレジスタはR16から使われて
いる事に気づき、今更ながら納得。
「命令の直行性」という言葉に疑念を懐きつつ、使用レジスタを
変更する事でプログラムは無事動作。満足。

今夜はスパークリング麦茶(ビールとも言う)を飲んでいるので
これ以上の深追いはしないことにする。
↑つい見栄をはってしまったが、正直に言うと飲んだのは
"その他の雑酒2"だった。

|

« AVRライタ その2 | トップページ | キーボード »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/180469/10457625

この記事へのトラックバック一覧です: AVR入門:

« AVRライタ その2 | トップページ | キーボード »