单片机堆栈指针的理解
51单片机数据存储器结构详解

51单片机数据存储器结构详解1、bit是在内部数据存储空间中20H..2FH区域中一个位的地址,这在DATA的20H以后以字节形式出现,可互相参照。
另外加上8051可寻址的SFR,但刚刚试过,只是00H--7FH起作用,也就是说当数据有变化时颜色变红,以后的从80H到--FFH就不是位寻址区了,是位寻址的特殊寄存器,如涉及到了可位寻址的那11个当然会有反应。
复位后,程序计数器PC的内容为0000H,内部RAM各单元的值不确定。
各功能寄存器的复位值如下:堆栈指针SP的复位值为07H,累加器ACC、寄存器B的复位值为00H,数据指针DPTR的复位值为0000H,而p0、p1、p2、p3四个口的复位值为0FFH。
其他SFR如PSW、TCON、TMOD、TL0、TH0、TL1、TH1的复位值也为00H。
2、wave中是低128字节和高128字节(0-7FH),低128字节是片内RAM区,高128字节(80-FFH)是SFR(特殊功能寄存器)bit则是位于低128字节的20H..2FH区域,即data的20H..2FH区域3、code是在0000H..0FFFFH之间的一个代码地址。
例如:ORG5000HTAB:DB22H,3BH,43H,66H,5H,6DH,88H后,CODE从5000H开始以后变成DB各位4、data是在0到127之间的一个数据存储器地址,或者加128..255范围内的一个特殊功能寄存器(SFR)地址。
两者访问的方式不同。
实际上由于PSW的复位设置PSW.3=RS0和PSW.4=RS1皆为0,所以通用工作寄存器区就是第0区,所以data的00--07H部分是与REG栏中的R0--R7对应的。
以后的则仅代表低128字节的内部RAM。
5、idata是0to255范围内的一个idata存储器地址。
idata与data 重合低128字节,有的地方只有DATA表示256字节的片内RAM,某data 是0to65535范围内的一个某data存储器地址。
单片机复习资料

51单片机内部结构:集成了中央处理器(CPU)、存储器系统(RAM和ROM)、定时/计数器、并行接口、串行接口、中断系统和一些特殊功能寄存器中央处理器:单片机cpu包含运算部件和控制部件算数逻辑ALU为8位运算器ALU有位计算器可以对一位二进制数据进行置位、清零、求反、测试转移及位逻辑与,或等处理累加器ACC为8位寄存器是CPU中使用最频繁的存储器程序计数器PC是16位寄存器,它存放下一条要执行的指令的地址堆栈指针SP用来控制堆栈段内容的入栈(输入)与出栈(输出),51单片机中SP始终指向栈底位置数据指针DPTR是16位寄存器,通常用DPTR实现对片外数据存储器64KB空间的访问程序存储器:程序存储器外部内部共用64KB存储空间8031,8032内部没有程序存储器,只能外部扩展64KB。
8051,8751内部有4KB程序存储器地址范围0000H-0FFFH;8052,8752内部有8KB程序存储器,地址范围0000H-1FFFH,外部最多可扩展64KBEA引脚接低电平从片外程序存储器取命令,高电平从片内程序存储器取命令8031,8032的EA只能保持低电平(指令只能从片外程序存储器取得)51单片机片内随机存储块128字节编址00H-7FH 特殊功能寄存器128字节编址80H-0FFH 工作寄存器组区:00H-1FH单位为工作寄存器组区共32字节工作寄存器有0,1,2,3四组,每组8个寄存器,依次用R0-R7表示和使用堆栈在存储器中按(先入后出,后入先出)原则进行管理的一段的存储区域,通过堆栈指针SP管理堆栈主要是为子程序调用和中断调用设立的,用于保护断点地址和保护现场状态根据入栈方向堆栈分为向上,向下生长型向上生长型堆栈入栈时SP指针先加1,指向下一个高地址单元,出栈时先把SP指针指向单元的数据送出,再把SP指针减1,数据是向高地址单元储存的;向下生长型堆栈入栈时SP 指针先减1,指向下一个低地址单元,再把数据送入当前SP指针指向的单元,出栈时先把SP指针指向单元的数据送出,再把SP指针加1,数据是向低地址单元储存的51单片机堆栈是向上生长型,位于片内随机储存块中,堆栈指针SP为8位51单片机当数据存储器不够时,可扩展外部数据存储器,扩展外部数据存储器最多为64KB 51单片机输入/输出接口:P0口是三态双向口,可作为地址/数据分时复用接口,也可作为通用I/O接口P1口是准双向口,它只能作为通用I/O接口使用P2口是准双向口,用途为:通用I/O接口和高8位地址线P3口作为通用I/O接口,第二功能输出线为高电平,与非门3的输出取决于锁存器状态,作为第二功能使用时,锁存器Q输出端必须高电平,否则V1管导通引脚将被钳位在低电平外部引脚:外接晶体引脚:XTAL1、XTAL2(19、18引脚) 控制线:ALE/PROG(30引脚)、PSEN(29引脚)、RST/Vpd(9引脚)、EA/Vpp(31引脚)51单片机工作方式:复位方式、程序执行方式、单步执行方式(调试)每一个机器周期包含12个时钟周期,每个机器周期ALE信号固定出现两次,分别在(S1P2、S4P2)每出现一次信号,CPU就进行一次取指令的操作51单片机的寻址方式按操作数的类型分为数的寻址和指令寻址,数的寻址根据数的种类有常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位数据寻址(位寻址)。
80C51 单片机的硬件结构 思考题及答案

1 、如何理解51单片机存储空间在物理结构上可分为4个,而逻辑上又可划分为3个答:MCS-51在物理上有四个存储空间:1、片内程序存储器2、片外程序存储器、3、片内数据存储器4、片外数据存储器。
从逻辑上划分有三个存储器地址空间:1、片内外统一编址的64K字节程序存储器(0000H~0FFFFH)2、内部256字节数据存储器地址空间(包括128字节片内RAM和128字节的SFR)3、外部64K字节数据存储器地址空间(0000H~0FFFFH))2 、MCS-51片内RAM的容量8051最大可配置的RAM/ROM容量答:1)MCS-51片内RAM的容量:51子系列:128B52子系列:256B2)其ROM最大可扩展到64KB注:片内数据存储区=片内RAM+SFR,51和52子系列的SFR容量都是128B3 、8051的/PSEN、/RD、/WR的作用答:1)/PSEN(外部程序存储器读选通信号): CPU访问片外ROM时,使/PSEN低电平有效,可实现片外ROM的读操作,其他情况下此引脚为高电平封锁状态。
·2)/RD:外部RAM读信号3)/WR:外部RAM写信号4 、ALE线的作用当8051不和RAM/ROM相连时,ALE线的输出频率是多少答:1)ALE(地址锁存控制信号):访问片外ROM,RAM时,ALE用于控制把P0口输出的低8位地址送入锁存器锁存,实现低位地址和数据的分时传送。
不访问片外存储器时,可做为外部时钟使用。
2)当8051不和RAM/ROM相连时,ALE线的输出频率等于时钟周期的倒数<5 、MCS-51的工作寄存区包含几个通用工作寄存器组每组的地址是什么如何选用开机复位后,CPU使用的是哪组工作寄存器答:1)MCS-51的工作寄存区包含4个通用工作寄存器组2)第0组通用寄存器区地址:00H~07H第1组通用寄存器区地址:08H~0FH第2组通用寄存器区地址:10H~17H第3组通用寄存器区地址:18H~1FH3)选择哪个工作寄存器组是通过软件对程序状态字寄存器PSW的第4、3位进行设置实现的4(6、MCS-51的内部RAM地址空间是如何安排的共有多少个单元可以位寻址位地址又是如何排列的答:1)MCS-51的内部RAM地址的空间安排:00H~1FH 寄存器区20H~2FH 位寻址区30H~7FH 数据缓冲区80H~FFH 专用寄存器区2)位寻址的单元个数:16B*8位/B=128位3)位地址排列方式:|位地址为:00H~7FH字节地址:20H~2FH7 、MCS-51的程序计数器PC是几位寄存器它是否为专用寄存器PC 的内容是什么信息答1)MCS-51的程序计数器PC是16位寄存器2)它不是专用寄存器3)PC的内容为将要执行的指令地址{8 、什么是堆栈堆栈指针SP的作用是什么在程序设计时,有时为什么要对SP重新赋值如果CPU在操作中要使用两组工作寄存器,SP 的初值应设为多少答:1)堆栈是一种数据结构,专门存放向上生长堆栈的栈顶位置。
单片机习题答案

《单片机应用技术》习题答案第一章概述1. 什么是总线?总线主要有哪几部分组成?各部分的作用是什么?总线是连接计算机各部件之间的一组公共的信号线。
一般情况下,可分为系统总线和外总线。
系统总线应包括:地址总线(AB)控制总线(CB)数据总线(DB)地址总线(AB):CPU根据指令的功能需要访问某一存储器单元或外部设备时,其地址信息由地址总线输出,然后经地址译码单元处理。
地址总线为16位时,可寻址范围为216=64K,地址总线的位数决定了所寻址存储器容量或外设数量的范围。
在任一时刻,地址总线上的地址信息是惟一对应某一存储单元或外部设备。
控制总线(CB):由CPU产生的控制信号是通过控制总线向存储器或外部设备发出控制命令的,以使在传送信息时协调一致的工作。
CPU还可以接收由外部设备发来的中断请求信号和状态信号,所以控制总线可以是输入、输出或双向的。
数据总线(DB):CPU是通过数据总线与存储单元或外部设备交换数据信息的,故数据总线应为双向总线。
在CPU进行读操作时,存储单元或外设的数据信息通过数据总线传送给CPU;在CPU进行写操作时,CPU把数据通过数据总线传送给存储单元或外设2.什么是接口电路? CPU与接口电路连接一般应具有哪些信号线?外部设备与接口电路连接一般应具有哪些信号线?CPU通过接口电路与外部输入、输出设备交换信息,一般情况下,外部设备种类、数量较多,而且各种参量(如运行速度、数据格式及物理量)也不尽相同。
CPU为了实现选取目标外部设备并与其交换信息,必须借助接口电路。
一般情况下,接口电路通过地址总线、控制总线和数据总线与CPU连接;通过数据线(D)、控制线(C)和状态线(S)与外部设备连接。
3. 存储器的作用是什么?只读存储器和随机存储器有什么不同?存储器具有记忆功能,用来存放数据和程序。
计算机中的存储器主要有随机存储器(RAM)和只读存储器(ROM)两种。
随机存储器一般用来存放程序运行过程中的中间数据,计算机掉电时数据不再保存。
单片机常见英文缩写(一)

单片机常见英文缩写(一)引言概述:在单片机领域,英文缩写在文档和代码中经常被使用。
本文将介绍单片机常见的英文缩写,让读者更好地理解和应用单片机技术。
本文包括五个大点:处理器相关缩写、外设相关缩写、通信相关缩写、存储器相关缩写以及其他相关缩写。
正文内容:一、处理器相关缩写:1. CPU:中央处理器,负责执行计算机的指令。
2. ALU:算术逻辑单元,执行算术和逻辑运算。
3. PC:程序计数器,存储当前指令的地址。
4. SP:堆栈指针,指向堆栈的当前位置。
5. ISR:中断服务程序,用于处理中断事件。
二、外设相关缩写:1. UART:通用异步收发传输器,实现串行通信。
2. LCD:液晶显示器,用于图形和文本显示。
3. LED:发光二极管,用于指示器和状态显示。
4. ADC:模拟数字转换器,将模拟信号转换为数字信号。
5. PWM:脉宽调制,用于控制电机速度和亮度。
三、通信相关缩写:1. I2C:串行总线,用于连接微控制器和外设。
2. SPI:串行外设接口,用于高速全双工通信。
3. CAN:控制器区域网络,用于实时通信和控制。
4. USB:通用串行总线,用于连接计算机和外设。
5. RF:无线射频,用于无线通信和远程控制。
四、存储器相关缩写:1. RAM:随机存取存储器,用于暂时存储数据。
2. ROM:只读存储器,存储固定的数据和程序。
3. EEPROM:可擦写可编程只读存储器,用于存储非易失性数据。
4. Flash:闪存,用于存储程序和数据。
5. SD:安全数码卡,用于存储和传输数据。
五、其他相关缩写:1. IDE:集成开发环境,提供软件开发工具。
2. ISP:在线编程,通过通信接口对单片机进行编程。
3. BJT:双极性晶体管,用于电子开关和放大器。
4. FPGA:现场可编程门阵列,用于实现数字逻辑电路。
5. MCU:微控制器,集成了处理器、存储器和外设的芯片。
总结:本文介绍了单片机常见的英文缩写,包括处理器、外设、通信、存储器以及其他相关的缩写。
单片机原理和应用[C语言版][周国运]习题答案解析
![单片机原理和应用[C语言版][周国运]习题答案解析](https://img.taocdn.com/s3/m/3d7d3d4401f69e31433294b5.png)
单片机原理及应用(C语言版)思考题与习题答案第1章单片机概述1.什么是单片机?答:将中央处理器(Central Processing Unit,CPU)、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等微型计算机的主要部件集成在一块芯片上,使其具有计算机的基本功能,就叫做单片微型计算机(Single Chip Micro Computer,SCMC),简称单片机。
由于单片机的指令功能是按照工业控制的要求设计,所以单片机又称为微控制器(Micro Controller Unit,MCU)。
2.单片机有哪些特点?答: (1)单片机的存储器ROM和RAM是严格区分的。
ROM称为程序存储器,只存放程序、固定常数及数据表格。
RAM则为数据存储器,用作工作区及存放用户数据。
(2)采用面向控制的指令系统。
(3)单片机的I/O引脚通常是多功能的。
(4)单片机的外部扩展能力强。
(5)单片机体积小,成本低,运用灵活,易于产品化。
(6)面向控制,能有针对性地解决从简单到复杂的各类控制任务,因而能获得最佳的性能价格比。
(7)抗干扰能力强,适用温度范围宽。
(8)可以方便地实现多机和分布式控制,使整个控制系统的效率和可靠性大为提高。
3.单片机的应用有哪些?答: (1)工业控制。
单片机可以构成各种工业控制系统、数据采集系统等。
如数控机床、自动生产线控制、电机控制、测控系统等。
(2)仪器仪表。
如智能仪表、医疗器械、数字示波器等。
(3)计算机外部设备与智能接口。
如图形终端机、传真机、复印机、打印机、绘图仪、磁盘/磁带机、智能终端机等。
(4)商用产品。
如自动售货机、电子收款机、电子秤等。
(5)家用电器。
如微波炉、电视机、空调、洗衣机、录像机、音响设备等。
(6)消费类电子产品。
(7)通讯设备和网络设备。
(8)儿童智能玩具。
(9)汽车、建筑机械、飞机等大型机械设备。
(10)智能楼宇设备。
(11)交通控制设备。
4.常见的单片机有哪些类型?答: 1.AVR单片机;2.Motorola单片机;3.MicroChip单片机;4.Scenix单片机;5.EPSON单片机;7.GMS90单片机;8.华邦单片机9.Zilog单片机;10.NS单片机;11.AX1001单片机第2章 MCS-51单片机结构与原理1.MCS-51单片机内部包含哪些主要逻辑功能部件?答:(1)1个8位的微处理器CPU。
单片机期末考试题及答案

单片机期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个不是单片机的特点?A. 体积小B. 功能强C. 价格昂贵D. 功耗低答案:C2. 8051单片机的内部存储器中,哪个是程序存储器?A. RAMB. ROMC. EPROMD. EEPROM答案:B3. 下列哪个不是单片机的输入/输出设备?A. 键盘B. 显示器C. 打印机D. 硬盘答案:D4. 单片机的中断系统包括哪几个部分?A. 中断源B. 中断控制器C. 中断服务程序D. 所有以上答案:D5. 8051单片机的定时器/计数器有几个?A. 1个B. 2个C. 3个D. 4个答案:B6. 下列哪个是单片机的编程语言?A. C语言B. HTMLC. SQLD. XML答案:A7. 单片机的串行通信方式有哪些?A. UARTB. SPIC. I2CD. 所有以上答案:D8. 单片机的看门狗定时器的作用是什么?A. 监控程序运行B. 计时C. 存储数据D. 控制电源答案:A9. 单片机的ADC(模拟/数字转换器)的作用是什么?A. 将模拟信号转换为数字信号B. 将数字信号转换为模拟信号C. 存储数据D. 执行程序答案:A10. 下列哪个不是单片机的外设接口?A. UARTB. SPIC. I2CD. USB答案:D二、填空题(每空2分,共20分)1. 单片机的CPU由_________、_________和_________组成。
答案:算术逻辑单元(ALU)、控制单元(CU)和寄存器堆2. 8051单片机的外部数据存储器地址范围是_________。
答案:外部数据存储器地址范围是80H-FFH3. 中断服务程序的入口地址存放在_________。
答案:中断向量表4. 单片机的I/O口可以通过_________方式进行扩展。
答案:总线扩展5. 单片机的看门狗定时器在_________时会重置。
答案:程序正常运行6. 单片机的ADC转换过程包括_________和_________两个阶段。
C51单片机堆栈深入剖析

51单片机堆栈深入剖析用C语言进行MCS51系列单片机程序设计是单片机开发和应用的必然趋势。
Keil公司的C51编译器支持经典8051和8051派生产品的版本,通称为Cx51。
应该说,Cx51是C语言在MCS51单片机上的扩展,既有C语言的共性,又有它自己的特点。
本文介绍的是Cx51程序设计时堆栈的计算方法。
1.堆栈的溢出问题。
MCS51系列单片机将堆栈设置在片内RAM中,由于片内RAM资源有限,堆栈区的范围也是有限的。
堆栈区留得太大,会减少其他数据的存放空间,留得太少则很容易溢出。
所谓堆栈溢出,是指在堆栈区已经满了的时候还要进行新的压栈操作,这时只好将压栈的内容存放到非堆栈区的特殊功能寄存器(SFR)中或者堆栈外的数据区中。
特殊功能寄存器的内容影响系统的状态,数据区的内容又很容易被程序修改,这样一来,之后进行出栈操作(如子程序返回)时内容已变样,程序也就乱套了。
因此,堆栈区必须留够,宁可大一些。
要在Cx51程序设计中防止堆栈的溢出,要解决两个问题:第一,精确计算系统分配给用户的堆栈大小,假设是M;第二,精确计算用户需要堆栈的大小,假设是N。
要求M≥N,下面分别分析这两个问题。
2.计算系统分配给用户的堆栈大小Cx51程序设计中,因为动态局部变量是长驻内存中的,实际上相当于局部静态变量,即使在函数调用结束时也不释放空间(这一点不同于标准C语言)。
Cx51编译器按照用户的设置,将所有的变量存放在片内和片外的RAM中。
片内变量分配好空间后,将剩下的空间全部作为堆栈空间,这个空间是最大可能的堆栈空间。
当然,因为Cx51是一种可以访问寄存器的C语言(特殊功能寄存器),因此可在程序中访问SP,将堆栈空间设置得小一点。
不过,一般没有人这么做。
本文只是讨论放在片内RAM的变量。
我们把变量分为两种情况:①用作函数的参数和函数返回值的局部变量。
这种变量尽量在寄存器组中存放。
为了讨论方便,假设统一用寄存器组0,具体的地址为0x00~0x07。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机堆栈指针的理解
堆栈指针sp在片内RAM128B中开辟栈区,并随时跟踪栈顶地址。
它是按先进后出的原则存取数据。
开机复位后,单片机栈底地址为07H。
主要用来保存临时数据,局部变量和中断/自程序的返回地址。
堆栈指针总是指向栈顶元素。
所以数据入栈的时候,堆栈指针先加1,再压栈。
向上增长方式。
和计算机的方式一样。
出栈的时候先弹出数据,堆栈指针再减1。
如果堆栈的实现是往上长的(就是说往顶的方向长,其实质是你的栈底是定死的不能动,入栈的东西只能不断往上叠,这就像你在书桌上放书一样,桌底是定死的,所以你的书只能一本一本地往上堆,往上长),计算机内部的堆栈的实现采取的就是这种模式,所以就得像你说的那样,先修改指针,然后插入数据,出栈时刚好相反,因为你堆栈指针指向的总是栈顶元素,栈底不能动,所以数据入栈前要先修改指针使它指向新的空余空间然后再把数据存进去,出栈的时候自然相反。
然而,如果堆栈的实现是往下长的(就是说你每压一个元素入栈,栈底就自动下移一个元素的位置,其实质就是这种堆栈模型是一个无底洞型),这个时候,你的栈顶就变成了定死的,你就可以先压入元素,然后再修改指针。
因为你的栈底是无限的,你压入一个元素,新的元素就取代先前的栈顶元素占。