如何用较为精悍的代码实现这个功能呢?
共有8颗LED,编号依次是1、2……8
实现目标:1流到8再1流到7再1流到6依次到全亮(10000000 、01000000……00000001、10000001、01000001……00000011、10000011、01000011……00000111依次到11111111)
如果用右移的办法不太合适,因为会冲掉右端显示的LED,如果用采用最笨的办法,代码量又很大,有没有较为简单的办法呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
查表,我算了一下,很浪费空间的,比如,我有16个灯,那么就有(1+16)*16/2*2=272个字节,这太浪费空间了吧,难道有更好的查表方法吗?
针对这个题,查表要耗费多少字节啊?
{
unsigned char i, j, value;
while(1)
{
for(i = 0;i < 8;i++)
{
value = ~(0xff >> i);
for(j = 0;j < 8 - i;j++)
{
P1 = (1 << j) | value;
delay(200);
}
}
}
return 0;
}
- int main(void)
- {
- unsigned char i, j, value;
- while(1)
- {
- for(i = 0;i < 8;i++)
- {
- value = ~(0xff >> i);
- for(j = 0;j < 8 - i;j++)
- {
- P1 = (1 << j) | value;
- delay(200);
- }
-
- }
- }
- return 0;
- }
复制代码一周热门 更多>