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

[复制链接]
 楼主| 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不能做到吗?
 楼主| liuoulyy 发表于 2010-12-8 21:00 | 显示全部楼层
汇编很容易的。
LISF102: TCM WANDW,#11111110B   测试WANDW为0重复执行
         JR  Z,LISF102
         ADN LED,#11111010B
用比较转移,想到哪就到哪。可以多次比较转移。用C真不习惯。
suking1982 发表于 2010-12-8 23:41 | 显示全部楼层
while(1)
{
   if(CY==1)       //判断进位标志位CY是否为1
   {
     if(P1^7==1)
       {
       执行语句B  //执行你需要的语句
      }
  }
}

楼主你是要表达这个意思么?自己猜的,希望对你能有帮助
mcu5i51 发表于 2010-12-9 09:05 | 显示全部楼层
while (!WANDW);
LED=0X7A;
liang7143 发表于 2010-12-9 10:13 | 显示全部楼层
既然是重复执行,用if就肯定不行,因为if是判断语句而不是循环语句
 楼主| 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;}       
          
         
}为何不行
 楼主| 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
 楼主| 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;}不行了?
 楼主| liuoulyy 发表于 2010-12-9 19:36 | 显示全部楼层
判断 口LED1是否为1——为0,清counter;
——为1,counter增1——    比较counter>100——小于——返回退出中断
                                              ——大于——清counter   置标志位wanchenw=1; 返回
pxch21 发表于 2010-12-9 20:51 | 显示全部楼层
光看这段好象没什么问题啊
 楼主| liuoulyy 发表于 2010-12-9 21:18 | 显示全部楼层
我主程序没用while(1){},晕,
 楼主| liuoulyy 发表于 2010-12-9 21:19 | 显示全部楼层
用的while(wanchenw){},估计是这个原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

134

主题

472

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部