按键第一次按下正在执行循环,第二次按下如何打断第一次执行,请高手解决

2019-07-15 10:33发布

#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();

}}}

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