标题: 一个C语言开关程序问题 [打印本页]

作者: 373630833    时间: 2019-8-25 00:58
标题: 一个C语言开关程序问题
请问一个开关问题:
    if(P1^0 == 0)
        {
            delayms(10);
            if(P1^0 == 0)
                {
                      P0^0 = 1 ;
                }
        }

我想在这个开关设置一个计数程序,计数10次。
就是说按下10次后,不管有没有按下,P0^0   都没有输出(P0^0 = 0)。
怎么编写?


作者: chenyinhu    时间: 2019-8-25 06:08
定义一个p=0   if (p1^0==0)    delay..     if  p1..{p++;if  p=10{p0*0=0    p=0}else p0*0=1}
作者: chenyinhu    时间: 2019-8-25 06:10
p到底是9还是10我没仔细推,要是我编程序的话我会这样,没实际实验过不知道能不能行的通
作者: yzwzfyz    时间: 2019-8-25 13:05
太笨,不适合选单片机行业。
作者: aaaaabangw    时间: 2019-8-25 13:21
要计数就加一个计数标志位,判断标志位,满足条件就对应输出就行了
作者: 373630833    时间: 2019-8-26 22:18
chenyinhu 发表于 2019-8-25 06:08
定义一个p=0   if (p1^0==0)    delay..     if  p1..{p++;if  p=10{p0*0=0    p=0}else p0*0=1}

试过了,
没有效果

作者: 373630833    时间: 2019-8-26 22:19
aaaaabangw 发表于 2019-8-25 13:21
要计数就加一个计数标志位,判断标志位,满足条件就对应输出就行了

能不能举个例子呀
谢谢
作者: 373630833    时间: 2019-8-26 22:20
yzwzfyz 发表于 2019-8-25 13:05
太笨,不适合选单片机行业。

我知道我笨
不用你说

作者: 月之光芒    时间: 2019-8-27 10:01
if(pcount<10)  
{
  if(P1^0 == 0)
        {
            delayms(10);
pcount++;
            if(P1^0 == 0)
                {
                      P0^0 = 1 ;
                }
        }
}
else
{
P0^0 = 0;
}
作者: csmyldl    时间: 2019-8-27 11:40
if(P1^0 == 0)                 //按键按下
        {
            delayms(10);       //消抖
            if(P1^0 == 0)     //再次判断按钮按下
                {
                      count++;       //计数
                      if (count==10)
                      {
                         P0^0 = ~P0^0 ;            //求反输出
                         count=0;
                       }
                }
        }
//注意P0口是否接了上拉电阻,如果未接,可能实现不了输出高电平
作者: zqy876    时间: 2019-8-27 16:09
if( P1^0 == 0)                 //按键按下
{
        delayms(10);       //消抖
        if(P1^0 == 0)     //再次判断按钮按下
          {
                if( keycount <10)
               {
                   keycount++;       //计数
                   P0^0 = 1;
                }
                else
                P0^0 = 0;
            }
        }
}
//说按下10次后,不管有没有按下,P0^0   都没有输出(P0^0 = 0)
作者: wulin    时间: 2019-8-27 17:31
这段代码明显是楼主想当然写的。判断一个开关或按键不可能对P1全部端口测试,所以 if(P1^0 == 0)并不是异或运算表达式,而是楼主想判断P1.0端口的电平。要写成 sbit key = P1^0; if(key == 0)......
作者: DesertLegend    时间: 2019-8-27 21:20
你的计数呢
作者: wind2233    时间: 2019-8-29 15:48
小伙子们,这个功能函数如果不加松手检测可能会持续累加按键次数,根本不能正常计数
作者: ccdmcu    时间: 2019-8-31 16:29
14# 加一,应该在松手检测后计数位++




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1