为什么按键按下,单片机不能读相应得到数据?
P0口做按钮开关时,要有上拉电阻哦~~~~你添加了么?建议换个端口试试,例如:sbit Key4 = P1^3;//希望能帮到你~~~~~
没有加……后来我发现是程序的IO口写错了,但是我不太明白上啦电阻有啥用呢……我把低四位接高电平,高四位接低电平,读取高四位的数据,按下就是低电平,不按下就是悬空(高电平)这样也能实现功能。接了上啦电阻的话有什么好处呢?
生活就像一盒巧克力,你不知道你的下一块口味是什么。
/* 名称:K1-K4 按键状态显示
说明:K1、K2按下时LED点亮,松开时熄灭,
K3、K4按下并释放时LED点亮,再次按下并释放时熄灭;
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
//延时
void DelayMS(uint x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
}
//主程序
void main()
{
P0=0xff;
P1=0xff;
while(1)
{
LED1=K1;
LED2=K2;
if(K3==0)
{
while(K3==0);
LED3=~LED3;
}
if(K4==0)
{
while(K4==0);
LED4=~LED4;
}
这段程序的最后少了两个【{】,不完美~~~~~
学习,,,,,,,,,