当前位置: 首页 > news >正文

蓝桥杯单片机——按键的多样操作

按键扫描的底层代码

unsigned char  Key_Read()
{unsigned char temp = 0;ET0 = 0;P44 = 0;P42 = 1;P35 = 1;P34 = 1;if(P33 == 0) temp = 4;if(P32 == 0) temp = 5;if(P31 == 0) temp = 6;if(P30 == 0) temp = 7;P44 = 1;P42 = 0;P35 = 1;P34 = 1;if(P33 == 0) temp = 8;if(P32 == 0) temp = 9;if(P31 == 0) temp = 10;if(P30 == 0) temp = 11;P44 = 1;P42 = 1;P35 = 0;P34 = 1;if(P33 == 0) temp = 12;if(P32 == 0) temp = 13;if(P31 == 0) temp = 14;if(P30 == 0) temp = 15;P44 = 1;P42 = 1;P35 = 1;P34 = 0;if(P33 == 0) temp = 16;if(P32 == 0) temp = 17;if(P31 == 0) temp = 18;if(P30 == 0) temp = 19;ET0 = 1;P3 = 0xff;return temp;
}

这种扫描方法是采用的逐列扫描的方式。需要注意的是串口用P30作为TX,P31作为RX,如果发生了冲突导致串口无法接收数据,可以再扫描按键时候关闭串口中断ES = 0;在使用NE555测量频率时,也会用到P34引脚,如果发生了冲突,也可以在扫描按键时关闭T0计数TR0 = 0。在扫描结束,即在函数末尾应该将关掉的重新打开。

按键的长按操作

void Key_Long_Pro()
{if(Key_Slow_Down) return;Key_Slow_Down = 1;Key_Val = Key_Read();Key_Down = Key_Val & (Key_Old ^ Key_Val);Key_Up = ~Key_Val & (Key_Old ^ Key_Val);Key_Old = Key_Val;if(Key_Down == 4){Long_Press_Flag = 1;}if(Key_Up == 4){if(time_2s >= 2000){Seg_Buf[0] = 1;}else{Seg_Buf[0] = 0;}time_2s = 0;Long_Press_Flag = 0;}if(Key_Down == 5){Long_Press_Flag = 1;}if(time_2s >= 2000){Seg_Buf[1] = 2;}if(Key_Up == 5){if(time_2s < 2000){Seg_Buf[1] = 3;}time_2s = 0;Long_Press_Flag = 0;}
}
void Timer0_Routine() interrupt 1
{if(Long_Press_Flag){if(++time_2s >= 2000){time_2s = 2001;}}
}

按键的多击操作

void Key_Again_Pro()
{if(Key_Slow_Down) return;Key_Slow_Down = 1;Key_Val = Key_Read();Key_Down = Key_Val & (Key_Old ^ Key_Val);Key_Up = ~Key_Val & (Key_Old ^ Key_Val);Key_Old = Key_Val;if(Key_Down  == 4){Key_Click_Count++;Key_Click_Flag = 1;time_200ms = 0;}if(time_200ms >= 200){if(Key_Click_Count == 1){Seg_Buf[0] = 1;}else if(Key_Click_Count == 2){Seg_Buf[0] = 2;}time_200ms = 0;Key_Click_Count = 0;Key_Click_Flag = 0;}
}
void Timer0_Routine() interrupt 1
{if(Key_Click_Flag){if(++time_200ms >= 200){time_200ms = 201;}}
}

http://www.dtcms.com/a/412852.html

相关文章:

  • 杭州个人网站建设c2c网站代表有哪些
  • 龙岩做网站开发哪家做的好网网站制作
  • 开平小学学生做平网站莱芜网站建设设计外包
  • 网站建设 服务器主机配置wordpress 4.6.10
  • commons-net
  • 平湖有做网站得吗环球资源网
  • 专题网站开发工具有哪些搭建一个网站
  • 临夏州建设局网站网站建设后期服务收费标准
  • 姑苏网站建设佛山网络推广平台
  • 网站数字签名北京怀柔做网站管理运营的公司
  • 中英文网站建设报价黄页网站建设黄页网站建设
  • tk网站域名注册甘肃精神文明建设网站
  • 万网怎么更改网站名字的知道网站是wp程序做的如何仿站
  • 自己做的网站可以上架烟吗电脑网站安全证书有问题如何解决
  • o2o平台网站开发用html做的美食网站
  • 北京网站建设公司联系方式做外贸 上国外网站
  • 做任务赚取佣金网站网站开发就业培训班
  • 北京建站公司哪家好西安做网站商城的公司
  • Python零基础入门:30分钟掌握核心语法与实战应用
  • vps新建的网站打不开品牌策划公司一般有什么职位
  • 深圳分销网站建设找人建设网站
  • 网站升级方案金蝶erp系统介绍
  • 北京响应式网站设计成立网站
  • 网站备案 途径吉首网站制作
  • 做网站怎么报价邢台网站建设最新报价
  • JavaWeb开发---学习---(一)
  • 建立网站需要多少钱?网站搭建规划模板
  • 深入理解二叉树——从结构和递归原理到实战
  • Java线程安全:volatile与wait/notify详解
  • 做网站 pc端与手机端兼容淘宝店可以做团购的网站吗