[PIC®/AVR®/dsPIC®产品] PIC单片机的IO口设置为输出时还能读数据吗?

[复制链接]
5631|15
 楼主| hj007 发表于 2017-3-15 13:40 | 显示全部楼层 |阅读模式
PIC单片机在与I2C器件模拟时序通信时需要单片机发送数据,同时I2C设备也要发送应答信号,当设置单片机的IO口为输出时能否读取数据?
例如:
#define        SCL                LATDbits.LATD2
#define         SDA           LATDbits.LATD3


发送数据时置位SDA或清零SDA,当需要读取应答信号时能否把SDA的值赋给一个变量?

NE5532 发表于 2017-3-15 13:59 | 显示全部楼层
这个在需要读入时,要切换到输入状态,输出状态读不到引脚(起码在现在的层次上暂时这样认为)。
 楼主| hj007 发表于 2017-3-15 15:05 | 显示全部楼层
NE5532 发表于 2017-3-15 13:59
这个在需要读入时,要切换到输入状态,输出状态读不到引脚(起码在现在的层次上暂时这样认为)。 ...

那有没有一种简洁一点的切换方法?比如使用一个宏定义
NE5532 发表于 2017-3-15 15:08 | 显示全部楼层
hj007 发表于 2017-3-15 15:05
那有没有一种简洁一点的切换方法?比如使用一个宏定义

宏,只是你写起来省事一点,单片机需要的操作步骤一点也不少。
山东电子小菜鸟 发表于 2017-3-20 16:09 | 显示全部楼层
这个在需要读入时,要切换到输入状态,输出状态读不到引脚(起码在现在的层次上暂时这样认为)。
mojingjian 发表于 2017-3-21 22:38 | 显示全部楼层
路过学习
tdh03z 发表于 2017-3-22 18:36 来自手机 | 显示全部楼层
记得现在IO口寄存器输出输入是分开的,自己试下,应该可以读出
 楼主| hj007 发表于 2017-3-27 08:58 | 显示全部楼层
NE5532 发表于 2017-3-15 15:08
宏,只是你写起来省事一点,单片机需要的操作步骤一点也不少。

谢谢了
拉普拉思 发表于 2017-5-22 21:30 | 显示全部楼层
可以读啊,寄存器不一样,
• TRISx:数据方向寄存器
• PORTx:I/O 端口寄存器
• LATx:I/O 锁存寄存器
shenzhenherry 发表于 2017-5-23 10:37 | 显示全部楼层
这个问题都不应该问!
PIC系列的单片机与51的本质区别就是IO口的应用问题
因为内部的硬件结构的不同
51在操作io口时,可以不管当前是设置的输入还是输出状态
而PIC系列,一定要先设置好是输入还是输出!
若设置为输出状态,而想读入数据,真是做梦呀
yangzj1974 发表于 2018-2-13 15:28 | 显示全部楼层
toicbin 发表于 2019-8-8 15:49 | 显示全部楼层
shenzhenherry 发表于 2017-5-23 10:37
这个问题都不应该问!
PIC系列的单片机与51的本质区别就是IO口的应用问题
因为内部的硬件结构的不同

As with any other register, the I/O register(s) can be
written and read under program control. However, read
instructions (e.g., MOVF PORTB,W) always read the I/O
pins independent of the pin’s Input/Output modes.
hyxstrive 发表于 2021-11-4 09:22 | 显示全部楼层
从图上看,TRIS寄存器么有禁止输入,所以读LAT和读PORT应该跟TRIS寄存器无关。那么不管是设置输入还是输出,读应该都是可以读的。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评论

当然啦,设置为输入就不能读LAT寄存器了  发表于 2021-11-4 09:23
hu9jj 发表于 2021-11-4 11:24 | 显示全部楼层
需要读入引脚电平时设置为输入模式,需要控制引脚电平时设置为输出模式,就如同I2C的SDA引脚一样。
dengdc 发表于 2023-2-10 19:51 | 显示全部楼层
本帖最后由 dengdc 于 2023-2-10 19:54 编辑

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

本版积分规则

9

主题

39

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部