- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8051按键处理程序-单击、长按、连击、组合
最近参考大神的按键处理程序,写了下面这个程序,希望大家指点一下
硬件为8051,采用8255扩展接口,功能上,实现单击K1、K2、K3分别使时、分、秒递增;长按K1、K2、K3分别使时、分、秒递减;K1、K2、K3连击使第二个横杠处变为0;
组合键K1、K2使第一个横杠处变为0,组合键K2、K3使第一个横杠处变为横杠;组合键K1、K3使第二个横杠处变为横杠。
下图为proteus仿真电路
完整程序如下:
//-----------------------------------------------------------------
// 8255实现接口扩展
//-----------------------------------------------------------------
// PA、PB为输出分别控制段码和位码,PC为输入
//
//-----------------------------------------------------------------
#include reg51.h
#include absacc.h
#define INT8U unsigned char
#define INT16U unsigned int
//8255 PA、PB、PC的端口和命令端口定义
#define PA XBYTE[0x0000]
#define PB XBYTE[0x0001]
#define PC XBYTE[0x0002]
#define COM XBYTE[0x0003]
//上述定义可以这么写
//#define PA *(XBYTE + 0x0000)
//#define PB *(XBYTE + 0x0001)
//#define PC *(XBYTE + 0x0002)
//#define COM *(XBYTE + 0x0003)
//根据硬件定义按键值
#define KEY_VALUE_1 0x0e
#define KEY_VALUE_2 0x0d
#define KEY_VALUE_3 0x0b
#define KEY_NULL 0x0f
//按键状态标志
#define N_KEY 0x80
#define S_KEY 0x40
#define D_KEY 0x20
#define L_KEY 0x10
//状态机状态
#define KEY_STATE_INIT 0 //初始状态
#define KEY_STATE_WOBBLE 1 //电平抖动状态
#define KEY_STATE_PRESS 2 //按键按下状态
#define KEY_STATE_CONTINUE 3 //连击状态
#define KEY_STATE_LONG 4 //长按状态
#define KEY_STATE_RELEASE 5 //释放按键状态
INT8U key_JL; //存储单击按键值
code INT8U SEG_CODE[] =
{ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF }; //共阳数码管编码,最后一位为横杠
//初始显示的数字12-39-59
INT8U Disp_Buf[] = {1,2,10,3,9,10,5,9};
//-----------------------------------------------------------------
// 8255端口按键处理
//-----------------------------------------------------------------
//按键底层处理,这里只识别单击和长按
static INT8U Key_driver()
{
static INT8U key_time=0,key_state=KEY_STATE_INIT;
INT8U key_temp,key_return=N_KEY;
key_temp=PC0x0f;
switch(key_state)
{
case KEY_STATE_INIT:
if(key_temp!=KEY_NULL) key_state=KEY_STATE_PRESS;
break;
// caseKEY_STATE_WOBBLE:
//按键消抖处理,由于是仿真,为了加快按键灵敏度,减短延时时间
// key_state=KEY_STATE_PRESS;break;
case KEY_
您可能关注的文档
- 366天花名.doc
- 3754个常用汉字简繁对照表拼音顺序1.docx
- 36米跨度轻型门式钢架结构的设计.doc
- 3ds max 建模酒杯、碗、抱枕-.doc
- 3ds MaxVRay室内效果图的设计超级手册.doc
- 3d电影院建设的项目贷款申请的报告.doc
- 3、骨性关节炎诊疗规范与中医临床路径.doc
- 3双证课程客户信息服务专业教学的方案.docx
- 3号线宝钢车辆段与曲改直春节封锁期间施工的方案.doc
- 3周年店庆.doc
- 一城一云服务城市高质量发展白皮书(2023).pdf
- 中国连锁餐饮企业资本之路系列报告(2023)-历尽千帆,厚积薄发.pdf
- 有色金属行业专题研究:未来焦点,钒液流电池储能风潮兴涌.pdf
- 中国 “一带一路”实践与观察报告.pdf
- 医药生物-消费器械行业2023年中报总结:积极拥抱高璧垒高成长(202309).pdf
- DB50T 699-2016 简易升降机检验规则.pdf
- DB50T 746-2016 水库大坝安全监测资料整编分析规程 .pdf
- 看DAO2025-未尽研究报告(2024).pdf
- 市场洞察力报告-数据安全检查工具箱(2024).pdf
- 2024年预见未来:中国元医院建设发展调研报告.pdf
文档评论(0)