2008年04月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

My Photos

www.flickr.com
This is a Flickr badge showing public photos from suganogasu. Make your own badge here.

« Appleのプレゼン映像 | メイン | 中居君のサムガールSMAP »

ATMELマイコンでLEDを光らせよう

電子おもちゃ設計論の授業課題が全然進んでいないのだが、とりあえずマイコンで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)だけが点灯ってことになるらしいのだが、なぜそうなるのかが、わからない。
わかる方、是非アドバイスを。

トラックバック

このエントリーのトラックバックURL:
http://www.sugamemo.com/cgi-bin/mt/mt-tb.cgi/344

コメント (1)

if((inp(PINB) & 0x01) != 0x00)

「PINBの最下位1ビットが0でなければ」という意味ではないでしょうか。「&」は論理演算ではなくビット演算だと思います。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)




About

2004年07月01日 02:30に投稿されたエントリーのページです。

ひとつ前の投稿は「Appleのプレゼン映像」です。

次の投稿は「中居君のサムガールSMAP」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

About ATMELマイコンでLEDを光らせよう

ブログ「すがメモ/SUGAMEMO」のカテゴリ「ATMELマイコンでLEDを光らせよう」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはmobileです。

次のカテゴリはmovieです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.