亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 4x4keyboardscan.c

?? C語言編程
?? C
字號:
/*單片機典型矩陣鍵盤掃描程序
 
    進行鍵盤掃描及鍵處理時,在程序中直接調用函數KeyProcess()即可。鍵處理函數原型聲明在頭文件Key.h中,鍵處理函數可放在程序的任何地方,一個按鍵對應一個處理函數。
該鍵盤掃描程序去抖動為什么不需軟件延時?因為從無按鍵到鍵被按下,要進行兩次掃描,此間相當于延時去抖動。
該鍵盤掃描程序還有一特色:用二維數組進行按鍵功能處理,使程序更簡單。
/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
矩陣鍵盤鍵值掃描,功能處理函數
本程序處理4*4的矩陣鍵盤,直接用于8051系列單片機,也可移植到其它機型.
行輸出在P1口高四位 列輸入在P1口低四位,如果不同,則需修改鍵值讀取函數
即:GetKeyCode(); 有10個數字鍵0--9,1個小數點,1個負號鍵。
第二功能鍵和回車鍵共用一個,如果連續按下該鍵2秒鐘,則鍵盤進入第二功能。
在鍵盤初始化程序InitKeyboard中把ucKey1和ucKey2賦值0xff
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/

#include "Key.h"


static uchar GetKeyStatus();
////$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
bit KeyProcess() // 為程序方便而設的返回值
{
uchar i,j;
void (*pFunction)(); // 定義函數指針
void (*code Tab[mHorizontalNumber][mVerticalNumber])()= // 定義函數表
{ { ZeroKey, OneKey, FourKey, SevenKey },
{ DotKey, TwoKey, FiveKey, EightKey },
{ NegativeKey, ThreeKey, SixKey, NineKey },
{ EnterOrShiftKey, CancelKey, OptionKey, PauseKey }
}; // 二維數組,對對應16個按鍵
NOP(); NOP();
if(!bScanKey)
return 0; // 掃描時間未到,返回(時間值在定時器中設定)
bScanKey=0;
NOP(); NOP();
j=GetKeyStatus(); // 取鍵值,0xff為無效鍵,即無按鍵
NOP(); NOP();
if(bKeyDown||bKeyPress||bKeyUp)
{
i=j>>4; j=j&0x0f; // 高半字節為行,低半字節為列
if((i<mHorizontalNumber)&&(j<mVerticalNumber))
{
pFunction=Tab[i][j]; // 指向函數入口地址
(*pFunction)(); // 調用函數
}
}
}

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// 判斷按鍵狀態:KeyFree,KeyDown,KeyPress,KeyUp,并返回鍵值
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
static uchar ucKey1,ucKey2,ucKeyBak;
static uchar GetKeyCode();
static uchar GetKeyStatus()
{
uchar c;
NOP(); NOP();
mHorizontalAllLow; // 行輸入全為0
mJugeVertical(c); // 判斷是否有按鍵
NOP(); NOP();
if((ucKey1==0xff)&&(ucKey2==0xff)&&(c==0xff))
{ // 三個值均為0xff,無按鍵
bKeyDown=bKeyPress=bKeyUp=0;
bKeyFree=TRUE; return 0xff; // 沒按鍵
}
else
{
bKeyFree=0;
if(c!=0xff)
c=GetKeyCode(); // 掃描鍵值
if((ucKey1==0xff)&&(ucKey2==c))
{
ucKey1=ucKey2; ucKey2=c;
bKeyDown=TRUE; return c; // 鍵被按下
}
if((ucKey1==ucKey2)&&(ucKey2==c))
{
NOP();
if(bKeyDown)
{
bKeyPress=TRUE; // 鍵被按住
bKeyDown=0;
}
return c;
}
if((ucKey1!=0xff)&&(ucKey2==0xff)&&(c==0xff))
{
ucKeyBak=ucKey1; ucKey1=ucKey2; ucKey2=c;
if(bKeyPress)
{
bKeyUp=TRUE; // 鍵彈起
bKeyPress=0;
}
return ucKeyBak;
}
ucKey1=ucKey2; ucKey2=c;
}
return 0xff;
}

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// 本程序讀按鍵的行列號值,將行列號組合成一個字節后返回, //
// 若讀鍵錯誤,或沒按鍵均返回0xff。// 低半字節為行,高半字節為列
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
static uchar GetKeyCode()
{
uchar i,j,ucTemp,ucH_Value;
NOP(); NOP();
ucH_Value=mH_InitValue;
for(i=0;i<mHorizontalNumber;i++)
{
j=ucH_Value;
mReadVertical(j); // 輸出一行低電平后,讀列值
NOP();
if(j<mKeyOff)
{
j=(~j)&mKeyOff;
ucTemp=0xff; // 列初值,加0x01為0x00,即第0列
do
{ ucTemp=ucTemp+0x01; }
while ((j=j>>1)>0);
i<<=4; // 把行值移到高四位
return(i|ucTemp); // 返回高四位行值,低四位列值
}
ucH_Value<<=1; ucH_Value|=0x01; // 下一行輸出低電平
}
return 0xff;
}

/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
void InitKeyboard()
{
ucKey1=ucKey2=0xff;
}


以下是鍵盤專用頭文件。文件名 Key.h

/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
矩陣鍵盤鍵值掃描,功能處理函數
本程序處理4*4的矩陣鍵盤,適用于8051系列單片機。行輸出在P1口高四位,
列輸入在P1口低四位,如果不同,則需修改鍵值讀取函數即:GetKeyCode();
在鍵盤初始化程序InitKeyboard中把ucKey1和ucKey2賦值0xff
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/

#include "head.h"
#define mHorizontalNumber 4 // 總行數
#define mVerticalNumber 4 // 總列數
#define mKeyOff 0x0f
#define mH_InitValue 0xef
// P14-P17 行 // P10-P13 列
#define mJugeVertical(c) { c=P1&0x0f; c|=0xf0; }
// 判斷列值是否全為高電平,即是否有按鍵
#define mHorizontalAllLow { P1&=0x0f; NOP(); NOP(); NOP();}
// 高四位行線輸出全零
#define mReadVertical(c) { P1=c; NOP(); NOP(); NOP(); \
NOP(); NOP(); c=P1&0x0f; }
// 某一行為低電平,讀鍵值



uchar bdata bucKeyStatus; // 鍵的一般屬性標志位
sbit bKeyDown=bucKeyStatus^0; // KeyDown
sbit bKeyPress=bucKeyStatus^1; // KeyPress
sbit bKeyUp=bucKeyStatus^2; // KeyUp
sbit bKeyFree=bucKeyStatus^3; // KeyFree
sbit bScanKey=bucKeyStatus^4; // 定時掃描標志位


void ZeroKey();
void OneKey();
void TwoKey();
void ThreeKey();
void FourKey();
void FiveKey();
void SixKey();
void SevenKey();
void EightKey();
void NineKey();
void DotKey();
void NegativeKey();


void PauseKey();
void PrintKey();
void OptionKey();
void CancelKey();
void EnterOrShiftKey();
ulong FloatBcdToHex(uchar *);
uint DecToHex(uchar,uchar,uchar,uchar);
uchar HexToDec(uint,uchar);
 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本精品视频一区二区| 蜜臀久久99精品久久久久宅男| 精品嫩草影院久久| 久久久99免费| 精品亚洲免费视频| 日韩欧美在线综合网| 日本 国产 欧美色综合| 正在播放亚洲一区| 亚洲成人黄色小说| 在线视频你懂得一区| 亚洲欧美国产高清| 色婷婷久久99综合精品jk白丝| 一区精品在线播放| 99精品久久99久久久久| 国产精品久久久久久久久免费桃花 | 久久只精品国产| 蜜臀国产一区二区三区在线播放| 欧美一区二区在线免费观看| 日产国产欧美视频一区精品 | 日本久久一区二区三区| 亚洲精品国产无套在线观| 国产精品大尺度| 国精产品一区一区三区mba视频 | 久久蜜臀中文字幕| 精品亚洲aⅴ乱码一区二区三区| 精品国产乱码久久久久久久久| 激情成人综合网| 国产三区在线成人av| 成人高清免费观看| 亚洲人成精品久久久久| 91国产丝袜在线播放| 亚洲高清免费视频| 欧美一区二区成人| 狠狠色丁香久久婷婷综合_中| 国产喂奶挤奶一区二区三区| 亚洲成人一区在线| 日韩精品一区第一页| 久久99久久99小草精品免视看| 2024国产精品| zzijzzij亚洲日本少妇熟睡| 亚洲在线一区二区三区| 欧美人动与zoxxxx乱| 久久成人综合网| 久久99精品国产| 欧美日韩国产小视频| 另类人妖一区二区av| 欧美激情一区二区三区在线| 色94色欧美sute亚洲线路一ni| 日韩中文字幕91| 国产亚洲精品中文字幕| 色婷婷一区二区三区四区| 日韩精品电影在线| 久久精品人人做人人爽97| 91麻豆福利精品推荐| 日韩高清国产一区在线| 国产欧美日韩另类一区| 在线视频欧美精品| 精品一区二区三区av| 国产精品网曝门| 欧美日本在线播放| 国产福利不卡视频| 亚洲影视在线播放| 久久中文字幕电影| 欧美性大战久久久久久久| 久草在线在线精品观看| 亚洲人妖av一区二区| 日韩西西人体444www| bt欧美亚洲午夜电影天堂| 首页综合国产亚洲丝袜| 中文字幕国产一区| 911精品国产一区二区在线| 风间由美性色一区二区三区| 午夜影院在线观看欧美| 中文无字幕一区二区三区| 欧美日韩一本到| 成人动漫视频在线| 青青草国产精品97视觉盛宴| 国产一区二区三区综合| 久久久久久一二三区| 欧美色欧美亚洲另类二区| 国产精品一区二区在线观看不卡| 亚洲成人tv网| 国产精品国产三级国产aⅴ原创 | 处破女av一区二区| 日韩av网站免费在线| 亚洲日本va午夜在线影院| 精品国产免费人成电影在线观看四季| 在线观看视频91| 国产成人鲁色资源国产91色综 | 制服丝袜国产精品| 99精品视频在线观看免费| 精久久久久久久久久久| 亚洲妇女屁股眼交7| 国产精品久久久久久亚洲毛片 | 国产精品区一区二区三| 日韩精品专区在线影院重磅| 欧美日精品一区视频| 99久久久免费精品国产一区二区| 精品一区二区三区免费播放| 日韩成人一级大片| 一区二区三区日韩欧美精品| 国产精品国产三级国产普通话蜜臀| 欧美日韩美少妇| 色菇凉天天综合网| 欧美精品一区二区三区久久久| 极品美女销魂一区二区三区免费| 天天影视涩香欲综合网| 亚洲色大成网站www久久九九| 久久精品视频免费| 精品剧情v国产在线观看在线| 正在播放亚洲一区| 欧美日韩久久久久久| 在线区一区二视频| 91美女在线观看| bt欧美亚洲午夜电影天堂| 成人免费三级在线| 国产不卡视频一区| 国产精品一区三区| 久久国内精品自在自线400部| 日韩综合一区二区| 同产精品九九九| 午夜欧美大尺度福利影院在线看| 亚洲一区二区三区四区五区中文 | 欧美激情一区二区三区| 久久综合丝袜日本网| 精品久久久久久最新网址| 欧美一区2区视频在线观看| 欧美电影在线免费观看| 欧美日韩高清一区二区三区| 欧美日韩三级一区| 欧美视频精品在线观看| 欧美午夜精品久久久| 欧美天天综合网| 欧美日韩不卡在线| 在线不卡欧美精品一区二区三区| 在线播放91灌醉迷j高跟美女| 制服丝袜av成人在线看| 欧美一级电影网站| 日韩一区二区三| 欧美白人最猛性xxxxx69交| 日韩欧美一级二级| 欧美一级欧美三级| 欧美刺激脚交jootjob| 26uuu亚洲综合色欧美| 日韩专区欧美专区| 一区二区三区美女视频| 亚洲线精品一区二区三区八戒| 五月天亚洲精品| 久久国产精品露脸对白| 国产在线不卡一区| 国产不卡视频在线观看| 91网址在线看| 欧美美女一区二区| 欧美成人官网二区| 久久精品无码一区二区三区| 国产精品不卡在线| 亚洲综合视频在线观看| 日韩高清一级片| 国产成人超碰人人澡人人澡| 91免费看视频| 欧美精品亚洲二区| 亚洲精品一区二区三区香蕉 | 欧美成人福利视频| 国产欧美日韩精品在线| 亚洲久本草在线中文字幕| 亚洲va国产va欧美va观看| 老司机精品视频在线| 国产99精品视频| 欧美最新大片在线看| 日韩你懂的电影在线观看| 国产欧美日韩视频一区二区| 亚洲自拍另类综合| 精品一区二区三区免费| 91香蕉视频污| 91精品国产品国语在线不卡| 国产亚洲欧美日韩俺去了| 亚洲激情在线播放| 蜜桃一区二区三区在线| 丰满岳乱妇一区二区三区| 欧美日韩小视频| 久久久久久久久久看片| 亚洲美女在线国产| 六月丁香综合在线视频| 91在线播放网址| 日韩美女一区二区三区四区| 国产精品不卡一区二区三区| 蜜乳av一区二区| 91在线丨porny丨国产| 精品视频资源站| 国产日韩欧美综合一区| 亚洲国产精品久久久男人的天堂| 国产制服丝袜一区| 91福利视频网站| 久久久久久电影| 亚洲国产精品久久不卡毛片 | 欧美视频中文一区二区三区在线观看| 精品国内片67194| 亚洲尤物视频在线| 国产很黄免费观看久久| 欧美日韩成人综合|