51的P0 - P3都是准双向I/O端口,作为输入端口时需要先将其置1,然后再读取引脚状态。

这里抛开汇编,单纯讲下C51编程时的哪种情况是读引脚、哪种情况是读端口,以及读引脚前为什么要置1,以防止大家出错。


1.读引脚:(下面是测试代码)

#include <reg51.h>sbit LED =  P0^0;    //外加上拉电阻
sbit f = P0^1;void main()
{while(1){if(f == 0)    //如果P0.1是低电平的话就让LED亮{LED = 0;}}
}

单片机通电复位后,P1口的锁存器Q端都为1,对应的MOS管不导通,P1口在上拉电阻作用下全是高电平,所以LED不亮,用导线将P0.1口拉低,LED瞬间点亮;

说明 if(f == 0)判断的P0.1引脚的状态即读引脚,LED是否点亮受P0.1引脚状态影响。

51单片机通电复位后直接读引脚是没问题的。

但大家可能发现:先将P0.0置0,然后用导线将它拉高,单片机也可以读出此引脚是高电平,这种做法很危险!

将P0.0置0后,对应的MOS管导通,VCC和GND间通过这个MOS管连接,由于电流较大以及MOS管的电阻作用使得P0.0引脚被拉高(通过万用表可以测出这个高电平较正常情况下低一些,单片机的其他端口的电平状态可能也不正常了),但这会缩短单片机寿命,因此读引脚前一定要向该引脚写一!然后读取引脚电平。(可以说,先写1 就是为了避免这种情况)

2.读端口:(下面是测试代码)

#include <reg51.h>sbit LED =  P0^0;void delay()
{unsigned char i = 255;while(--i);
}void main()
{//先将P0.0引脚用导线拉低delay();LED = ~LED;    //LED低电平亮//拔出导线,将P0.0接到LED负极上
}

P0.0开始被拉低了,那么对其取反之后,P0.0应该为1,LED应该不亮,但实际是LED亮了,因为这里

不是读引脚而是读端口(锁存器):单片机上电后P0口全是1,其内部的锁存器输出端Q也为1,虽然P0.0引脚被

拉低了,但是其锁存器Q端仍为1不变,对1取反后再赋值给P0.0口,点亮了LED。

可以总结下:

1. 51单片机里对某一个I/O口进行读--改--写(例如上面的取反后写回)操作时,读取的是与之对应的锁存器的输出,而不

是实际物理引脚的电平;其他非读--改--写(例如上面的f == 0)指令读取的是引脚电平。

2. 读引脚电平时一定要先向该端口写1,然后再读取引脚电平!

51单片机读引脚和读端口测试总结相关推荐

  1. 单片机的单个IO口可以发送数据吗_关于51单片机各个引脚它的功能你了解多少?...

    对于40引脚双列直插51单片机各个引脚功能情况分析. P0端口一默认是开漏准双向IO口,没有输出没有驱动能力,要做逻辑输出要在外部接上拉电阻. P0端口除了作为普通的输入输出功能,还可以用来当做数据总 ...

  2. 基于51单片机的串口中断读头写尾法接收NMEA0183经纬度信息 1602显示(循环接收)

    51单片机 串口接收导航电文 设计方案 硬件构成 软件构成 测试情况 接收承载能力测试 传统接收方式测试 程序代码 传统程序中断部分代码 采用了读头写尾方法的程序 结论 传统的串口接收程序是采用设立中 ...

  3. 单片机中 读引脚 和读锁存器的区别

    要搞清这个问题,就要明白p0口的内部结构.P0口是由锁存器经两个驱动场效应管和外部引脚相连的. 读引脚的意思就是直接读P0外部引脚的电位,而读端口(锁存器)读的是内部与数据总线链接的锁存器的电位. 两 ...

  4. 51单片机P0/P1/P2/P3端口的区别

    传统的以MCS-51为基础的8051内核单片机通常有4个双向8位I/O接口,它们是P0.P1.P2.P3.在无外接存储器时,这4个I/O接口均可以作为通用I/O接口使用,CPU既可以对它们进行字节操作 ...

  5. 51单片机与STM32的区别(为何51单片机IO引脚的驱动能力弱)

    1.51单片机的特性 51单片机之所以成为经典,成为易上手的单片机主要有以下特点: 从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位.不但能对片内某些特殊功能寄存器 ...

  6. 51单片机ALE引脚

    ALE/PROG: 当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节. 在FLASH编程期间,此引脚用于输入编程脉冲. 在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频 ...

  7. c语言单片机读引脚,单片机引脚读写操作

    使用单片机时肯定会用到单片机的IO引脚.以51单片机P1口为例.内部结构如图所示本文引用地址:http://www.eepw.com.cn/article/307392.htm 当单片机进行写操作时, ...

  8. p1口输入输出实验c语言程序,51单片机P1口输入输出实验实验报告.doc

    51单片机P1口输入输出实验实验报告 实验一 P1口输入输出实验一 实验目的 1 掌握P1口作为I/O口时的使用方法. 2 理解读引脚和读锁存器的区别. 实验原理 由 AT89C51 组成的单片机系统 ...

  9. 51单片机键盘、矩阵键盘松手检测

    一.对独立按键进行松手检测 当按键按下时,会导致51单片机相应引脚变为低电平.利用这个原理,可以进行按键检测.就像下面这段代码: if(KEY1 == 0) {delay_ms(10);if(KEY1 ...

  10. 学习笔记之-51单片机IO口详解

    前言 对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O口进行的.51单片机每个IO端口结构都有差异,都各有各的特点.在平时的应用中,特别是设 ...

最新文章

  1. Genymotion的使用 -- A Faster Android Emulator
  2. [转]可伸缩系统的架构经验
  3. bzoj1232[Usaco2008Nov]安慰奶牛cheer*
  4. java 静态变量加载顺序_java 成员变量 静态变量代码块 静态代码快加载顺序
  5. jqprint 分页打印_JS实现页面打印(整体、局部)
  6. 读《企业应用架框模式》
  7. saltstack 初始化LINUX系统
  8. 2020MySQL安装(MSI超级简单一键next)
  9. 调用另一个cpp的变量_编写一个LLVM后端
  10. 手机内置天线慎用FPC
  11. MGWR多尺度地理加权回归
  12. 2020-10-13 用JavaScript做的贪吃蛇小游戏
  13. 生信分析矫正P值_万字长文+诚意满满 | 单细胞转录组分析最佳思路综述
  14. 研究生学习生活日记——第五次组会
  15. 国内资深安全专家详谈网页***
  16. 微信从原版到现在所有界面图片_微信6年来首次更换启动界面地球图片:来感受一下...
  17. 电磁场与电磁波_您的大脑在电磁场上
  18. 细说 AppbarLayout,如何理解可折叠 Toolbar 的定制
  19. Smartbi成功入选《2021中国企业数智化转型升级发展研究报告》
  20. Kotlin 非对称加密RSA

热门文章

  1. Anaconda依赖包的安装
  2. 【AI视野·今日CV 计算机视觉论文速览 第189期】Fri, 1 Jan 2021
  3. Android签名校验
  4. mac快捷键大全超清示意图动态壁纸
  5. Java项目:宠物店管理系统(java+JSP+JavaScript+Bootstrap+Mysql)
  6. Java基于SSM的宠物店管理系统
  7. 《数字信号处理》系统函数的频率响应、零极点和稳定性的实现
  8. html静态模板资源,可下载源码
  9. 解决Echarts官网无法访问的问题
  10. PopClip for Mac(剪切板复制粘贴工具)