流水灯的一点儿困惑

2020-02-01 16:31发布

如何用较为精悍的代码实现这个功能呢?

共有8颗LED,编号依次是1、2……8

实现目标:1流到8再1流到7再1流到6依次到全亮(10000000 、01000000……00000001、10000001、01000001……00000011、10000011、01000011……00000111依次到11111111)

如果用右移的办法不太合适,因为会冲掉右端显示的LED,如果用采用最笨的办法,代码量又很大,有没有较为简单的办法呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
longwu537
1楼-- · 2020-02-02 22:39
4楼的方法可行。当前面8次直接使用右移指令即可。后面8次采用4楼说的用sum+1<<i
longwu537
2楼-- · 2020-02-03 02:56
 精彩回答 2  元偷偷看……
zysblog
3楼-- · 2020-02-03 03:20
Tliang 发表于 2012-12-15 10:37
int main(void)
{
        unsigned char i, j, value;

这是一个不错的思路,用C语言实现起来就是简单啊……
Tliang
4楼-- · 2020-02-03 05:46
zysblog 发表于 2012-12-15 12:57
这是一个不错的思路,用C语言实现起来就是简单啊……

汇编一样简单
xlgxufashu
5楼-- · 2020-02-03 08:02
用c实现,可以有一个专门的函数
Volftooth
6楼-- · 2020-02-03 12:21
无所谓浪费不浪费、单片机里面几 K 的空间不用白不用、除非你程序写满 ROM 了、我至今写过的程序没哪个是完全占完 ROM 的、最多快把 RAM 占完了、

如果你怕占多了可以做一下表的压缩、提取出相同的数值写入一个表、再用第二个表表示位置信息、或者其它方法、

一周热门 更多>