0

c8051f040 コントローラーから 2 つのピンを読み取ろうとしています。

ポートを直接読み取ることはできますが、同じポート値を変数に保存すると、デバッガーが正しい値を表示しても機能しません。

// This works
if((P1 & 0xF0) == 0xa0) 
{   
    YEL_LED = 1;            //Turn on
}
else
{
    YEL_LED = 0;            //Turn off
}

// This does not work even though the debugger 
// shows the correct value 0xa0 for the var
ORange = (P1 & 0xF0);
if(ORange == 0xa0)          
{
    YEL_LED = 1;            //Turn on
}
else
{
    YEL_LED = 0;            //Turn off
}   

これは KEIL c51 のバグですか、それとも最適化されているものですか。

4

1 に答える 1

0

変数は、署名された char として宣言されました。署名されていない必要があります。

ウォッチ変数を符号なしとして表示していたデバッガーにだまされました。

于 2015-03-24T17:59:50.530 に答える