内容发布更新时间 : 2024/12/23 1:51:39星期一 下面是文章的全部内容请认真阅读。
1.MCS-51单片机内部由哪些部分组成?
答:MCS-51单片机主要包括的内部结构有8位的CPU、4KB的ROM存储器、128B的RAM存储器、两个定时器/计数器、中断系统、4个并行I/O接口、1个串行接口和片内的时钟振荡器。
2.MCS-51单片机存储器的组织结构是怎样的?
答:MCS-51单片机的存储器组织采用哈佛结构,即分为相互独立的程序存储器和数据存储器两大空间结构。程序存储器空间由内部ROM存储器和外部ROM存储器组成。数据存储器也分为内部RAM存储器和外部RAM存储器。内部RAM存储器又可划分为工作寄存器区、位寻址区和一般数据RAM区,MCS-51单片机的特殊功能寄存器也实现在内部RAM区。
3.8051单片机内部的特殊功能寄存器有哪些?
答:累加器 B寄存器 程序状态字 堆栈指针 数据寄存器指针 P1口 P0口 P2口 P3口 中断优先级控制器 中断允许控制器 定时器方式选择 定时器控制器 定时器2控制器 定时器0高8位 定时器 串行控制器 串行数据缓冲器 电源控制器
4.8051的内部数据存储器分为哪几个部分?
答:特殊功能寄存器区,位寻址区,用户RAM区,工作寄存器区。
5.MCS-51单片机的工作寄存器有多少个?共分为多少个区域?如何选择工作寄存器区?
答:地址范围在00H~1FH的区域被称为工作寄存器区,共有32个单元,这32个单元又分为4个区域,称为0区、1区、2区和3区,每个区域有8个单元,这8个单元拥有自己的寄存器名称,分别为R0、R1、?、R7。MCS-51单片机在工作过程中只能选定一个区域作为当前活动的工作寄存器区,单片机复位后系统设置0区为当前默认的工作寄存器区,如果用户需要应用其他工作寄存器区,必须通过软件改变寄存器区选择位的值来切换当前工作寄存器区,工作寄存器区选择位是特殊功能寄存器PSW中的RS1和RS0两位。其选择规则如下表所示: RS1 0 0 1 1 RS0 0 1 0 1 工作寄存器区 0 1 2 3 R0~R7地址 00H~07H 08H~0FH 10H~17H 18H~1FH
6.8051有哪些特殊功能寄存器?它们的功能是什么?
答:8051的特殊功能寄存器主要有 (1)累加器A(Accumulator)
功能比较多,具有重要的作用。MCS-51单片机指令系统中的许多操作都需要采用累加器,如算术运算、逻辑运算和左右移位等操作往往需要将处理前的数据存放在累加器中,并在操作完成后将结果存放在累加器中。
(2)通用寄存器B(General Purpose Register)
通用寄存器B是一个8位寄存器,在进行乘除运算时,必须使用B寄存器。 (3)程序状态字PSW(Program Status Word)
程序状态字寄存器存放着程序运行过程中的各种状态信息,它是一个8位寄存器,其中每一位的定义如表。
程序状态字寄存器中的位定义 PSW.7 CY PSW.6 AC PSW.5 F0 PSW.4 RS1 PSW.3 RS0 PSW.2 OV PSW.1 - PSW.0 P 表中左起第一位为最高有效位(MSB) PSW.7,右边最后一位为最低有效位(LSB)PSW.0。
? 进位标志位(CY) ? 辅助进位标志(AC) ? 用户标志位(F0)
? 寄存器区选择位(RS1和RS0) ? 溢出标志位(OV) ? 奇偶标志位(P)
? PSW.1:系统没有定义。
(4)堆栈指针SP(Stack Pointer)
堆栈指针SP是一个指示当前堆栈操作位置的特殊功能寄存器,堆栈指针总是指向栈顶。 (5)数据指针(Data Pointer,DPTR)
数据指针是MCS-51中唯一一个用户可以存取访问的16位寄存器,MCS-51单片机指令系统中的唯一一条16位数据传送指令(MOV DPTR, #data)可以对DPTR写入。
另外还有用于控制内部各个功能单元的特殊功能寄存器。
7.什么是堆栈?堆栈的操作原则是什么?
答:堆栈是一种数据结构,按“后进先出”(Last In First Out,LIFO)的规则对数据进行写入与读出,数据写入堆栈称为入栈(PUSH),数据从堆栈中读出称为出栈(POP)。
8.SP是什么寄存器?它有什么作用?
答:堆栈指针SP是一个指示当前堆栈操作位置的特殊功能寄存器,堆栈指针总是指向栈顶。
MCS-51单片机的堆栈开辟在内部RAM区,是向上生长型的堆栈。入栈(PUSH)时,SP首先自动增1,然后将数据压入SP指向的单元;出栈(POP)时,先将数据弹出到内部RAM单元,然后SP自动减1。除了采用指令进行入栈和出栈操作外,在调用子程序和处理中断时,系统都会自动进行堆栈操作。
复位后,MCS-51单片机的堆栈指针SP被初始化为07H,压入堆栈的第一个数据在08H单元,即堆栈区被初始化在以08H开始的区域,而这一区域正是工作寄存器区,由于工作寄存器在程序设计时应用频繁便利,所以一般不希望堆栈占据这一区域,而往往采用指令改变SP的初值,使堆栈区设置到30H~7FH之间的适当区域,并根据实际设计中可能的堆栈深度预留足够的单元。
9.程序计数器PC的功能是什么?MCS-51单片机复位后,PC的值是多少?这意味着复位后MCS-51单片机从哪里开始执行程序?
答:程序计数器PC用来存放下一条要执行的指令的地址,即程序计数器的内容决定了CPU将要执行哪一条指令。
程序计数器PC不能通过指令直接访问,它在复位以后的初值为0000H,这决定了MCS-51单片机必须从0000H地址开始执行。
10.MCS-51单片机如何进入复位方式?复位信号有哪些特点?复位后PC、ACC、PSW、SP和DPTR等寄存器的初值是什么?如何设计8051单片机应用系统的复位电路?
答:MCS-51单片机的RST引脚上出现持续24个振荡周期的高电平信号时,单片机进入复位。复位后,MCS-51单片机的PC初值为0000H, PSW的初值为00H,堆栈指针SP初值为07H,DPTR的初值为0000H。其复位电路可以参考图2-8设计。
11.8051有哪几种工作方式?
答:MCS-51单片机的工作方式有复位方式、程序执行方式、节电方式、EPROM的编程与校验方式。
12.8051的XTAL1和XTAL2引脚的作用是什么?如何设计8051单片机应用系统的时钟电路?
答:MCS-51单片机内部集成了一个用于构成振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是这个放大器的输入端和输出端。
单片机系统时钟电路的设计有内部时钟方式和外部时钟方式两种形式,这两种电路都向单片机提供最基本的振荡脉冲信号。
内部时钟源电路如图1所示。XTAL1和XTAL2引脚上外接晶体振荡器或陶瓷谐振器及微调电容,片内的反向放大器作为反馈元件共同构成一个自激振荡器,其产生的脉冲直接送入内部时钟电路。
Q2Q1到内部时钟Q3VSS8051XTAL1XTAL2石英晶体或陶瓷谐振器C1C2
图1
外部时钟方式将外部时钟脉冲信号直接通过引脚XTAL1或XTAL2送入单片机内部。使用外部时钟信号时,HMOS单片机与CHMOS单片机的电路设计是不同的。如图2(a)所示为HMOS单片机外部时钟源电路连接图,如图2(b)所示为CHMOS单片机外部时钟源电路连接图。振荡脉冲信号被送入单片机的内部时钟发生器,形成内部时钟信号。
8051外部时钟XTAL2XTAL1VSS8051浮空外部时钟XTAL2XTAL1VSS
图2 MCS-51外部时钟的连接方式
(a)HMOS单片机外部时钟源电路连接图 (b)CHMOS单片机外部时钟源电路连接图
13.什么是时钟周期、机器周期和指令周期?MCS-51单片机的一个机器周期包含多少个时钟周期?
答:时钟周期:单片机的振荡电路产生的振荡信号的周期为时钟周期,频率为振荡频率,
表示为fosc,它是单片机系统的最小时间量度单位。
机器周期:MCS-51单片机的一个机器周期由12个振荡周期组成。
指令周期:指令周期定义为执行一条指令所需的时间。MCS-51单片机的指令周期
用机器周期的个数来表示。
14.对照MCS-51单片机的外部ROM访问时序图,简述单片机对外部ROM存储器的读操作过程。P0口和P2口用于传送什么信号?
PSEN信号有什么作用?
答:P45图2-17(a)所示为非MOVX类指令的取指执行时序。MCS-51单片机的外部程序存储器和外部数据存储器的地址都是16位的,由P0口和P2口送出16位的地址。在ALE信号为高期间,MCS-51的P2口送出PCH的内容,即程序存储器高8位的地址信号,P0口送出PCL的内容,即程序存储器低8位的地址信号,这时P0口作为地址总线。ALE下降沿过后,PSEN有效,P0口转而作为数据总线使用。PSEN的低电平选通PC指向的程序存储器单元,其所存内容(指令代码)输出到P0口,送入单片机内部执行。
一个机器周期S1S2S3S4S5S6S1S2一个机器周期S3S4S5S6ALEPSENRDP2PCH OUTP0INSTINPCH OUTINSTINPCH OUTINSTINPCH OUTINSTINPCH OUTINSTINPCH OUTPCL OUT 有效PCL OUT 有效PCL OUT 有效PCL OUT 有效(a)非 MOVX指令第一周期S1S2S3S4S5S6S1S2第二周期S3S4S5S6ALEPSENRDP2PCH OUTPCH OUTPCLOUTINSTINADDROUTDPH OUT 或 P2 OUTDATAINPCLOUTPCH OUTINSTINPCH OUTPCLOUTP0INSTINPCL OUT 有效ADDR OUT 有效PCL OUT 有效(b)MOVX指令 图2-17 非MOVX/MOVX类指令的取指执行时序