温度を変えることができる非常にシンプルなアプリケーションを書いています。温度はLED(BCD形式)を使用して表示されます
私はKeilC51で次のコードを書きました。
#include< REG51.h>
sbit select = P1^7;
sbit up = P1^0;
sbit down = P1^1;
int data room = 24;
void main()
{ int prog;
P2 &=0x00;
P1 |=0x83;
prog = 0;
while (1)
{
if(select == 1)
prog++;
if(prog == 1)
{
if(up == 1)
room++;
if(down == 1)
room--;
P2 = room;
}
}
}
次に、これに準拠してIntel hexファイルを取得し、Edsimを使用してシミュレートしようとしました。
Cコードによると、prog = 1のとき、およびup(p1.0)またはdown(p1.1)のいずれかが押されたときに温度が変化するはずですが、シミュレーションでは、select(p1.7)とup/の両方の場合にのみ変化します。ダウンが押されました!
なぜこうなった?