查看: 2412|回复: 0
打印 上一主题 下一主题

按键扫描C语言程序

[复制链接]
跳转到指定楼层
沙发
发表于 2015-9-24 16:13:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何增加按键扫描,同样不需要用到Delay,而按键消抖又不能省略,请看下面的例子
前面例子中函数不变
主函数里面增加一句read_key();


void  main(void)
{
  uchar temp=15;
    init();       //初始化
while(1)
{
if(flag)
  {
    flag=0;
             display(); //显示函数
read_key();
}
}
}


char read_key(void)
{
   static char key_state = 0;
   char key_press;
   key_press = P1; // 读按键 I/O 电平
key_press &=0x01;   //假设我们要读P1的第一个I/O
   switch (key_state)
   {
        case 0: // 按键初始态
if (key_press==0) key_state = 1; // 键被按下,状态转换到键确认态
break;
        case 1: // 按键确认态
if (key_press==0)
                {
                        key_state = 2; // 状态转换到键释放态
//....................................
               //在这里写你按键按下要执行的代码
//例:
date[0]++;
date[1]+=2;
date[2]+=3;
                }
                else
                key_state = 0; // 按键已抬起,转换到按键初始态
break;
        case key_state_2:
                if (key_press) key_state = 0; //按键已释放,转换到按键初始态
break;
   }
}


这样就轻松实现了按键扫描操作。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表