欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

用C語言實現鍵控彩燈系統

作者:佚名   來源:本站原創   點擊數:  更新時間:2011年06月08日   【字體:

      用按鍵(采用外部中斷方式)控制彩燈的運行。通過按動按鍵,彩燈在三種閃亮方式(左移,右移和自定義花樣)之間切換。

        在主程序中,設置一個判斷的的標志變量flag,當沒有中斷發生時,標志flag的值沒有被改變,程序保持運行使彩燈按其中某一種花樣閃亮顯示。若按下鍵后,使單片機產生中斷,中斷函數被調用,則標志flag的值將發生一次改變(這里的中斷函數就是修改flag的值),在退出中斷后,主程序再次執行到判斷標志flag時,由于標志flag的值已經是新的值,所以將執行另一彩燈控制子程序,彩燈將按另一種花樣進行顯示。

        需要說明一點是:如果產生中斷的是低電平不是由按鍵產生的,而是由于其他按鍵產生的沒有抖動的信號,在中斷程序中則不需要消抖處理。

 源程序:

#include     "reg51.h"

#define   uchar  unsigned  char

uchar   flag;

uchar   light,assum;

void  delay05s()

{

    unsigned  char   i,j,k;

     for(i=5;i>0;i--)

      for(j=200;j>0;j--)

        for(k=250;k>0;k--);

}

void   delay10ms(void)

{

    unsigned   char  i,j;

   for(i=20;i>0;i--)

     for(j=250;j>0;j--)

} 

void   left()

{

   light=light<<1;

   if(light==1)  light=0x01;

   P2=~light;

}

void  right()

{

    light=light>>1;

    if(light==0)  light=0x80;

    P2=~light;

}

void  assum()

{

   uchar  code  dispcode[8]={0x7e,0xbd.0xdb,0xe7,0xdb,0xbd,0x7e,0xff};

   if(assum==7)   assum=0;

   else

  assum++;

}

void  main()

{

   IT0=1;

  EX0=1;

  EA==1;

  flag=1;

  light=0x01;

  assum=0;

  while(1)

    {

         switch(flag)

             {

                   case  1:  left();   break;

                   case  2:   right();    break;

                   case  3:   assum()   break;

             }

        delay05s();

    }

}

void  int-0()   interrupt   0

{

     delay10ms();

     if(INT0==0)

       {

          flag++;

          if(flag>3)   flag=1;

       }

}
關閉窗口

相關文章