STC51单片机的IO配置问题解决方案

发布者:科技小巨人最新更新时间:2020-06-09 来源: elecfans关键字:STC51单片机  配置 手机看文章 扫描二维码
随时随地手机看文章

我们人类可以通过连接手脚上神经网络,肌腱,控制着我们的肌肉做出各种动作,完成各种造型。那单片机里的肌腱和神经就是今天我们要讲的主角----单片机的IO口。


我们学习单片机,到底学什么呢?最终落脚点,就是落在单片机的IO口上,其实最终就是操作单片机的IO口,什么串口通讯,IIC通信协议,中断,定时器,最终在单片机上体现出来的还是我们对单片机IO口的操作。既然那么重要,今天我们就来好好的说一说单片机的IO口。


说起单片机的IO口,大家肯定会笑话小编,这么简单的东西,还要你说。对,它是简单,看遍你是个人写的单片机教程,最开始讲编程就是从操作单片机IO口开始,都是从点亮一个LED灯开始,是的点亮一个LED灯,就是对单片机IO的最简单的操作,要么给高电平,要么给低电平,这也是操作IO的唯一的两个方法。怎么说?举个例子:要在某个IO上输出PWM信号,其实就是有规律的在这个IO上交替的给高低电平,给的速度快慢决定了PWM信号的频率,给的高电平的时间所占一个高低电平周期的多少,决定了这个PWM信号的占空比。这么一说,高大上的PWM信号是不是就简单多了。


说了这么多,下面我们具体来说STC51单的IO的配置和各个模式的区别。


STC的51单片机为了更多更能的使用和运用于不同场合,STC51单片机设计了4中IO口模式,分别是:准双向IO口模式、推挽输出模式、高阻输入模式和开漏输出模式。每个IO口的模式配置,需要两个寄存器结合起来进行设置。这两个寄存器分别是PnM1和PnM0,(在STC8系列芯片中n=0,1,2,3,4,5,6,7),以P0口为例,配置P0口需要P0M1和P0M0两个寄存器进行配置,具体如下图:

即P0M1寄存器的第0位和P0M0寄存器的第0位组合起来配置P0.0位的模式,P0M1寄存器的第1位和P0M0寄存器的第1位组合起来配置P0.1位的模式,P0口的其他位以此类推。具体的PnM1和PnM0寄存器的组合方式如下表所示:


准双向I/O模式与标准51相比,虽然在内部结构上是不同的,但在用法上类同,比如要作为输入时都必须先写“1”置成高电平,然后才能去读引脚的电平状态。兼容传统的51单片机,在上电复位后,常规的IO都是准双向IO模式。在准双向IO模式下,端口输出1时能力很弱,允许外部将其拉低,输出0时驱动能力很强,可以吸收很大电流(20mA)。从输出示意图可以看出,在此模式下有三个晶体管来适应不同的需求。当端口寄存器输出1且引脚也为1时,晶体管“弱上拉”打开,提供基本的驱动电流,如果引脚输出的1被外部电路拉低时,“极弱上拉”打开,且关闭“弱上拉”,此时外部需要有足够的灌电流来拉低引脚电平;当端口寄存器为1,且引脚悬空时,“极弱上拉”打开,提供微弱的电流来维持引脚的高电平;当端口寄存器由0变到1时,“强上拉”打开来加快引脚上电平从0到1的转换,强上拉打开后,引脚上电平由0到1的转换需要两个时钟周期,所以需要读外部状态的时候,在端口写1后需要加两个空操作来等待引脚电平的转换,完了读取到的状态才是实际引脚状态。

准双向IO输出示意图


2、推挽输出模式

推挽输出的特点是不论输出高电平还是低电平都能驱动较大的电流,比如输出高电平时可以直接点亮LED(要串联几百欧限流电阻),而在准双向I/O模式下很难办到。

推挽输出模式输出示意图


3、高阻输入模式

此模式下,电流既不能流入也不能流出,这样可以获得比较高的输入阻抗,这在模拟比较器和ADC应用中是必需的。高阻态是数字电路中的术语,它既不是高电平也不是低电平,上一级电路输出到高阻输入接口,此接口不会对上一级电路的状态有影响,和没接一样,不产生电流的衰减,电平也由接入的电平决定,电路分析时高阻态可做开路理解。可以把它看作输出(输入)电阻非常大。这样在做ADC转换的时候是必须要的,我们都知道电压表的内阻我们认为是无穷大的,在此,我们用ADC转换实现电压表的时候,就需要在高阻模式下进行。注意,在此模式下,不提供20mA的灌电流的吸收能力。

高阻输入模式示意图


4、开漏输出模式

开漏输出模式既可读外部状态,又可以对外输出高低电平,但是必须加上拉电阻。当端口锁存器输出0时,内部将关闭所有上拉晶体管,此时可以提供20mA的灌电流吸收能力;当端口寄存器输出1是,外部必须接上拉电阻,这也是此模式下的最大的优点----电气兼容性好,外部上拉电阻接3V电源,就能和3V逻辑器件接口,如果上拉电阻接5V电源,又可以与5V逻辑器件接口。

开漏输出模式示意图


STC8A特例一 ----内部集成了上拉电阻 

内部已经集成了3.7K的上拉电阻,可以通过上拉电阻控制寄存器实现禁止和使能。使能上拉电阻控制寄存器相关位后,对应引脚上将接通单片机内部的3.7K电阻,可以省去外部上拉电阻,禁止上拉电阻控制寄存器后将断开内部上拉电阻。官方给出的资料显示,此3.7K上拉电阻实测为4.2K左右,而且在P3.0和P3.1上的上拉电阻可能会略小一些。

关键字:STC51单片机  配置 引用地址:STC51单片机的IO配置问题解决方案

上一篇:51单片机串行口及存储器工作原理分析
下一篇:如何使用单片机模拟读写24C01EEPROM数据

推荐阅读最新更新时间:2024-11-08 14:33

让生物识别技术成为FPGA动态部分重配置功能的“杀手级”应用
自动指纹识别系统   指纹识别是自动个人识别技术中使用的最常见、最可靠的技术。大体上,实现的技术将自动指纹识别(AFAS) 划分为在不同时间和不同条件下执行的两个阶段:登记和识别。   登记流程中,用户向系统提供指纹,系统随即执行一系列需要高强度计算的图像处理步骤,以提取所有具有相关性、永久性和独特性的信息,从而使系统明确识别指纹的真正主人。这一系列特性就构成了用户ID(身份识别号码),由系统存储在数据库中。这一过程一般在安全的环境中,在专业人员的指导下离线执行。   指纹识别是查看其是否与数据库中的经认可的用户一致。在登记过程中执行的各种处理工作将反复进行,以从当前指纹采样本中提取出独特的特征。系统随后将这些特征与数据库中
[嵌入式]
让生物识别技术成为FPGA动态部分重<font color='red'>配置</font>功能的“杀手级”应用
机器人节能功能和网络唤醒的操作配置
PROFIenergy 可用来通过 PROFINET 控制能耗。为此要使用让负载对计划内和计划外中断作出反应的命令。 ROFIenergy 是基于 PROFINET 的数据接口,用于统一关闭用电设备,并在暂停期间进行充分协调,而与制造商或设备类型无关。这样,应确保仅为过程中的设备提供真正所需的电力。过程将节约大部分能量,而  PROFINET 设备本身仅具有较小的节能潜力。 IO  控制器的  PROFIenergy 指令: 需要两条指令控制和监视  PROFIenergy 功能。  通过  PE_START_END  指令,可以轻松地激活和取消激活  PROFINET 设备的闲置状态
[机器人]
关于stm8l05RB的usart1串口复用A2,A3配置
#include uart1.h #include stm8l15x.h void Uart1_Init(void) { CLK_PeripheralClockConfig(CLK_Peripheral_USART1,ENABLE); SYSCFG_REMAPDeInit(); SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortA,ENABLE); GPIO_Init(GPIOA, GPIO_Pin_2, GPIO_Mode_Out_PP_High_Fast);//TXD GPIO_Init(GPIOA, GPIO_Pin_3, GPIO_
[单片机]
STM32的IO配置点灯
1、led.c的具体的代码: /*----------------------------------------------------------*/ #include led.h /* ------------------------------------------------------------------------- 文件名:led.c 描述 :根据硬件连接配置LED端口,打开对应的寄存器 ---------------------------------------------------------------------------*/ void LED_Init(void) { GPIO_I
[单片机]
STM32如何根据功能来分配IO
在画原理图之前,一般的做法是先把引脚分类好,然后才开始画原理图。 要想根据功能来分配 IO,那就得先知道每个 IO 的功能说明,这个我们可以从官方的数据手册里面找到。在学习的时候,有两个官方资料我们会经常用到,一个是参考手册(英文叫 Referencemanual),另外一个是数据手册(英文叫 Data Sheet)。两者的具体区别见下表。 数据手册主要用于芯片选型和设计原理图时参考,参考手册主要用于在编程的时候查阅。在数据手册中,有关引脚定义的部分在 Pinouts and pin description 这个小节中。数据手册中对引脚定义具体定义见下表。 对上表中引脚定义的解读,见下图。 举例,如果MCU 型号是 S
[单片机]
STM32如何根据功能来分配<font color='red'>IO</font>
第一节:用Cube学32之简单IO口操作(点灯及按键)
这里默认STM32CubeMX和Keil或者IAR等平台已经安装好 一开始我会用IAR和Keil做演示,习惯了某一个平台之后,其实并没有什么差距,真正还是要懂单片机,不同的开发平台只是一个工具锤子,像单片机或者其他的硬件平台才是要雕琢的玉 1-1. 点亮板载LED灯 Step1 CubeMX配置 打开CubeMX 新建工程 点击之后会出现一个界面然你选择MCU型号 直接搜索你所使用的开发板或者核心板的芯片型号即可 这里我以STM32F407ZG型号的单片机为例进行演示 如下图所示 当我们双击那一行即可进入对各个引脚以及时钟等的配置界面了 下面是各个界面配置 引脚配置界面--- 时钟树配置界面---
[单片机]
第一节:用Cube学32之简单<font color='red'>IO</font>口操作(点灯及按键)
STM32WB55开发(4)----配置串口打印Debug调试信息
概述 在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。 硬件准备 首先需要准备一个开发板,这里我准备的是WB55RG 的开发板: 视频教学 样品申请 源码下载 选择芯片型号 配置时钟源 HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示: 配置时钟树 RTC时钟配置 RFWKP时钟配置 查看开启STM32_WPAN条件
[单片机]
STM32WB55开发(4)----<font color='red'>配置</font>串口打印Debug调试信息
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved