我用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);
}
}
}
}
一周热门 更多>