2013-04-13 81 views
0

我正在使用CCS编译器,并为此段代码发出警告,说明条件始终为真。这是PIC16F877的代码,所以当输入为1时,它应该跳出循环。我在这里错过了什么吗?虽然循环始终为真CCS

int read_keypad() 
{ 
    int value=0; 
    while(1) 
    { 
    UpButton=0;     // In case of bad Input 
    DownButton=0; 
    RightButton=0; 
    LeftButton=0; 
    EnterButton=0; 

    output_high(sat1); 
    if (input(sut1)) 
    {  
     value=1; 
     while(input(sut1)); 
     break; 
    } 
} 

回答

1

循环条件始终为真。这个警告并不意味着你的循环不可能退出,只是不通过它的测试条件。

当输入(SUT1)返回true你进入一个循环,什么也不做,直到输入返回false,那么你就打破了你的外循环和退出read_keypad()

+0

哦好,所以它会分解出当输入为1时确实循环。谢谢。 – serpence

+0

如果input()返回true,则返回false将跳出循环并退出该函数。 – Joshua