13112|20

12

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

c51编程,读端口,还要不要先输出1? [复制链接]

我怎么看到有的要,有的不要,请高手给讲讲,到底咋回事?谢了
此帖出自51单片机论坛

最新回复

如果知道端口寄存器是1可以不输,但是为了安全期间还是应该输得。  详情 回复 发表于 2008-11-28 22:53
点赞 关注
个人签名网址大全
 

回复
举报

2万

帖子

74

TA的资源

管理员

沙发
 
ZQK的回复:

要的 先输出1 再读
此帖出自51单片机论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

285

帖子

3701

TA的资源

五彩晶圆(中级)

板凳
 
我不是很熟悉,但是帮你问了一下朋友,回复是:

唐:c51跟汇编一样的
aoe:没必要

仅供参考!
此帖出自51单片机论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

4
 
完全看不懂题意。
先输出,后读,什么14?
此帖出自51单片机论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

5
 

oo....................明白咋回事了

传统的8051鸡的I/O口都是开漏型的(如图),不能设置方向。 要先写个'1'出去,让该口变成高阻才能正确地读进来。不过不必每次读都写1,写一次就够了。(估计上电时默认就是1,不去动它就行吧?没确认过。)

BTW,俺没玩过51,上述说法仅供参考。

51.GIF (21.93 KB, 下载次数: 7)

51.GIF
此帖出自51单片机论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

6
 

补充

Port 0稍特殊些:不带上拉电阻,而且上面还多了个FET。
不过上面的FET不是作为'1'驱动用的,而是作为加速——输出从'0'变高阻时瞬间打开一下。
以前曾看过些资料,现在又回想起来了....

----------------------------------------------------
扫瑞,上面的提法错误,在后面更正。:L

[ 本帖最后由 仙猫 于 2008-9-26 10:56 编辑 ]
此帖出自51单片机论坛
 
 
 

回复

97

帖子

0

TA的资源

五彩晶圆(初级)

7
 

恩,仙猫,偶要凑过来问问题了哈,

不过真的是不太明白这些电路,目前只求囫囵吞枣吧嘿嘿~

每次在进行初始化设置的时候,关于“漏极开路”和“推挽”我一直挺头疼的,因为不明白,只是知道,对于端口的设置,有这样的要求:
作为数据输入口,设置为开漏模式。
作为数据输出口,设置为推挽模式,或者开漏模式(此时需要外接上拉电阻)
为啥呢?为啥要这样设置?不过真的很抱歉,我连这些电路都看不懂,仙猫概括的说一哈就好,我自己再看书哈

第一次写程序的时候,接收温度传感器的高低电平信号的时候总是出问题,头儿过来看了一哈程序说,端口好像要置成高电平,于是每次写程序的时候就有了
MOV Pn, #0FFH (n = 0、1、2、3)
但不明白为什么啊,头儿也只是用“好像”来解决问题~~:L

“传统的8051鸡的I/O口都是开漏型的(如图),不能设置方向。 要先写个'1'出去,让该口变成高阻才能正确地读进来。不过不必每次读都写1,写一次就够了。”
你的这段话应该是说明了原因,但我还是不太明白呀,为什么不能设置方向?为什么要先写个“1”,变成高阻才能正确的读进来?
天,自己这样真的是很过分,读不懂电路图还在这里问问题。。。:L
真的很抱歉!
此帖出自51单片机论坛
 
 
 

回复

1759

帖子

0

TA的资源

裸片初长成(高级)

8
 
呵呵 不用写1进去 因为p0口设置了上啦电阻 就已经外部置高电平了 只要在程序开始的时候 全部写1 然后运行就可以了
此帖出自51单片机论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

9
 
关于推挽和开漏,俺觉得自己挺缺乏授业的天分的,难以言简意赅地说明问题,好在这方面网文不少,推荐兔兔先看看,然后视情况再深入讨论:
http://blog.gkong.com/more.asp?name=peng4534&id=28759
http://hi.baidu.com/sxlfht/blog/ ... 08db778ad4b258.html

推挽和开漏的一个显著的区别是:开漏输出的'1'不是低阻型的,于是可以把它跟输入口并接而不附加额外的切换机构——51的内部结构就是这样,条件是输出要置成'1'让FET截止。想想要是置成'0'会咋样呢?输入对地短路,什么也看不见了!
推挽型输出'0'/'1'都是低阻的,总有一个FET导通着,所以不能和输入并接在一起,必须要通过一个切换机构来控制方向。

俺在上面的回帖里对“开漏型”和“不能设置方向”表达得不准确,容易误解。其实两者没有因果关系,这里扫瑞+更正一下。
顺便说一哈,51的结构是很很很陈旧的,是硬件贫乏年代的设计,I/O用起来太不方便。只因51实在太普及以至于大家狠不下心来抛弃它。不过现在再也不会出这样的单片鸡了。
此帖出自51单片机论坛
 
 
 

回复

97

帖子

0

TA的资源

五彩晶圆(初级)

10
 

回复 仙猫,小51 的帖子

谢谢哈~~
谢谢仙猫推荐的文章,这应该是自己做的事情,很抱歉呀!
俺去学习去,回来再问问题~~
非常感谢!
此帖出自51单片机论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

11
 

查了下资料,发现

C8051和STC两个系列的I/O,已经离经叛道,加上了推挽功能。
“人不能两次走进同一条河流”,51也在前进。:D
此帖出自51单片机论坛
 
 
 

回复

18

帖子

0

TA的资源

五彩晶圆(初级)

12
 
zhaosiyun 你好,我来给你个答案太深的口结构咱就不说了,理解即可吧。
    读端口有个前提,如果读的是P0口要给该端口加上拉电阻,为什么要给P0加上拉不需给其他的端口加呢?我晕你没有听说吗,P0是后娘的他们没有照顾到,你就给点爱心吧。
    51单片机上电复位时所有的端口都是高电平,也就是你说的1,如果在整个程序运行时,你没有修改过该端口的状态,在你读的时候就没有必要写1了。其实再写也可以的但没有用,那咱还是省省吧。
    如果在程序运行时修改过该端口的状态使它变成了0也就是低电平,那对不起你把它复原成1了再读吧。这就是你问的(有的要,有的不要)的原因。
    为什么要在该端口是1的时候读呢?那咱举个例子吧,你把该端口看做一个可以装水的盆儿,将端口写1时盆儿是可以装水的,也就是可以接受外部输入。你可以随时读盆儿里有没有水(水就算是电吧)。如果该端口是0也就是低电平,那盆儿就是反过来的底儿朝上的,这时你还会去读盆儿里有没有水吗?天呀还是不要去读了免了别人说咱sha。
此帖出自51单片机论坛
 
 
 

回复

1759

帖子

0

TA的资源

裸片初长成(高级)

13
 
呵呵 真厉害
此帖出自51单片机论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

14
 

发现俺有一处说错了,须更正

原帖由 仙猫 于 2008-9-25 20:29 发表
Port 0稍特殊些:不带上拉电阻,而且上面还多了个FET。
不过上面的FET不是作为'1'驱动用的,而是作为加速——输出从'0'变高阻时瞬间打开一下。[/quote]
细读资料,Port 0的上拉FET不是加速用,而是当P0作为系统总线输出时,要用推挽输出的。
相反,P1-P3倒是内置了加速FET,切换着用时要小心,弄不好会出毛刺影响工作。

[quote]原帖由 ZQK 于 2008-9-26 10:09 发表
    读端口有个前提,如果读的是P0口要给该端口加上拉电阻,为什么要给P0加上拉不需给其他的端口加呢?我晕你没有听说吗,P0是后娘的他们没有照顾到, ...

1、读P0并非一定要加上拉电阻。
2、P0的地位是特殊的,驱动能力要大过P1-3,比如做LED段显示口特别合适。不加电阻也是为了不让上拉消耗它的驱动能力。
此帖出自51单片机论坛
 
 
 

回复

97

帖子

0

TA的资源

五彩晶圆(初级)

15
 
在看场效应管的课件,想不明白,为啥随着V(DS)的增加,沟道会出现夹断的状况?
公式推理的过程是这样的,
“VDS=VDG+VGS
      =-VGD+VGS
  VGD=VGS-VDS
当VDS为0或较小时,相当VGS>VGS(th),沟道分布如图,此时VDS 基本均匀降落在沟道中,沟道呈斜线分布。
当VDS增加到使VGS=VGS(th)时,沟道如图02.15(b)所示。这相当于VDS增加使漏极处沟道缩减到刚刚开启的情况,称为预夹断。”

但从电子、空穴的运动角度来想,却想不明白?:Q
有点笨哈~很抱歉~~

N沟道增强型.GIF (12.98 KB, 下载次数: 0)

N沟道增强型.GIF
此帖出自51单片机论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

16
 

钻进材料里……本猫答不上来了。

公式只是鸡耳霍夫电压定律,没提到VGS(th)呀。:L
要是随VDS增加会夹断的话,还咋用FET做开关?
通常IC里用的FET动作原理类似三极管,不过不是靠基集电流,而是靠门极电压VGS来控制D-S的通断。
此帖出自51单片机论坛
 
 
 

回复

1225

帖子

0

TA的资源

裸片初长成(中级)

17
 

关于51单片机的端口!

其实51单片机的并行I/O端口很简单,并没有大家讨论的那么复杂啊!而且讨论得如此热烈,那我也来概括一下吧:
1、51单片机的四个并行口P0,P1,P2,P3开机复位后都为高电平,即FFH状态。
2、P0口是标准的双向口,intel公司在设计MCS51单片机时,是用P0口来扩展外部双向数据总线的,所以,内部没有上拉电阻,当然不是因为“后娘”的事,更不是“没有照顾到”。而现在的51系列单片机虽然不用扩展外部数据总线了,但必须与8031相兼容,所以,保留了原设计不能变,故还是双向口。当用P0口做为输入口时,可以不用外加上拉电阻,但做为输出口时必须外加上拉电阻,才能保证有高电平输出。
3、51单片机P1,P2,P3口是准双向口(不是标准的),所以,内部有上拉电阻,这样外部就不用加上拉电阻了,但如果需要上拉电阻阻值小些,就应外加了。并不是什么推挽和开漏,正常用就行了,没有那么复杂吗!可以随时作输入和输出。
4、四个并行口都是双向的,可以随时读/写操作,不用初始化方向(这点与ATMEL的AVR单片机不同,它在使用前需初始化方向)。所以,先写1不是初始化方向。
5、当输出0后,因内部输入/输出是直接连接的,所以,再做输入读引脚时,就会读成0,即使外部输入高平,也会被内部的输出0拉低了(但这样做是很危险的,容易烧坏芯片的,应避免这样操作和设计)。因此,当I/O引脚做为输入时,就先写入1,这样,读入的电平才能由外部电路确定。如果开机后,没有给引脚写过0,做输入时就不必先写1了,但为了准确起见,还是先写1为好,反正也不费什么劲吗!
6、当单片机的I/O脚外接双向数据线的芯片时,如AT24CXX系列的存储器的数据引脚,就要随时进行读/写操作了,在读数据前就一定要先写1,才能读入正确的数据,因输出数据时已经改变了I/O引脚的状态了,不能保证确实为1,就必写1才行呢。
此帖出自51单片机论坛
 
 
 

回复

97

帖子

0

TA的资源

五彩晶圆(初级)

18
 

谢谢仙猫,忙忙草!

这些基本的电路,你们都是明白的,只是自己基础太差了,所以不明白哈
所以,现在在慢慢看,慢慢学,慢慢问,一时半会儿是补不上来的,俺知道,不过俺学起来觉得挺有意思的~~
谢谢大家哈~~
此帖出自51单片机论坛
 
 
 

回复

97

帖子

0

TA的资源

五彩晶圆(初级)

19
 

回复 16楼 仙猫 的帖子

在N沟道增强型MOS管中,对于VGS(th)的描述是这样的:

“当栅极加有电压时,若0<VGS<VGS(th)时,通过栅极和衬底间的电容作用,将靠近栅极下方的P型半导体中的空穴向下方排斥,出现了一薄层负离子的耗尽层。耗尽层中的少子将向表层运动,但数量有限,不足以形成沟道,将漏极和源极沟通,所以不可能形成漏极电流ID。”

我的理解是,VGS(th)就是形成导电沟道的临界栅源电压值。在VDS一定,VGS>VGS(th)时,随着VGS的增加,I(D)逐渐增加。
但是对于“夹断”,我现在还是没有理解。对于“夹断”的描述,可能是自己表达得不清楚吧。于是就把自己看的课件上传上来了。
谢谢!

lecture04.rar

490.18 KB, 下载次数: 1

此帖出自51单片机论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(高级)

20
 

Re: [求助] c51编程,读端口,还要不要先输出1?

谢谢大家了
此帖出自51单片机论坛
 
个人签名网址大全
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表