标题:
单片机计数代码问题困扰几天了
[打印本页]
作者:
勿忘我c
时间:
2019-9-2 21:20
标题:
单片机计数代码问题困扰几天了
本人利用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, 下载次数: 59)
下载附件
2019-9-2 21:17 上传
作者:
tyrl800
时间:
2019-9-2 22:12
bit flag=0;
if((!flag)&&(a>b))
{c++;
flag=1;}
else flag=0;
作者:
hantu
时间:
2019-9-2 22:40
加个标志变量就行了呀
作者:
cjm82
时间:
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++
}
作者:
xhaity
时间:
2019-9-3 10:03
加个标志位,a>b同时标志位为零条件满足时c+1,标志位置位1; 当a<=b时,标志位清零
作者:
f556
时间:
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;
}
作者:
yupengwei
时间:
2019-9-3 12:01
加个标志位,a>b同时标志位为零条件满足时c+1,标志位置位1; 当a<=b时,标志位清零
作者:
勿忘我c
时间:
2019-9-3 12:05
cjm82 发表于 2019-9-2 23:13
设置一个标志变量
例如
兄弟,大哥谢谢,解决了
作者:
勿忘我c
时间:
2019-9-3 12:07
感谢各位大佬的分享,已经解决了。感谢大家。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1