关于单片机、keil、伟福,大神们请进
大家好,希望高手能解决在下的疑惑。我在keil环境下用伟福E6000/L仿真89c2051单片机.用P3口做输入(接有上拉电阻,硬件应该没问题),P1口作输出。程序如下:...
大家好,希望高手能解决在下的疑惑。我在keil环境下用伟福E6000/L仿真89c2051单片机.用P3口做输入(接有上拉电阻,硬件应该没问题),P1口作输出。程序如下:
#include <AT892051.h>
sbit F1 = P3^0;
sbit F2 = P3^1;
sbit F3 = P3^2;
sbit F4 = P3^3;
sbit F5 = P3^4;
sbit F6 = P3^5;
sbit V1 = P1^7;
sbit V2 = P1^6;
sbit V3 = P1^5;
sbit V4 = P1^4;
sbit V5 = P1^3;
sbit V6 = P1^2;
void main()
{
while(1)
{
V1 = ~F1;
V2 = ~F2;
V3 = ~F3;
V4 = ~F4;
V5 = ~F5;
V6 = ~F6;
}
}
当我将P3.1口即F2置0时,V2变为1。当我再将F3置0时,V3是变为1了。但是V3变1的同时,V2却变成了0,且这时F2依然是0没变(这时F2和V2都是0,和取反矛盾了)。(我将P1口接到发光二级管,且用keil的watch窗口观察的结果都是这样),感觉太奇怪了,不知是仿真器设置的问题还是什么原因。。下面有单步运行到 V3 = ~F3; 之后的截图,这一句代码同时改变了V2和V3的值:
希望哪位大神帮我解答疑惑,非常感谢!!! 展开
#include <AT892051.h>
sbit F1 = P3^0;
sbit F2 = P3^1;
sbit F3 = P3^2;
sbit F4 = P3^3;
sbit F5 = P3^4;
sbit F6 = P3^5;
sbit V1 = P1^7;
sbit V2 = P1^6;
sbit V3 = P1^5;
sbit V4 = P1^4;
sbit V5 = P1^3;
sbit V6 = P1^2;
void main()
{
while(1)
{
V1 = ~F1;
V2 = ~F2;
V3 = ~F3;
V4 = ~F4;
V5 = ~F5;
V6 = ~F6;
}
}
当我将P3.1口即F2置0时,V2变为1。当我再将F3置0时,V3是变为1了。但是V3变1的同时,V2却变成了0,且这时F2依然是0没变(这时F2和V2都是0,和取反矛盾了)。(我将P1口接到发光二级管,且用keil的watch窗口观察的结果都是这样),感觉太奇怪了,不知是仿真器设置的问题还是什么原因。。下面有单步运行到 V3 = ~F3; 之后的截图,这一句代码同时改变了V2和V3的值:
希望哪位大神帮我解答疑惑,非常感谢!!! 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询