打印

C 语言中的if语句,如何重复执行呢?

[复制链接]
4083|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuoulyy|  楼主 | 2010-12-8 19:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
汇编中: LISF102:TCM WANDW,#11111110B   测试WANDW为0重复执行
                  JR  Z,LISF102
                  ADN LED,#11111010B      WANDW为1执行下面的程序。

          C 语言中的if语句,如何重复执行呢?if(WANDW){LED=0X7A;}
       WANDW为0时,要求重新比较if(WANDW),不再往下执行。程序该怎样改呢?
简单问题见笑了,还望大家指教。感激感激!

相关帖子

沙发
airwill| | 2010-12-8 20:05 | 只看该作者
while (WANDW){LED=0X7A;}

使用特权

评论回复
板凳
liuoulyy|  楼主 | 2010-12-8 20:56 | 只看该作者
这个我知道的。我的意思是:
先判断标志位是否为1,为1,执行{A},不为1,原地等待。
标志位为1,执行{判断P1。7是否为1,为1,执行{B};为0原地等待,直到P1。7为1才执行{B};
}
难道用
while(1){
    while( 0==(P1&0x80) ){

         while( 0==(P1&0x60){
                              }
                          }
}

使用特权

评论回复
地板
liuoulyy|  楼主 | 2010-12-8 20:57 | 只看该作者
用if不能做到吗?

使用特权

评论回复
5
liuoulyy|  楼主 | 2010-12-8 21:00 | 只看该作者
汇编很容易的。
LISF102: TCM WANDW,#11111110B   测试WANDW为0重复执行
         JR  Z,LISF102
         ADN LED,#11111010B
用比较转移,想到哪就到哪。可以多次比较转移。用C真不习惯。

使用特权

评论回复
6
suking1982| | 2010-12-8 23:41 | 只看该作者
while(1)
{
   if(CY==1)       //判断进位标志位CY是否为1
   {
     if(P1^7==1)
       {
       执行语句B  //执行你需要的语句
      }
  }
}

楼主你是要表达这个意思么?自己猜的,希望对你能有帮助

使用特权

评论回复
7
mcu5i51| | 2010-12-9 09:05 | 只看该作者
while (!WANDW);
LED=0X7A;

使用特权

评论回复
8
liang7143| | 2010-12-9 10:13 | 只看该作者
既然是重复执行,用if就肯定不行,因为if是判断语句而不是循环语句

使用特权

评论回复
9
liuoulyy|  楼主 | 2010-12-9 19:20 | 只看该作者
void Timer0_ISR (void) interrupt 1
{
   
   if(LED1)
     {        counter++;
        if(counter>100)
                  {
                    counter=0;
                wanchenw=1;
                }
                          
          }
else  { counter=0;}       
          
         
}为何不行

使用特权

评论回复
10
liuoulyy|  楼主 | 2010-12-9 19:22 | 只看该作者
void Timer0_ISR (void) interrupt 1
{
   
   if(LED1)
     {        counter++;
        if(counter>100)
                  {
                    counter=0;
                wanchenw=1;
                }
                          
          }
//else  { counter=0;}       
          
         
}
去掉else { counter=0;} ,到是可以,但不能清0

使用特权

评论回复
11
liuoulyy|  楼主 | 2010-12-9 19:26 | 只看该作者
void Timer0_ISR (void) interrupt 1
{
   
   //if(LED1)
     //{        counter++;
      //  if(counter>100)
                //  {
            //        counter=0;
           wanchenw=1;
              //  }
                          
         // }
//else  { counter=0;}       
          
         
}
这到是可以,但我要LED1连续为1,才置位wanchenw=1;还望大家帮我看一下,为何去掉else { counter=0;}不行了?

使用特权

评论回复
12
liuoulyy|  楼主 | 2010-12-9 19:36 | 只看该作者
判断 口LED1是否为1——为0,清counter;
——为1,counter增1——    比较counter>100——小于——返回退出中断
                                              ——大于——清counter   置标志位wanchenw=1; 返回

使用特权

评论回复
13
pxch21| | 2010-12-9 20:51 | 只看该作者
光看这段好象没什么问题啊

使用特权

评论回复
14
liuoulyy|  楼主 | 2010-12-9 21:18 | 只看该作者
我主程序没用while(1){},晕,

使用特权

评论回复
15
liuoulyy|  楼主 | 2010-12-9 21:19 | 只看该作者
用的while(wanchenw){},估计是这个原因。

使用特权

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

本版积分规则

134

主题

472

帖子

1

粉丝