打印

I/O口问题

[复制链接]
2109|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
原野之狼| | 2012-9-9 23:17 | 只看该作者
传统的也需要设置方向  只是没有单独的方向寄存器一说

使用特权

评论回复
板凳
20120703|  楼主 | 2012-9-9 23:28 | 只看该作者
传统的也需要设置方向  只是没有单独的方向寄存器一说
原野之狼 发表于 2012-9-9 23:17


传统的没有设置直接就可以双向使用啊,比如我在控制LCD1602时候在写数据之前需要事先判断下是否忙,就需要先读下。不忙的话然后就可以写数据了,这个过程中方向都是自动完成的啊,我并没有设置方向啊,并且也没有相关的寄存器可以设置啊。

使用特权

评论回复
地板
原野之狼| | 2012-9-9 23:52 | 只看该作者
所谓“设置”为输入就是对输出寄存器写1
单片机复位后该输出寄存器默认值为0XFF,若程序中仅对此IO作为输入操作,那么可以不用做此写1操作。
目前你的做法可能是有问题的,没有出现问题的原因可能是:
1 你的上次对此IO的写操作就是1,所以在读的时候不会出问题。
2 或许在编译的时候增加了写1的操作,我不能肯定,这个你跟踪下汇编代码就知道了。

使用特权

评论回复
5
20120703|  楼主 | 2012-9-10 00:17 | 只看该作者
明白了

使用特权

评论回复
6
20120703|  楼主 | 2012-9-10 00:37 | 只看该作者
本帖最后由 20120703 于 2012-9-10 00:39 编辑
所谓“设置”为输入就是对输出寄存器写1
单片机复位后该输出寄存器默认值为0XFF,若程序中仅对此IO作为输入操作,那么可以不用做此写1操作。
目前你的做法可能是有问题的,没有出现问题的原因可能是:
1 你的上次对 ...
原野之狼 发表于 2012-9-9 23:52



我看了下STC的51单片机手册上是这么写的,不清楚为什么要写1啊,在这个图上能解释清楚吗。

使用特权

评论回复
7
lyjian| | 2012-9-10 08:26 | 只看该作者
写“1”下面的“强”下面的MOS关断,输出靠弱上拉维持高电平,外面可以拉高或拉低IO。
如果写“0”的话,“强”下面的MOS导通,输出低电平,外面拉高不了IO(强行拉高IO的话会损坏IO)。

使用特权

评论回复
8
ayb_ice| | 2012-9-11 15:48 | 只看该作者
从软件的角度讲,传统的51IO结构最好,只是耗电大点,但现在很多51已经出现自动关闭上拉电阻功能的51了,这样也很省电了

使用特权

评论回复
9
lyjian| | 2012-9-11 17:55 | 只看该作者
如果要真正的高阻的话就不好了

使用特权

评论回复
10
趣味单片机| | 2012-9-12 10:52 | 只看该作者
用传统的51,在IO口上接一个LED,串一个电阻到地,能点亮吗? 现在知道是进步还是退步了吧。

使用特权

评论回复
11
coody| | 2012-9-12 11:48 | 只看该作者
8楼说的对。

象STC的51,IO口弱上拉最的电流出现在大约2V时,电流大约100~300uA,当外电路拉低到0.8V以下,则关闭弱上拉,打开极弱上拉大约16uA,省电。

使用特权

评论回复
12
coody| | 2012-9-12 11:49 | 只看该作者
10楼,用51驱动单个LED我从来都是拉低亮。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

263

帖子

3

粉丝