单片机按键开关控制流水灯在protues问题
时间:10-02
整理:3721RD
点击:
矩阵键盘的都做了,可是这独立键盘的就是不行,不是说反应迟钝是按了许久一点反应都没,我做的是通过按键控制流水灯。这是我画的图有错吗?
以下是我的代码,代码都换了好几套,这个是现在的,是哪没注意到吗?又做过的给点资料谢谢,困扰很久了。
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar recenty_key;
uchar led_data=0xfe;
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=115;j>0;j--);
}
void scanfkey()
{
if(P3!=recenty_key)
{
if(P3&0x10==0)
{
P1=0x00;
delay(1000);
}
else if(P3&0x20==0)
{
P1=0xff;
delay(1000);
}
else if(P3&0x40==0)
{
led_data=_crol_(led_data,1);
P1=led_data;
delay(1000);
}
else if(P3&0x80==0)
{
led_data=_crol_(led_data,1);
P1=led_data;
delay(1000);
}
}
}
void main()
{
recenty_key=0xff;
while(1)
{
scanfkey();
}
}
以下是我的代码,代码都换了好几套,这个是现在的,是哪没注意到吗?又做过的给点资料谢谢,困扰很久了。
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar recenty_key;
uchar led_data=0xfe;
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=115;j>0;j--);
}
void scanfkey()
{
if(P3!=recenty_key)
{
if(P3&0x10==0)
{
P1=0x00;
delay(1000);
}
else if(P3&0x20==0)
{
P1=0xff;
delay(1000);
}
else if(P3&0x40==0)
{
led_data=_crol_(led_data,1);
P1=led_data;
delay(1000);
}
else if(P3&0x80==0)
{
led_data=_crol_(led_data,1);
P1=led_data;
delay(1000);
}
}
}
void main()
{
recenty_key=0xff;
while(1)
{
scanfkey();
}
}
请注意& 和 == 的优先级。
请注意按键扫描逻辑,逻辑不通。
谢谢,看来以前其他方式也是代码有问题。