标题: 求助,proteus仿真的流水灯只有第一个一直在闪 [打印本页]

作者: whisper_1021    时间: 2020-11-23 22:35
标题: 求助,proteus仿真的流水灯只有第一个一直在闪
目前的效果就是只有第一个在闪,找了很久都找不出原因

捕获.PNG (35.14 KB, 下载次数: 74)

电路图

电路图

2.PNG (50.26 KB, 下载次数: 88)

流水灯代码

流水灯代码

作者: mengzhixinheng    时间: 2020-11-24 06:54
符号错了,这么明显啊!!!
作者: songxia8013    时间: 2020-11-24 08:45
P1=~(temp>>a);  改成这句试试
作者: whisper_1021    时间: 2020-11-24 12:41
songxia8013 发表于 2020-11-24 08:45
P1=~(temp>>a);  改成这句试试

还是不行。。
作者: whisper_1021    时间: 2020-11-24 12:43
songxia8013 发表于 2020-11-24 08:45
P1=~(temp>>a);  改成这句试试

改成
  1. P1=~(temp<<a);
复制代码
就可以了,
这是什么原理。。。
作者: mengzhixinheng    时间: 2020-11-25 07:56
whisper_1021 发表于 2020-11-24 12:43
改成就可以了,
这是什么原理。。。

P1的初值是什么!!!
作者: wufeng391    时间: 2020-11-25 08:33
>>是右移操作,<<是左移操作
0x01等于二进制的0000 0001
因为led的正极接的是电源正极,负极接的是IO,所以只有当IO为0时LED才会亮
如果右移0位,变成0000 0001,取反就变成了1111 1110,最上边的LED亮
如果右移大于或等于1位,都是0000 0000,取反变成1111 1111,是不会有LED亮的

如果是左移操作的话
左移一位,运算结果就变成了1111 1101,第二位LED 亮,其它LED不亮
左移二位,运算结果就变成了1111 1011,第三位LED 亮,其它LED不亮
依此类推,随着a的不断变化,形成了LED依次点亮的流水灯效果。

你可以在网上看一些视频教程。在原理上有更加详细的说明。

作者: 落日残霞    时间: 2020-11-25 12:01
whisper_1021 发表于 2020-11-24 12:43
改成就可以了,
这是什么原理。。。

“<<”左移符号,让00000001左移00000010再左移00000100,以此类推。
作者: ryrx    时间: 2020-11-25 12:22

右翼符号戳了P1=~(temp>>a);  改成这样
作者: yyyy99    时间: 2020-11-25 12:26
应该是>>的符号吧
作者: SGSfengtql12    时间: 2020-11-25 20:45
第一,最小系统搭的有点问题;第二,可以temp=0xfe,然后直接左移,没必要加个取反增加理解难度




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1