被一个小小的问题卡住了
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa,i,temp;
void one();
void two ();
void three ();
void four ();
void delay (uint x)
{
uint i,j;
for( i=x; i>0; i-- )
for( j=110; j>0; j-- );
}
void keyscan()
{
P1=0x7f;
temp=P1;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay(10);
temp=P1;
temp=temp&P1;
if(temp!=0x0f)
{
delay(10);
temp=P1;
switch( temp )
{
case 0x77:
one();
break;
case 0x7b:
two();
break;
case 0x7d:
three();
break;
case 0x7e:
four();
break;
while(temp!=0x0f)
{
temp=P1;
temp=temp&P1;
}
while(1);
}
}
}
}
void one ()
{
P0=0;
}
void two ()
{
delay(75);
P0=~P0;
}
void three ()
{ aa=0xfe;
for(i=8;i>0;i--)
{
P0=aa;
aa=_crol_(aa,1);
delay(100);
}
aa=0x7f;
for(i=8;i>0;i--)
{
P0=aa;
aa=_cror_(aa,1);
delay(100);
}
}
void four ()
{
aa=0xfe;
for(i=4;i>0;i--)
{
P0=aa;
aa=_crol_(aa,2);
delay(500);
}
aa=0x7f;
for(i=4;i>0;i--)
{
P0=aa;
aa=_cror_(aa,2);
delay(500);
}
}
void main ()
{
keyscan();
}
问题:比如说按下第二个键,检测到了,所以单片机执行
void two()
{
delay(75);
P0=~P0;
}这个程序,但单片机只执行了一次,不会循环执行 void two这个程序,此时并没有按其他的键。
我要的是再没有按下其他键之前,它会一直执行这个程序,请问该怎么写?
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa,i,temp;
void one();
void two ();
void three ();
void four ();
void delay (uint x)
{
uint i,j;
for( i=x; i>0; i-- )
for( j=110; j>0; j-- );
}
void keyscan()
{
P1=0x7f;
temp=P1;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay(10);
temp=P1;
temp=temp&P1;
if(temp!=0x0f)
{
delay(10);
temp=P1;
switch( temp )
{
case 0x77:
one();
break;
case 0x7b:
two();
break;
case 0x7d:
three();
break;
case 0x7e:
four();
break;
while(temp!=0x0f)
{
temp=P1;
temp=temp&P1;
}
while(1);
}
}
}
}
void one ()
{
P0=0;
}
void two ()
{
delay(75);
P0=~P0;
}
void three ()
{ aa=0xfe;
for(i=8;i>0;i--)
{
P0=aa;
aa=_crol_(aa,1);
delay(100);
}
aa=0x7f;
for(i=8;i>0;i--)
{
P0=aa;
aa=_cror_(aa,1);
delay(100);
}
}
void four ()
{
aa=0xfe;
for(i=4;i>0;i--)
{
P0=aa;
aa=_crol_(aa,2);
delay(500);
}
aa=0x7f;
for(i=4;i>0;i--)
{
P0=aa;
aa=_cror_(aa,2);
delay(500);
}
}
void main ()
{
keyscan();
}
问题:比如说按下第二个键,检测到了,所以单片机执行
void two()
{
delay(75);
P0=~P0;
}这个程序,但单片机只执行了一次,不会循环执行 void two这个程序,此时并没有按其他的键。
我要的是再没有按下其他键之前,它会一直执行这个程序,请问该怎么写?
c语言 看不懂
如果一直循环的话,应该把While(1);改为while(1){}把你想要一直循环的写到花括号里吧,个人意见,你可以试一下