有关51单片机读端口、读引脚的问题

80C51单片机有P0-P3四个P口,以P0为例说明:
要搞清这个问题,就要明白p0口的内部结构。P0口是由锁存器经两个驱动场效应管和外部引脚相连的。
读引脚的意思就是直接读P0外部引脚的电位,而读端口(锁存器)读的是内部与数据总线链接的锁存器的电位。
两者不同。一般来说,读取P0的数据,都是读引脚,目的是获取与P0相连的外部电路的状态。而读端口是在执行下述语句时由CPU自行完成的:
inc P0;给p0加1
执行这个语句时 ,采用“读-改-写”的过程,先读取p0的端口数据,再加1,然后送到p0锁存器里。注意这个端口数据跟p0的引脚状态不一样,比如你事先给p0写进69H,p0里数据就是69H,而引脚上的状态因为你没有执行MOV A,p0之类的指令,它是不会进到p0的锁存器里去的。由此可见,所谓的读端口,不是读取p0的状态,而是在执行inc之类的指令时由CPU自行完成的,
读引脚就是读取p0口状态了。读引脚时要注意:先要给p0写FFH,使它的场效应管T2和地断开。
因为p0口的场效应管T2一端接地,一端与外部引脚相连,由P0的锁存器控制,当给锁存器写1时,它和地断开,写0时和地相连,所以写零时读到的总是低电平。
试想你现在要读P0引脚,按理说P0与外部电路相连,外部电路的是什么状态,就应该读到什么,但如果p0口的场效应管T2一端接地的话,它会把p0口电位拉低,你读到的总是低电平0,所以要先给p0写FFH,把p0的场效应管T2和地断开,再读数时就是真实状态了。当外部电路断开,再读时读到的就是p0端口(锁存器)的真实状态了。

zz(http://zhidao.baidu.com/question/144448064.html)

转载于:https://www.cnblogs.com/hhpjxbk/archive/2011/11/22/2258815.html

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在学习51单片机时,了解如何进行端口初始化是非常重要的。根据用\[3\]中提到的文章,可以通过外部RST复位和掉电/上电复位来进行端口初始化。具体步骤如下: 1. 外部RST复位:通过将RST接地一段时间,然后释放,可以实现复位操作。在复位后,单片机的所有寄存器和端口都会被初始化为默认值。 2. 掉电/上电复位:通过控制电源的开关,可以实现复位操作。当单片机上电时,会进行复位操作,将所有寄存器和端口初始化为默认值。 在进行端口初始化之前,需要先了解单片机的端口结构和寄存器的使用方法。可以参考用\[2\]中提到的文章,了解单片机的基础知识和寄存器的功能。 总结起来,进行51单片机端口初始化的方法有外部RST复位和掉电/上电复位。在进行端口初始化之前,需要了解单片机的端口结构和寄存器的使用方法。这样可以确保单片机在初始化后能够正常工作。 #### 用[.reference_title] - *1* *2* *3* [【单片机基础】初始51单片机](https://blog.csdn.net/lzxiaotu/article/details/128142198)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值