51单片机P3口作为按键检测STC89C52下正常,在AT89C52下不正常

2019-07-18 13:37发布

    我用51单片机 的P3口作为按键检测,为什么同一段程序在STC89C52下按键起作用,但到了AT89C52按键就不起作用了,但复位后连接端口的LED灯熄灭了,说明程序已经运行了,按键就是不起作用? 懂的请解释下,谢谢!
    我的测试程序如下:
#include <reg51.h>
#include<stdio.h>
#include <string.h>
#define uint unsigned int

sbit LED=P3^6;
sbit BUTTON1=P3^0;               
sbit BUTTON2=P3^1;
sbit BUTTON3=P3^2;
sbit BUTTON4=P3^3;
sbit BUTTON5=P3^4;
sbit BUTTON6=P3^5;
sbit BUTTON7=P3^7;               
               
               
void delay(uint x)
{
uint i,j;
for (j=0;j<x;j++)
for (i=0;i<300;i++);
}


void delay1(uint y)
{
uint i,j;
for (j=0;j<y;j++)
for (i=0;i<1000;i++);
}
               
       
void main()                   //主函数
{       
        LED=0;               
        while(1)
        {
                if(BUTTON1==0)
                {
                        delay(10);
                        if(BUTTON1==0)
                        {
                                LED=1;
                                delay1(10);
                                LED=0;
                                delay1(1);
                        }
                }
       
                if(BUTTON2==0)
                {        delay(10);
                        if(BUTTON2==0)
                        {
                                LED=1;
                                delay1(20);
                                LED=0;
                                delay1(1);
                        }
                }

                        if(BUTTON3==0)
                {        delay(10);
                        if(BUTTON3==0)
                        {
                                LED=1;
                                delay1(30);
                                LED=0;
                                delay1(1);
                        }
                }

                        if(BUTTON4==0)
                {        delay(10);
                        if(BUTTON4==0)
                        {
                                LED=1;
                                delay1(40);
                                LED=0;
                                delay1(1);
                        }
                }

                        if(BUTTON5==0)
                {        delay(10);
                        if(BUTTON5==0)
                        {
                                LED=1;
                                delay1(500);
                                LED=0;
                                delay1(1);
                        }
                }

                        if(BUTTON6==0)
                {        delay(10);
                        if(BUTTON6==0)
                        {
                                LED=1;
                                delay1(600);
                                LED=0;
                                delay1(1);
                        }
                }

                        if(BUTTON7==0)
                {        delay(10);
                        if(BUTTON7==0)
                        {
                                LED=1;
                                delay1(700);
                                LED=0;
                                delay1(1);
                        }
                }
        }
}               
               
               


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。