单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 374|回复: 11
收起左侧

51单片机端口复用问题

[复制链接]
kuba310 发表于 2018-12-16 11:35 | 显示全部楼层 |阅读模式
10黑币
本人初学者,遇到难题,请求各位行家帮忙,51单片机端口复用问题:单片机控制外围设备时,什么情况下可以端口复用,如何复用?有可以实现的例子最好(C语言实现),比如ADC0809和12864可以都挂在单片机同一端口上吗?可以分时复用吗?如何用?急急急

回复

使用道具 举报

凌净清河 发表于 2018-12-17 18:25 | 显示全部楼层
如果多个器件使用同一种通信协议,那么可以通过总线的方式将器件连接起来,对于1-wire总线和IIC总线,通过地址与特定器件通讯,对于SPI总线,通过片选使能选择特定器件通讯。在IO不够用的情况下,可以通过IO扩展电路实现IO多路复用。除此之外,大多数情况下不可以将不同器件接在同一端口上。
回复

使用道具 举报

凌净清河 发表于 2018-12-17 18:28 | 显示全部楼层
从逻辑的角度,假设两器件已经共享了同一组IO并且没有典型总线协议,如果你可以实现程序上对不同器件的选择和单独控制,IO复用也是可行的,但是要保证一点,在对某一器件操作时,其它器件对IO数据线路应呈现高阻(并不仅仅是不操作),这样才能有效避免干扰。
回复

使用道具 举报

Y_G_G 发表于 2018-12-17 22:28 | 显示全部楼层
大多是可以复用的呀,24CXX系列,18B20不都可以的吗?
一般来说,只要器件有使能端口或者有器件地址可选,那都是可以多用的呀
回复

使用道具 举报

45454545x 发表于 2018-12-18 10:31 | 显示全部楼层
51单片机的分时复用功能,最直接的就是MOVX指令,用这个指令就是在分时复用P0口,执行:MOVX A,@DPTR,那么首先要送地址A0~A7给P0口,ALE有效,锁存在373上,再将这个地址的数据从P0口读入传给A
回复

使用道具 举报

lvjuliet 发表于 2018-12-18 14:51 | 显示全部楼层
那就在每个器件上加上一个使能管脚,使能对应的器件的时候再通信
回复

使用道具 举报

 楼主| kuba310 发表于 2019-1-1 16:12 | 显示全部楼层
凌净清河 发表于 2018-12-17 18:28
从逻辑的角度,假设两器件已经共享了同一组IO并且没有典型总线协议,如果你可以实现程序上对不同器件的选择 ...

请问可以发一个简单的例子(C语言)吗,在下实在是小白一个,还是不会写。
回复

使用道具 举报

 楼主| kuba310 发表于 2019-1-1 16:39 | 显示全部楼层
lvjuliet 发表于 2018-12-18 14:51
那就在每个器件上加上一个使能管脚,使能对应的器件的时候再通信

请问可以发一个简单例子的代码吗(C语言),本人刚开始学习单片机,自己写程序着实困难,目前还处在参考读懂别人程序阶段。谢谢
回复

使用道具 举报

周超然 发表于 2019-1-2 08:33 | 显示全部楼层
是spi分时复用的话,可以通过cs片选。你显示什么东西,要多久刷新一次,分开就行了。
回复

使用道具 举报

兀自清凉 发表于 2019-1-12 22:12 | 显示全部楼层
凌净清河 发表于 2018-12-17 18:28
从逻辑的角度,假设两器件已经共享了同一组IO并且没有典型总线协议,如果你可以实现程序上对不同器件的选择 ...

原来是这样,那我的应该就是有干扰了,我的是lcd1602和DAC0832。有什么办法可以使他们共用一个口,相当于分时间使用。怎么才能让其达到高阻态的效果
回复

使用道具 举报

兀自清凉 发表于 2019-1-12 22:26 | 显示全部楼层
凌净清河 发表于 2018-12-17 18:25
如果多个器件使用同一种通信协议,那么可以通过总线的方式将器件连接起来,对于1-wire总线和IIC总线,通过 ...

如果一个P0口共用:两个DAC0832+一个lcd1602需要使用哪种方案
回复

使用道具 举报

发表于 2019-1-13 14:48 | 显示全部楼层
51单片机的分时复用功能,最直接的就是MOVX指令,用这个指令就是在分时复用P0口,执行:MOVX A,@DPTR,那么首先要送地址A0~A7给P0口,ALE有效,锁存在373上,再将这个地址的数据从P0口读入传给A
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机. 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

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