为怎么在单片机中定义局部变量不行而定义为全局变量可以

问题: 如下:为怎么变量 x 定义为局部变量时 单步运行到第五行时x=0x01;不正确
如果把变量 x 定义为全局变量时 单步运行到第五行时x=0x07; 正确 麻烦高手门帮忙看下

#include<reg51.h>
sbit fKYE1=P3^0;
sbit fKYE2=P3^1;
sbit fKYE2=P3^2;
MKEY_SCAN()
{
uchar x;
x=0;
x=(x<<1)|fKYE1; //2行
x=(x<<1)|fKYE2; //3行
x=(x<<1)|fKYE1; //4行
if(x&0x07)!=0x07) //5行
...........
}

现在就是局部变量,怎么,这样就不对吗?不管是全局或局部变量,前面已有赋初值语句,x=0; 所以,与变量是否为全局无关。追问

现在这样执行结果x=0x01;单步运行只有第二行有执行 第3、4行没有执行的

追答

是在keil中仿真运行的吧,那P3.0,P3.1,P3.2引脚的状态怎么输入0?这种有引脚输入的程序调试时,把P3口打开,就可以置位和复位,才能正确调试。

如果能在proteus中仿真运行就更好了,那样运行程序才正确。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答