打印

如何设计这样的一个检测程序?

[复制链接]
1578|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caigehao112|  楼主 | 2014-8-26 09:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是这样的,在程序中有个变量a,取值只有0和1,每隔0.5S刷新一次(即每隔0.5S就执行一次a=readadd();readadd()是我编写的一个I2C读数据的函数),但不一定跳转,只有当按键按下时,a就翻转一次。

OK ,假设a的初始值是0,每次刷新它还是0,只有当按键按下时就跳变城1,再按下时变0,那么,怎么来设计一个检测程序来查询a的值跳变了呢?因为a一旦跳变了我要执行另一个函数。


求大神支招,小弟试验了一个晚上都不行.....

相关帖子

沙发
ningling_21| | 2014-8-26 09:30 | 只看该作者
if( key==0) //按键按下,反转
{
     //消抖代码,自己加
    if(a==0)  a=1;
    else   a=0;
}

if( a_f ==0 && a==1) //a_f 是上次a的值,和当前a相比
{
    //满足a 跳变
}
else if(a_f==1 && a==0) //同上
{
   //满足a 跳变

}

使用特权

评论回复
板凳
caigehao112|  楼主 | 2014-8-26 09:45 | 只看该作者
ningling_21 发表于 2014-8-26 09:30
if( key==0) //按键按下,反转
{
     //消抖代码,自己加

怎么区分开a和a_f?或者说怎么存储a_f?

使用特权

评论回复
地板
ningling_21| | 2014-8-26 09:54 | 只看该作者
caigehao112 发表于 2014-8-26 09:45
怎么区分开a和a_f?或者说怎么存储a_f?

a改变时,就保存到a_f

使用特权

评论回复
5
zbchengfei| | 2014-8-26 10:10 | 只看该作者
把a赋给一个变量,再跟a比较相等不相等啊

使用特权

评论回复
6
mch1688| | 2014-8-26 10:23 | 只看该作者
深圳美创仪器仪表有限公司 自主品牌MCH系列:
  示波器,直流稳压电源,频谱分析仪,函数信号发生器,
频率计,毫伏表,万用表等上百款电子测量检测仪器可定
制OME生产,院校工厂研发实验,电子维修行业专供。
   质量第一,服务至上。20年品质保障!
   热  线:400-019-1995  
   电  话:0755-83281201   
   传  真:0755-83280257   
   E-mail: mchsales@china-mch.com  

使用特权

评论回复
7
xjjspace| | 2014-8-26 16:28 | 只看该作者
Key_Old  
Key

使用特权

评论回复
8
Zhou_g| | 2014-8-26 16:50 | 只看该作者
直接读按键脚的电平,把读到的电平赋给a这样子不行么

使用特权

评论回复
9
lyncxy119| | 2014-8-27 07:34 | 只看该作者
定义a;
定义a_f;

循环
{
a_f = a;
读取a;
if(a_f != a)//翻转到来
{
do what you want
}
}

使用特权

评论回复
10
longmaodo| | 2014-8-27 10:13 | 只看该作者
uchar key,key_old;
void main(){
key = 0;
key_old = 0;
循环
key = readadd();
if(key != key_old){
do whatever you want;
key_old = key;
}
}

使用特权

评论回复
11
mcu5i51| | 2014-8-27 10:50 | 只看该作者
if ( (Key&KEY_MSK) != (Old&KEY_MSK)) a=!a;
Old = Key;

我的键盘驱动的话会更简单
if (Key.One == K_n) a=!a;
你可以自己写一个类似的驱动

使用特权

评论回复
12
intermec| | 2014-8-28 00:20 | 只看该作者
if(old != new)
{
//add your code here
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

49

帖子

0

粉丝