第二章mcs-51存储器配置.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章MCS-51存储器配置•存储器的两种结构:•普林斯顿结构:ROM和RAM统一编址,即在同一个空间队列内寻址•哈佛结构:ROM和RAM分别编址,在物理空间上相互独立。51单片机的存储器是哈佛结构。•物理上,MCS-51有4个存储器空间:片内程序存储器和片外程序存储器;片内数据存储器和片外数据存储器;•从用户使用的角度,即逻辑上,MCS-51有3个存储器空间:片内外统一的64kb的程序存储器地址空间;256b或384b的内部数据存储器地址空间;64kb的外部数据存储器地址空间;访问这3个不同逻辑空间时应采用不同形式的指令2.1程序存储器•程序存储器用于存放编好的程序和表格常数。•在MCS-51中,64kb程序存储器的地址空间是统一的。对于有内部ROM的单片机,在正常运行时,应把~EA引脚接高电平,使程序从内部ROM开始执行,当PC值超出内部ROM的容量时,会自动转向外部程序存储器空间;对这类芯片,若把~EA引脚接低电平,可用于调试状态,把调试程序放置在与内部ROM空间重叠的外部存储器内。对于无内部ROM的芯片,~EA引脚应始终接低电平,迫使系统从外部程序存储器取指。EA=164K字节FFFFH1000H片外ROM0FFFH0000H片内ROM4K字节EA=0片外ROM0FFFH0000H8051/8751程序存储器配置图EA=164K字节FFFFH2000H片外ROM1FFFH0000H片内ROM8K字节EA=0片外ROM1FFFH0000H8052/8752程序存储器配置图•对程序存储器可以采用立即寻址和基址+变址寻址方式•64kb程序存储器中有7个单元具有特殊功能•0000H单元MCS-51复位后程序计数器PC的内容为0000H,所以系统必须从0000H单元开始取指,执行程序。该单元是系统的启动地址,一般在该单元中存放一条绝对跳转指令,而用户设计的主程序从跳转地址开始安放。•除0000H单元外,其它6个特殊单元分别对应于6种中断源的中断服务子程序的入口地址。通常在这些入口地址处都安放一条绝对跳转指令,而真正的中断服务子程序从转移地址开始安放。程序存储器中的几个特殊单元地址用途0000H复位地址0003H外部中断0入口地址000BH定时器0中断入口地址0013H外部中断1入口地址001BH定时器1中断入口地址0023H串行口中断入口地址002BH定时器2溢出或T2EX(P1.1)端负跳变时2.2内部数据存储器•数据存储器在物理上和逻辑上都分为两个地址空间,一个内部和一个外部数据存储器空间。访问内部数据存储器用MOV指令;访问外部数据存储器用MOVX指令。•内部数据存储器在物理上又可以区分为3个不同的块:00H~7FH(0~127)单元组成的低128字节的RAM块;80H~FFH(128~255)单元组成的高128字节的RAM块(8052单片机有这一块);128b的专用寄存器(SFR)块;•在51子系列中,只有低128b的RAM块和128b的专用寄存器块,后者占有80H~FFH(128~255)地址空间,两块地址空间是相连的;•而在52子系列中,高128字节RAM块与SFR块的地址是重合的,究竟访问哪一块是通过不同的寻址方式加以区分的。访问高地址字节RAM时采用寄存器间接寻址方式,访问SFR块则采用直接寻址方式。而访问低128字节RAM时,两种寻址方式都可以采用。•注意:128b的SFR块中只有26个字节是有定义的,若访问这一块中没有定义的单元,将得到一个不确定的随机数FFH80H7FH00H专用寄存器内部RAM片外RAMFFFFH0000H内部数据存储器外部数据存储器8051/8751数据存储器配置图FFH80H7FH00H内部RAM片外RAMFFFFH0000H内部数据存储器外部数据存储器专用寄存器8052/8752数据存储器配置图•内部数据存储器的00H~1FH(0~31)单元共32b是4个通用寄存器区,每个区有8个8位寄存器,编号为R0~R7。在专用寄存器PSW(程序状态字)中有2位(RS0、RS1)可以用来确定采用哪一个工作寄存器区。可以通过两种方法改变这两位的值:1)对PSW寻址,通过改变PSW的值来间接改变这2位的值;2)直接对RS0、RS1寻址,改变它们的值。例如,RS0=0、RS1=1选择的是区1,而RS0=0、RS1=0选择区0•片内RAM低128字节(00H—7FH)00H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区SFR分布在80H-FFH其中92个位可位寻址80HFFH所有的RAM区(包括位寻址区、工作寄存器区)都可以用于存放数据,故也称为数据缓存寄存器89C51128字节00H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区R0R2R1R3R4R5R6R707H02H01H00H06H04H05H03H08H1FH工作寄存器区3工作寄存器区2工作寄存器区1工作寄存器区00FH10H17H18H•片内RAM前32个单元是工作寄存器区(00H—1FH)•MCS-51内部数据存储器中可以设置堆栈,但是其位置不固定。可以通过一个专用寄存器SP(栈指针)来确定栈顶的地址。堆栈深度可达128b,但是以不超出内部RAM空间为限。•内部RAM块中的20H~2FH(32~47)单元和SFR块中的12个单元构成了布尔处理机的存储器空间,这28单元的221位(28×8减去3个未定义位)各自都有专门的位地址,可以被直接寻址。00H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区27H22H21H20H26H24H25H23H28H2FH单元地址07060504030201000F0E0D0C0B0A090817161514131211101F1E1D1C1B1A191827262524232221202F2E2D2C2B2A292837363534333231303F3E3D3C3B3A393847464544434241407F7E7D7C7B7A7978位地址总共128个可按位寻址的位•片内RAM中有128个可按位寻址的位。位地址:00H—7FH分布在:20H—2FH单元内部RAM块中专用位的寻址SFR中的位地址分布2.3专用寄存器•8051/8052中共有22个专用寄存器(3个只属于8052),其中5个是双字节寄存器。PC寄存器在物理上是独立的,其余21个寄存器都属于内部数据存储器的SFR块,共占了26个字节标识符号地址寄存器名称ACC0E0H累加器B0F0HB寄存器PSW0D0H程序状态字SP81H堆栈指针DPTR82H、83H数据指针(16位)含DPL和DPHIE0A8H中断允许控制寄存器IP0B8H中断优先控制寄存器P080HI/O口0寄存器P190HI/O口1寄存器P20A0HI/O口2寄存器P30B0HI/O口3寄存器专用寄存器(PC除外)标识符号地址寄存器名称PCON87H电源控制及波特率选择寄存器SCON98H串行口控制寄存器SBUF99H串行数据缓冲寄存器TCON88H定时控制寄存器TMOD89H定时器方式选择寄存器TL08AH定时器0低8位TH08CH定时器0高8位TL18BH定时器1低8位TH18DH定时器1高8位TL20CCH定时器2低8位TH20CDH定时器2高8位专用寄存器(PC除外)1.程序计数器PC•程序计数器PC用于存放下一条要执行指令的地址(PC总是指向程序存储器地址),是一个16位专用寄存器,寻址范围64K字节,PC在物理结构上是独立的,不属于特殊功能寄存器SFR块。•2.累加器A累加器A是一个最常用的专用寄存器,系统运转时工作最频繁,大部分单操作数指令的操作数取自累加器A,很多双操作数指令的一个操作数取自A;加、减、乘、除算术运算以及逻辑操作指令的结果都存放在累加器A或AB寄存器中;输入/输出大多数指令都以累加器A为核心操作。指令系统中采用A作累加器的助记符。•3.寄存器B它是一个8位寄存器。一般用于乘除法指令,与累加器A配合使用。寄存器B存放第二操作数、乘积的高位字节或除法的余数部分。在其他指令中,可作为中间结果的暂存器使用,相当于RAM中的一个特殊单元。程序状态字是一个8位寄存器,用来存放程序的状态信息,表征指令的执行状态,供程序查询和辨别之用。其PSW格式如下:CYACF0RS1RS0OV—P(1)CY:(PSW.7)进/借位标志在执行加/减法指令时,如果操作结果D7位有进/借位,CY置“1”,否则清“0”。在布尔处理机中被定义为布尔(位)累加器(或称位累加器)。(2)AC:(PSW.6)辅助进位标志或称为半进位标志当进行加法操作而产生由低4位数(十进数的1位数)向高4位数进位时,AC将被硬件置“1”,否则被清“0”。AC被用于BCD码加法调整,详见DA指令。4.程序状态字PSW(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。(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。5.堆栈指针SP它是一个8位寄存器,用来存放栈顶地址。MCS-51堆栈设在内部RAM中,是一个按“先进后出”顺序,受SP管理的存储区域。在程序中断,子程序调用等情况下,用于存放一些特殊信息(亦可作数据传送的中转站)。当数据压入堆栈时,SP就自动加“1”;当数据从堆栈中弹出时,SP就自动减“1”。因而SP指针始终指向栈顶。MCS-51堆栈最大深度为128个字节,系统复位时硬件使SP=07H。6.数据指针DPTR是一16位专用寄存器,其高字节寄存器用DPH表示,低字节寄存器用DPL表示。既可作为16位寄存器(DPTR)使用,又可作为两个独立的8位寄存器(DPH、DPL)来使用。DPTR主要用来保持16位地址,当对64KB外部数据存储器RAM(或I/O口)空间寻址时,作间址寄存器用,指向外部数据存储器地址。7.I/O端口P0~P3专用寄存器P0、P1、P2和P3分别是I/O端口P0~P3的锁存器。8.串行数据缓冲器SBUF串行数据缓冲器SBUF用于存放欲发送或已接收的数据。它由两个独立的寄存器组成,一个是发送缓冲器,一个是接受缓冲器(两个缓冲器共用一个地址)。9.定时器/计数器MCS-51子系列中有两个16位定时器/计数器T0和T1,MCS-52子系列增加了一个16位定时器/计数器T2。它们各由两个独立的8位寄存器组成,共分为6个独立的寄存器;TH0、TL0,TH1、TL1,TH2和TL2。可以对这6个寄存器寻址,但不可把T0、T1和T2当作一个16位寄存器来对待。10.其他控制寄存器IP、IE、TMOD、TCON、T2CON、SCON和PCON寄存器分别包括有中断系统、定时器/计数器、串行口和供电方式的控制和状态位,这些寄存器将在有关章节中一一介绍。

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功