今天 使用keil 编写8*8LED点阵, 想实现 一个亮点 从左到右,然后接着从上到下, 从右到左,最后再从下到上,刚好绕走一圈, 请问 各位高手,是否也写过这种算法 ?
为什么 我 的算法 无法实现:最后再从下到上
#include<reg52.h>
//P0口与J12 连接 P2与J19绿色连接
//在内部DPa-DPh段 与J19绿色连接
//RE1-RE8 GR1-GR8 控制该行显示哪个点
//P2 控制行 P0高电平 选择行
//P0控制该行里显示哪个点 P0低电平 点亮
unsigned char code table0[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //P0
unsigned char code table2[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //P2
void Delay()
{
unsigned char j;
unsigned int i;
for(i=300; i>0; i--)
for(j=110; j>0; j--);
}
void main()
{
unsigned char i=0, j=0;
while(1)
{
//从左到右
j=0;
P2=table2[j];
while(i<8)
{
P0=table0[i];
Delay();
i++;
}
//从上到下
i=7;
j=1;
P0=table0[i];
while(j<8)
{
P2=table2[j];
Delay();
j++;
}
//从右到左
i=6;
j=7;
P2=table2[j];
while(i>=0)
{
P0=table0[i];
Delay();
i--;
}
//从下到上
i=0;
j=7;
P0=table0[i];
while(j>=0)
{
P2=table2[j];
Delay();
j--;
}
哪位高手指点下, 为什么在开发板上无法看到效果:从下到上 , 但是可以看到效果: 从左到右,然后接着从上到下, 从右到左,
}
谢谢了。
}
------解决方案--------------------
i是unsigned的,所以从右到左的那个while循环永远不会退出