单片机结构 - 存储器、特殊功能寄存器
- 格式:ppt
- 大小:635.00 KB
- 文档页数:24
特殊功能寄存器(SFR)也称为专用寄存器,特殊功能寄存器反映了MCS-51单片机的运行状态。
很多功能也通过特殊功能寄存器来定义和控制程序的执行。
MCS-51有21个特殊功能寄存器,它们被离散地分布在内部RAM的80H—FFH地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。
表2是特殊功能寄存器分布一览表,我们对其主要的寄存器作一些简单的介绍。
表2 特殊功能寄存器标识符号地址寄存器名称ACC 0E0H 累加器B 0F0H B寄存器PSW 0D0H 程序状态字SP 81H 堆栈指针DPTR 82H、83H 数据指针(16位)含DPL和DPHIE 0A8H 中断允许控制寄存器IP 0B8H 中断优先控制寄存器P0 80H I/O口0寄存器P1 90H I/O口1寄存器P2 0A0H I/O口2寄存器P3 0B0H I/O口3寄存器PCON 87H 电源控制及波特率选择寄存器SCON 98H 串行口控制寄存器SBUF 99H 串行数据缓冲寄存器TCON 88H 定时控制寄存器TMOD 89H 定时器方式选择寄存器TL0 8AH 定时器0低8位TH0 8CH 定时器0高8位TL1 8BH 定时器1低8位TH1 8DH 定时器1高8位程序计数器PC(program Counter)程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。
PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。
PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。
累加器ACC(Accumulator)累加器A是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。
加、减、乘、除法运算的指令,运算结果都存放于累加器A或AB累加器对中。
1、定时器/计数器的方式寄存器TMODTMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址。
A.主要完成三个功能:*确定选择定时器还是计数器;*选择何种工作方式;*是否借用外中断控制定时器和计数器的启停;B.TMOD的低4位是控制T0的字段(T0--P3.4 定时器/计数器0外部事件脉冲输入端);TMOD的高4位是控制T1的字段(T1--P3.5定时器/计数器1外部事件脉冲输入端)C.控制字的格式和含义a、GATE(TMOD.7)分为两种情况:GATE=0,定时器的启停和INT1无关,只取决于TR0;GATE=1,定时器的启停不仅要由TR0来控制,而且要INT1引脚的控制,只有二者都为高电平时定时器才开始工作;b、C/T(TMOD.6)分为两种情况:C/T=0,用作定时器;C/T=1,用作计数器;d、M1(TMOD.5), M0(TMOD.4)用M1,M0来控制定时器/计数器的4种工作方式:*方式0:M1=0,M0=0.13位定时/计数方式*方式1:M1=0,M0=1.16位定时/计数器*方式2,M1=1,M0=0.8位初值自动重新装入的8位定时/计数器*方式3,M1=1,M0=1.仅适用于T0,分为两个8位计数器,T1停止计数2、定时器/计数器控制寄存器TCONTCON是一个8位的特殊功能寄存器,对应的地址为88H,可为寻址。
A 控制字的格式和含义a、TF1(TCON.7),TF0(TCON.5)----T1、T0计数溢出标志位当计数器计数溢出时,该位置“1”。
使用查询方式时,此位作为状态位供cpu查询,但应注意在查询该位有效后应以软件方法及时将该位清“0”。
使用中断方式时,此位作为中断申请标志位,进入中断服务程序后由硬件自动清0.b、TR1(TCON.6),TR0(TCON.4)----计数运行控制位TR1(TR0)=1,启动定时/计数器工作的必要条件,还与GATE位的状态有关。
详细解读AT89S51存储器的结构AT89S51单片机存储器结构的特点之一是将程序存储器和数据存储器分开(称为哈佛结构),并有各自的对这两个不同的存储器空间的访问指令。
AT89S51的存储器空间可划分为如下4类。
1.程序存储器空间单片机能够按照一定的次序工作是由于程序存储器中存放了经调试正确的程序。
程序存储器可以分为片内和片外两部分。
AT89Ssl单片机的片内程序存储器为4 KB的Flash存储器,编程和擦除完全是电气实现,且速度快。
可使用通用的编程器对其编程,也可在线编程。
当AT89S51片内的4 KB的Flash存储器不够用时,用户可在片外扩展程序存储器,最多可扩展至64 KB。
2.数据存储器空间数据存储器空间分为片内与片外两部分。
AT89S51单片机内部有128 B的RAM(增强型的52子系列为256 B),用来存放可读/写的数据。
当AT89S51的片内RAM不够用时,又给用户提供了在片外可扩展至64 KB RAM的功能。
至于究竟扩展多少RAM,则根据用户实际需要来定。
3.特殊功能寄存器(SFR,Special Function Register)特殊功能寄存器实际上是AT89S51片内各功能部件的控制寄存器及状态寄存器。
SFR综合反映了整个单片机基本系统内部实际的工作状态及工作方式。
4.位地址空间AT89S51单片机内共有211个可寻址位,构成了位地址空间。
它们位于内部RAM(共128位)和特殊功能寄存器区(共83位)中。
程序存储器空间程序存储器是只读存储器(ROM),用于存放程序和表格之类的固定常数。
AT89S51单片机的片内程序存储器为4 KB的Flash存储器,地址范围为0000H~0FFFH。
AT89S51有16位地址线,可外扩的程序存储器空间最大为64KB,地址范围为0000H~FFFFH。
片内与片外扩展的程序存储器在使用时应注意以下问题:(1)整个程序存储器空间可以分为片内和片外两部分,CPU究竟是访问片内的还是片外的程序存储器,可由EA(的反)引脚上所接的电平来确定。
51单片机的基本结构51单片机是一种高性能、低功耗的微控制器,是嵌入式系统中常用的一种芯片。
它具有集成度高、易编程、可编程性强等特点,在各种电子设备中广泛应用,包括家电、工业控制、汽车电子、智能仪器等领域。
51单片机的基本结构主要包括CPU、存储器、输入输出端口、定时计数器和串口通信等部分。
1.CPU51单片机的CPU是其核心部分,负责执行指令、进行运算处理。
它通常采用哈佛结构,即指令和数据分开存储。
51单片机的CPU主要由ALU (算术逻辑单元)、寄存器组、指令寄存器、程序计数器等部分组成,能够完成基本的运算和控制功能。
2.存储器51单片机的存储器包括ROM(只读存储器)和RAM(随机存储器)。
ROM用于存储程序代码和常量数据,是只读的;RAM用于存储变量数据和临时结果,是可读写的。
在51单片机中,通常ROM用于存储程序代码和初始化数据,RAM用于存储运行时数据和临时结果。
3.输入输出端口51单片机的输入输出端口用于与外部设备进行数据交换。
它可以通过不同的接口与外部设备连接,比如并行口、串行口、通用输入输出口等。
通过输入输出端口,51单片机可以与外部设备进行数据传输和通信,实现各种功能。
4.定时计数器51单片机的定时计数器可以用于计时和计数,通常用于控制时序和频率。
在51单片机中,定时计数器可以生成各种定时中断,实现定时控制功能。
定时计数器可以根据需要设定不同的时钟源和计数模式,实现灵活的定时控制。
5.串口通信51单片机的串口通信功能可以用于与外部设备进行串行通信,比如与PC机、外围设备等进行数据传输。
串口通信包括串行口和UART(通用异步收发器),可以通过串行口进行双向数据传输。
串口通信在51单片机中广泛应用于各种通信设备和控制系统中。
总的来说,51单片机的基本结构包括CPU、存储器、输入输出端口、定时计数器和串口通信等部分,通过这些部分的组合和协作,可以实现各种功能和应用。
在实际应用中,设计人员可以根据需要对这些部分进行配置和扩展,实现更丰富的功能和性能要求。
特殊功能寄存器
特殊功能寄存器在单片机中扮演着非常重要的角色,单片机的各硬件组成部分如算术逻辑单元、并行I/O口、串行口、定时器/计数器、中断系统等都有对应的特殊功能寄存器,用户程序通过特殊功能寄存器对各个硬件组成部分进行设置,并通过特殊功能寄存器获得各设备的当前工作状态。
要想使用单片机的各项功能,必须对相关的特殊功能寄存器非常熟悉。
特殊功能寄存器本质上是一些具有特殊功能的存储单元,这些存储单元分布在内部数据存储器地址80H~7FH的存储区域,用直接寻址的寻址方式进行访问。
存储器
单片机的存储器按照其功能可分为数据存储器(RAM)和程序存储器(ROM),按照其存在的位置又可以分为片外存储器和片内存储器。
在片内RAM区中,专门划分出一块区域用来存放特殊功能寄存器SFR(Special Function Register),称为特殊功能寄存器区。
在片内RAM 中,有一些特殊地址的存储单元的每一个二进制位都具有位地址,这些存储单元组成可位寻址区。
片内RAM地址为00H~1FH的存储单元用作工作寄存器区。
综上所述,单片机的整个存储器空间按照其所处的位置和功能可划分为内部程序存储器区、外部程序存储器区、低128字节的内部数据存储器区(包含工作寄存器区和位寻址区)、高128字节的内部数据存储器区、特殊功能寄存器区、外部数据存储器区等6个区域。
21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。
在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):分别说明如下:1、ACC---是累加器,通常用A表示这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。
该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3、PSW-----程序状态字。
这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。
它的各位功能请看下表:下面我们逐一介绍各位的用途CY:进位标志。
,如果做加法的话,两数位运算器只能表示到0-255中的运算器是一种8位的运算器,我们知道,88051,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。
这样就没事了。
有相加可能会超过2550CY==1;无进、借位,进、借位,CY )78H+97H(01111000+10010111例:。
51单⽚机特殊功能寄存器51单⽚机特殊功能寄存器(SFR)介绍作者:huqin 来源:本站原创点击数: 5937 更新时间:2013年12⽉28⽇【字体:⼤中⼩】1、21个寄存器介绍51系列单⽚机内部主要有四⼤功能模块,分别是I/O⼝模块、中断模块、定时器模块和串⼝通信模块(串⾏I/O⼝),如其结构和功能如下图:图1 51单⽚机结构和功能图51单⽚机掌握的好坏,其实就是能否正确操作这四个功能模块,⽽其操作的实质则⼜是能否对每个模块所对应寄存器的正确操纵。
所以下⾯重点介绍⼀下51系列单⽚机内部的特殊功能寄存器(简称SFR,以下说明以此代替)。
(关于什么叫特殊功能寄存器,这⾥先不作介绍,不懂的请查阅51单⽚机相关资料。
)51单⽚机内部共有21个SFR,其布局如图2,从图中可以看出,每个SFR 占1个字节,多数字节单元中的每⼀位⼜有专⽤的“位名称”。
这21个SFR⼜按是否可以位寻址分为两⼤部分,ACC、IE、P1等11个可以位寻址,SP、TMOD 等不可以位寻址。
图2 51单⽚机SFR布局图2、位寻址解释下⾯以P1、IE寄存器(可位寻)和TMOD(不可位发)为例解释⼀下位寻址。
能位寻址是指能够对它的每⼀位都可以进⾏位操作,如图3,如P1⼝接8个灯,灯阳极接正极,阴极接单⽚机的P1⼝的8个脚。
现在要让接P1⼝第1个引脚的灯亮,程序中可以写P1=0xfe,也可以先定义deng1=P1^0,即P1⼝的第1位,⾄于为什么写P1^0,是因为KEIL软件规定的,然后deng1=0。
也就是P1=0xfe和deng1=0都是可以点亮第⼀个灯,后者deng1=0属于位操作,前者P1 =0xfe属于总线操作,也就是8个引脚⼀起操作。
图3 8位灯接线图下⾯再以IE寄存器为例进⾏位操作的解释。
IE寄存器为中断允许寄存器,如各位的作⽤如图4.其中第7位EA是51单⽚机5个中断的总开关,如要进⼊任何⼀个中断时,需先把EA打开,因为可以进⾏位操作,此时程序有两种写法:1)IE=0x80(假如其它位为0,即1000 0000),也可以直接写EA=1,后者EA=1即属于位操作。
MCS-51单片机的特殊功能寄存器从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在一个51单片机的内部包含了这么多的东西。
对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O 口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢?看下表下面,我们介绍一下几个常用的SFR。
1、ACC---是累加器,通常用A表示。
这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。
该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器。
在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3指针寄存器(1)程序计数器PC指明即将执行的下一条指令的地址,16位,寻址64KB范围,复位时PC = 0000H(2)堆栈指针SP指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H(3)数据指针DPTR@R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。
DPTR = DPH + DPL。
可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。
分成DPL(低8位)和DPH(高8位)两个寄存器。
用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作4、PSW-----程序状态字。