我想问问关于51单片机I/O口的问题!!

I/O口的输入和输出状态和1和0是什么关系,又或者有关系吗?其实我会用C写流水灯,时钟也编过一个,但我发现我对I/O的问题不懂,但一样可以用C编。51单片机置1是输入状态... I/O口的输入和输出状态和1和0是什么关系,又或者有关系吗?其实我会用C写流水灯,时钟也编过一个,但我发现我对I/O的问题不懂,但一样可以用C编。
51单片机置1是输入状态,是呈现高阻态的,就是I/O口内部结构的开关是断开的,不接地,但还接一个上拉电阻吧!(都带上拉电阻)。那我接低电平的外围器件不就会输出电流了吗?但这是输入状态啊!不矛盾吗?而且单片机的Io口的输出电压也是5V啊,就是通过这个原理输出的吗?
那同理,我置0,是输出状态吧!内部开关闭合,接地,电平拉低,上拉电阻也接地了,拉低了,上拉电阻不对外输出。但怎么输出1呢?不是接地了吗?怎么输出1啊?
输出状态才能输出1和0吗?输入状态不能输出吗?我就是搞不懂啊!!
展开
 我来答
做而论道
高能答主

2014-03-27 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
51单片机置1是输入状态,
--也是输出状态,但是也可以输入。

是呈现高阻态的,就是I/O口内部结构的开关是断开的,不接地,
--P0 口,确实是这样的。

但还接一个上拉电阻吧!(都带上拉电阻)。
--P0 口没有上拉电阻。
--P1P2P3,都有上拉电阻。
--但是电阻很大,几百K,上拉作用有限。

那我接低电平的外围器件不就会输出电流了吗?
--P1P2P3,都有输出电流。
--很小的电流。

但这是输入状态啊!不矛盾吗?
--谁说是输入状态?他是瞎说。
--此时是输出1。
--但是引脚内部的上拉能力有限,因此,这时就可以当输入使用。

而且单片机的Io口的输出电压也是5V啊,就是通过这个原理输出的吗?
--5V?谁说输出5V了?
--引脚上拉能力有限,难以保证5V。
--你外部接地了,就是0V。这就是输入低电平。

那同理,我置0,是输出状态吧!
--置一、清零,都是输出。
--只是,置一后,可以输入。

内部开关闭合,接地,电平拉低,
上拉电阻也接地了,拉低了,上拉电阻不对外输出。
但怎么输出1呢?不是接地了吗?怎么输出1啊?
--《我置0》,你就是输出0,怎么会想到输出1?

输出状态才能输出1和0吗?
--置一、清零,都是输出。

输入状态不能输出吗?
--输入状态,隐含在输出1的时候。
追问
你说的置1和清0都是输出,就是输出1和0的意思吧?我应该理解你,置1和0都是输出,但置1是可以输入的,是这样吗?我说的置1置0是三极管置1和置0,其实你也知内部结构,就是集电极开路结构啊!
是不是内部接地就是输出0,悬空就是输出1?
http://zggcj .blog.163.com /blog/static/191275229201172393012962/这个是怎么理解的?
追答
你说的置1和清0都是输出,就是输出1和0的意思吧?
--是这个意思。
--但是,不是我说的。

我应该理解你,置1和0都是输出,但置1是可以输入的,是这样吗?
--置一,确实是输出。
--但是,内部的上拉作用,很差,
--引脚电压,可以由外部改变,这就是输入。
--这就是《准双向口》的意思。

我说的置1置0是三极管置1和置0,其实你也知内部结构,就是集电极开路结构啊!
是不是内部接地就是输出0,悬空就是输出1?
--只有 P0,是集电极开路结构。
--四个并口,内部结构,都是不同的。细说,就麻烦了。

链接,打开了。

文章太长了,看不下去。
5岳之首
2014-03-27
知道答主
回答量:22
采纳率:0%
帮助的人:19.2万
展开全部
你是不是学过别的单片机。。或者学过A51。。
51单片机IO口置1就输出1,置0就输出0。。至于读,你的变量写在左边,比如
x = P1;
这种情况下编译器解析为读P1口。。。
确实有些单片机存在IO口控制位,控制IO口的方向,即输入还是输出,但是51没有。。编译器是靠IO口寄存器在等号哪一边决定的输入还是输出。

如果在A51的情况下,要加一句
mov P1,0xFF
再读引脚
mov R0,P1
据说这叫准双向口 要先写1才能读。。。我对硬件也不太懂。。
C语言已经把这个给你省略了,编译的时候是自动实现的
追问
是C51,不过学的时候真的很少考虑这个问题,确实C给省略了,但用汇编就要了, 其实IF就是输入的意思,P0=x就是输出的意思。。。但问题还是上面的问题。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wjfhsym
2014-03-27 · TA获得超过944个赞
知道小有建树答主
回答量:475
采纳率:85%
帮助的人:301万
展开全部
你在哪里看到的,“”51单片机置1是输入状态“”,这么说肯定不对的,首先51单片机的IO口是准双向的。 当作输入引脚用时,准双向口读外部数据,要么先锁存为 ‘1’,要么在外部接个上拉,才可读到外部正确的状态,锁存为 ‘1:这只是代表你读外部数据时,应先置1,并不是你说的置1是输入。你理解反了。
追问
http://zggcj. blog.163.com/blog/sta tic/191275229201172393012962/

怎么理解反了?你的意思是不是输入的时候要读取数据要锁存置1或者外接上拉电阻?
追答
原文有一句“  当我们要使用输入功能时,只要将输出口设置为1即可,这样就相当于那个开关断开”。对吧,只能说你还是没完全理解呢,它的意思是使用输入的时候,置1就行,并不是说置1就是输入。   举例说明吧,:小明是学生,这句话没问题,但反过来说,学生是小明,这能对吗。

单片机IO作输入的时候,无非是接收外部数据,其实这只是它准双向功能的一部分。
而当它检测按键电路的时候,也是当输入用,此时IO就只能置1,或者外接上拉了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lx45438
2014-03-27 · TA获得超过1003个赞
知道小有建树答主
回答量:475
采纳率:0%
帮助的人:272万
展开全部
51单片机IO口是双向的既可以做输入也可以做输出,1是指高电平,0是低电平,你置1或0时并不是说如开关断闭,只是单片机IO口输出高或低电平而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夏侯珈蓝德0Ijb04
2014-03-27 · TA获得超过283个赞
知道小有建树答主
回答量:185
采纳率:83%
帮助的人:90.8万
展开全部
输入状态也可以输出的,不过这个输出是电源单纯的供电,而不是单片机输出的信号,并且和电路结构有关而不是受单片机控制,比如有的单片机reset复位后开发板上的LED默认状态都是亮的,就是因为即使没有输出,但是由于上拉或者下拉使LED亮了,这个相当于电源直接给LED供电,而不是单片机输出
追问
那信号是怎么输出的?只有输出状态才能输出1和0吗?但我就说了输出状态都接地了,还怎么输出1呢?只有输入状态的悬空开关,才有可能输出5V的啊!不过你说是供电,那信号又是怎么回事?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式