#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit K11=P3^7;
uchar ajcsh,flag;//按键次数、标志位
bit ajzt;//按键状态
uint i;
void yanshi(uint ms)
{
uchar t;
while(ms--)
for(t=0;t<120;t++);
}
xianshi1()
{
for(i=6;i>0;i--)
{
P2=0x00;
yanshi(500);
P2=0xff;
yanshi(500);
}
}
xianshi2()
{
for(i=6;i>0;i--)
{
P2=0xfe;
yanshi(500);
P2=0xff;
yanshi(500);
}
}
xianshi3()
{
for(i=6;i>0;i--)
{
P2=0xef;
yanshi(500);
P2=0xff;
yanshi(500);
}
}
void ajchuli()//按键处理,必须要等第一次按下执行完了才能执行后面按下执行的内容,这个应该怎么解决
{
if(ajzt==0)
{
ajcsh=(ajcsh+1)%3;
if(flag==0)
{switch(ajcsh)
{
case 1:xianshi1();flag=0;break;
case 2:xianshi2();flag=0;break;
case 0:xianshi3();flag=0;break;
}
}
}}
main()
{
ajcsh=0;
ajzt=1;
while(1)
{
if(ajzt!=K11)
{
yanshi(10);
ajzt=K11;
ajchuli();
}}}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
因为你用了软件延时循环,在循环没有结束时按键信息无法建立,建议把按键扫描程序放在中断里,并且在for循环里设置循环约束条件,一旦条件不满足立即跳出for循环。
一周热门 更多>