历史上的今天
返回首页

历史上的今天

今天是:2024年10月07日(星期一)

正在发生

2018年10月07日 | 【知识点】80C51单片机的内部结构

2018-10-07 来源:eefocus

单片机按存储结构可分为二类:一类是哈佛结构,另一类是普林斯顿结构。哈佛结构所谓哈佛结构是指程序存储器地址空间与数据存储器地址空间分开的单片机结构,如80C51单片机采用哈佛结构,所以80C51单片机的程序存储器地址空间与数据存储器地址空间是分开的,各有64K存储空间。


普林斯顿结构所谓普林斯顿结构是指程序存储器地址空间与数据存储器地址空间合并的单片机结构,如MCS-96单片机采用普林斯顿结构,所以MCS-96单片机的程序存储器地址空间与数据存储器地址空间是合并的,共有64K存储空间。


1.单片机的CPU 图1是80C51单片机的内部结构框图。若除去图中的存储器电路和I/O部件,剩下的便是CPU。它可以分为运算器和控制器两部分。运算器功能部件包括算术逻辑运算单元ALU、累加器ACC、寄存器B、暂存寄存器TMP1、TMP2、程序状态字寄存器PSW等。控制器功能部件包括程序计数器PC、指令寄存器IR、指令译码器ID、定时控制逻辑电路CU、数据指针寄存器DPTR、堆栈指针SP及时钟电路等。


(1)运算器


 算术逻辑运算单元ALU(Arithmetic Logical Unit)


ALU可以进行算术、逻辑运算。算术运算有:加、减、乘、除,逻辑运算有:与、或、异或等。


累加器ACC


累加器ACC的主要功能是在运算前存放一个操作数,运算后存放一个操作结果。80C51系列单片机虽然在结构上仍然以累加器A作为重要部件。但由于内部电路采取了措施,使得累加器A在数据传送、逻辑操作等方面的核心作用有所削弱。数据可以在片内直接/间接地址的存储器之间直接传送,而不必经过累加器A。但,加、减、乘、除算术运算指令的运算结果都存放在累加器A或AB寄存器对中。 

       

【知识点】80C51单片机的内部结构


暂存器TMP1、TMP2由图1可知,ALU进行算术逻辑运算前的两个操作数来自暂存器TMP1、TMP2,所以暂存器TMP1、TMP2用于存放运算前的两个操作数。


程序状态字寄存器PSW程序状态字寄存器PSW用来存放运算结果的状态标志。PSW寄存器各位的含义如下,其中PSW.1未定义,其它各位说明如下:


CY:进位标志。它是累加器A的进位位,如果操作结果在最高位有进位(加法)或借位(减法)时置1,否则清0。


AC:半进位标志。它是低半字节的进位位(累加器A中A3位向A4位的进位),主要用于BCD码调整。低4位有进位(加法时)或向高4位有借位时(减法时),AC是1,否则,AC清0。


F0:用户定义的状态标志位。可通过软件对它置位、复位或测试,以控制程序的流向。


RS1、RS0:工作寄存器区选择控制位,用于选择4组工作寄存器之一。可以用软件来置位或清零,以确定工作寄存器区。RS1、RS0与寄存器区的对应关系如下:       RS1、RS0=00——0区(地址00H~07H)       RS1、RS0=01——1区(地址08H~0FH)       RS1、RS0=10——2区(地址10H~17H)      RS1、RS0=11——3区(地址18H~1FH)


OV:溢出标志位,用于表示有符号数算术运算的溢出。溢出时OV为1,否则OV为0。


P:奇偶标志位。每个指令周期都由硬件来置位或清零,以表示累加器A中1的个数的奇偶性。若1的个数为奇数,则P置位;若1的个数为偶数,则清零。


寄存器B


在乘除指令中,用到了寄存器B。


(2)控制器 控制器是控制单片机各种操作的部件,用于完成指令规定的操作。它包括程序计数器PC、指令寄存器IR、指令译码器ID、定时控制逻辑、数据指针寄存器DPTR、时钟发生器、复位电路、堆栈指针SP等。


程序计数器 PC


程序计数器PC为16位寄存器,用于存放下一条要执行指令地址,具有自动加1功能。


指令寄存器IR、指令译码器ID、定时控制逻辑电路


指令寄存器IR用来暂时存放当前取出的指令,并由指令译码器ID译码,产生相应的译码信号,并传送给定时控制电路,定时控制电路发出各种控制信号控制各器件完成指令规定的操作。


数据指针DPTRDPTR为16位寄存器。由于80C51单片机采用哈佛结构,因此,其程序存储器与地址存储器是分开的,程序存储器的地址是由程序计数器PC提供,而数据存储器的地址是由数据指针DPTR提供的,所以DPTR用于存放片外数据存储器及I/O口的地址。


时钟电路时钟电路是计算机的心脏,它控制着计算机的工作节奏。


复位和复位电路计算机在启动运行时都需要复位,复位就是使CPU和系统中的其它部件处于一个确定的初始状态,并从这个状态开始工作。


堆栈指针SP堆栈指针SP用于存放栈顶单元的地址。


2.单片机的存储器配置 由于80C51单片机采用哈佛结构,所以其程序存储器和数据存储器是分开的,各有自身的寻址系统、控制信号和功能。程序存储器用来存放程序和表格常数;数据存储器通常用来存放程序运行所需要的给定参数和运行结果。从实际的物理存储介质来看,80C51有4种存储空间,它们是片内程序存储器、片外程序存储器、片内数据存储器(含特殊功能寄存器)和片外数据存储器。80C51的存储器配置情况如图2所示。


【知识点】80C51单片机的内部结构


逻辑地址空间来看,80C51单片机可分为三部分,即:程序存储器、片外数据存储器、片内数据存储器。这3部分分别使用不同的地址指针,不同的访问指令。因此,下面按逻辑结构介绍80C51的存储器结构。


(1)程序存储器


由图3可知,程序存储器以程序计数器PC作地址指针,通过16位地址总线,可寻址的地址空间为0000H~0FFFFH共64K(216=64K)字节,其访问指令为MOVC。用于存放程序指令码与固定的数据表格等。


【知识点】80C51单片机的内部结构


80C51单片机中内部和外部共64K字节程序存储器的地址空间是统一的。对于有内部ROM的单片机,在正常运行时,应把引脚接高电平,使程序从内部ROM开始执行。当PC值超出内部ROM的容量时,会自动转向外部程序存储器空间。


(2)片外数据存储器由图可知,片外数据存储器以DPTR作为地址指针,通过16位地址总线,可寻址的地址空间为0000H~0FFFFH共64K(216=64K)字节,其访问指令为MOVX。用于存放数据与运算结果。


(3)片内据存储器片内数据存储器的地址空间从00H~FFH共256字节,其访问指令为MOV。其地址可由R0、R1寄存器提供。内部数据存储器是最灵活的地址空间,它分成物理上独立且性质上不同的2个区:00H~7FH单元组成的128字节RAM区,地址为80H~FFH的特殊功能寄存器区(简称SFR区)。


1)RAM区(00H~7FH)由图2-3可知,RAM区又分为3个区:工作寄存器区、位地址区与数据缓冲区。工作寄存器区(00H~1FH)80C51单片机的内部RAM区结构如图2-3所示。位地址区(20H~2FH)内部RAM的20H~2FH为位寻址区域,见表1所示。这16个单元的每一位都有一个位地址,位地址范围为00H~7FH。通常把各种程序状态标志、位控制变量设在位寻址区内。位寻址区的RAM单元也可以作为一般的数据缓冲区使用。  


表1 内部RAM区的位地址映像表

【知识点】80C51单片机的内部结构


数据缓冲区数据缓冲区的地址空间从30H~7FH共80个字节单元,用于存放数据与运算结果,如加法运算时,存放加数、被加数及运算和。通常堆栈区也设置在该区内。有些单片机将显示缓冲区设置在该区内。


2)特殊功能寄存器SFR(80H~FFH)80C51单片机内的I/O口锁存器、状态标志寄存器、定时器、串行口、数据缓冲器以及各种控制寄存器统称为特殊功能寄存器,它们离散地分布在内部RAM地址空间(80H~0FFH)内,表2列出了这些特殊功能寄存器的标识符、名称及地址。由表2-2可知累加器ACC、寄存器B、程序状态字PSW、I/O口P0~P3等均为特殊功能寄存器。


表2  特殊功能寄存器SFR

【知识点】80C51单片机的内部结构


注:带“·”号的寄存器可按字节和按位寻址,其特征是直接地址能被8整除。带“*”号的寄存器是与定时器/计数器2有关的寄存器,仅在80C52系列中存在。下面以一个实例说明单片机的内部存储器。


【知识点】80C51单片机的内部结构


3.80C51单片机并行输入/输出口 80C51单片机含有4 个8位并行I/O口P0、P1、P2和P3。每个口有8个引脚,如图2-1所示,共有32个I/O引脚,每一个并行I/O口都能用作输入或输出。各口的第一、第二功能如下:       I/O口   引脚      第一功能      第二功能       P0口   P0.0~P0.7  输入与输出    分时的传送地址低8位与数据线       P1口   P1.0~P0.7  输入与输出    无第二功能       P2口   P2.0~P2.7  输入与输出   传送地址的高8位       P3口   P3.0~P3.7  输入与输出    P3.0——RXD:串行口输入端


P3.1——TXD:串行口输出端P3.2——INT0:外部中断0中断请求输入端P3.3——INT1:外部中断1中断请求输入端P3.4——T0:定时器/计数器0外部输入端P3.5——T1:定时器/计数器1外部输入端P3.6——WR:外部数据存储器写选通信号


P3.7——RD:外部数据存储器读选通信号


四个通道口都有一种特殊的线路结构,每个口都包含一个锁存器,即特殊功能寄存器P0~P3,一个输出驱动器和两个(P3口有三个)三态缓冲器。这种结构在数据输出时,可以锁存,即在重新输出新的数据之前,口上的数据一直保持不变。但对于输入信号是不锁存的,所以外设欲输入的数据必须保持到取数指令执行(把数据读取后)为止。


下面分别叙述各个端口的结构、功能和使用方法。


(1)P0口的组成与功能 1)位结构在访问外部存储器时,P0口是一个真正的双向数据总线口,并分时送出地址的低8位。图2-4所示的是P0口的一位结构图。它包含两个输入缓冲器、一个输出锁存器以及输出驱动电路、输出控制电路。输出驱动电路由两只场效应管V1和V2组成,其工作状态受输出控制电路的控制。输出控制电路包括与门、反相器和多路模拟开关MUX。P0口既能用作通用I/O口,又能用作地址/数据总线。


2)作为通用I/O口P0口作为通用I/O口使用时,CPU令控制信号为低电平。这时多路开关MUX接通B端即输出锁存器的 端,同时使与门输出低电平,场效应管V1截止,因而输出级为开漏输出电路。


【知识点】80C51单片机的内部结构


作为输出口当用P0口输出数据时,写信号加在锁存器的时钟端CL上,此时与内部总线相连的D端其数据经反相后出现的 端上,再经V2管反相,于是在P0口引脚上出现的数据正好是内部总线上的数据。由于输出级为开漏电路,所以用作输出口时应外接上拉电阻。


作为输入口当P0口用于输入数据时,要使用端口中的两个三态输入缓冲器之一。这时有两种工作方式:读引脚和读锁存器。当CPU执行一般的端口输入指令时,“读引脚”信号使图2-4中下面一个缓冲器开通,于是端口引脚上的数据经过缓冲器输入到内部总线上。当CPU执行“读一修改一写”一类指令时,“读锁存器”信号使图2-4上面一个缓冲器开通,锁存器Q端的数据经缓冲器输入内部数据总线。在P0口作为输入口使用时,必须首先向端口锁存器写入“1”。这是因为当进行读引脚操作时,如果V2是导通的,那么不论引脚上的输入状态如何,都会变为低电平。为了正确读入引脚上的逻辑电平,先要向锁存器写1,使其 端为0,V2截止。该引脚成为高阻抗的输入端。


3)作为地址/数据总线P0口还能作为地址总线低8位或数据总线,供系统扩展时使用。这时控制信号为高电平,多路开关MUX接通A端。有两种工作情况:一种是总线输出,另一种是外部数据输入。作为总线输出时,从“地址/数据”端输入的地址或数据信号通过与门驱动V2,同时通过非门驱动V2,结果在引脚上得到地址或数据输出信号。


作为数据总线输入数据时,从引脚上输入的外部数据经过读引脚缓冲器进入内部数据总线。对于80C51、87C51单片机,P0口能作为I/O口或地址/数据总线使用。对于80C31单片机,P0口只能用作地址/数据总线。


综上所述,P0口既可以作为地址/数据总线口,这时它是真正的双向口,也可作通用的I/O口,但只是一个准双向口。准双向口的特点是:复位时,口锁存器均置“1”,8根引脚可当一般输入线使用,而在某引脚由原输出状态变成输入状态时,则应先写入“1”,以免错读引脚上的信息。一般情况下,P0口已当作地址/数据总线口使用时,就不能再作通用I/O口使用。


【知识点】80C51单片机的内部结构


(2)P1口组成与功能


P1口只用作通用I/O口,其一位结构图如图所示。与P0口相比,P1口的位结构图中少了地址/数据的传送电路和多路开关,上面一只MOS管改为上拉电阻。


P1口作为一般I/O的功能和使用方法与P0口相似。当输入数据时,应先向端口写“1”。它也有读引脚和读锁存器两种方式。所不同的是当输出数据时,由于内部有了上拉电阻,所以不需要再外接上拉电阻。


(3)P2口的组成与功能


当系统中接有外部存储器时,P2口可用于输出高8位地址,若当作通用I/O口用,P2口则是一个准双向口。因此说P2口能用作通用I/O口或地址总线,其一位的结构如图所示。


作为通用I/O口


当控制信号为低电平时,多路开关接到B端,P2口作为通用I/O口使用,其功能和使用方法与P1口相同。


作为地址总线当控制端输出高电平时,多路开关接到A端,地址信号经反相器、V从引脚输出。这时P2口输出地址总线高8位,供系统扩展使用。


对80C51、87C51单片机,P2口能作为I/O口或地址总线作用。对于80C31单片机,P2口只能用作地址总线。


(4)P3口组成与功能P3口能作通用I/O口,同时每一引脚还有第二功能。P3口的一位结构如图2-7所示。作为通用I/O口:当“第二功能输出”端为高电平时,P3口用作通用I/O口。这时与非门对于输入端Q来说相当于非门,位结构与P2口完全相同,因此P3口用作通用I/O口时的功能和使用方法与P2口、P1口相同。用作第二功能: 当P3口的某一位作为第二功能输出使用时,应将该位的锁存器置“1”,使与非门的输出状态只受“第二功能输出”端的控制。“第二功能输出”端的状态经与非门和驱动管V输出到该位引脚上。当P3口的某一位作为第二功能输入使用时,该位的锁存器和“第二功能输出”端都应为“1”,这样,该位引脚上的输入信号经缓冲器送入“第二功能输入”端。


【知识点】80C51单片机的内部结构

       

至此,可以对组成一般单片机应用系统时各个并行口的分工小结如下:       P0口:分时的用作地址低8位与数据线,低8位地址由PC低8位或DPL提供。       P1口:按位可编址的输入输出口。       P2口:地址线的高8位,高8位地址由PC高8位或DPH提供。       P3口:双功能口,若不用第二功能,可作为一般的I/O口。


推荐阅读

史海拾趣

Heraeus公司的发展小趣事

Heraeus公司作为一家历史悠久的德国化学与科技公司,在电子行业的发展过程中积累了众多令人瞩目的故事。以下是五个与Heraeus公司在电子行业中发展起来的相关故事,每个故事均基于事实描述:

1. 从黄金冶炼到电子科技的转型

Heraeus始建于1851年,最初专注于黄金冶炼,这一历史深厚的背景为其在科技领域的拓展奠定了坚实的基础。随着电子工业的兴起,Heraeus敏锐地捕捉到了市场变化,逐步将业务扩展至电子科技领域。这一转型不仅展示了Heraeus的战略眼光,也体现了其在材料科学和技术创新方面的深厚底蕴。通过不断研发新技术、新产品,Heraeus在电子元件、特殊包装和传感器等领域取得了显著成就,成为电子行业的重要供应商之一。

2. 精密精细加工材料的突破

在电子科技领域,Heraeus以其精密精细加工材料而闻名。这些材料在制造高性能电子元件中发挥着关键作用。例如,Heraeus的薄膜材料在半导体封装、电路板制造等方面得到了广泛应用。为了不断满足市场需求,Heraeus投入大量资源进行技术研发和产品创新,成功推出了一系列具有自主知识产权的高性能材料。这些材料不仅提高了电子产品的性能和质量,也推动了整个电子行业的发展。

3. 全球化布局与本地化服务

作为一家全球领先的科技公司,Heraeus在全球范围内拥有广泛的分支机构和服务网络。为了更好地服务本地客户,Heraeus在不同国家和地区设立了研发中心和生产基地,以提供更加贴近市场需求的产品和服务。在中国市场,Heraeus自1974年在香港设立机构以来,不断加大投资力度,扩大业务规模。目前,Heraeus在大中华区拥有多个生产和办公场所,为众多中国客户提供了优质的产品和服务。这种全球化布局与本地化服务的策略使得Heraeus能够在全球范围内保持竞争优势。

4. 技术创新与可持续发展

Heraeus始终将技术创新作为企业发展的核心驱动力。在电子科技领域,Heraeus不断推出新技术、新产品以满足市场需求。同时,Heraeus也注重可持续发展和社会责任。公司通过优化生产流程、提高资源利用效率等措施减少对环境的影响;积极参与慈善活动和社会公益事业;倡导环保理念并推动行业绿色发展。这些举措不仅提升了Heraeus的企业形象和社会声誉,也为其在电子行业的长期发展奠定了坚实的基础。

5. 应对行业挑战与机遇

近年来,电子行业面临着诸多挑战和机遇。一方面,全球市场竞争日益激烈,技术更新换代速度加快;另一方面,新兴技术的发展为电子行业带来了新的增长点。面对这些挑战和机遇,Heraeus凭借其深厚的技术积累和市场洞察力,不断调整战略方向、优化产品结构、提升服务质量以应对市场变化。同时,Heraeus也积极寻求与产业链上下游企业的合作机会以实现共赢发展。这些努力使得Heraeus在电子行业中始终保持着领先地位并不断向前发展。

EG & G Inc公司的发展小趣事

近年来,电子行业面临着诸多变革和挑战,如技术更新换代加速、市场需求变化等。为了应对这些变革,EG & G Inc公司不断进行战略调整和业务优化。公司加大了对新技术和新产品的研发力度,同时注重提高生产效率和降低成本。此外,公司还积极探索新的商业模式和市场机会,以保持其在行业中的领先地位并实现持续发展。

以上五个故事概述了EG & G Inc公司在电子行业中的重要发展历程和关键事件。这些故事不仅展示了公司的实力和成就,也反映了其在不断变革的市场环境中保持竞争力和持续发展的能力。

Advanced Ceramic X Corporation公司的发展小趣事

为了进一步扩大市场份额,EG & G Inc公司积极开展市场拓展和国际合作。公司在中国、欧洲等多个国家和地区设立了分支机构,与当地企业建立了紧密的合作关系。同时,公司还积极参与国际展览和交流活动,展示了其先进的技术和产品。这些努力使得EG & G Inc公司在国际市场上获得了更多的机会和认可。

Baumer Electric Ag公司的发展小趣事

1962年,赫尔穆特•维茨(Helmut Vietze)加入Baumer Electric Ag,成为一名模具制造工。他凭借出色的个人能力和工作表现,很快在公司中脱颖而出。1964年,公司创始人Herbert Baumer去世后,Helmut Vietze接管了管理层,并带领公司走向新的发展阶段。他的领导为公司注入了新的活力,推动了Baumer在技术和市场上的双重突破。

AMD(超微)公司的发展小趣事

1966年,Baumer Electric Ag完成了从个体企业向股份公司的转型。同年,公司推出了测量开关和控制开关,这一创新产品为公司的成功发展奠定了坚实基础。股份制改革为公司带来了更多的资金和资源支持,加速了产品研发和市场推广的进程。

灿科盟(Ckmtw)公司的发展小趣事

面对国内外市场变化及成本增长的压力,灿科盟在2012年决定在江西省九江市设立新的生产基地。这一基地主要负责产品的生产组装,有效降低了生产成本,提高了交货速度。同时,公司也加强了与当地供应商的合作,确保原材料的稳定供应。

问答坊 | AI 解惑

PSD501

如何设置其端口寄存器,定时器寄存器,及其PPLD宏单元的时序模式如何设置?        哪位有PSDSOFT软件,要最初WSI公司版的,不是PSDSOFT EXPRESS?…

查看全部问答>

关于modelsim时序仿真的问题

用modelsim-altera版在时序仿真时,在工程中加入了仿真元件库、网表文件。延时文件、测试文件。. R1 W- g2 N. E  |$ L7 H7 |) v$ s但是执行仿真后,出现这样的错误, K0 N7 g% I3 `\" KFailed to access library \'C:/altera/quartus60/ed ...…

查看全部问答>

大家在6410平台上加过背光的驱动吗?

我把2440的背光部分驱动加入到6410的BSP中,写了一个小的应用程序,驱动无法打开有失败的提示,可是我在6410的注册表对应位置已经看到加入的backlight.dll了,这是怎么回事,大家知道吗?         HANDLE hDrv =   &n ...…

查看全部问答>

再问个问题?

如何做一个 DLL,能够加载进winCE内核运行,有高手知道吗?…

查看全部问答>

访问中断寄存器问题

环境:ARM7+S3C44B0X(SUMSUNG) 寄存器rPDATC地址为0x01d20014 我试图用汇编改变寄存器rPDATC的值 LDR r1,=0x01d20014 LDR r0,=0x0055 STR r0,[r1] 结果只改变了rPDATC的低8位,STR是字存储的,按道理应该是rPDATC低16位都被改变, 是不是寄存器 ...…

查看全部问答>

HTML Control的两个问题

1 如何用HTML Control显示xml(从文件载入或者通过程序输入),像IE里那样? 2 如何取得HTML Control里的文字内容?…

查看全部问答>

wince 启动的问题 地址问题??

看看我的调试信息:: \\ ID[1] {   dwVersion: 0x1   dwSignature: 0x43465349   String: \'\'   dwImageType: 0x6   dwTtlSectors: 0xDA64   dwLoadAddress: 0x8C200000 &nb ...…

查看全部问答>

stm32可以直接读ic卡吗

                                  …

查看全部问答>

TI提供示例疑似有误

以下为TI提供的Time_A 输出PWM波形的示例: TI示例解释时说:P1.2|--> TACCR1 - 75% PWM                            P2.0|--> TACCR2 - 25% PWM ...…

查看全部问答>