久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

按健連加.減程序

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年07月24日   【字體:
/************************************************************************/
/********按鍵記數(shù)0-99     長(zhǎng)按鍵連續(xù)加或者連續(xù)減實(shí)驗(yàn)******************/
/********按k1鍵加一,超過(guò)一定時(shí)間連續(xù)加一,加到99后k1在按無(wú)效*******/
/********按k2鍵減一,超過(guò)一定時(shí)間連續(xù)減一,減到00后k2在按無(wú)效*******/
/************************************************************************/

/****************宏定義*******************/

#include<reg51.h>

#define uchar unsigned char
#define uint  unsigned int
#define SEG P2  //段碼
#define DIG P0  //位碼

sbit k1=P3^0;  //按鍵加1按鈕
sbit k2=P3^1;  //按鍵減1按鈕
uchar code SegTabl[11] = {0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff};
uchar DispData[8] = {10,10,10,10,10,10,0,0};

uchar   count;    //記數(shù)
uchar IntCount;   //中斷記數(shù)
uchar   keyk1;    //k1按下后等待的時(shí)間
uchar   keyk2;    //k2按下后等待的時(shí)間

void delay(uint);   //延時(shí)函數(shù)
void key(void);    //按鍵判斷函數(shù)
void display(void);   //掃描顯示函數(shù)

/****************主程序********************/

void main(void)
{
//**************硬件初始化***********

 //* 使用定時(shí)器T0,定時(shí)模式,工作方式1;晶振頻率f=22.1184MHz-即1S鐘有22118400個(gè)``````
 //晶振脈沖,也就是22118400/12=1843200個(gè)機(jī)器周期-即1843200個(gè)機(jī)器周期就是`````````
 //1S;考慮到單片機(jī)本身設(shè)計(jì)成倍頻方式,所以實(shí)際上1S是3686400個(gè)機(jī)器周期。 */`*`
 
 DIG = 0xff;    //關(guān)位碼
 TMOD = 0x01;   //選用T0定時(shí)器,T0為定時(shí)方式,工作方式為1````
 TH0 = 0x10;    //中斷初值
 TL0 = 0x00;    //中斷初值
 EA = 1;     //開(kāi)總中斷
 ET0 = 1;    //允許T0中斷
 TR0 = 0;    //關(guān)閉定時(shí)器T0
 
//**************超級(jí)循環(huán)**************
 
 while(1)
 {  
  key();    //調(diào)用按鍵判斷函數(shù)
        display();   //調(diào)用掃描顯示函數(shù)
 }
}

/****************按鍵掃描*******************/

void key(void)
{ 
 uchar q,w;

//******k1按鍵掃描******

 if(k1==0)     //判斷k1是否按下
 {
  delay(5);    //去抖
  if(k1==0)    //在判斷k1是否真的按下
  {
   TR0 = 1;   //開(kāi)啟定時(shí)器0
   keyk1=0;   //k1按鍵按下時(shí)間清0
   count++;   //k1按下就加一
   while(k1==0)  //等待按鍵彈起  
   { 
    display();  //調(diào)用掃描顯示,讓按鍵進(jìn)入等待時(shí)數(shù)碼管也顯示
    if(keyk1 >= 2) //k1按鍵按下超過(guò)1.5秒連續(xù)加一
    {
     if(count!=99) //要顯示的數(shù)超過(guò)99就不執(zhí)行下列語(yǔ)句
     {
      for(w=0;w<8;w++)  //為了使加一的過(guò)程變的緩慢一些,以便看的清
      {      //如果有需要就改變for語(yǔ)句循環(huán)的次數(shù)
       display( );
       delay(2);
       display( );
       delay(2);
       display( );
       delay(2);
       display( );
       delay(2);
       display( );
      }
      count++;    //上面for循環(huán)完畢后記數(shù)加一
     }
    }
   }
  }
 }
 
//*************k2按鍵掃描************
 
 if(k2==0)       
 {
  delay(5);
  if(k2==0)
  {
   TR0 = 1;
   keyk2 = 0;
   if(count)   //記數(shù)值為0不執(zhí)行減一功能
   count--;
   while(k2==0)  //等待按鍵彈起
   {
    display();  //調(diào)用掃描顯示,讓按鍵進(jìn)入等待時(shí)數(shù)碼管也顯示
    if(keyk2 >= 2)
    {
     for(q=0;q<8;q++)
     {
      display( );
      delay(2);
      display( );
      delay(2);
      display( );
      delay(2);
      display( );
      delay(2);
      display( );
     }
      if(count)  //記數(shù)值為0是不執(zhí)行減一功能
      count--;
    }
   }
   //EA = 0;//關(guān)總中斷
   //ET0 = 0;//禁止T0中斷
   TR0 = 0;//關(guān)閉定時(shí)器T0
  }
 }
}

/**************定時(shí)器T0中斷程序****************/

void IntTimer0(void) interrupt 1  
{
 TH0 = 0x10; 
 TL0 = 0x00;
 IntCount++;        //中斷記數(shù)
 if(IntCount == 45)      //中斷60次為1秒    
 {
  IntCount=0;
  keyk1++;       //K1加一
  keyk2++;       //k2加一
 } 
}

/****************掃描顯示******************/

void display(void)
{ 
 uchar i;
 uchar scan = 0xfe;
 if(count >= 99)      //超過(guò)99或者等于99的只顯示99
 count = 99;
 DispData[6] = count/10;    
    DispData[7] = count%10;
 for(i=0;i<8;i++)     //掃描顯示8位
 {
  SEG = SegTabl[DispData[i]];  //輸出顯示碼
  DIG = scan;      //掃描位
  delay(2);      //延時(shí)
  DIG = 0xff;      //關(guān)顯示
  scan = (scan<<1)|0x01;   //掃描下一位
 }
}

/**************延時(shí)****************/

void delay(uint time)
{
 uint i;
 uint j;
 for(i=0;i<time;i++)
 {
  for(j=0;j<130;j++);
 }
}
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 亚洲精品一 | av色在线 | 久久久在线视频 | 亚洲精品国产第一综合99久久 | 精品一区二区三区四区在线 | 国产精品久久99 | 亚洲婷婷六月天 | 亚洲视频欧美视频 | av毛片免费 | 天天天操天天天干 | 一区在线免费视频 | 国产在线精品一区二区三区 | 久久国产欧美日韩精品 | 久热久热| 久久久久国产精品一区二区 | 久久av影院| 国产精品99久久久久久动医院 | 精品一区二区三区在线播放 | 精品视频久久久久久 | 日本成人综合 | 亚洲 欧美 另类 综合 偷拍 | 一级片在线视频 | 午夜爽爽男女免费观看hd | 久久不卡 | 日日夜夜天天 | 先锋资源吧 | av 一区二区三区 | 欧美韩一区二区 | 久久久夜 | 国产成人影院 | 亚洲精品乱码久久久久久按摩观 | 国产美女免费视频 | 91在线观看免费 | 天天躁人人躁人人躁狂躁 | 在线 丝袜 欧美 日韩 制服 | 草久在线| 人人艹人人| 天天操天天操 | 久久久久久国产 | 成人毛片视频在线播放 | 精品福利在线 |