导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→有关51的IO口的几个问题?[齐浩]

 *第14444篇: 有关51的IO口的几个问题?

  
楼 主:齐浩 2003年7月15日11:13
 有关51的IO口的几个问题?
我是初学者
有关51的IO口我有几个问题要问,请指教:
1.P0口在做IO口用时,要加上了电阻,一般多大?10K?这是怎么算出来的?

2.P1/2/3内部有上拉电阻,所以当作IO口时不需加上拉电阻,那么是不是说,任何时候,都不需加?遇到OC呢?如有I2C挂在上边,那还要再另加上拉电阻吗?像有些DATASHEET上的典型应用中接到uP(并未特别指出哪种uP)的示意图中,加上拉电阻的情况,我用P1/2/3时还需再加上拉吗?如DS1820等的DATASHEET上建议的强上拉的情况怎么处理呢?如果用P口做按键输入,那么由于内部有上拉,是不是可以直接经过按键接地呢?我没看见过这种用法,但是否理论上可行?

3.P1/2/3的操作有对锁存器和对引脚操作的区别,我有些区分不开,是不是简单点,用指令就能分开?如只有MOV是对引脚读写,其他的如ANL,ORL等就是对锁存器操作?两种操作的结果有什么区别,会互相影响吗?是不是这两种操作的区别仅体现在读上?

4.很多地方提到对端口的操作:读--修改--些端口操作,没能搞懂,这样操作,有什么好处?是因为这样不会引起错误?那么,如果引起错误,会是什么样的错误呢?不用这种,直接读写,不行吗?

5.P1/2/3做输入口,学要先写FFH,以使内部场效应管截止,从而不会出现误读,那么还是那个问题,我若对某1个端口做读操作,先写了1,用什么命令才是读入了引脚的信息呢?举个例子,如果我用P1.1接按键,来查询,用如下命令能实现吗(有健按下跳到KEY1)?SETB P1.1    LOOP:JNB P1.1,KEY1   AJMP LOOP;(暂且不去管消抖) ,这样写,能实现吗?是在读引脚状态吗?另外,我也读了一些程序,我特地注意了一下,很多在进行端口读操作时并未进行先写1,是不是因为复位时P口已经是FFH了?还有的程序,如用口线对串行器件操作,先写一的操作怎么处理?我看过一个对DS1302进行读写的程序,在对一串数据进行读时,只是在第一次时进行了写一操作,其他的就是顺着读下去了,这样行吗?不会误读?还是就是应该这样,只对P口进行一次写一,就可以?从P口的结构来看,我觉得不是,应该每读一位前都写一,不知对不对?最后,如果不进行写一操作,错误率会很高吗?


我是初学者,这些问题想了很久,一直也没搞清,请大虾帮忙,别光看看,发表点评论,解决一个是一个啊。

再次感谢!

  
2楼:guest 2003年7月15日11:42
 都20好几的人了,如果上述这些问题都没搞定,还是改行吧,这口饭不是谁都能吃的
都20好几的人了,如果上述这些问题都没搞定,还是改行吧,这口饭不是谁都能吃的
  
3楼:麦迪那师 2003年7月15日19:37
 入门有先后
术业有专攻
这很正常

入门有先后
术业有专攻
这很正常
  
4楼:xdkjason 2003年7月15日12:09
 不要打击他,或许他在这方面了解不透(我也不懂,但我会用),齐浩,认真看看书吧(北航的不错)
  
5楼:madnut 2003年7月15日12:39
 何立民教授的是
  
6楼:xdkjason 2003年7月15日15:15
 到这里去查查,很多的
  
7楼:齐浩 2003年7月15日15:27
 谢谢。
说句实话,书我也看过一些,但对这些问题作论述的不太多,有,也说的含含糊糊,能不能推荐一本?电子版的也好。
  
8楼:madnut 2003年7月15日15:41
 E文好的话去看最底层的官方公布的器件Datasheet
  
9楼:齐浩 2003年7月15日15:42
 你是说到INTEL那里去看8031的?
  
10楼:madnut 2003年7月15日15:48
 OK.Intel首先设计的51核,当然是最权威
  
11楼:madnut 2003年7月15日16:14
 1.10K上拉电阻是根据内部场效应管漏级静态电流算出的(Ohm定律)
1.10K上拉电阻是根据内部场效应管漏级静态电流算出的(Ohm定律)
2.P1~P3一般不需加上拉电阻,有加也是与之相连的电路是OC(射级开路)或OD(漏级开路)
3&4.关于读-改-写操作与对锁存器和对引脚操作:
    譬如    MOV  A,P0       ;读引脚
              ORL   P0,A       ;读锁存器,读-改-写操作
5.有人已经回答
  
12楼:madnut 2003年7月16日09:37
 
1.漏级饱和电流,如果要加大驱动能力,可适当减小该阻值,但P0口最多能驱动8个LSTTL输入,P1~P3为4个.
2.OC,Open Collector, 集级开路(Shit,what a piggy mistake!)
  
13楼:齐浩 2003年7月15日17:20
 谢。
  
14楼:guest 2003年7月16日09:04
 不要只是问,这些问题,做个小试验马上明白
不要只是问,这些问题,做个小试验马上明白,对你印象还深。
  
15楼:guest 2003年7月16日09:17
 楼上家伙说得有道理!
楼上家伙说得有道理!
要学会问问题!
  
16楼:yujiaao 2003年7月16日15:24
 应多多交流,我也问问
我觉这个问题不错,
单片机的管脚很多说安排得很巧妙?
怎么个巧妙呢?
管脚困惑不少初学者,认识与灵活应用有很大的差距
  
17楼:guest 2003年7月16日19:27
 驱动能力太小
P1P2口的内部阻抗都好大(几十千欧)
很多时候要加驱动
  
18楼:guest 2003年7月16日19:57
 我一般这样
1.20k
2.这是和作输入口相同的,由于内部阻抗大.即使在直接接地的情况,其输出电流仍然很小,没什么影响的.要挂大电流的器件必须加驱动.
3.错了.如:mov p1,#0即是写寄存器也把电压反应在引脚上了(相当与全与地短接了),这时读引脚(mov a,p1)读入的为#00h.
4.与3同.若相应位原来锁0,则读入0.
5.复位后p0--3都锁ffh;可以直接用p1口作键盘;不写1,你就等着"不可预计的错误"吧.
  
19楼:guest 2003年7月18日13:56
 继续努力,不断学习,善于不耻下问。
上拉电阻用4.7k,另外I/O口指令是以硬件为基础的,建议先了解一下场效应管,和普通的
三极管功能不完全相同。

>>>>>>对该主题发表你的看法

本主题贴数19,分页: [第1页]


[上一篇主题]:帮帮忙!

[下一篇主题]:DBG8051问题