Keil if(条件)不成立,还会执行内部代码,高手进来帮忙看一下

houfuzhu houfuzhu 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我是初学者,新手,学习中,遇到if(条件)不成立,还会执行内部代码,网上找一通,也没整明白
劳烦高手指点一下

#include <reg52.h>

unsigned char key;
void DelayS(unsigned int ms);
unsigned char KeyScan();

void main()
{

unsigned char a,b,c,d,e,f,g;
unsigned char Num[10],Wei[4];
unsigned char key1;

a=0xFE;
b=0xFD;
c=0xFB;
d=0xF7;
e=0xEF;
f=0xDF;
g=0xBF;


Num[0]=a&b&c&d&e&f;
Num[1]=b&c;
Num[2]=a&b&g&e&d;
Num[3]=a&b&c&d&g;
Num[4]=f&g&b&c;
Num[5]=a&f&g&c&d;
Num[6]=a&f&e&d&c&g;
Num[7]=f&a&b&c;
Num[8]=a&b&c&d&e&f&g;
Num[9]=f&a&b&c&d&g;
Wei[0]=0x0E;
Wei[1]=0x0D;
Wei[2]=0x0B;
Wei[3]=0x07;
P1=0x00;

/*
EA=1;
TMOD=0x01;
TH0=(65536-20000)/256;
TL0=(65536-20000)%256;
ET0=1;
TR0=1;
*/



key=0;

while(1)
{
//个位显示
P1=Wei[3];
P0=0xFF;
P0=Num[key%10];
DelayS(50);

//十位显示
P1=Wei[2];
P0=0xFF;
P0=Num[key/10];
DelayS(50);
key1=KeyScan();
if(key1!=16) key=key1;
}
}
/*
void Timer0() interrupt 1
{
unsigned char key1;
TH0=(65536-20000)/256;
TL0=(65536-20000)%256;

key1=KeyScan();
if(key1!=16) key=key1;
}
*/
unsigned char KeyScan()
{
unsigned char KeyCode,Press1,Press2,cond;
unsigned int i;
unsigned char code KeyCodes[16] = {0xEE,0xDE,0xBE,0x7E,
0xED,0xDD,0xBD,0x7D,
0xEB,0xDB,0xBB,0x7B,
0xE7,0xD7,0xB7,0x77};

Press1=0x0F;
P2=0x0F;
if ((Press1^P2)==0x01) //为什么条件不成立也会执行内部的代码
{
DelayS(10);
if ((Press1^P2)==0x01)//为什么条件不成立也会执行内部的代码
{
Press1=P2;
P2=0xF0;
Press2=0xF0;
P2=0xF0;
Press2=P2;

for(i=0;i<16;i++)
{
if(((Press1 | Press2)^KeyCodes[i])==0x00)//为什么条件不成立也会执行内部的代码
{
return i;
}
}
}
}
else
{
return 16;
};
}

void DelayS(unsigned int ms)
{
unsigned int i,j;
for(i=ms;i<0;i--)
for(j=0;j<110;j++);

}
...全文
评论 17
收藏 已收藏
分享
返回顶部
houfuzhu
单片机/工控 27,522 成员 28,796 内容