第二章 mcs-51存储器配置
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)AC:(PSW.6)辅助进位标志或称为半进位标志 当进行加法操作而产生由低4位数(十进数的1位数)向高4 位数进位时,AC将被硬件置“1”,否则被清“0”。AC被用于 BCD码加法调整,详见DA指令。
(3)F0:(PSW.5)用户标志0 由用户定义的一个状态标志。可以用软件来使它置“1”或清 “0”,也可以由软件测试F0来控制程序流向。 (4)RS1、RS0:(PSW.4、PSW.3)工作寄存器区选择控制位 可由软件来改变RS1和RS0的组合以确定当前工作寄区。 (5)P:(PSW.0)奇偶标志 每个指令周期都由硬件来置位或清零,以表示累加器A中值 为“1”的位数的奇偶数。若P=1,则A中“1”的位数为奇数,否 则P=0。
SFR块则采用直接寻址方式。而访问低128字节RAM时,
两种寻址方式都可以采用。 • 注意:128b的SFR块中只有26个字节是有定义的,若访问 这一块中没有定义的单元,将得到一个不确定的随机数
FFFFH
片外RAM
FFH 80H 7FH 00H 专用寄存器 内部RAM
0000H
外部数据存储器
内部数据存储器
89C51 128字节
普通RAM区
30H 2FH 20H 1FH 00H
位寻址区 工作寄存器区
所有的RAM区(包括位 寻址区、工作寄存器 区)都可以用于存放 数据,故也称为数据 缓存寄存器
• 片内RAM前32个单元是工作寄存器区 (00H—1FH)
FFH 52子系列才有 的RAM区 80H 7FH 1FH 18H 17H 10H 0FH 08H 07H 06H 05H 04H 03H 02H 01H 00H
来间接改变这2位的值;2)直接对RS0、RS1寻址,改变
它们的值。例如, RS0=0、RS1=1选择的是区1,而 RS0=0、RS1=0选择区0
• 片内RAM 低128字节(00H—7FH)
FFH 52子系列才有 的RAM区 80H 7FH 80H FFH
SFR分布在 80H-FFH
其中92个位 可位寻址
12个单元构成了布尔处理机的存储器空间,这28单元的
221位(28×8减去3个未定义位)各自都有专门的位地址, 可以被直接寻址。
• 片内RAM中有128个可按位寻址的位。 2FH 7F 7E 7D 7C 7B 7A 79 位地址:00H—7FH 分布在:20H—2FH单元 位地址
FFH 52子系列才有 的RAM区 80H 7FH
普通RAM区
30H 2FH 20H 1FH 00H
23H 1F 1E 1D 1C 1B 1A 19 18 22H 17 16 15 14 13 12 11 10
位寻址区 工作寄存器区
21H 0F 0E 0D 0C 0B 0A 09 08 20H 07 06 05 04 03 02 01 00
单元地址
0023H
002BH
串行口中断入口地址
定时器2溢出或T2EX(P1.1)端负跳变时
2.2 内部数据存储器
• 数据存储器在物理上和逻辑上都分为两个地址空间,一个
内部和一个外部数据存储器空间。访问内部数据存储器用
MOV指令;访问外部数据存储器用MOVX指令。 • 内部数据存储器在物理上又可以区分为3个不同的块: 00H~7FH(0~127)单元组成的低128字节的RAM块; 80H~FFH(128~255)单元组成的高128字节的RAM块
(6)OV: (PSW.2 )溢出标志 用于补码运算,以指示溢出状态。 当执行加法指令时,若以Ci表示i位向位i+1有进位,则 OV=C6⊕C7 即当位 6 向位 7有进位,而位 7不向 CY进位时;或位 6 不向位 7 进位,而位7向CY进位时,溢出标志OV被置“1”,否则被清 “0”。 同样,若以Ci表示减法运算时,位i向位i+1有借位,则执行减 法指令SUBB时, OV=C6⊕C7 无符号数乘法指令MUL的执行结果也会影响溢出标志; 除法指令 DIV 也会影响溢出标志,当除数为 0 时, OV=1 ,否 则OV=0。
7.I/O端口P0~P3 专用寄存器 P0 、 P1 、 P2 和 P3 分别是 I/O 端口 P0 ~ P3 的锁存 器。 8.串行数据缓冲器SBUF 串行数据缓冲器SBUF用于存放欲发送或已接收的数据。它 由两个独立的寄存器组成,一个是发送缓冲器,一个是接受缓冲 器(两个缓冲器共用一个地址)。
有内部ROM的单片机,在正常运行时,应把~EA引脚接高
电平,使程序从内部ROM开始执行,当PC值超出内部ROM 的容量时,会自动转向外部程序存储器空间;对这类芯片,
若把~EA引脚接低电平,可用于调试状态,把调试程序放置
在与内部ROM空间重叠的外部存储器内。对于无内部ROM 的芯片,~EA引脚应始终接低电平,迫使系统从外部程序存 储器取指。
5.堆栈指针SP
它是一个8位寄存器,用来存放栈顶地址。
MCS-51堆栈设在内部RAM中,是一个按“先进后出”顺序, 受SP管理的存储区域。在程序中断,子程序调用等情况下,用 于存放一些特殊信息(亦可作数据传送的中转站)。当数据压入 堆栈时,SP就自动加“1”;当数据从堆栈中弹出时,SP就自动
减“1”。因而SP指针始终指向栈顶。
78
28H 47 46 45 44 43 42 41 40 27H 3F 3E 3D 3C 3B 3A 39 38 26H 37 36 35 34 33 32 31 30
25H 2F 2E 2D 2C 2B 2A 29 28
24H 27 26 25 24 23 22 21 20
总共 128 个可 按位 寻址 的位
8051/8751数据存储器配置图
FFFFH
片外RAM
FFH
80H 7FH
00H
专用寄存器 内部RAM 0000H 外部数据存储器
内部数据存储器
8052/8752数据存储器配置图
• 内部数据存储器的00H~1FH(0~31)单元共32b是4个通 用寄存器区,每个区有8个8位寄存器,编号为R0~R7。 在专用寄存器PSW(程序状态字)中有2位(RS0、RS1) 可以用来确定采用哪一个工作寄存器区。可以通过两种方 法改变这两位的值:1)对PSW寻址,通过改变PSW的值
第二章 MCS-51存储器配置
• 存储器的两种结构: • 普林斯顿结构:ROM和RAM统一编址,即在同 一个空间队列内寻址 • 哈佛结构:ROM和RAM分别编址,在物理空间 上相互独立。51单片机的存储器是哈佛结构。
• 物理上,MCS-51有4个存储器空间:
片内程序存储器和片外程序存储器; 片内数据存储器和片外数据存储器;
8052/8752程序存储器配置图
• 对程序存储器可以采用立即寻址和基址+变址寻址方式
• 64kb程序存储器中有7个单元具有特殊功能
• 0000H单元 MCS-51复位后程序计数器PC的内容为 0000H,所以系统必须从0000H单元开始取指,执行程序。 该单元是系统的启动地址,一般在该单元中存放一条绝对 跳转指令,而用户设计的主程序从跳转地址开始安放。
工作寄存器区3 工作寄存器区2 工作寄存器区1
R7 R6 R5 R4 R3 R2 R1 R0
普通RAM区
30H 2FH 20H 1FH 00H
位寻址区 工作寄存器区
工 作 寄 存 器 区 0
• MCS-51内部数据存储器中可Fra Baidu bibliotek设置堆栈,但是其位置不
固定。可以通过一个专用寄存器SP(栈指针)来确定栈 顶的地址。堆栈深度可达128b,但是以不超出内部RAM 空间为限。 • 内部RAM块中的20H~2FH(32~47)单元和SFR块中的
• 除0000H单元外,其它6个特殊单元分别对应于6种中断源 的中断服务子程序的入口地址。通常在这些入口地址处都 安放一条绝对跳转指令,而真正的中断服务子程序从转移
地址开始安放。
程序存储器中的几个特殊单元 地址 用途
0000H
0003H 000BH 0013H 001BH
复位地址
外部中断0入口地址 定时器0中断入口地址 外部中断1入口地址 定时器1中断入口地址
MCS-51堆栈最大深度为128个字节,系统复位时硬件使 SP=07H。
6.数据指针DPTR 是一16位专用寄存器,其高字节寄存器用DPH表示,低字 节寄存器用DPL表示。既可作为16位寄存器(DPTR)使用,又 可作为两个独立的8位寄存器(DPH、DPL)来使用。DPTR主 要用来保持16位地址,当对64KB外部数据存储器RAM(或I/O 口)空间寻址时,作间址寄存器用,指向外部数据存储器地址。
• 从用户使用的角度,即逻辑上,MCS-51有3个存 储器空间:
片内外统一的64kb的程序存储器地址空间; 256b或384b的内部数据存储器地址空间; 64kb的外部数据存储器地址空间; 访问这3个不同逻辑空间时应采用不同形式的指令
2.1 程序存储器
• 程序存储器用于存放编好的程序和表格常数。 • 在MCS-51中,64kb程序存储器的地址空间是统一的。对于
专用寄存器(PC除外) 标识符号 PCON SCON SBUF TCON TMOD TL0 TH0 TL1 TH1 TL2 TH2 地址 87H 98H 99H 88H 89H 8AH 8CH 8BH 8DH 0CCH 0CDH 寄存器名称 电源控制及波特率选择寄存器 串行口控制寄存器 串行数据缓冲寄存器 定时控制寄存器 定时器方式选择寄存器 定时器0低8位 定时器0高8位 定时器1低8位 定时器1高8位 定时器2低8位 定时器2高8位
1.程序计数器PC • 程序计数器PC用于存放下一条要执行指令的地址(PC总 是指向程序存储器地址),是一个16位专用寄存器,寻址
范围64K字节,PC在物理结构上是独立的,不属于特殊
功能寄存器SFR块。
• 2.累加器A 累加器A是一个最常用的专用寄存器,系统运转时工作最 频繁,大部分单操作数指令的操作数取自累加器A,很多 双操作数指令的一个操作数取自A;加、减、乘、除算术 运算以及逻辑操作指令的结果都存放在累加器A或AB寄 存器中;输入/输出大多数指令都以累加器A为核心操作。 指令系统中采用A作累加器的助记符。 • 3.寄存器B 它是一个8位寄存器。一般用于乘除法指令,与累加器A 配合使用。寄存器B存放第二操作数、 乘积的高位字节或 除法的余数部分。在其他指令中,可作为中间结果的暂存 器使用,相当于RAM中的一个特殊单元。
内部RAM块中专用位的寻址
SFR中的位地址分布
2.3 专用寄存器
• 8051/8052中共有22个专用寄存器(3个只属于8052),
其中5个是双字节寄存器。PC寄存器在物理上是独立的,
其余21个寄存器都属于内部数据存储器的SFR块,共占了 26个字节
专用寄存器(PC除外) 标识符号 ACC B PSW SP DPTR IE IP P0 P1 P2 P3 地址 0E0H 0F0H 0D0H 81H 82H、83H 0A8H 0B8H 80H 90H 0A0H 0B0H 寄存器名称 累加器 B寄存器 程序状态字 堆栈指针 数据指针(16位)含DPL和DPH 中断允许控制寄存器 中断优先控制寄存器 I/O口0寄存器 I/O口1寄存器 I/O口2寄存器 I/O口3寄存器
(8052单片机有这一块);
128b的专用寄存器(SFR)块;
• 在51子系列中,只有低128b的RAM块和128b的专用寄存
器块,后者占有80H~FFH(128~255)地址空间,两块
地址空间是相连的; • 而在52子系列中,高128字节RAM块与SFR块的地址是重 合的,究竟访问哪一块是通过不同的寻址方式加以区分的。 访问高地址字节RAM时采用寄存器间接寻址方式,访问
FFFFH
片外ROM
64K 字节 0FFFH
4K字节 0000H
1000H 0FFFH 0000H
片内ROM
EA=1
片外ROM
EA=0
8051/8751程序存储器配置图
FFFFH
片外ROM
64K 字节 1FFFH 8K字节
2000H 1FFFH 0000H
片内ROM
EA=1
片外ROM
EA=0
0000H
4.程序状态字PSW
程序状态字是一个8位寄存器,用来存放程序的状态 信息,表征指令的执行状态,供程序查询和辨别之用。其 PSW格式如下: CY AC F0 RS1 RS0 OV — P
(1)CY:(PSW.7)进/借位标志 在执行加/减法指令时,如果操作结果D7位有进/借位,CY 置“1”,否则清“0”。在布尔处理机中被定义为布尔(位)累 加器(或称位累加器)。