51单片机 | I/O口直接输入输出实例
51单片机P0/P1/P2/P3口的区别:
P0口要作为低8位地址总线和8位数据总线用,这种情况下P0口不能用作I/O,要先作为地址总线对外传送低8位的地址,然后作为数据总线对外交换数据;
P1口只能作为I/O口(P1.0、P1.1以外);
P2口除了作为普通I/O口之外,在扩展外围设备时,要用作高8位地址线;
P3口除了作为普通I/O口之外,其每个引脚都有第二功能。
I/O端口具有以下特性:
① 端口自动识别:无论是P0 P2口的总线复用还是P3口的功能复用,内部资源会自动选择,不需要通过指令的状态选择。
② 准双向口功能:准双向口作为输入口时,应先使锁存器置"1",然后再读引脚。
③ P0作为普通I/O口使用:不使用并行扩展总线时,必须外加上拉电阻。
④ I/O口驱动特性:P0口作为I/O口时可输出驱动8个LSTTL输入端,P1-P3口则可以输出驱动4个LSTTL输入端
————————————————————————————————————————————
I/O接口直接输入输出实例
//《51单片机原理及应用(第二版)——基于Keil C与Proteus》第四章例4.3
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
程序分析:
电路中的P2口既用作输入也用作输出,P2.0-P2.3作为输入,P2.4-P2.7作为输出;
首先将 P2 = 0xff; P2口全部赋高电平 1111 1111,因为I/O作为输入时应先设置各个锁存器为"1",才能确保输入结果正确;
当P2.0-P2.3读入开关状态 if ((P2 & 0x0f) != 0x0f)时,通过对其移位 P2 = P2<< 4;,将P2.0-P2.3的值对应移到了P2.4-P2.7中
代码分析:
代码具体执行情况以及P2调试情况见下 ↓
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
调试及P2情况
Keil与Proteus联调,打开P2状态图;
开始调试并且未操作时,P2 = 0xff;,P2状态为 1111 1111,
闭合开关2,单击RUN执行,在这个执行过程中P2情况:
① 初始状态 1111 1111
② 闭合开关 1111 1101
④ "与运算" 0000 1101
//通过 (1111 1101 & 0000 1111) 运算得到 (0000 1101) 屏蔽掉高四位的情况,进行!= 0x0f 判断。
// 如果四开关同时断开,(1111 1111 & 0000 1111) == (0000 1111)
// 如果有任何一个开关闭合,则将执行左移操作
③ 左移四位 1101 0000
LED2 左端获得低电平,右端高电平,LED亮
所有开关断开,重新进入循环,P2 = 0xff;
程序代码执行结束,分析完毕。
51单片机 | I/O口直接输入输出实例的更多相关文章
- 51单片机I/O口直接输入输出实例(附调试及分析过程)
51单片机P0/P1/P2/P3口的区别: P0口要作为低8位地址总线和8位数据总线用,这种情况下P0口不能用作I/O,要先作为地址总线对外传送低8位的地址,然后作为数据总线对外交换数据: P1口只能 ...
- MOS管、PCB、H桥、步进电机驱动电路、51单片机的IO口驱动能力、灌电流、拉电流、上拉电阻的选择
嵌入式开发PCB设计几点体会(转载):http://bbs.ednchina.com/BLOG_ARTICLE_3021801.HTMCollector-Emitter Saturation Volt ...
- 51单片机:IO口扩展芯片用法(74HC165,74HC595)
IO口扩展芯片,主要是解决单片机IO口太少. 74HC165:数据从并转串 74HC595:数据从串转并 两种芯片,都是通过时序电路,加上移位功能,进行数据传输 74HC165:数据从并转串.以下实例 ...
- 51单片机 | 实现SMC1602液晶屏显示实例
———————————————————————————————————————————— LCD1602 - - - - - - - - - - - - - - - - - - - - - - - - ...
- 51单片机I/O口使用经验
按常规,在51端口(P1.P2.P3)某位用作输入时,必须先向对应的锁存器写入1,使FET截止.一般情况是这样,也有例外.所谓IO口内部与电源相连的上拉电阻而非一常规线性电阻,实质上,该电阻是由两个场 ...
- 51单片机 | A/D转换器实现数字电压表实例
———————————————————————————————————————————— ADC0809 - - - - - - - - - - - - - - - - - - - - - - - - ...
- STM32GPIO口8种模式细致分析(类比51单片机)
关于STM32GPIO口的8种工作模式,我们先引出一些问题? STM32GPIO口如果既要输入又要输出怎么办? 1.浮空输入模式 上图红色的表示便是浮空输入的过程,外部输入时0读出的就是0,外部输入时 ...
- 51单片机入门1--与C语言的交接
我们即将进入51单片机的编程学习,咱们今天就来讲解一下单片机中的C语言(你可以称作C51) 在说编程之前,要先说一些别的东西: 二进制,八进制,十六进制 二进制中只有数字0和1,在二进制中1+1为10 ...
- 单片机I/O口推挽与开漏输出详解(力荐)
推挽输出:可以输出高,低电平,连接数字器件;推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止. 开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电 ...
随机推荐
- ubuntu12.04安装squid
一:简介 1.Squid:优化Web交付 Squid是支持HTTP,HTTPS,FTP等的Web的缓存代理.它通过缓存和重用经常请求的网页来减少带宽并缩短响应时间.Squid拥有广泛的访问控制,是一个 ...
- 跨平台、跨语言应用开发,Elements 介绍
目录 1,Elements 介绍 2,Elements 版本 3,Elements 能干嘛 4,Elements IDES 5,Elements 工具 1,Elements 介绍 RemObject ...
- pair work 附加题解法(张艺 杨伊)
1.改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享,目前的设计有什么缺点, 你会如何改进它? 目前的缺点: (1)电梯由于载客重量不 ...
- [Beta阶段]展示博客
一.团队成员简介与个人博客地址 团队博客地址:http://www.cnblogs.com/wowotoubuaa/ 江昊,项目经理http://www.cnblogs.com/haoj/ 王开,后端 ...
- Linux内核第二节
作者:武西垚 深入理解函数调用堆栈 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间 堆栈的作用 函数调用框架 传递参数 保存返回地址 提供局部变量空间 堆栈相关的寄存器 esp,堆栈指针,指 ...
- HDOJ1287_破译密码
一道正常简单题 曲折解题 做这题的时候看了很久没有看懂是什么意思,最后以为是一道单独的数学题把B这个大写字母猜出来进行异或运算,还不知道C里面异或运算可以直接有符号的:),导致又去学习了一下十进制转换 ...
- [转载]以及部分总结--Linux下创建单机ASM存储的Oracle实例的过程---感谢方总
Linux下单机安装ASM流程总结 一.安装Linux ESXi上传iso镜像至存储目录 创建虚拟机,并且选择主机设备的ISO启动 选择完成时编辑虚拟机设置 配置镜像文件如下: 打开控制台: 并且选择 ...
- YII2十三大特性
第一(框架&项目) 1. 框架安装 2. 框架扩展安装 3. 项目初始化-->php yii init 4. 美化URL配置 'urlManager' => [ 'enablePr ...
- Django model 中的字段解释
Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField:一个自动递增的整型字段,添加记录时它会自动增长.你通常不需 ...
- BZOJ3322[Scoi2013]摩托车交易——最大生成树+贪心+倍增
题目描述 mzry1992 在打完吊针出院之后,买了辆新摩托车,开始了在周边城市的黄金运送生意.在mzry1992 生活的地方,城市之间是用双向高速公路连接的.另外,每条高速公路有一个载重上限,即在不 ...