【发布时间】:2015-05-26 19:16:02
【问题描述】:
我正在尝试从 c8051f040 控制器读取两个引脚。
直接读取端口有效,但将相同的端口值保存到变量中不起作用,即使调试器显示正确的值。
// 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 个引脚,而不是 2 个。您确定您是在比较类似的,其他 2 个输入是低的吗?如果您想测试 2 个引脚,代码应为
if((P1 & 0xa0) == 0xa0) -
ORange的类型是什么?你能包括声明吗?如果它不是至少 8 位,那么您的第二个if将永远不会是真的。
标签: microcontroller bitwise-operators 8051 keil c51