基于AT89C51的一个小程序的问题
#define uchar unsigned char
void delay(uchar x)
{
uchar k;
while(x--)
for(k=0;k<125;k++){}
} //延时函数
void main()
{
P1=0x0f;
if(P1&0x0f!=0x0f)
{
delay(10);
P1=0x0f;
while(P1&0x0f!=0x0f)
{
if(P1=0x0e)
{
P2=0x9f;
}
else
P2=0x00;
}
}
}
为什么明明P1满足P1=0x0e的条件但是P2还都是高电位
判断条件,应该是if(P1==0x0e),不是if(P1=0x0e)
上面程序修改一下
void main()
{
P1=0x0f;
if((P1&0x0f)!=0x0f)
{
delay(10);
P1=0x0f;
while((P1&0x0f)!=0x0f)
{
if(P1=0x0e)
{
P2=0x9f;
}
else
P2=0x00;
}
}
}
P1.0给高电位,P1.4给低电位吧试试。
你把按键反过来接试试吧。
#include<reg52.h>
#define uchar unsigned char
void delay(uchar x)
{
uchar i,j;
for(i=x;i>0;i--)
for(j=100;j>0;j--);
} //延时函数
void main()
{
P1=0xf0;
delay(10);
if(P1==0xf0)
P2=0xff;
else
P2=0x00;
}这是我改的你的程序,我在protues上仿真过了。可以,我不知道你的要求是什么,我的程序是按下按键显示8。不安按键,不显示。