2013-04-13 3 views
0

Я использую компилятор CCS, и для этой части кода появляется предупреждение о том, что условие всегда верно. Это код для PIC16F877, поэтому, когда входной сигнал равен 1, он должен выйти из цикла. Я что-то упустил?While loop always true 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) возвращает истину, вы входите в цикл, который ничего не делает, пока вход не возвращает ложь, то вы нарушаете из вашего внешнего контура и выходящего read_keypad()

+0

о порядке, так что это будет вырваться из цикл действительно, когда вход 1. Спасибо. – serpence

+0

Если input() возвращает true, то возвращает false, выйдет из цикла и выйдет из функции. – Joshua