找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1304|回复: 8
打印 上一主题 下一主题
收起左侧

单片机计数代码问题困扰几天了

[复制链接]
跳转到指定楼层
楼主
本人利用ad转换出两个不同电压,a电压和b电压。a是始终比b小的,现在我想,当a>b时,c加1,如果a一直大于b,c就会一直加,但是我不需要它一直加,只加了一开始a>b的一次。我现在代码是这样的。如果a>b是一瞬间的话,他就能实现加1功能,如果a>b时间比较久,我该怎么让它不会一直加。不知道代码该怎么写,这个问题困扰我几天了,求大家解答解答,谢谢了

1567430199(1).jpg (18.56 KB, 下载次数: 31)

1567430199(1).jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:275826 发表于 2019-9-2 22:12 | 只看该作者
bit flag=0;
if((!flag)&&(a>b))
  {c++;
  flag=1;}
else flag=0;
回复

使用道具 举报

板凳
ID:462827 发表于 2019-9-2 22:40 | 只看该作者
加个标志变量就行了呀
回复

使用道具 举报

地板
ID:388197 发表于 2019-9-2 23:13 | 只看该作者
设置一个标志变量
例如

u8 flag = 0;              //0表示如果下次检测到a>b则c++, 1表示上一次检测到a>b,
if(a>b)
{
    if(flag = 0)
    {
        c++;
        flag = 1;      //c++后,将flag置1,用以防止下一次检测到a>b时 再次执行c++
    }
}else                 //如果a>b不成立,即a<=b
{
     flag = 0;       //将flag清0,以便下一次检测到a>b时执行c++
}
回复

使用道具 举报

5#
ID:373388 发表于 2019-9-3 10:03 | 只看该作者
加个标志位,a>b同时标志位为零条件满足时c+1,标志位置位1; 当a<=b时,标志位清零
回复

使用道具 举报

6#
ID:282850 发表于 2019-9-3 10:19 | 只看该作者
较简单的问题。楼上加flag的方法可行,如果不加标志,也可行。按楼主意思,发生a>b时,c加1,且只加一次,那就是C=1。
c=0;

//AD转换.....

if(a>b)
{
  c=1;
  LED2=!LED2;
  delayms(50);
}
else
{
  c=0;
}
回复

使用道具 举报

7#
ID:606788 发表于 2019-9-3 12:01 | 只看该作者

加个标志位,a>b同时标志位为零条件满足时c+1,标志位置位1; 当a<=b时,标志位清零
回复

使用道具 举报

8#
ID:573664 发表于 2019-9-3 12:05 | 只看该作者
cjm82 发表于 2019-9-2 23:13
设置一个标志变量
例如

兄弟,大哥谢谢,解决了
回复

使用道具 举报

9#
ID:573664 发表于 2019-9-3 12:07 | 只看该作者
感谢各位大佬的分享,已经解决了。感谢大家。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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