找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

求助,proteus仿真的流水灯只有第一个一直在闪

查看数: 3805 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-11-23 22:35

正文摘要:

目前的效果就是只有第一个在闪,找了很久都找不出原因

回复

ID:658766 发表于 2020-11-25 20:45
第一,最小系统搭的有点问题;第二,可以temp=0xfe,然后直接左移,没必要加个取反增加理解难度
ID:847574 发表于 2020-11-25 12:26
应该是>>的符号吧
ID:804944 发表于 2020-11-25 12:22

右翼符号戳了P1=~(temp>>a);  改成这样
ID:758126 发表于 2020-11-25 12:01
whisper_1021 发表于 2020-11-24 12:43
改成就可以了,
这是什么原理。。。

“<<”左移符号,让00000001左移00000010再左移00000100,以此类推。
ID:782419 发表于 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依次点亮的流水灯效果。

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

评分

参与人数 1黑币 +40 收起 理由
admin + 40 绝世好帖!

查看全部评分

ID:89515 发表于 2020-11-25 07:56
whisper_1021 发表于 2020-11-24 12:43
改成就可以了,
这是什么原理。。。

P1的初值是什么!!!
ID:848083 发表于 2020-11-24 12:43
songxia8013 发表于 2020-11-24 08:45
P1=~(temp>>a);  改成这句试试

改成
  1. P1=~(temp<<a);
复制代码
就可以了,
这是什么原理。。。
ID:848083 发表于 2020-11-24 12:41
songxia8013 发表于 2020-11-24 08:45
P1=~(temp>>a);  改成这句试试

还是不行。。
ID:102963 发表于 2020-11-24 08:45
P1=~(temp>>a);  改成这句试试
ID:89515 发表于 2020-11-24 06:54
符号错了,这么明显啊!!!

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表