单片机按存储结构可分为二类:一类是哈佛结构,另一类是普林斯顿结构。哈佛结构所谓哈佛结构是指程序存储器地址空间与数据存储器地址空间分开的单片机结构,如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寄存器对中。
暂存器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单片机可分为三部分,即:程序存储器、片外数据存储器、片内数据存储器。这3部分分别使用不同的地址指针,不同的访问指令。因此,下面按逻辑结构介绍80C51的存储器结构。
(1)程序存储器
由图3可知,程序存储器以程序计数器PC作地址指针,通过16位地址总线,可寻址的地址空间为0000H~0FFFFH共64K(216=64K)字节,其访问指令为MOVC。用于存放程序指令码与固定的数据表格等。
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区的位地址映像表
数据缓冲区数据缓冲区的地址空间从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
注:带“·”号的寄存器可按字节和按位寻址,其特征是直接地址能被8整除。带“*”号的寄存器是与定时器/计数器2有关的寄存器,仅在80C52系列中存在。下面以一个实例说明单片机的内部存储器。
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截止,因而输出级为开漏输出电路。
作为输出口当用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口使用。
(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”,这样,该位引脚上的输入信号经缓冲器送入“第二功能输入”端。
至此,可以对组成一般单片机应用系统时各个并行口的分工小结如下: P0口:分时的用作地址低8位与数据线,低8位地址由PC低8位或DPL提供。 P1口:按位可编址的输入输出口。 P2口:地址线的高8位,高8位地址由PC高8位或DPH提供。 P3口:双功能口,若不用第二功能,可作为一般的I/O口。
上一篇:KEILC51编译问题ERRORL104:MULTIPLEPUBLICDEFINITIONS重复定义
下一篇:利用51单片机制作廉价盒仔机器人
推荐阅读
史海拾趣
除了商业产品的研发外,西安航天民芯还积极承担国家重大科研项目。公司参与了我国工业强基高性能工业DSP芯片等多项国产化项目的研发工作,为提升国家产业核心竞争力做出了贡献。这些项目的成功实施,进一步提升了西安航天民芯在行业内的影响力和地位。
为了确保产品质量和客户满意度,Celduc Relais公司投入大量资源建立了完善的质量管理体系。公司引入了先进的质量管理工具和方法,通过严格的质量控制和持续改进,不断提升产品质量和服务水平。这一举措不仅增强了客户对公司的信任,也为公司在激烈的市场竞争中保持领先地位提供了有力保障。
BJB公司的创立源于对照明电器领域的深刻理解和市场需求的敏锐洞察。创立初期,公司面临着资金短缺、技术挑战和市场竞争等多重困难。然而,通过创始人的坚定信念和团队的共同努力,BJB逐渐攻克技术难关,推出了一系列高质量的照明配件产品,初步在市场中获得了认可。
近年来,随着电子行业的快速发展和市场竞争的加剧,Bay Linear Inc公司面临着前所未有的挑战。为了应对行业变革,公司进行了一系列战略调整,包括优化产品结构、加强研发投入、拓展新兴市场等。这些举措有效地提升了公司的竞争力,使公司在激烈的市场竞争中保持了稳健的发展态势。
进入21世纪后,ddm hopt + schuler公司紧跟数字化浪潮,积极推动数字化转型和智能制造。公司引入先进的物联网、大数据和人工智能技术,对生产线进行智能化改造和升级。通过实时数据监控和分析,公司能够更准确地预测市场需求、优化生产计划、提高生产效率。同时,智能制造也为企业带来了更高的灵活性和更低的成本。
面对海洋环境的独特挑战,Contrinex推出了海洋系列传感器。这些传感器采用全金属技术,外壳材质为V4A/AISI 316L不锈钢,防护等级高达IP68/IP69K,能够抵御恶劣的海洋环境。同时,该系列传感器还具备卓越的EMC防护性能,能够满足各种海洋应用需求。这一创新产品的推出,进一步巩固了Contrinex在传感器行业的领先地位。
在中国,我们定义个人的成功大都集中于工作层面,不太像欧美国家,把家庭幸福、自娱自乐等作为成功的标志。所以这个时代的中国人也就更为关心工作上的发展了,也就努力的学习、警觉的寻找着机会、苦心孤诣地培养着自己的能力,但在这些具体的行为上 ...… 查看全部问答∨ |
很多人一直以为Freescale芯片的资料太少,其实不然。相对其他一些公司Freescale的芯片只是在国内用的少些罢了,他的网站上有他所有芯片的详细资料,手册简洁易懂,整理的很好,还有大量的参考设计代码、开发包。 说资料少的人估计大都是没用过他的 ...… 查看全部问答∨ |
自从毕业以后,就再也没有碰过单片机了,只是偶尔来这里看看,回味一下大学自学单片机的日子,那时候真的是很疯狂,很单纯,当时以为懂得了单片机就以为掌握了自己的未来,在一些学校的DIY爱好者中几乎飘着“单片机”的空气。到了大三 ...… 查看全部问答∨ |
我的程序流程: PC机与DM642开发板相连。 PC机流程:SOCKETàBINDà有数则收,有键盘输入则发送数据; DM642流程:SOCKETàBINDà接收数据à收到数据则发送 上述为可以正常工作的流程,DM642在收到数据后,再发送,则可以一直发送成功,并且PC ...… 查看全部问答∨ |
文思信息技术有限公司成立于1995年,是中国软件外包行业的先行者和领军企业。 我们为来自亚太、北美和欧洲的国际客户及其在中国的分支机构提供IT外包服务。 文思在高科技行业、金融服务业、制造业、零售与分销业、电信业等领域具备全面 的专业能 ...… 查看全部问答∨ |
tornado2.2 (for poverPc) simulator 启动问题?? 我在网上下了一个tornado 按说明安装后,运行没有问题,但是启动VX是, 报error : simulator failed to initialize before timeout 的错误。 大家看看这是什么问题啊? … 查看全部问答∨ |
我做了一个PWM整流器,直流电压在200V以下DSP运行正常,但电压加到250V时DSP就容易跑飞,多数是进入了非法中断(我在非法中断中设置了一个GPIO口,多数情况下会反转,以此判断多数情况下进入非法中断),我认为程序在低压下能跑,应该不是程序问题 ...… 查看全部问答∨ |
使用我的简易电子负载,作易电源的测试 ,效果基本满意,比找功率电阻要方便多了。 这次测试了LMZ12002的输出电流与电压、波纹的关系,在测量波纹时,加大负载时,怎么就看不到波纹了呢!示波器用的是0.010V档,开始时略显有纹波,加大负载后的纹 ...… 查看全部问答∨ |