基于AT89C51的一个小程序的问题

2019-07-15 17:10发布

#include<reg51.h>
#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;
        }
        }
}

QQ截图20150514152012.png
为什么明明P1满足P1=0x0e的条件但是P2还都是高电位


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
Cooli7wa
1楼-- · 2019-07-15 22:34
 精彩回答 2  元偷偷看……
arthurren
2楼-- · 2019-07-15 23:16
上面程序修改一下
void main()
{
        P1=0x0f;
        if((P1&0x0f)!=0x0f)
        {
        delay(10);
        P1=0x0f;        
        while((P1&0x0f)!=0x0f)
        {        
                if(P1=0x0e)
                        {
                                P2=0x9f;
                        }
                else
                                P2=0x00;
        }
        }
}
蓝雨LOVE诗
3楼-- · 2019-07-16 01:32
P1.0给高电位,P1.4给低电位吧试试。
蓝雨LOVE诗
4楼-- · 2019-07-16 01:54
你把按键反过来接试试吧。
蓝雨LOVE诗
5楼-- · 2019-07-16 05:41
#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。不安按键,不显示。

一周热门 更多>