本帖最后由 落秋 于 2013-8-21 22:23 编辑
附件在此, 本来想做led灯来回闪烁的,使用注释掉代码只能跑一次,然后停在led4上面 一直亮着不动 改过的程序可以实现来回闪烁 但是不知道注释掉的代码错哪里了
#define GPBCON (*(volatile unsigned long *)0x56000010)
#define GPBDAT (*(volatile unsigned long *)0x56000014)
/*
* LED1,LED2,LED4对应GPB5、GPB6、GPB7、GPB8
*/
#define GPB5_out (1<<(5*2))
#define GPB6_out (1<<(6*2))
#define GPB7_out (1<<(7*2))
#define GPB8_out (1<<(8*2))
void wait(volatile unsigned long dly)
{
for(; dly > 0; dly--);
}
/*int shan(int a)
{
if(a==5)
{
for(a=5;a<=8;a++)
{
wait(30000);
GPBDAT = (~(1<<a)); // 根据a的值,点亮LED1,2,3,4
}
return a;
}
else if(a==8)
{
for(a=8;a>=5;a--)
{
wait(30000);
GPBDAT = (~(1<<a)); // 根据a的值,点亮LED1,2,3,4
}
return a;
}
}*/
int shan(int a)
{
for(a=5;a<=8;a++)
{
wait(30000);
GPBDAT = (~(1<<a)); // 根据a的值,点亮LED1,2,3,4
}
for(a=8;a>=5;a--)
{
wait(30000);
GPBDAT = (~(1<<a)); // 根据a的值,点亮LED1,2,3,4
}
}
int main(void)
{
int a=5;
// LED1,LED2,LED4对应的4根引脚设为输出
GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out;
while(1)
{
//wait(30000);
/* if(a==5)
a = shan(a);
else if(a==8)
a=shan(a);*/
shan(a);
}
return 0;
}
|