《键盘C语言程序》word版Word格式.docx
- 文档编号:20831283
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:10
- 大小:19.60KB
《键盘C语言程序》word版Word格式.docx
《《键盘C语言程序》word版Word格式.docx》由会员分享,可在线阅读,更多相关《《键盘C语言程序》word版Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
//
PieCtrlRegs.PIEACK.all=0xFFFF;
//PIEACK_GROUP1;
PieCtrlRegs.PIEACK.bit.ACK7=1;
EDIS;
EINT;
//EnableGlobalinterruptINTM
ERTM;
//EnableGlobalrealtimeinterruptDBGM
for(;
;
)
{
asm("
nop"
//Resetthewatchdogcounter
KickDog();
}
}
keyboard.h"
KeyboardObj:
:
KeyboardObj(void)
Init();
voidKeyboardObj:
Init(void)
for(inti=0;
i<
sizeof(PressCount);
i++)
PressCount[i]=0;
Count=0;
Exec(void)
typedefvoid(KeyboardObj:
*FunctionPtr)(void);
//函数指针
staticconstFunctionPtrKeyboardCommandTab[3][KeyboardNumbers]=
&
Key01,
Key02,
Key03,
Key04,
Key05,
Key06,
Key07,
Key08
},//放键表
Key11,
Key12,
Key13,
Key14,
Key15,
Key16,
Key17,
Key18
},//短压表
Key21,
Key22,
Key23,
Key24,
Key25,
Key26,
Key27,
Key28
}//长压表
};
unsignedcharKeyCount;
Count%=KeyboardNumbers;
KeyCount=PressCount[Count];
//取压键次数
if(Scan()==Count+1)//有键压下
KeyCount++;
//压键计数
if(KeyCount>
=KeyboardPushTimes)
if(KeyCount==KeyboardPushTimes)//短压键
System.BeepOn();
(:
Keyboard.*KeyboardCommandTab[1][Count])();
if(KeyCount==KeyboardLongPushTimes)//长压键
Keyboard.*KeyboardCommandTab[2][Count])();
KeyCount=KeyboardPushTimes;
else//无键压下
0)//以前有键压下
KeyboardPushTimes)
else
KeyCount--;
//放键计数
if(KeyCount==0)//键释放
System.BeepOff();
Keyboard.*KeyboardCommandTab[0][Count])();
}
KeyCount=0;
PressCount[Count]=KeyCount;
Count++;
unsignedcharKeyboardObj:
Scan(void)
volatileunsignedcharKeyVal=0;
KeyVal=LedKeyRegs;
switch(Count)
case0:
if(!
(KeyVal&
ConstKEY1))
KeyVal=Count+1;
break;
case1:
ConstKEY2))
case2:
ConstKEY3))
case3:
ConstKEY4))
case4:
ConstKEY5))
case5:
ConstKEY6))
case6:
ConstKEY7))
case7:
ConstKEY8))
returnKeyVal;
//KEY1放键事件处理
Key01(void)
KEY1键释放事件"
//KEY2放键事件处理
Key02(void)
KEY2键释放事件"
//KEY3放键事件处理
Key03(void)
KEY3键释放事件"
//KEY4放键事件处理
Key04(void)
KEY4键释放事件"
//KEY5放键事件处理
Key05(void)
KEY5键释放事件"
//KEY6放键事件处理
Key06(void)
KEY6键释放事件"
//KEY7放键事件处理
Key07(void)
KEY7键释放事件"
//KEY8放键事件处理
Key08(void)
KEY8键释放事件"
//KEY1压键事件处理
Key11(void)
//特别注意菜农的组合键用法,可以看出"
零耗时键盘"
的非典之处
if(PressCount[7]>
=KeyboardPushTimes)//KEY8已先压下
Key8_Key1();
//执行KEY8_KEY1组合键事件
KEY1键单击事件"
//KEY2压键事件处理
Key12(void)
KEY2键单击事件"
//KEY3压键事件处理
Key13(void)
KEY3键单击事件"
//KEY4压键事件处理
Key14(void)
KEY4键单击事件"
//KEY5压键事件处理
Key15(void)
KEY5键单击事件"
//KEY6压键事件处理
Key16(void)
KEY6键单击事件"
//KEY7压键事件处理
Key17(void)
KEY7键单击事件"
//KEY8压键事件处理
Key18(void)
if(PressCount[0]>
=KeyboardPushTimes)//KEY1已先压下
Key1_Key8();
//执行KEY1_KEY8组合键事件
KEY8键单击事件"
//KEY1长压键事件处理
Key21(void)
KEY1键长压事件"
//KEY2长压键事件处理
Key22(void)
KEY2键长压事件"
//KEY3长压键事件处理
Key23(void)
KEY3键长压事件"
//KEY4长压键事件处理
Key24(void)
KEY4键长压事件"
//KEY5长压键事件处理
Key25(void)
KEY5键长压事件"
//KEY6长压键事件处理
Key26(void)
KEY6键长压事件"
//KEY7长压键事件处理
Key27(void)
KEY7键长压事件"
//KEY8长压键事件处理
Key28(void)
KEY8键长压事件"
//KEY1-KEY8组合键事件处理
Key1_Key8(void)
KEY1KEY8键事件"
//KEY8-KEY1组合键事件处理
Key8_Key1(void)
KEY8KEY1键事件"
类别:
Dsp|
|添加到搜藏|分享到i贴吧|浏览(247)|评论
(0)
上一篇:
DSP281x_Adc.h修改以便访问
下一篇:
DSP2812串口波特率正确和良好的...
最近读者:
欢迎您的下载,资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 键盘C语言程序 键盘 语言 程序 word