//你这个程序一直在p0_0左移一,右移一。左移两,右移两,看不出效果,我改成简单一点了左移一个了。
#include
#include
#define uchar unsigned char
#define uint unsigned int
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void delay02s(void)
{
unsigned char i;
for(i=20;i>0;i--)
{
delay10ms();
}
}
void main(void)
{
uint ID=0;
P0=0xfe;
P2=0xff;
while(1)
{
if(P1_0==0)
{
delay10ms();
if(P1_0==0)
{
while(P1_0==0);
}
}
if(P0==0x7F){ID=0;P0=0XFF;P2=0XFE;delay02s();}
else if(P2==0X7F){ID=1;P2=0XFF;P0=0XFE;delay02s();}
else
switch(ID)
{
case 0: P0=_crol_(P0,1);delay02s();break;
case 1: P2=_crol_(P2,1);delay02s();break;
}
}
1,ID未初始化。
2,p0,p2各8位,可以代表16个灯的亮与灭。
3,有些函数与硬件有关,你得自己探索了