51单片机读引脚和读端口测试总结
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单片机读引脚和读端口测试总结相关推荐
- 单片机的单个IO口可以发送数据吗_关于51单片机各个引脚它的功能你了解多少?...
对于40引脚双列直插51单片机各个引脚功能情况分析. P0端口一默认是开漏准双向IO口,没有输出没有驱动能力,要做逻辑输出要在外部接上拉电阻. P0端口除了作为普通的输入输出功能,还可以用来当做数据总 ...
- 基于51单片机的串口中断读头写尾法接收NMEA0183经纬度信息 1602显示(循环接收)
51单片机 串口接收导航电文 设计方案 硬件构成 软件构成 测试情况 接收承载能力测试 传统接收方式测试 程序代码 传统程序中断部分代码 采用了读头写尾方法的程序 结论 传统的串口接收程序是采用设立中 ...
- 单片机中 读引脚 和读锁存器的区别
要搞清这个问题,就要明白p0口的内部结构.P0口是由锁存器经两个驱动场效应管和外部引脚相连的. 读引脚的意思就是直接读P0外部引脚的电位,而读端口(锁存器)读的是内部与数据总线链接的锁存器的电位. 两 ...
- 51单片机P0/P1/P2/P3端口的区别
传统的以MCS-51为基础的8051内核单片机通常有4个双向8位I/O接口,它们是P0.P1.P2.P3.在无外接存储器时,这4个I/O接口均可以作为通用I/O接口使用,CPU既可以对它们进行字节操作 ...
- 51单片机与STM32的区别(为何51单片机IO引脚的驱动能力弱)
1.51单片机的特性 51单片机之所以成为经典,成为易上手的单片机主要有以下特点: 从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位.不但能对片内某些特殊功能寄存器 ...
- 51单片机ALE引脚
ALE/PROG: 当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节. 在FLASH编程期间,此引脚用于输入编程脉冲. 在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频 ...
- c语言单片机读引脚,单片机引脚读写操作
使用单片机时肯定会用到单片机的IO引脚.以51单片机P1口为例.内部结构如图所示本文引用地址:http://www.eepw.com.cn/article/307392.htm 当单片机进行写操作时, ...
- p1口输入输出实验c语言程序,51单片机P1口输入输出实验实验报告.doc
51单片机P1口输入输出实验实验报告 实验一 P1口输入输出实验一 实验目的 1 掌握P1口作为I/O口时的使用方法. 2 理解读引脚和读锁存器的区别. 实验原理 由 AT89C51 组成的单片机系统 ...
- 51单片机键盘、矩阵键盘松手检测
一.对独立按键进行松手检测 当按键按下时,会导致51单片机相应引脚变为低电平.利用这个原理,可以进行按键检测.就像下面这段代码: if(KEY1 == 0) {delay_ms(10);if(KEY1 ...
- 学习笔记之-51单片机IO口详解
前言 对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O口进行的.51单片机每个IO端口结构都有差异,都各有各的特点.在平时的应用中,特别是设 ...
最新文章
- Genymotion的使用 -- A Faster Android Emulator
- [转]可伸缩系统的架构经验
- bzoj1232[Usaco2008Nov]安慰奶牛cheer*
- java 静态变量加载顺序_java 成员变量 静态变量代码块 静态代码快加载顺序
- jqprint 分页打印_JS实现页面打印(整体、局部)
- 读《企业应用架框模式》
- saltstack 初始化LINUX系统
- 2020MySQL安装(MSI超级简单一键next)
- 调用另一个cpp的变量_编写一个LLVM后端
- 手机内置天线慎用FPC
- MGWR多尺度地理加权回归
- 2020-10-13 用JavaScript做的贪吃蛇小游戏
- 生信分析矫正P值_万字长文+诚意满满 | 单细胞转录组分析最佳思路综述
- 研究生学习生活日记——第五次组会
- 国内资深安全专家详谈网页***
- 微信从原版到现在所有界面图片_微信6年来首次更换启动界面地球图片:来感受一下...
- 电磁场与电磁波_您的大脑在电磁场上
- 细说 AppbarLayout,如何理解可折叠 Toolbar 的定制
- Smartbi成功入选《2021中国企业数智化转型升级发展研究报告》
- Kotlin 非对称加密RSA
热门文章
- Anaconda依赖包的安装
- 【AI视野·今日CV 计算机视觉论文速览 第189期】Fri, 1 Jan 2021
- Android签名校验
- mac快捷键大全超清示意图动态壁纸
- Java项目:宠物店管理系统(java+JSP+JavaScript+Bootstrap+Mysql)
- Java基于SSM的宠物店管理系统
- 《数字信号处理》系统函数的频率响应、零极点和稳定性的实现
- html静态模板资源,可下载源码
- 解决Echarts官网无法访问的问题
- PopClip for Mac(剪切板复制粘贴工具)