❶ 单片机存储器的程序存储器
MCS-51中,程序存储器通过16位程序计数器(PC)寻址,具有64KB寻址能力,也即可以在64KB的地址空间任意寻址。其中,具有4KB片内程序存储器空间,地址为000H-0FFFH(注:8031无片内程序存储器);片外程序存储器空间最大可扩展到64KB,地址为0000H-FFFFH,片内、外统一编址。
1、程序存储器片内与片外地址
由于片内、外统一编址,所以片内4KB存储空间地址000H-0FFFH与片外存储器地址000H-0FFFH发生冲突。但是,CPU是访问片内存储器还是访问片外存储器,可由引脚上所接的电平来确定。
1)当EA引脚接高电平时,若程序计数器(PC)值超出片内存储空间,则自动转向片外程序存储器空间执行程序;
2)当EA引脚接低电平时,单片机只能执行片外程序存储器的程序。
另外,因为8031没有片内程序存储器,所以就将EA引脚固定接低电平,通过外部扩展程序存储器来存放程序;而对其它MCS-51,若没有片外程序存储器,那应将引脚固定接高电平。通过EA引脚所接电平不同,解决了程序存储器中片内、片外地址冲突问题。
2、程序存储器中的特殊单元
MCS-51程序存储器中,有6个存储单元具有特殊用途。
0000H单元为系统启动地址。MCS-51单片机启动复位后,程序计数器(PC)的内容为0000H,所以系统将从0000H单元取指令,并开始执行程序。程序设计时一般在该地址存放一条绝对跳转指令,转入主程序的入口地址。
另外0003H一002AH日被均匀地分成5段,用于5个中断服务程序的入口。
其中0003H、000BH、0013H、O01BH、0023H为5个中断源的中断服务程序的入口地址。
中断源的中断服务程序的入口地址,即当中断产生相应的中断服务程序的起始地址被装入程序计数器(PC),系统将从该地址取指令,并执行程序 。 8051有256个单元的内片数据存储器,其中00H-7FH为片内随机存储器RAM,也叫低128B;80H-FFH为特殊功能寄存器,也叫高128B。低128B又分为工作寄存器区、位寻址区、用户RAM区。
1.工作寄存器区(00H-1FH)
在00H-1FH共32个单元,被均匀地分为四组工作寄存器堆:RB0、RB1、RB2、RB3,每组寄存器堆包含8个工作寄存器,均以R0-R7来命名,这些寄存器被称为通用寄存器。工作寄存器用于临时存放8位信息。在使用时,由程序状态字寄存器中的RS0、RS1来选择工作寄存器堆。
2.位寻址区(20H-2FH)
片内数据存储器的20H-2FH存储区为位寻址区,既可作为一般单元按字节寻址,也可按位进行寻址。位寻址区有16个字节,位地址为00H-7FH。
3.用户RAM区(30H-7FH)
用户RAM区主要用作数据缓冲区和堆栈。这个存储区只能按字节寻址,用作存放数据及作为堆栈区。通常堆栈区被设置在这块存储区,由堆栈寄存器SP指定,CPU复位时SP=07H,使得堆栈实际上是从08H开始的,但08H-1FH属于工作寄存器区 。 MCS-51单片机的特殊功能寄存器 符号 地址 功能介绍 B F0H B寄存器 ACC E0H 累加器 PSW D0H 程序状态字 TH2* CDH 定时器/计数器2(高8位) TL2* CCH 定时器/计数器2(低8位) RLDH* CBH 外部输入(P1.1)计数器/自动再装入模式时初值寄存器高八位 RLDL* CAH 外部输入(P1.1)计数器/自动再装入模式时初值寄存器低八位 T2CON* C8H T2定时器/计数器控制寄存器 IP B8H 中断优先级控制寄存器 P3 B0H P3口锁存器 IE A8H 中断允许控制寄存器 P2 A0H P2口锁存器 SBUF 99H 串行口锁存器 SCON 98H 串行口控制寄存器 P1 90H P1口锁存器 TH1 8DH 定时器/计数器1(高8位) TH0 8CH 定时器/计数器0(高8位) TL1 8BH 定时器/计数器1(低8位) TL0 8AH 定时器/计数器0(低8位) TMOD 89H T0、T1定时器/计数器方式控制寄存器 TCON 88H T0、T1定时器/计数器控制寄存器 DPH 83H 数据地址指针(高8位) DPL 82H 数据地址指针(低8位) SP 81H 堆栈指针 P0 80H P0口锁存器 PCON 87H 电源控制寄存器
❷ 8051单片机内部程序存储器和内部数据存储器的寻址范围是多少
内部程序存储器的寻址范围是C:0000H~FFFFH
内部数据存储器的寻址范围是I:00H~FFH
1
❸ 单片机程序存储器扩展电路问题
答:在设计片外程序存储器之前,首先要决定EA引脚的电平。
EA=0,单片机只访问外部程序存储器,对于8031单片机此引脚必须接地.EA=1,单片机访问内部程序存储器,对于内部有程序存储器的8XX51单片机,此引脚应接高电平,但若地址值超过4KB范围,单片机将自动访问外部程序存储器。
设定好EA后,单片机自动按程序所设定的次序执行。
在编程中不需要专门的语句指定调用的是外部程序存储器。比如设定EA接高电平,则程序在执行完片内的程序存储器指令后自动转入片外程序存储器,而无需特殊命令。这就是所谓的程序存储器是片内外统一编址,而数据存储器则用Mov和Movx分别对待的。
但楼主要知道程序在读取片外指令代码时的过程:先寻址,再取数。单片机会根据PC的值先给P2和p0送一个选通地址(PC的值),接下来从片外程序存储器读取代码。因为PC的值一般是连续的,这就要求片外的程序存储器空间要连续分布,这和数据存储器不同。如果不连续分布,就要用特殊的行号改变PC的值,使它和片外程序存储器分布能够对应。
❹ 单片机应用程序一般存放在哪一个存储器中
ROM。只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。
ROM所存数据通常是装入整机前写入的,整机工作过程中只能读出,不像随机存储器能快速方便地改写存储内容。ROM所存数据稳定 ,断电后所存数据也不会改变,并且结构较简单,使用方便,因而常用于存储各种固定程序和数据。
(4)单片机c程序存储器扩展阅读
单片机的数据存储器由读写存储器RAM组成。其最大容量可扩展到64k,用于存储实时输入的数据。8051内部有256个单元的内部数据存储器,其中00H~7FH为内部随机存储器RAM,80H~FFH为专用寄存器区。
实际使用时应首先充分利用内部存储器,从使用角度讲,搞清内部数据存储器的结构和地址分配是十分重要的。因为将来在学习指令系统和程序设计时会经常用到它们。
8051内部数据存储器地址由00H至FFH共有256个字节的地址空间,该空间被分为两部分,其中内部数据RAM的地址为00H~7FH(即0~127)。
而用做特殊功能寄存器的地址为80H~FFH。在此256个字节中,还开辟有一个所谓“位地址”区,该区域内不但可按字节寻址,还可按“位(bit)”寻址。对于那些需要进行位操作的数据,可以存放到这个区域。从00H到1FH安排了四组工作寄存器,每组占用8个RAM字节,记为R0~R7。
❺ 51单片机的存储器分为哪几个空间
1)MCS-51单片机的存储器从物理结构上分为:片内和片外数据存储器,片内和片外程序存储器。
2)从逻辑上分别可划分为:片内统一寻址的64K程序存储器空间(0000H---FFFFH);64KB的片外数据存储器空间(0000H---FFFFH);256B的片内数据存储器空间(00H---FFH)。
(5)单片机c程序存储器扩展阅读:
使用方法:
1、将仿真器插入需仿真的用户板的CPU插座中,仿真器由用户板供电;
2、将仿真器的串行电缆和PC机接好,打开用户板电源;
3、通过KeilC 的IDE开发仿真环境UV2 下载用户程序进行仿真、调试。
硬件说明
1、使用用户板的晶振:仿真器晶振旁有两组跳线用来切换内部晶振和用户板晶振,当两个短路块位于仿真器晶振一侧时,默认使用仿真板上的晶振(11.0592MHz), 当两个短路块位于电容一侧时,使用用户板的晶振。
2、为便于调试带看门狗的用户板,仿真器的复位端未与用户板复位端相连;故仿真器的复位按钮只复位仿真器,不复位用户板;若要复位用户板,请使用用户板复位按钮。
❻ 分析at89s52单片机的存储器结构
1.程序存储器
设计人员编写的程序存放在微处理器的程序存储器中。
at89s52具有64kb程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息,程序存储器的结构如图1所示。
图1 at89s52程序存储器的结构
at89s52片内片外的程序存储器在统一逻辑空间中,地址从0000h~ffffh,共有64k字节范围。引脚接高电平时,程序从片内程序存储器0000h开始执行,即访问片内存储器。当pc值超出片内rom容量时,会自动转向片外程序存储器空间执行。引脚接低电平时,迫使系统全部执行片外程序存储器0000h开始存放的程序。
2.数据存储器
at89s52 有256 字节片内数据存储器。地址为00h~ffh。这256个单元共分为两部分。其一是地址从00h~7fh单元(共128个字节)为用户数据ram。从80h~ffh地址单元(也是128个字节)为特殊寄存器(sfr)单元。高128 字节与特殊功能寄存器重叠,也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。
在00h~1fh共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以r0~r7来命名,称这些寄存器为通用寄存器。这四块中的寄存器都称为r0~r7,利用psw的第3和第4位(rs0和rs1),即可选中这四组通用寄存器。
内部数据存储器的20h—2fh单元为位寻址区,可作为一般单元用字节寻址,也可对它们的位进行寻址,位寻址区地址如表1所示
表1 ram位寻址区地址表
3. 中断服务程序的入口地址
在程序存储区中,为中断服务程序保存了一段中断服务程序的入口地址:其中一组特殊单元是0003h—0032h,各个单元各有用途,它们被分为六段,每个段8个字节,专门留给中断服务程序使用,被称为中断矢量区。at89s52共有8个中断源,6个中断矢量,它们的定义如下表2所,
表2 中断服务程序的入口地址
4.特殊功能寄存器sfr(special? function register)
特殊功能寄存器是指有特殊用途的寄存器集合,也称为专用寄存器,本质上是一些具有特殊功能的片内ram单元,反映单片机的运行状态,很多功能也通过特殊功能寄存器来定义和控制程序的执行。
at89s52单片机内部高128(80~ffh)地址分配给特殊功能寄存器。这个地址空间和芯片内数据存储器的高128字节地址完全重叠,但两者在物理硬件上是完全独立的,用寻址方式来区分这个完全重叠的地址空间。使用直接寻址方式访问这个地址空间时,访问的是特殊功能寄存器;使用间接寻址方式访问这个地址空间时,访问的是数据存储器。
at89s52有32个特殊功能寄存器,它们被离散地分布在内部ram的80h~ffh地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。
5.几个注意问题
(1)地址的重叠性
单片机中的所有存储器都必须分配地址,可以寻址的地址范围为64kb,数据存储器与程序存储器都占用相同的地址。
程序存储器中片内片外0000h~0ffffh低4kb地址完全重叠,但是我们使用引脚进行区分:=0时,选择片外,=1时,选择片内,这样就完全区分开来了。
数据存储器中片内外0000h~00ffh的256个单元地址完全重叠,片内外数据的访问采用不同指令来区分:mov指令访问片内数据存储器,movx指令访问片外数据存储器。
(2)程序存储器(rom)与数据存储器(ram)的区分
程序存储器(rom)与数据存储器(ram)的区分在使用上是严格区分的,程序存储器只能放置程序指令及常数表格,对程序存储器中数据的访问只可以使用movc指令。而数据存储器则存放数据,片内外的操作指令分别用mov,movx进行操作。
(3)位地址空间的区域划分
片内ram中的20h~2fh的128位,以及sfr中的位地址,这些位寻址单元与位指令集构成了位处理器系统
❼ 单片机应用程序一般存放在
单片机应用程序一般存放在单片机内部的程序存储器中(可能是FLASH存储器,也可能是EEPROM,可能是EPROM,也可能是PROM)
❽ 单片机的程序存储器和数据存储器共处同一地址空间为什么不会发生总线冲突
单片机的程序存储器和数据存储器共处同一地址空间之所以不发生地址冲突,是因为:
1、尽管地址相同,但物理空间不一样。
2、访问指令不同,程序存储器用MOVC指令访问,数据储存器用MOVX指令访问。
❾ 在单片机里程序存储器和数据存储器的区别是什么
程序存储器顾名思义就是放程序的存储器。就是把你写的程序放到里面去。就算断电了但是里面的数据还在,好比手机里面存的电话薄,你换块电池这中间有个断电的过程但是数据还在。数据存储器顾名思义就是专门放数据的,哪样才是数据呢,比如说一个测温度的设备,温度时时都在变化我们不可能存某一固定的值进去,这个时候时时变化的温度数据就是放在数据存储器里面的。只要一断电它就不会保留数据
❿ 单片机的程序存储器有哪些类型
1、按字长分为4位,8位,16位,32位
2、按指令类型分类:精简指令集,复杂指令集
3、按内核来分:51系列,pic系列,avr系列,430系列……