c51 goto用法
这是我用goto编的一个按键控制程序,用按键及时控制进入不同的效果,但编译后有问题,提示符有问题,请您帮我看一下问题出在哪里,是不是标识符用错。还有,有没有别的方法可以做...
这是我用goto编的一个按键控制程序,用按键及时控制进入不同的效果,但编译后有问题,提示符有问题,请您帮我看一下问题出在哪里,是不是标识符用错。还有,有没有别的方法可以做到按键及时控制效果。谢谢!!!(呃···财富值好像么有了····
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,a,b,c,saa,mec,xdw;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void fenli()
{
a=0xef; //1110 1111
b=0xf7; //1111 0111
while(1) // 中间向两边循环,8次为一循环,8=c
{
P0=a&b; //把a,b按位与之后的值赋给p0
a=_crol_(a,1); //左移循环
delayms(1);
b=_cror_(b,1); //右移循环
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp==0xe0)
goto saa;
if(temp==0xd0)
goto mec;
if(temp==0xb0)
goto xdw;
if(temp==0x70)
goto xdw;
}
delayms(500);
}
}
void fugai()
{
while(1) // 覆盖效果,a=覆盖次数
{
P0=0x7f;
for(c=8;c>0;c--)
{
P0=P0<<1;
delayms(500);
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp!=0xfe)
{
delayms(10);
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp==0xe0)
goto saa;
if(temp==0xd0)
goto mec;
if(temp==0xb0)
goto xdw;
if(temp==0x70)
goto xdw;
}
}
P0=0xfe;
for(c=8;c>0;c--)
{
P0=P0>>1;
delayms(500);
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp==0xe0)
goto saa;
if(temp==0xd0)
goto mec;
if(temp==0xb0)
goto xdw;
if(temp==0x70)
goto xdw;
}
}
}
}
void main()
{
while(1)
{
saa:
fenli();
mec:
fugai();
}
xdw:while(1)
{
} 展开
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,a,b,c,saa,mec,xdw;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void fenli()
{
a=0xef; //1110 1111
b=0xf7; //1111 0111
while(1) // 中间向两边循环,8次为一循环,8=c
{
P0=a&b; //把a,b按位与之后的值赋给p0
a=_crol_(a,1); //左移循环
delayms(1);
b=_cror_(b,1); //右移循环
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp==0xe0)
goto saa;
if(temp==0xd0)
goto mec;
if(temp==0xb0)
goto xdw;
if(temp==0x70)
goto xdw;
}
delayms(500);
}
}
void fugai()
{
while(1) // 覆盖效果,a=覆盖次数
{
P0=0x7f;
for(c=8;c>0;c--)
{
P0=P0<<1;
delayms(500);
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp!=0xfe)
{
delayms(10);
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp==0xe0)
goto saa;
if(temp==0xd0)
goto mec;
if(temp==0xb0)
goto xdw;
if(temp==0x70)
goto xdw;
}
}
P0=0xfe;
for(c=8;c>0;c--)
{
P0=P0>>1;
delayms(500);
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp==0xe0)
goto saa;
if(temp==0xd0)
goto mec;
if(temp==0xb0)
goto xdw;
if(temp==0x70)
goto xdw;
}
}
}
}
void main()
{
while(1)
{
saa:
fenli();
mec:
fugai();
}
xdw:while(1)
{
} 展开
2个回答
2015-08-14 · 知道合伙人数码行家
关注
展开全部
goto 被保留下来有它的道理,虽然对结构化程序来说,不提倡使用
最大的好处就是可以一下跳出循环
int a = 0;
int i,j,k,l,m,n;
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
for (k = 0; k < 10; k++)
for (l = 0; l < 10; l++)
for (m = 0; m < 10; m++)
for (n = 0; n < 10; n++)
{
a++;
if (a > 20)
goto exit_for;
}
:exit_for;
一句 goto 飕的一下就可以跳出循环
最大的好处就是可以一下跳出循环
int a = 0;
int i,j,k,l,m,n;
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
for (k = 0; k < 10; k++)
for (l = 0; l < 10; l++)
for (m = 0; m < 10; m++)
for (n = 0; n < 10; n++)
{
a++;
if (a > 20)
goto exit_for;
}
:exit_for;
一句 goto 飕的一下就可以跳出循环
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询