概要
AVRStudio+WinAVRでAVRのプログラムを書くときのヒント集.
ほかにも何かあればどんどん追加してください.
I/Oレジスタ中のビットの設定
WinAVRでは,各レジスタのビットに対応するマクロが定義されている.これを活用すると,レジスタの値を設定するときのコードが分かりやすくなる・・・かもしれない.
bv_usage.c // IOレジスタのビットの設定方法. // 例として,mega88でTIMER0を使ってOC0A/OC0Bから // PWMを出す設定をする. TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM01) | _BV(WGM00); TCCR0B = _BV(CS00); // PD5を出力に,PD2を入力にする. DDRD |= _BV(PD5); DDRD &= ~_BV(PD2);
_BV(n)は関数形式マクロで,(1<<n)に置き換えられます.つまり,n番目のビットだけが1となる整数を得られます.
(例1) _BV(0) → (1<<0) → 00000001(2)
(例2) _BV(3) → (1<<3) → 00001000(2) |