微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 基于AT89C51的一个小程序的问题

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

时间:10-02 整理:3721RD 点击:
#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;
        }
        }
}


为什么明明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。不安按键,不显示。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top