專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

按鍵改變流水燈速度

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2009年10月13日   【字體:

/*
程序效果:有三個按鍵,按下其中任意一個流水燈的速度改變
*/
#include<reg52.h> //52系列單片機(jī)的頭文件
#define uchar unsigned char//宏定義
#define uint  unsigned int
uchar count=40,flag=0; //定義剛開始的流水燈的速度,后一個為標(biāo)志變量
void main()
{
   uchar i=0;//定義局部變量
   EA=1; //打開總中斷
   ET0=1; //打開定時器
   TR0=1; //啟動定時器
   TH0=(65536-50000)/256; //裝初值
   TL0=(65536-50000)%256;    
   P2=0xfe;   //點亮第一個數(shù)碼管,為下次循環(huán)做準(zhǔn)備
   while(1)
   {
      if(flag)   //flag被置位
      {
         flag=0;//清零,為下次做準(zhǔn)備
         P2=~P2; //取反
         P2<<=1; //左移一位
         P2=~P2;  //取反
         i++;
         if(i==8) //移到第八個數(shù)碼管,則從新裝初值
         {
            i=0;
            P2=0xfe;
         }
      }
      P0=0xf0;   //賦初值
      if((P0&0xf0)!=0xf0) //判斷是否有按鍵按下
      {
         if(P0==0x70) //按下第一個按鍵
            count=60; //給count從新賦值
         if(P0==0xb0)
            count=20;  
         if(P0==0xd0)  
            count=10;
      }
   }
}
void time0() interrupt 1 //定時器0
{
   static uchar cnt; //定義靜態(tài)變量
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   cnt++;     //計數(shù)
   if(cnt==count)
   {
    cnt=0;    //清零
    flag=1;   //置標(biāo)志位
   }
}
 

關(guān)閉窗口