单片机的堆栈

合集下载

单片机试卷

单片机试卷

《单片机原理及应用》试卷6及参考答案(本试题分笔试题和操作题两部分。

共100分,考试时间120分钟。

)第一部分笔试题(本部分共有4大题,总分60分,考试时间60分钟,闭卷)一、填空题(每空1分,共20分)1、8031单片机一般使用的时钟晶振频是()、()。

2、假定(SP)=40H,(39H)=30H,(40H)=60H。

执行下列指令:POP DPH ,POP DPL后,DPTR的内容为(),SP的内容是()。

3、单片机的堆栈栈顶由()来指示,复位时起位置在()单元。

4、当P1口做输入口输入数据时,必须先向该端口的锁存器写入(),否则输入数据可能出错。

5、单片机内部数据传送指令()用于单片机内部RAM单元及寄存器之间,单片机与外部数据传送指令()用于单片机内部与外部RAM或I/O接口之间,()指令用于单片机内部与外部ROM之间的查表6、单片机内外中断源按优先级别分为高级中断和低级中断,级别的高低是由()寄存器的置位状态决定的。

同一级别中断源的优先顺序是由()决定的。

7、LED数码显示按显示过程分为()显示和()显示2种。

前者,对每位显示来说是连续显示的,可通过单片机串行口实现;当多位显示时需较多外部驱动芯片,功耗较大。

后者,对每位显示来说是断续显示需占用单片机的()接口资源。

8、在调用子程序时,为保证程序调用和返回不致混乱,常采用保护现场的措施。

通常在进入子程序后要用()指令保护现场DPH、DPL、ACC等。

在退出子程序之前要用POP指令依次恢复现场,用()指令返回。

9、用仿真开发系统调试程序时,汇编成功只说明源程序的()没有问题,而程序()还要靠运行调试纠错才能成功。

10、单片机串行通信时,若要发送数据,就必须将要发送的数据送至()单元,若要接收数据也要到该单元取数。

二、判断题(每题1分,共10分)1、PC是()。

A、一根硬件信号B、一个可由用户直接读写的RAM单元C、一个不可寻址的特殊功能寄存器 D.一个能自动加1计数的ROM2、51单片机执行MOVC指令时,相关的信号状态是()。

51单片机基础知识复习练习题(含答案)

51单片机基础知识复习练习题(含答案)

51单片机基础知识复习题(含答案)1.8051单片机的片内有(一)个16位的特殊功能寄存器。

2.MCS-51单片机的堆栈区应建立在(片内数据存储区底128字节单元)。

3.MCS-51单片机定时器工作方式1是指的(D)工作方式。

A.8位 3B.8位自动重装2C.13位0D.16位14.当需要从MCS-51单片机程序存储器取数据时,采用的指令为(B)。

A.MOV A, @R1)片内B.MOVC A, @A + DPTR或MOVC A,@A+PC (C.MOVX A, @ R0D.MOVX A, @ DPTR)片外5.8751单片机程序存储器的容量最大可扩展为(64K)。

B.64K6.如果某MCS-51单片机系统的定时/计数器0的中断服务程序放在程序存储区的3000H地址开始的一段空间内,此时跳转到定时/计数器0的中断服务程序的指令LJMP 3000H应放在( 000BH)开始的中断地址区A、0003H(外部中断0服务入口)B、0013H(外部中断1服务入口)C、0023H(串行口中断服务程序入口)D、000BH(定时/计数器0中断服务程序的开始地址区)E、001BH为定时/计数器1中断服务开始地址区F、0000H (系统复位后的入口)7.MCS-51系列单片机外扩存储器芯片时,4个I/O口中用作数据总线的是:(B)B、P0口(SDA /SCL 连接到总线的器件输出级必须是漏极开路或者是集电极开路,才能执行线与的功能)8.AJMP跳转空间最大可达到(2字节)A、2KB9.8051单片机中,唯一一个能出现在符号指令的16位寄存器是(B)A、P S WB、D P T R C 、P C D、B10.当需要从MCS-51单片机程序存储器取数据时,采用的指令为(B )A、MOV A,@R1片内B、MOVC A,@A+DPTR/@A+PCC、MOVX A, @R0片外D、MOVX A,@ DPTR11.8051单片机内有2个(16 )位的定时器。

单片机基础超全填空,选择题库(含答案)

单片机基础超全填空,选择题库(含答案)

第二章习题参考答案一、填空题:1、当MCS-51引脚ALE有效时,表示从P0口稳定地送出了低8位地址。

2、MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。

3、当使用8751且EA=1,程序存储器地址小于1000H 时,访问的是片内ROM。

4、MCS-51系统中,当PSEN信号有效时,表示CPU要从外部程序存储器读取信息。

5、MCS-51有4组工作寄存器,它们的地址范围是 00H~1FH 。

6、MCS-51片内20H~2FH范围内的数据存储器,既可以字节寻址又可以位寻址。

7、PSW中RS1 RS0=10时,R2的地址为 12H 。

8、PSW中RS1 RS0=11时,R2的地址为 1AH 。

9、单片机系统复位后,(PSW)=00H,因此片内RAM寄存区的当前寄存器是第 0 组,8个寄存器的单元地址为 00H ~ 07H 。

10、PC复位后为 0000H 。

11、一个机器周期= 12 个振荡周期= 6 个时钟周期。

12、PC的内容为将要执行的的指令地址。

13、在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为 2us 。

14、内部RAM中,位地址为30H的位,该位所在字节的字节地址为 26H 。

15、若A中的内容为63H,那么,P标志位的值为 0 。

16、8051单片机复位后,R4所对应的存储单元的地址为 04H ,因上电时PSW=00H 。

这时当前的工作寄存器区是第 0 工作寄存器区。

17、使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。

18、片内RAM低128个单元划分为哪3个主要部分:工作寄存器区、位寻址区和用户RAM区。

19、通过堆栈操作实现子程序调用,首先就要把 PC 的内容入栈,以进行断点保护。

调用返回时,再进行出栈保护,把保护的断点送回到 PC 。

20、MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS -51的PC是16位的,因此其寻址的范围为 64 KB。

单片机简答题答案

单片机简答题答案

简答题1.什么是指令系统?指令系统:计算机所能执行的全部指令的集合,它描述了计算机内全部的控制信息和“逻辑判断”能力。

不同计算机的指令系统包含的指令种类和数目也不同。

一般均包含算术运算型、逻辑运算型、数据传送型、判定和控制型、输入和输出型等指令。

2.什么是指令指令是指示计算机执行某种操作的命令,它由一串二进制数码组成。

3.什么是汇编语言?答:汇编:汇编语言源程序在交付计算机执行之前,需要先翻译成目标程序,这个翻译过程叫汇编。

4.什么是寻址方式答:寻址方式:寻址方式就是寻找指令中操作数或操作数所在地址的方式。

也就是如何找到存放操作数的地址,把操作数提取出来的方法。

5.什么是堆栈答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"后进先出"的结构方式处理的。

实质上,堆栈就是一个按照"后进先出"原则组织的一段内存区域。

6.什么是指令周期指令周期:指执行一条指令所占用的全部时间。

通常一个指令周期含1~4个机器周期。

7.串行数据传送的主要优点和用途是什么?答:串行数据传送的主要优点是硬件接口简单,接口端口少(2个)。

主要用于多个单片机系统之间的数据通信。

8.MC S一51指令集中有无“程序结束”指令?怎样实现“程序结束”功能?答:没有这样的指令。

但实现“程序结束”至少可以借助4种办法:①用原地踏步指令SJMP $ 死循环。

②在最后一条指令后面设断点,用断点执行方式运行程序。

③用单步方式执行程序。

④在末条指令之后附加一条LJMP监控显示器程序首地址或LJMP 0000H,返回监控状态。

9.中断服务子程序与普通子程序有哪些异同之处?2.中断服子程序与普通子程序的执行和返回有什么异同之处?答:中断服务子程序与普通子程序都是一种能完成某一特定任务的程序段。

其资源要为所有调用程序共享。

因此,子程序在结构上应具有独立性和通用性。

子程序的第一条指令的地址称为子程序的入口地址。

单片机原理及应用习题答案 (第三版)

单片机原理及应用习题答案  (第三版)

第一章习题参考答案1-1:何谓单片机?与通用微机相比,两者在结构上有何异同?答:将构成计算机的基本单元电路如微处理器(CPU)、存储器、I/O接口电路和相应实时控制器件等电路集成在一块芯片上,称其为单片微型计算机,简称单片机。

单片机与通用微机相比在结构上的异同:(1)两者都有CPU,但通用微机的CPU主要面向数据处理,其发展主要围绕数据处理功能、计算速度和精度的进一步提高。

例如,现今微机的CPU都支持浮点运算,采用流水线作业,并行处理、多级高速缓冲(Cache)技术等。

CPU的主频达到数百兆赫兹(MHz),字长普遍达到32位。

单片机主要面向控制,控制中的数据类型及数据处理相对简单,所以单片机的数据处理功能比通用微机相对要弱一些,计算速度和精度也相对要低一些。

例如,现在的单片机产品的CPU大多不支持浮点运算,CPU还采用串行工作方式,其振荡频率大多在百兆赫兹范围内;在一些简单应用系统中采用4位字长的CPU,在中、小规模应用场合广泛采用8位字长单片机,在一些复杂的中、大规模的应用系统中才采用16位字长单片机,32位单片机产品目前应用得还不多。

(2) 两者都有存储器,但通用微机中存储器组织结构主要针对增大存储容量和CPU对数据的存取速度。

现今微机的内存容量达到了数百兆字节(MB),存储体系采用多体、并读技术和段、页等多种管理模式。

单片机中存储器的组织结构比较简单,存储器芯片直接挂接在单片机的总线上,CPU对存储器的读写按直接物理地址来寻址存储器单元,存储器的寻址空间一般都为64 KB。

(3) 两者都有I/O接口,但通用微机中I/O接口主要考虑标准外设(如CRT、标准键盘、鼠标、打印机、硬盘、光盘等)。

用户通过标准总线连接外设,能达到即插即用。

单片机应用系统的外设都是非标准的,且千差万别,种类很多。

单片机的I/O接口实际上是向用户提供的与外设连接的物理界面。

用户对外设的连接要设计具体的接口电路,需有熟练的接口电路设计技术。

单片机 第二章 习题参考答案

单片机 第二章 习题参考答案

一、填空题:1、当MCS-51引脚ALE有效时,表示从P0口稳定地送出了低8位地址。

2、MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。

3、当使用8751且EA=1,程序存储器地址小于 1000H 时,访问的是片内ROM。

4、MCS-51系统中,当PSEN信号有效时,表示CPU要从外部程序存储器读取信息。

5、MCS-51有4组工作寄存器,它们的地址范围是 00H~1FH 。

6、MCS-51片内20H~2FH范围内的数据存储器,既可以字节寻址又可以位寻址。

7、PSW中RS1 RS0=10时,R2的地址为 12H 。

8、PSW中RS1 RS0=11时,R2的地址为 1AH 。

9、单片机系统复位后,(PSW)=00H,因此片内RAM寄存区的当前寄存器是第 0 组,8个寄存器的单元地址为 00H ~ 07H 。

10、PC复位后为 0000H 。

11、一个机器周期= 12 个振荡周期= 6 个时钟周期。

12、PC的内容为将要执行的的指令地址。

13、在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为 2us 。

14、内部RAM中,位地址为30H的位,该位所在字节的字节地址为 26H 。

15、若A中的内容为63H,那么,P标志位的值为 0 。

16、8051单片机复位后,R4所对应的存储单元的地址为 04H ,因上电时PSW=00H 。

这时当前的工作寄存器区是第 0 工作寄存器区。

17、使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。

18、片内RAM低128个单元划分为哪3个主要部分:工作寄存器区、位寻址区和用户RAM区。

19、通过堆栈操作实现子程序调用,首先就要把 PC 的内容入栈,以进行断点保护。

调用返回时,再进行出栈保护,把保护的断点送回到 PC 。

20、MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为 64 KB。

《单片机应用技术》填空题题库x

《单片机应用技术》填空题题库x

《单片机应用技术》填空题题库x《单片机应用技术》习题库答案一、填空题第一、二章1.计算机中最常用的字符信息编码是(ASCII码)。

2.MCS-51系列单片机为( 8 )位单片机。

3.计算机三总线分别为:(数据)总线;(地址)总线;(控制)总线。

4.单片机与普通计算机的不同之处在于其将CPU 、存储器和I/O 三部分集成于一块芯片上。

5.能在紫外线照射下擦除和重写的存储器是(EPROM )型存储器,能够直接在线路中快速写入和读出的存储器是(EEPROM)型存储器。

6.8031、8051的主要区别是8051有 4 k内部ROM。

7.MCS-51单片机片内共有128 字节单元的RAM。

8.8031内部有RAM( 128 )字节、8751内部有ROM( 4K )。

9.MCS-51系列单片机8031、8051、89S52在内部存储器的设置上主要区别是:8031内部(无)程序存储器,8051内部( 4K )程序存储器,89C52内部( 8K )程序存储器。

10.8031构成的单片机应用系统必须扩展程序存储器。

11.M CS-51单片机片内RAM区中有128 个可寻址位。

12.8051单片机片内RAM区80H-0FFH属于特殊功能寄存器(SFR)区。

13.M CS-51单片机存储器结构的主要特点是程序存储器与数据存储器的寻址空间是分开的。

14.M CS-51单片机的存储器配置在物理结构上有4 个存储空间。

15.M CS-51单片机的存储器在逻辑上分为 3 个存储器地址空间16.当MCS-51单片机的EA引脚保持低电平时,CPU只访问片外的程序存贮器17.当EA接地时,MCS-51单片机将从外部程序存储器的地址0000H开始执行程序。

18.在只使用外部程序存储器时,51系列单片机的EA 管脚必须接地。

第1页共9页19.在只使用内部程序存储器时,51系列单片机的EA 管脚必须接高电平。

20.当使用8031单片机时,需要扩展外部程序存储器,此时/EA 应接低电平。

《单片机原理》复习题及答案

《单片机原理》复习题及答案

单片机原理复习题一、判断题()1.(–86)原=11010110,(–86)反=10101001,(–86)补=10101010。

()2.十进制数89化成二进制数为10001001。

()3.0的补码是0。

()4.-128的补码是10000000。

()5.11111111是-1的补码。

()6.-2的补码可以记为FEH。

()7.MCS-51单片机是16位单片机。

()8.8051的累加器ACC是一个8位的寄存器,简称为A,用来存一个操作数或中间结果。

()9.8051的程序状态字寄存器PSW是一个8位的专用寄存器,用于存程序运行中的各种状态信息。

()10.MCS-51的数据存贮器在物理上和逻辑上都分为两个地址空间:一个是片内的128字节的RAM 和SFR,另一个是片外最大可扩充到64K字节的RAM。

()11.单片机的复位有上电自动复位和按钮手动复位两种,当单片机运行出错或进入死循环时,可按复位键重新启动。

()12. 访问128个位地址用位寻址方式,访问低128字节单元用直接或间接寻址方式。

()13. 堆栈指针SP的内容可指向片内00H~7FH的任何RAM单元,系统复位后,SP初始化为00H。

()14. 8051复位后,其PC指针初始化为0000H,使单片机从该地址单元开始执行程序。

()15.8051指令:MOVX A,@DPTR ;表示将DPTR指示的地址单元中的内容传送至A中。

()16.MCS-51指令中,MOVX为片外RAM传送指令。

()17.MCS-51指令中,MOVC为ROM查表指令。

()18.将37H单元的内容传送至A的指令是:MOV A,#37H。

()19.MCS-51指令中,16位立即数传送指令是:MOV DPTR,#data16。

()20.指令MUL AB执行前(A)=F0H,(B)=05H,执行后(A)=F5H,(B)=00H。

()21.已知:DPTR=11FFH 执行INC DPTR后,结果:DPTR=1200H。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

堆栈是一种数据结构。

一直以为堆栈是一个寄存器,惭愧!教科书定义:所谓堆栈,就是只允许在其一端进行数据插入和数据删除的线性表。

51单片机的单片机的堆栈是在内部RAM中开辟的。

这句话表明了堆栈的位置。

那么堆栈到底有什么作用?
堆栈主要是为子程序调用和中断操作而设立的,因此对应有两项功能:保护断点和保护现场。

单片机的程序归根结底是个死循环,反复在执行Main函数(主程序),你可以只写一个函数Main,那么你这个函数随着功能的增多而变得异常大,而且非常不具备可读,这个时候就需要子函数(子程序)了。

主函数在调用完子函数后会返回到主函数中,这样就可以调用其它函数并且继续这个死循环。

在计算机去执行子函数或者中断服务函数,如何确保程序能够正确地返回到主函数中并且继续正确执行后面的内容?因为在执行子函数或者中断服务函数时,很有可能会破坏寄存器单元的内容,但这些寄存器单元在子函数必须要用到?这个问题看起来比较难解决了。

这个时候就要用到断点保护和现场保护了。

保护断点:在调用子程序和堆栈时,将返回地址(执行完子程序或者中断后要执行的下一个指令的的地址(PC 寄存器值)) 送入堆栈,程序返回时,这个值自动弹回PC。

这种方式是自动使用堆栈的,程序中一般无需理会。

在这个过程中,地址送入堆栈时,堆栈指针SP+2,因为51的寻址范围是64KB,再查看RAM中堆栈单元就可以发现这个时候已经变成了PC的值,在返回的时候SP-2,但是堆栈中的内容在下一次堆栈操作之前不会发生变化。

来看下面的仿真图:
程序初始化将SP设置为0x07,这个时候RAM中全部被清零。

单步运行。

这个时候SP的值已经变为0x30,但是内容依旧没有改变。

运行到断点。

运行到断点PC的值没什么变化,在执行完Lcall之后,发现RAM中30单元起了变化,0013,PC也+2,而0013就是sjmp st1的地址。

以上是用Protues仿真的结果。

在用KEIL做软仿的时候发现SP会变化,但是对应的内容却没有变化,这个是不是KEIL的一个BUG呢?
保护断点是比较简单的,编程者一般不用理会。

现场保护就和编程扯上关系了。

现场保护:在转中断服务程序或者子程序之前,要把单片机中个有关单元的内容保存起来,这就是所谓的现场保护。

有保护当然就有恢复。

现场恢复:返回主程序之后恢复寄存器的内容到调用之前的状态。

这里就首先要牵涉一个using的用法了。

写过中断服务函数的人都知道,中断服务函数一般都是这种形式的
教单片机的老师当时说你搞不清using 的含义,写中断服务程序不用用它就万事大吉了。

这个说法不能说是没有道理的。

很长一段时间我写中断服务程序也是不管这个,直到有一次中断RAM溢出,才感到这个using用好了还是有点用处的。

“8051是一个基于累加器的单片机,具有8个通用寄存器,每个寄存器都是一个单字节的寄存器。

这8个寄存器通用寄存器可以认为是一组寄存器或者一个通用寄存器组。

8051提供四组可用的寄存器组。

当使用中断时,多组寄存器切换将带来许多方便。

典型8051 C程序不需要选择或者切换寄存器组,默认使用寄存器组0。

寄存器组1·2·3在中断服务程序中使用。

”引自北航版《单片机的C语言应用程序设计》
来看具体的程序。

使用using 1
从上面的代码可以看出,中断对目标代码的影响如下:
1.当调用中断时,SFR中的ACC,B,DPH,DPL,和PSW入栈;
2.如果不使用寄存器组切换,就是不用using,默认的寄存器组(寄存器组0)需要入栈;
3.退出函数前,所有寄存器内容出栈;
4.函数由8051的指令RETI终止。

相关文档
最新文档