找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2248|回复: 24
打印 上一主题 下一主题
收起左侧

可以将一个现成的单片机LED流水灯程序扩展赋值到所有I/O口吗?

[复制链接]
跳转到指定楼层
楼主
ID:876947 发表于 2024-5-6 09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大侠指教:可以将一个现成的单片机LED流水灯程序扩展赋值到所有I/O口吗?是不是将原有(比如P1口)指向移植到其它(P2、P3、P4......)口就可以了?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1109793 发表于 2024-5-6 11:22 | 只看该作者
应该可以把
回复

使用道具 举报

板凳
ID:883242 发表于 2024-5-6 13:26 | 只看该作者
当然可以了,修改IO口置位复位指令就行。
回复

使用道具 举报

地板
ID:858964 发表于 2024-5-6 14:20 | 只看该作者
在原程序中修改I/O口, 例如将P1 改为P2 .P3,P4,...
回复

使用道具 举报

5#
ID:876947 发表于 2024-5-6 14:44 | 只看该作者
Kxuan163 发表于 2024-5-6 14:20
在原程序中修改I/O口, 例如将P1 改为P2 .P3,P4,...

你好!我说的是同时赋值到所有的I/O口。
回复

使用道具 举报

6#
ID:27984 发表于 2024-5-6 14:46 | 只看该作者
代码中可以修改I/O口, 将P1 改为P2 .P3,P4,...
回复

使用道具 举报

7#
ID:883242 发表于 2024-5-6 15:39 | 只看该作者
白水大虾2016 发表于 2024-5-6 14:44
你好!我说的是同时赋值到所有的I/O口。

显然是不可能的,8051就没有这种指令。
回复

使用道具 举报

8#
ID:1010435 发表于 2024-5-6 23:27 | 只看该作者
P1=......
P2=......
P3=......
P4=......
......是相同的数值  复制一下不就行了 4个口同时流水
回复

使用道具 举报

9#
ID:57657 发表于 2024-5-6 23:49 | 只看该作者
白水大虾2016 发表于 2024-5-6 14:44
你好!我说的是同时赋值到所有的I/O口。

单片机是8位1组并行IO口,一条指令最多传送8位,要么加74HC273或74HC595锁存,FPGA可以无限位并行传送。
回复

使用道具 举报

10#
ID:1110945 发表于 2024-5-7 00:00 | 只看该作者
白水大虾2016 发表于 2024-5-6 14:44
你好!我说的是同时赋值到所有的I/O口。

虽然不能同时赋值到所有的I/O口,但可以紧跟着赋值到其它的I/O口,
中间的时间间隔很短,从宏观上看我们感觉是“同时”的。
回复

使用道具 举报

11#
ID:213173 发表于 2024-5-7 06:27 | 只看该作者
白水大虾2016 发表于 2024-5-6 14:44
你好!我说的是同时赋值到所有的I/O口。

绝对同时不可能,相对同时(相差几us秒)可以。
#include <reg51.h>

void Delay_ms(unsigned int t)
{
        unsigned int i,j;
        for(i=t;i>0;i--)
                for(j=120;j>0;j--);
}

void main(void)
{
        unsigned long temp=0xfffffffe;
        while(1)
        {
                P0=temp;
                P1=temp>>8;
                P2=temp>>16;
                P3=temp>>24;
                Delay_ms(1000);
                temp=temp<<1|1;
                if(temp==0xffffffff)
                        temp=0xfffffffe;
        }
}
回复

使用道具 举报

12#
ID:876947 发表于 2024-5-7 11:46 | 只看该作者
wulin 发表于 2024-5-7 06:27
绝对同时不可能,相对同时(相差几us秒)可以。
#include

明白了,谢谢哈!
回复

使用道具 举报

13#
ID:876947 发表于 2024-5-7 12:17 | 只看该作者
npn 发表于 2024-5-6 23:49
单片机是8位1组并行IO口,一条指令最多传送8位,要么加74HC273或74HC595锁存,FPGA可以无限位并行传送。

这我就明白了,谢谢大侠!
回复

使用道具 举报

14#
ID:876947 发表于 2024-5-7 12:18 | 只看该作者
明日之星8 发表于 2024-5-7 00:00
虽然不能同时赋值到所有的I/O口,但可以紧跟着赋值到其它的I/O口,
中间的时间间隔很短,从宏观上看我们 ...

明白了,谢谢大侠!
回复

使用道具 举报

15#
ID:876947 发表于 2024-5-7 12:20 | 只看该作者
wulin 发表于 2024-5-7 06:27
绝对同时不可能,相对同时(相差几us秒)可以。
#include

学习了,谢谢大侠!无限感谢!
回复

使用道具 举报

16#
ID:876947 发表于 2024-5-7 12:25 | 只看该作者
wulin 发表于 2024-5-7 06:27
绝对同时不可能,相对同时(相差几us秒)可以。
#include

请教大侠:流水灯语句放在此语句的什么位置?前端、中端还是终端?
回复

使用道具 举报

17#
ID:213173 发表于 2024-5-7 16:14 | 只看该作者
白水大虾2016 发表于 2024-5-7 12:25
请教大侠:流水灯语句放在此语句的什么位置?前端、中端还是终端?

temp=temp<<1|1;这就是流水
回复

使用道具 举报

18#
ID:961114 发表于 2024-5-7 17:03 | 只看该作者
为啥会有如此奇怪的问题,初学者就先学习范例程序啊
回复

使用道具 举报

19#
ID:876947 发表于 2024-5-8 10:58 | 只看该作者
npn 发表于 2024-5-6 23:49
单片机是8位1组并行IO口,一条指令最多传送8位,要么加74HC273或74HC595锁存,FPGA可以无限位并行传送。

明白,谢谢哈!
回复

使用道具 举报

20#
ID:876947 发表于 2024-5-8 10:59 | 只看该作者
wulin 发表于 2024-5-7 06:27
绝对同时不可能,相对同时(相差几us秒)可以。
#include

学习了,谢谢哈!
回复

使用道具 举报

21#
ID:876947 发表于 2024-5-8 11:00 | 只看该作者
wulin 发表于 2024-5-7 06:27
绝对同时不可能,相对同时(相差几us秒)可以。
#include

请教大侠:流水灯语句放在此语句的什么位置?前端、中端还是终端?
回复

使用道具 举报

22#
ID:876947 发表于 2024-5-8 11:02 | 只看该作者
STC庄伟 发表于 2024-5-7 17:03
为啥会有如此奇怪的问题,初学者就先学习范例程序啊

就是个菜鸟呀
回复

使用道具 举报

23#
ID:876947 发表于 2024-5-8 12:15 | 只看该作者

老师你好!是全亮,将Delay_ms(1000)数值修改没用,什么原因呢?
回复

使用道具 举报

24#
ID:213173 发表于 2024-5-8 13:42 | 只看该作者
白水大虾2016 发表于 2024-5-8 12:15
老师你好!是全亮,将Delay_ms(1000)数值修改没用,什么原因呢?

这个简单程序是基于51单片机,12M晶振验证过的。改延时只能改变流水快慢。原代码延时是1秒。
回复

使用道具 举报

25#
ID:876947 发表于 2024-5-9 12:09 | 只看该作者
wulin 发表于 2024-5-8 13:42
这个简单程序是基于51单片机,12M晶振验证过的。改延时只能改变流水快慢。原代码延时是1秒。

谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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