• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

51单片机按键扫描C程序

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 
    大二上学期做过8051单片机的按键程序,当时项目要求实现按键控制LED屏显示并且接收GPRS传来的数据。当时为了节省成本,就去大西电子市场买来8*8的LED块,然后自己一点一点的拼接成128*16的。做完之后虽然可以运行,但是很勉强,尤其是按键扫描程序没有下面这位哥写得简洁缜密,所以就贴过来,以后用到的时候直接研究:
 
unsigned char key,key_h,kpush;
unsigned int key_l;

//按键连接到p1.0、p1.1、p1.2

void int_t0(void) interrupt 1 {
 unsigned char dd,i;
 TL0=TL0+30;TH0=0xfb; //800
 /* 按键判别 */
 if ((P1&0x7)==0x7) {
  if ((key_l>30)&&(key_l<800)&&(key_h>30)) {  //释放按键,如果之前按键时间少于1秒,读入键值
   key=kpush;
  }
  if ((++key_h)>200) key_h=200;
  key_l=0;
  if (key>=0x80) key=0;     //如果之前的按键为长按1秒,清除键值
 } else {
  kpush=P1&0x7;
  key_l++;
  if ((key_l>800)&&(key_h>30)) {    //如果按键超过1秒,键值加0x80标志长按键
   key=kpush|0x80;
   key_h=0;
   key_l=0;
  }
 }
}
void main(void) {
 TMOD=0x1;TR0=1;ET0=1;EA=1;
 while (1) {
  while (!key) {}
  switch (key) {
  case 1:break;
  case 2:break;
  }
 }
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#小知识特殊的DefaultValueAttribute发布时间:2022-07-13
下一篇:
C#杀死Word,Excel等进程发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap