GOGOGO高清完整国语,GOGOGO在线观看免费观看完整版高清,GOGOGO免费高清完整,GOGOGO高清在线观看免费视频,GOGOGO日本高清国语完整,GOGOGO免费高清完整版

技術熱線: 4007-888-234

技術支持

探討按鍵處理的C程序

更新時間: 2019-03-23

十年專注單片機方案開發的方案公司英銳恩,與您探討按鍵處理的C程序。英銳恩現提供服務產品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。

//**********************************************
//**********   鍵程序   *************************
//**********************************************

//判斷鍵是否松開
void keyoff(void)
{
unsigned char temp;
while(1)
{
delayms(200); //延時200ms,以保證按確認鍵,開停鍵松開后才進入程序
  temp=PORTD;

//判斷健是否松開,如果松開,則退出循環
  if(temp==keytemp)
    { break;}
  }  
}

//******************************************
//判斷鍵是否連續按下
void keykey(unsigned char tmp)
{
unsigned char temp;
delayms(5);  //延時5ms
temp=PORTD;   //再讀鍵值  

//如果松開
if(temp!=tmp)
{keynum=0;}

//沒松開
else
{
  keynum++;
  if(keynum>=20)
    { keynum=20;}
    if(keynum<=5)
      {delayms(250);delayms(250);delayms(250);}
    else if(keynum<=10)
      {delayms(250);delayms(250);}
    else if(keynum<=15)
      {delayms(50);} 

 else
      {delayms(10);}
 
  }
}

//*********************************************
//鍵盤鍵值判斷
unsigned char keysub(void)
{   //傳回鍵值
unsigned char temp1,temp2;//存儲PORTD值
unsigned char key;         //設定鍵值 

temp1=PORTD;               //讀PORTD口
delayms(10);               //延時10ms,防抖動
temp2=PORTD;
if((temp1==temp2)&&(temp2!=keytemp))
{//有鍵按下
  if((temp2&0X40)==0)  
   {
     key=1;      //確認鍵---第6位
     keyoff(); /鍵松開
   }

  else if((temp2&0X20)==0)
   {
     key=2;      //增---第5位
     keykey(temp2); //連續增 

}

  else if((temp2&0X10)==0)
   {
     key=3;      //減---第4位
     keykey(temp2); //連續減
   }

  else if((temp2&0X80)==0)
   {
     key=4;     //開/停鍵---第7位
     keyoff();
   }
  }//有鍵按下

  else   

{ //無鍵按下
    key=9;    
    keynum=0;   //恢復keynum為0,取消連續鍵值 
  }

return(key);      //返回鍵值
}

//鍵程序結束

(文源網絡,侵刪)

404
返回首頁 |  返回上一頁
欢迎光临: 方城县| 华亭县| 冕宁县| 花莲县| 定边县| 固原市| 普安县| 化州市| 汝城县| 雷山县| 浮梁县| 二手房| 绥滨县| 大名县| 忻城县| 抚州市| 长阳| 武夷山市| 昌黎县| 红安县| 虎林市| 噶尔县| 调兵山市| 若羌县| 沂水县| 蓝田县| 西乡县| 东辽县| 抚宁县| 盖州市| 遂川县| 兴文县| 辽中县| 社旗县| 车致| 休宁县| 三亚市| 新乡市| 响水县| 神池县| 霞浦县|