電子おもちゃ設計論の授業課題が全然進んでいないのだが、とりあえずマイコンでLEDを光らせる「最も単純な回路」が動いた。ガイの協力というか、ガイに寄生したというか、とりあえずガイに迷惑をかけたのは間違いなさそうなのだが、とりあえず動いた。ガイごめんなさい。

マイコン側のプログラムは以下。いささか、わからない部分が多い。
int main( void )
{
io8bit nowled ; ← nowledっていうio8bit型の変数を宣言
outp(0xff,DDRD); /* PD1-PD6 PortD for output */
↑PD1-6をアウトプットのためのポートDとして設定
outp(0xfe,DDRB); /* PB0-PB1 PortB for input */
↑PD0-1をアウトプットのためのポートBとして設定
nowled = 0x00; /* LED init all Low */
↑変数nowledを0x00で初期化
for (;;)
{
if((inp(PINB) & 0x01) != 0x00) /* check switch */
↑もしPINBが0じゃなかったら、&0x01の意味がわからん。
nowled = 0x01; /* LED0 on set */
↑nowledを0x01(点灯)に
else
nowled = 0x00; /* LED off set */
↑それ以外の場合、nowledを0x00(消灯)に
outp(nowled, PORTD); /* LED out */
↑PORTDにnowledを入れる
}
}
で、このプログラムで、PD0 端子(Pin 2)だけが点灯ってことになるらしいのだが、なぜそうなるのかが、わからない。
わかる方、是非アドバイスを。










コメント (1)
if((inp(PINB) & 0x01) != 0x00)
「PINBの最下位1ビットが0でなければ」という意味ではないでしょうか。「&」は論理演算ではなくビット演算だと思います。
投稿者: アキヤマ | 2004年07月02日 11:35
日時: 2004年07月02日 11:35