#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table1[]={0x3c,0x99,0xc3,0xe7};
uchar code table2[]={0xe7,0xc3,0x99,0x3c};
uint i,j;
uchar temp;
//void delay();
void circulate_s_o();
void circulate_led1();
void circulate_led2();
void flash();
void dark();
void main()
{
circulate_s_o();
circulate_led1();
circulate_led2();
flash();
dark();
}
/*void delay()
{
for(i=400;i>0;i--)
for(j=400;j>0;j--);
}*/
void circulate_s_o()
{
for(i=0;i<3;i++)
{
P0=0xaa;
// delay();
P0=0x55;
// delay();
}
}
void circulate_led1()
{
for(j=0;j<3;j++)
{
P0=0xfe;
for(i=0;i<7;i++)
{
temp=P0;
temp=_crol_(temp,1);
P0=temp;
// delay();
}
P0=0x7f;
for(i=0;i<7;i++)
{
temp=P0;
temp=_cror_(temp,1);
P0=temp;
// delay();
}
}
}
void circulate_led2()
{
for(i=0;i<3;i++)
{
P0=table1[i%10];
//delay();
}
for(i=0;i<4;i++)
{
P0=table2[i%10];
//delay();
}
}
void flash()
{
for(i=0;i<3;i++)
{
P1=0xff;
//delay();
P1=0x00;
//delay();
}
}
void dark()
{
P1=0xff;
}
我就不知道这个程序为什么运行会一直执行第一个子函数。
结果就是一直在显示第一个子函数的功能。
为什么不能运行到后面呢? 求大神!
uint i,j;
不要定义成全局变量,换成局部变量试试!
提醒一下,
void main()
{
while(1)
{
circulate_s_o();
circulate_led1();
circulate_led2();
flash();
dark();
}
}
为什么 不能定义为全局变量呢?
不是这个子程序执行完了,就不会再执行这个子程序了吗?
全局变量的命名最好有一定的意义,便于识别,增加可读性;i,j是比较常用的变量,命名简单,一般用作局部变量。
我们在用单片机的时候,大循环的方式是比较常见的,所以用了while(1),使程序循环起来。
少了一个循环,其余一切都正常啊!
void main()
{
while(1)
{
circulate_s_o();
circulate_led1();
circulate_led2();
flash();
dark();
}
}
或者:
void main()
{
circulate_s_o();
circulate_led1();
circulate_led2();
flash();
dark();
while(1){}
}