当前位置: 首页 > 新闻中心 > 行业资讯

详解80C51单片机的四种IO口

[发布时间:2024-02-03 03:38:37] 来源:澳客网竞彩足球 阅读:1 次

  在80C51单片机中有4个双向的8位I/O口P0~P3,在无片外存储器的系统中,这4个I/O口的每一位都可当作准双向通用I/O使用。

  在具有片外存储器的系统中,P0口作为地址线位以及双向数据总线位的地址线个I/O口除了能按字节寻址外,还可以按位寻址。

  下图给出了P0口的逻辑结构,它由一个锁存器,两个三态输入缓冲器,一个多路复用开关,一个与门,一个非门和控制电路和驱动电路组成。

  “锁存器,是数字电路中的一种具有记忆功能的逻辑元件。锁存,就是把信号暂存以维持某种电平状态,在数字电路中则可以记录二进制数字信号0和1。

  只有在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号。通常只有0和1两个值。

  三态缓冲器(Three-state buffer),又称为三态门、三态驱动器,其三态输出受到使能输出端的控制。

  当使能输出有效时,器件实现正常逻辑状态输出(逻辑0、逻辑1),当使能输入无效时,输出处于高阻状态,即等效于与所连的电路断开。”

  在访问外部存储器时,P0口才是线口输出地址/数据信息时,此时控制信号线为高电平,模拟开关将地址/数据线接通,同时与门输出有效,输出结果由地址/数据线信号决定。

  与门输出的地址/数据信息去驱动VT1,同时通过非门反相信号后驱动VT2。VT1与与VT2为推拉结构,同一时刻,只有一个管能导通。若地址/数据线口输出高电平;反之输出低电平。

  当数据从P0口输入时,读引脚使三态缓冲器打开,端口上的数据经三态缓冲器后送到内部的数据总线口作为通用I/O时,CPU向端口输出数据,此时控制信号为低电平,模拟开关与锁存器的反相端连接,写信号与锁存器的控制总线(时钟线)相连,于是内部数据总线上的数据经反相后出现在VT2端,再经VT2反相后输出到P0端口,输出的数据经过两次反相后相位不变。

  由于VT2位漏极开路输出,为完成VT2反相功能,此时需要外接上拉电阻。

  当P0口作为输入时,由于信号加载在VT2上被送入三态缓冲器,若该接口此前刚锁存过数据0,则VT2是导通的,VT2的输出被钳位在0,此时输入的1无法读入,所以当P0口作为通用I/O时,在输入数据之前,必须先向端口写1,使VT2截止。不过当在访问外部程序存储器时,CPU会自动向P0口写1。

  有时需要先将端口的数据写入,经过修改后再输出到端口,若此时P0口的负载正好是晶体管的基极,并且其输出为1,这必然导致该引脚为低,若此时读取引脚信号,则会将刚输出的1误读为0,为了尽最大可能避免这类误读的错误,于是单片机还提供了读锁存器的功能。

  例如执行INC P0时,CPU先读P0锁存器中的数据,然后再执行加1操作,最后将结果送回P0口,这样单片机从结构上满足了读改写这类操作的需要。

  同P0口一样,当做输出口时,必须先向端口写1,使场效应管截止。同时,它可以被任何数字逻辑电路驱动,包括TTL电路,MOS电路和OC电路。

  P2口作为一个准双向口,其位结构与P0口相似,当系统外接片外存储器时,它输出高8位地址,此时开关在CPU的控制下接通地址信号。

  同时它还可当作通用I/O使用,此时开关接通锁存器的Q端。对于80C51单片机来说,P2口通常用作地址信号输出。

  P3口位双功能口,当P3口作为通用I/O口使用时,它为准双向口,且每位都可定义为输入或输出,其工作原理与P1口类似。

  对于输出而言,此时相应位的锁存器由CPU自动输出1,有效输出第二功能。

  对于输入而言,无论该位是作为通用输入口还是第二功能输入口,相应的锁存器和选择输出功能端都应置1,该工作在开机或复位时CPU自动完成。

  80C51系列单片机的并行I/O接口有以下应用特性:1)P0,P1,P2,P3作为通用双向I/O口使用时,输入操作是读引脚状态;输出操作是对口的锁存器的写入操作,锁存器状态立即反映到引脚上;

  2)P1,P2,P3作为输出口时,由于电路内部带上拉电阻,因此无须外接上拉电阻。

  3)P0,P1,P2,P3作为通用输入口时,必须使电路中的锁存器写入高电平1。

  4)I/O口功能自动识别,无论是P0,P2的总线口的第二功能复用,单片机会自动选择。

  5)两种读端口的方式,包括端口锁存器的读、改,写操作和读引脚操作。在单片机中,有些指令是读端口锁存器的,如一些逻辑运算指令,置位/复位指令,条件转移指令以及将I/O口作为目的地址的操作指令;有些指令是读引脚的,如以I/O口作为源操作数的指令MOV A,P1。

  6)I/O的驱动特性。由于P1,P2,P3口内部带上拉电阻,其引脚拉出电流能力弱,吸入电流能力强,也就是输出驱动能力弱,可驱动4个LS TTL输入;而P0口每个I/O可以驱动8个LS TTL输入。

  在单片机的程序中,如果涉及到按键,大多数都会看到几行注释着 消抖 的代码。 比如下面这一段: if((KeyV0xc3)==0xff){//无键按下 return 0; } mDelay(10);//延时,去键抖 KeyV=P3; if((KeyV0xc3)==0xff){//无键按下 return 0; } 关于其作用与目的,有如下解释: 按键在按下时会产生电平的变化,通常是由高电平变为低电平,而且这一过程也不是瞬间完成的,按键按下之后,电平会有一段不稳定变化的时间。正常的情况下,我们的程序读取这个电平变化并做相关的动作。但由于机械按键的局限性,

  按键的抖动与消抖 /

  1 设计理念和原理 1.1 设计理念 随着数字家庭等领域技术的迅速发展,在多媒体终端上的增值业务将慢慢的变多,浏览网页、搜索、短信等都需要遥控器进行输入。但作为连接用户和终端之间的重要外设,遥控器的设计理念还停留在模拟电视时代,体验感较差。目前用户输入的解决方式是呼出终端的内置输入法,这样就带来了两个问题:一,不同厂家的终端都需要内置自己的中英文输入法,占用资源,而且必须搭配自己的遥控器使用,通用性不高;二,用户在输人时必须一边看遥控器输入一边看屏幕确认输入,如果文字较多会造成频频抬头和低头的麻烦,难以忍受。基于以上缺点,本文提出将输入法内置于遥控器的理念,在遥控器上输入文字后再统一将文字编码用 红外 线发给终端,终端接收后将编码译

  的多媒体终端遥控器设计 /

  【2024年1月29日,德国慕尼黑和美国纽约州马耳他讯】英飞凌科技股份公司(GlobalFoundries)近日宣布, 就英飞凌的AURIX™ TC3x 40纳米汽车微控制器以及电源管理和连接解决方案达成一项新的多年期供应协议 。这一新增产能的锁定将有利于满足英飞凌2024年至2030年的业务增长需求。 英飞凌和格芯自2013年以来一直在合作开发差异化的汽车类、工业类和安全类半导体技术与产品。此次合作主要围绕高可靠性的嵌入式非易失性存储器(eNVM)技术解决方案展开,该解决方案很适合用于实现任务关键型汽车应用,还可以满足新一代汽车系统严格的功能安全和信息安全要求。英飞凌的旗舰级微控制器系列AURIX推动了汽车行业向自动驾驶

  长期供应协议 /

  Microchip提供两种电容式触摸感应解决方案,一种为张驰振荡器方式,即通过检验测试触摸感应电容充放电的频率变化,来检测是否有键按下,根据单片机集成的硬件资源不同,另一种通过Microchip单片机集成的片上充电时间检测单元(CTMU)实现。 简单RC振荡方式 这样的形式更适合一个按键情况,通过集成模拟比较器的PIC10F204或PIC10F206实现触摸感应功能,用到的硬件资源为模拟比较器和Timer0定时器。图1为电路图,上电时,触摸感应电容Cp没有充电,比较器输出高电平,通过D1给电容迅速充电至接近VDD,之后比较器翻转,输出低电平,Cp通过R1放电,直至低于内部参考电压0.6V,比较器翻转输出高,进入下一个振

  的触摸感应技术研究 /

  对ARM的IO口做相关操作和51是不大一样的,但也的大同小异,ARM的寄存器多了一些,IO口的功能多了一些,他的功能更是分的很细,比如说在51中你只要对控制IO口的寄存器进行写一就输出一,写零就会输出零。读的时候也是直接将寄存器赋值给变量就可以了: 写操作如: P0^1=1; P0^1=0; 读操作如: Data_IO= P0^1; 51的读写是格外的简单的,但在ARM中读写都有其各自的寄存器,连IO口输出0和1都有其自己的寄存器,这些在各种ARM器件用户手册中都有详细说明。而且ARM的IO口功能也细分到了极致,要进行这些细分,当然要对寄存器进

  ,让LED闪起来! /

  引言: 74HC595是一个实现串行转并行功能的芯片,这也是我们51单片机学习接触到的第一个经过控制时序线完成数据输入输出的芯片,这样的芯片在以后会遇到很多,像是完成数据存储的EEPROM要使用到的I2C协议,还有完成计时功能的时钟DS1302,他们在与主机进行交互时必然需要数据的输入和读取,所以我们在输入读取时就需要控制几根由引脚控制的总线,经过控制这些总线的电平变化,我们就能够实现数据输入和读取。这些都是我自己的理解,有错误的地方希望有机会能够得到指正。 在此之前我先讲一下在学习这些模块中需要理解的一些知识: 总线:一般的我们会有几根时钟线,其中一根数据时钟线负责暂时存放一位数据,一根输入时钟线能将数据时钟线的数据发送到

  学习(二)74HC595模块实现点阵屏 /

  在实现流水灯之前,我们有必要提一点,C51代码在写之前,要参考电路图来写。拿流水灯来说,我们的角度来看图二,LED灯,也就是二极管,八只LED的正极通过一根总线V的电压上,再看图一,可知八只LED灯的负极接在LED、P2的8个I/O口上。根据二极管的导通条件可知,在单片机的IO口输出低电平时,才能点亮LED灯。 下面贴上代码: #include reg52.h #define uchar unsigned char #define uint unsigned int sbit LED1 = P2^0; sbit LED2 = P2^1; sbit LED3 = P2^2; sbit LED4 = P2^3;

  之实现流水灯 /

  单片机多路数据采集汇编源程序在下面 源程序: 单路采集程序: MOV DPTR,#0F8FFH MOV R0,#00H ;将存储器的首地址存在R0,R1两个寄存器中 MOV R1,#00H MOV R2,#200D ;设置循环 MOV R3,#4 MOV R4,#8D MAIN: CLR P1.1 ;选中ADC0809 PUSH DPL ;DPTR入栈 PUSH DPH MOVX @DPTR,A ;启动AD转换 ACALL DELAY ;延时5ms 保证采集数据频率为200HZ MOVX A,@DPTR ;读数据 SETB P1.1 ;选中存储器 MOV DPL,R0 ;将存

  带你飞

  到嵌入式人工智能的历史回顾

  研讨会 : 用于感测应用 带可配置信号链元素的新型 MSP430™ MCU

  直播回放: 借助Sitara™ AM263x MCU 创造电气化的未来

  有奖直播 同质化严重,缺乏创新,ST60毫米波非接触连接器,赋予你独特的产品设计,重拾市场话语权

  电源小课堂 从12V电池及供电网络优化的角度分析电动汽车E/E架构的趋势

  MPS电机研究院 让电机更听话的秘密! 第一站:电机应用知识大考!跟帖赢好礼~

  【下载】LAT1362 利用STM32 TIMER触发ADC实现分组转换

  【下载】LAT1334 基于MCSDK5.4.8电机库修改两电阻采样方法

  【下载】LAT1347 基于STM32CubeIDE移植ClassB 4.0

  【下载】LAT1340 STM32H5读取温度传感器校准值时进HardFault的原因分析

  【生态】使用STM32CubeMX在STM32U5上配置LPBAM应用程序

  【MPU】轻松使用STM32MP13x如MCU般在Cortex A 核上裸跑应用程序

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  【新品】降本增效这事儿,就看STM32C0,低至0.24美元” ,开机即可物联世界

  【GUI开发】TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!

  【边缘AI】突破边缘AI应用的次元壁:首届意法半导体边缘人工智能峰会举行

  【生态系统】STM32CubeProgrammer和STM32CubeIDE协同调试的方法

  【无线携手创新微MinewSemi共创低功耗模块,引领中国智能连接未来

  软件超时机制1、背景在嵌入式软件程序设计过程中中,经常会遇到超时(或定时)的处理情况,基本处理思想是在时间到的时候进行有关程序处理 ...

  了解电源之前,先来简单了解一下各种电源端口的命名VCC:C=circuit 表示电路的意思, 即接入电路的电压。VDD:D=device 表示器件的意思, ...

  STM32三种启动模式下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存,这是所谓的启动过程。STM32上电或者复位后,代 ...

  TFTLCD即薄膜晶体管液晶显示器。它与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可 ...

  STM32总线前文本文主要进行学习总结,为他人提供参考和学习,也为了记录自己的学习知识进行总结,并且望有错误之处,请各位技术大佬们提出修正,互 ...

  综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云:

首页
一键拨号
联系我们