51单片机入门 - I/O口直接输入输出实例
博主福利:100G+电子设计学习资源包!
http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5d5d0f15df84f4a92ebf72f88d4ee8&scene=18#wechat_redirect
--------------------------------------------------------------------------------------------------------------------------
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;
程序代码执行结束,分析完毕。
https://www.cnblogs.com/hughdong/p/6729308.html
51单片机入门 - I/O口直接输入输出实例相关推荐
- 51单片机入门(一):输入输出
概述 学习任何单片机(开发板)第一步都是了解输入输出.一般是从输出开始,比如对单个位进行操作(点亮流水灯),对多个位进行操作(数码管,点阵等).至于输入,最基础的便是键盘(按键) IO的结构 初学的时 ...
- 51单片机入门——矩阵按键
文章目录 1.按键 1.1.独立按键 1.2.矩阵按键 2.按键的扫描与抖动 2.1.独立按键的扫描 2.2.按键抖动与消抖 2.3.矩阵按键的扫描 3.简易计算器 1.按键 1.1.独立按键 常用的 ...
- 单片机独立式按键c语言程序,(原创)51单片机C语言程序设计--速学教程实例(入门篇)之独立按键(查询)...
(原创)51单片机C语言程序设计--速学教程实例(入门篇)之独立按键(查询) /************************************************************ ...
- 51单片机8255扩展c语言,51单片机8255A扩展IO口
<51单片机8255A扩展IO口>由会员分享,可在线阅读,更多相关<51单片机8255A扩展IO口(23页珍藏版)>请在人人文库网上搜索. 1.一个芯片可扩展多个并行I/O口 ...
- 51单片机入门教程(1)——点亮一个LED灯
51单片机入门教程(1)--点亮一个LED灯 一.什么是单片机 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU.随机存储器 ...
- 51单片机入门学习小结(流水灯与数码管)
51单片机入门学习小结(流水灯与数码管) 对原理图的分析 以下是我所用单片机的原理图 这块51单片机一共有4个I/O口(意思为input/output),也代表着如果我们后续都要用到这四个的话那么功能 ...
- 51单片机入门模板(STC89C52RC)
该模板适用于51单片机入门,比较易于理解,包含定时器和串口的操作. 可以在定时器T0中断服务函数和主循环中实现主要功能,在UART中断服务函数(T1定时器)中实现简单的串口通信接收命令的功能. 注:本 ...
- 51单片机入门基础介绍
51单片机入门基础介绍 文章目录 51单片机入门基础介绍 前言 常用元器件 发光二极管 数码管 LED数码管的显示方式 按键 定时计数器 串行口控制寄存器SCON 中断系统 中断源及中断请求 中断允许 ...
- 51单片机入门——数字时钟
文章目录 1. 前言 1.1. 设计要求 2. 硬件原理 2.1. 时钟信号(晶振) 2.2. 按键开关 2.3. 数码管显示 3. 原理图 3.1. 仿真原理图 3.2. AD原理图 3.3. PC ...
最新文章
- windows mysql 主从_mysql读写分离实战二-windows 上mysql主从数据库搭建及问题总结
- 物联网架构成长之路(3)-EMQ消息服务器了解
- 2.1、spring属性注入-Set方法注入
- 闭包总结(2018.03.19)
- HDU 4920 Matrix multiplication(矩阵相乘)
- python 删除文件夹_Python文件操作大全,随机删除文件夹内的任意文件
- c++ switch/case 使用 string的方法
- pb利用datawindow查询符合条件的数据并且过滤掉其他数据_牟宇航:百度OLAP数据库——Palo...
- 孙鑫-MFC笔记七--文件与注册表
- 信息学奥赛GoC编程测试题题库
- 单片机c语言控制直流电机转速,一个用单片机控制直流电机的PWM调速程序
- ad17 linux 版本,Altium Designer这些不同版本的软件之间的区别有多大呢?
- AutoCAD自定义填充图样详细教程
- Spring Interceptor vs Filter 拦截器和过滤器区别
- nginx配置文件被删怎么找回_恢复误删除的Nginx日志
- 8篇论文详解用户历史行为序列建模方法
- 新疆工程学院计算机在哪个校区,2021年新疆大学有几个校区,大一新生在哪个校区...
- idfa码如何查看_小E告诉你:如何快速登录和高效使用华为电子邮件
- office产品处于非活动状态——word无法修改
- 彻底删除oracle数据,彻底删除Oracle数据库的方法
热门文章
- Linux终端使用dbg进行调试
- 《工程伦理》全部 习题_答案
- 【新知识】使用getline()与get()来进行输入
- 淮阴工学院计算机课程,2017秋大学计算机(淮阴工学院)
- 什么是供应商管理体系?包括哪些内容
- windows 操作系统原版下载地址
- 有 C 基础,如何快速过度到 C++?
- 【mysql】哦买噶!多么强大的group by语句
- 深度神经网络算法有哪些,深度神经网络主要模型
- 【AtCoder】abc_198D - Send More Money【next_permutation暴力模拟】