单片机C51期末复习答案

单片机C51期末复习答案:仅做参考
题目来源
本答案来源个人笔记,无论对错,如果阁下发现有错,可以评论区留言。

1、当EA=1时,可扩展的外部存储器大小 ?
答案解析:60KB
当EA=1时,表示首先访问内部程序存储器(rom),再访问外部程序存储器又因为51单片机中可寻址程序存储器最大为64k,所以最多可扩展的rom大小=最大可扩展内存(64kb)- 内部rom(4kb) = 60KB。

2、CPU中反应程序运行状态和结果的特征寄存器 ?
答案解析:PSW(程序状态字寄存器)。

3、存储器的芯片地址线为12根,其容量为 ?
答案解析:4KB
ram芯片的存储容量 =地址线条数×数据线的条数bit = 字数(存储单元个数)×字长;
地址线12根,表示能指示2^12个内存单元, 2^12 = (2^2) * (2^10) = 4KB 。

4、外部中断初始化内容 ?
答案解析:
(1). 设置外部中断的触发方式,下降沿或低电平;
(2). 开外部中断
(3). 开总中断

5、P1口作输入时,必须完成那些步骤 ?
答案解析:输入端要先置1
不置1,读的是引脚驱动缓冲器中的内容,置1的目的,是把引脚和缓冲寄存器电气相联,使缓冲器能反映引脚电平变化。

6、下载到单片机的程序扩展名 ?
答案解析:.hex (16进制文件,烧入单片机的必须品)。

7、子程序和中断返回时的断点在哪里 ?
答案解析:当前偏移地址的下一地址,即下一条指令的首地址
中断服务子程序入口地址相对某一中断是固定的,调用子程序的偏移地址是随机的,基本过程差不多,返回时,中断服务子程序用的是RETI ,调用子程序是RET;
调用中断服务子程序和调用子程序都会把当前偏移地址的下一地址压栈,但调用子程序的返回指令RET不影响标志位,RETI从中断程序返回,并会清除内部相应的中断状态寄存器。

8、C51中一般字节变量占用几个字节 ?
答案解析:3字节
第一个字节表示存储器类型,第二,三个字节是指向数据地址的高字节和低字节。

9、使用宏来访问库文件,应包含那个头文件 ?
答案解析:修改:#include
写法:#include

10、正确定义一维数组的格式 ?
答案解析:部分示例如下:
//重点:数组不能越界

char a[] = {0,1,2,3,4,5};
int  a[] = {0,1,2,3,4,5};
float a[] = {0,1,2,3,4,5};
double a[] = {0,1,2,3,4,5};

11、单片机的那个端口的引脚具有串行通信功能 ?
答案解析:P3
89C51单片机P3口具有外中断、串行通信等第二功能。

12、单片机既可位寻址,又可字节寻址的单元有哪些 ?
答案解析:20H~2FH + 其他
片内RAM字节地址20H~2FH,这部分空间就是既能位寻址又能字节寻址的空间。
另外在21个特殊功能寄存器里面,字节地址号码可以被8整除的,也可以位寻址

13、定时器T0工作在计数方式时,信号应接在那个引脚 ?
答案解析: P3.4口(89C51)

14、外部中断的请求标志 ?
答案解析:IE0,IE1
89C51有5个中断源,两个外中断,两个定时器中断,一个串口中断;
外部中断标志是IE0,IE1;
定时器中断标志是TF0,TF1;
串口中断标志是RI,TI;
外中断和定时器中断硬件置位,硬件清零,软件不用管,串口中断必须使用软件清零(向TI和RI写0)。

15、要测量引脚INT0上的正脉冲宽度,问TMOD ?
答案解析:TMOD = 0x01H 或 TMOD = 0x09H。TMOD详细解答参考

16、如果A中的内容68H,则P标志位中的内容为多少 ?
答案解析:1
P为奇偶校验标志位,由硬件置位或清0;
根据累加器A中“1”的个数的奇偶性,即“1”的个数为偶数时P=0,奇数时P=1;
当A中的内容 68H = 0110 1000 时,A中“1”的个数为3,所以P=1。

17、74LS154具有4个输入的译码器芯片,最多可以访问几个芯片 ?
答案解析:16

18、单片机访问外部存储器信号利用哪里的信号锁存低八位地址 ?
答案解析:利用( ALE )信号锁存来自( P0 )发出的低8位地址信号。

19、C51访问外部数据的数据存储器是什么 ?
答案解析:pdataxdata 是片外数据存储器类型

20、存储器首地址为3000H,则扩展32KB后,末地址为多少?若首地址为4000H呢?
答案解析:
32KB=2^5 * 2^10 =2^15 即1000 0000 0000 0000 即8000H
首地址为3000H,故尾地址为8000H + 3000H - 1 = AFFFH
若首地址为4000H,故尾地址为8000H + 4000H - 1 = BFFFH

21、单片机外部中断请求信号有哪几种方式,有效信号是什么时,激励外部中断 ?
答案解析:电平方式和边沿方式,电平方式下,有效信号为低电平,边沿方式下,有效信号为下降沿

22、单片机复位后,所有的中断申请是否都会开放 ?
答案解析:51系列单片机复位后入口地址都是0000H,不会开放中断申请
复位是0000H
外部中断INT0是0003H
外部中断INT1是0013H
定时器中断T0是000BH
定时器中断T1是001BH
串行口中断是0023H

23、单片机内部包含哪些主要配件 ?
答案解析:
51单片机在一块芯片中集成了 CPU 、RAM、ROM、定时/计数器、多功能 I/O 口 和中断控制等基本功能部件。
单片机的核心部分是 CPU ,CPU 是单片机的大脑和心脏。
程序存储器用于存放编好的程序或表格常数。
数据存储器用于存放中间运算结果、数据 暂存和缓冲、标志位等。
定时/计数器实质上是加法计数器,当它对具有固定时间间隔的内部机器周期进行计数时 ,它是定时器;当它对外部事件进行计数时,它是计数器。
I/O 接口的主要功能包括:缓冲与锁存数据、地址译码、信息格式转换、传递状态(外 设状态)和发布命令等。
中断控制可以解决 CPU 与外设之间速度匹配的问题,使单片机可以及时处理系统中许 多随机的参数和信息,同时,它也提高了其处理故障与应变能力的能力。

24、特殊功能寄存器的字节地址多少时,既可字节寻址,又可位寻址 ? 注意问的是特殊功能寄存器
答案解析:80H
详情参考如下:
(1)片内RAM字节地址20H~2FH,这部分空间就是既能位寻址又能字节寻址的空间;
(2)另外在21个特殊功能寄存器里面,字节地址号码可以被8整除的,也可以位寻址。

25、单片机的PC能否寻址,是直接还是间接寻址 ?
答案解析:修改:间接寻址
参考

一般不可寻址,只在MOVC查表指令中可参与寻址。
PC为16位寄存器,意味着51单片机的程序存储器寻址空间为2的16次方,复位后PC为0000H,意味着单片机从头开始执行程序。
程序计数器PC始终指向下一条将要执行的指令地址。寻址范围是0000H ~FFFFH,其中0000H ~ 0FFFH为64KB片内和片外公共地址,靠EA来区分,0FFFH ~FFFFH为外部程序存储器地址。

26、如何区分外部程序存储器和数据存储器 ?
答案解析:看其是被RD还是被PSEN信号连接
硬件上,控制信号不一样:片外程序存储器工作,要PSEN信号有效;
片外数据最可靠的方法是:观察连线,片选端(CS)连接到单片机的PSEN引脚的,是片外。
数据存储区在掉电再上电的时候 里面的数据会丢失,
外部程序存储区则不会,片外存储区的开始地址是1000H,
内部程序存储区的地址是0000~0FFFH 可以根据地址来区分。
外部数据存储区的地址是0000~FFFFH,
外部数据存储区和内部数据存储区根据指令来区分。

27、中断源发出的中断请求信号标记在那个寄存器 ?
答案解析:TCON/SCON

28、单片机程序和数据存储器扩展的最大范围是一样的吗 ?
答案解析:
(1)8051单片机内部程序存储器:为4K掩膜程序存储器,
寻址范围为:0000H~0FFFH,
8051单片机片内片加上片外的总的寻址才是:0000H~FFFFH
(2)8051单片机内部数据存储器只有128个单元:
寻址范围为:00H~7FH,其余80H ~FFH为特殊寄存器区
51单片机数据储存器扩展最大容量可达64K字节,
地址范围:0000H~FFFFH
注(此处来源网络,参考需谨慎):用16片F29C51004芯片(512k字节/片),可扩充至8M字节:地址范围:00000H~7FFFF

29、单片机系统扩展时使用的锁存器功能是 ?
答案解析:所谓锁存就是就是把当前的状态锁存起来,使CPU送出的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁存。数据、地址是分时复用的,整个工作过程是先输出地址信号,再输出数据信号,先输出的地址信号需要锁存,不然输出数据信号时地址信号就会变。

30、程序返回void ,其含义 ?
答案解析:
void:空的意思,不能用来定义变量,只能用来作为返回值类型:无返回值使用;
void真正发挥的作用在于:
(1) 对函数返回的限定;
(2) 对函数参数的限定。

31、程序存储器的功能 ?
答案解析:
程序存储器:是用于存放是系统工作的应用程序及一些不需改变的数据常数的,程序写入程序存储器后,单片机系统只能读取程序指令使系统运行,而不能再进行改写,且系统掉电后,程序不会丢失。因此,程序存储器是ROM(Read Only Memory),即只读存储器。

数据存储器:是用于存放程序运行的中间处理数据的,可随程序运行而随时写入或读出数据存储器的内容,当系统掉电时,数据全部会丢失。因此,数据存储器是RAM(Random Accese Memory),即可随机读写的存储器。

32、单片机内的容量是256B的数据存储器可以分为几个区,其作用是什么 ?
答案解析:
工作寄存器区:00H-1FH、作用:与CPU内部的RAM一起完成逻辑和算术功能,设置内部电路的运行方式、记录电路的运行状态,并置相关的标志位,另外接口电路如4个8位并行口、1个全双工的串口等也映射到特殊功能寄存器中;
位寻址区:20H-2FH、作用:此区间的寄存器可以位寻址,可以对它们进行位操作、位运算。在使用上可以用位地址存储某个开关量(只有0,1两个值),将位地址数值做逻辑运算,或传递给特殊功能寄存器等,特殊功能寄存器里有许多也可位运算,置位,置零等,这就可以仅对该位操作而不影响其他位;
通用RAM区:30H-7FH、作用:普通的数据缓存区,用来建立堆栈,还有放一些不太常用的数据;
两个80-FFH的数据区
其一:80-FFH,特殊功能寄存器组区,支持直接寻址,各种各样的特殊功能寄存器都在这里。
其二:80-FFH,间接寻址区,只支持间接寻址,使用间接寻址指令避免和特殊功能寄存器区冲突,用来放一些不常用(相对不常用)的数据,由于使用R0或R1作指针寻址,用来建立数组数组是非常好的。

详情参考如下:
(1)空间划分存储器分为程序存储器(ROM)和数据存储器(RAM)两大类。程序存储器有片内和片外存储器两种;数据存储器也有片内和片外存储器两种。
(2)地址范围及容量程序存储器是片内外统一寻址,片内程序存储空间+片外程序存储空间=64K的存储空间(0000H-FFFFH)。而数据存储器则是单独寻址,片内数据存储空间+片外数据存储空间=128B(00H-7FH)+64KB(0000H-FFFFH)。
注意:51的片内数据存储空间为128B,而增强型52的片内数据存储空间为256B。52是在51基础上增加了80H-FFH的高128B的空间。增加的这一部分只能采用间接寻址。
51片内数据存储器又可分为:
工作寄存器区:00H-1FH             
位寻址区: 20H-2FH             
通用RAM区: 30H-7FH
(3)使用上的不同RAM和ROM在结构上是不同的。对于RAM来说,CPU在运行时能随时进行数据修改,但却有个缺点,一旦电源掉电,存储信息将丢失。所以,它只能用来存放暂时性的输入输出数据,运算中间结果和堆栈等。(注意,要区别于FLASH)对于ROM,它是一种写入信息不易改写的存储器。就算电源掉电,存储信息都保留不变。所以,ROM用来存放程序或常数等。

33、C51语言的数据存储模式及其区别 ?
答案解析:
(1)SMALL模式:所有变量都默认位于8051内部的数据存储器中,这和使用data存储器类型标识符明确声明是相同的。该模式变量访问非常有效,但所有数据对象和堆栈必须适合内部RAM。因为使用的堆栈空间决定于不同函数嵌套的深度,故对堆栈的尺寸要求严格;
(2)COMPACT模式:所有变量都默认位于外部数据存储器的1页(256字节),这和使用pdata存储器类型标识符明确声明是相同的,地址高字节通常设置P2,编译器无法设置这个端口,故必须在启动代码中手工设置。该模式能容纳最多256B的变量,这个限制是用R0、R1间接寻址造成的。该模式的效率不如Small模式的效率,变量访问速度不如Small模式的快,但比Large模式快。
(3)LARGE模式:所有变量都默认位于外部数据存储器,这和使用xdata存储器类型标识符明确声明是相同的。寻址使用数据指针(DPRT),变量访问效率低,特别是对多字节变量,该模式的数据访问比Small模式和Compact模式生成的代码多。
详情参考

34、如何书写一段中断初始化程序,要求:INT0,INT1,串行口中断允许,INT1跳沿触发,INT0为高优先级中断。
答案解析:
部分解答参考
(1)触发方式:
电平触发指的是低电平到来之后,中断即被触发,跟之前电平高低无关;
跳变触发:刚开始时必须是高电平,然后突然拉低至低电平,这就是跳变,这样才能触发。
(2)IP寄存器—优先级设置:ip=0x01;
89S51特殊功能寄存器IP是中断优先级控制寄存器,各位功能说明如下:

符号 位置 位地址 说明(1=高优先级,0=低优先级)
- IP.7 BFH 未实现,备用
- IP.6 BEH 未实现,备用
PT2 IP.5 BDH 定时器2中断优先级(只有80×2)
PS IP.4 BCH 串行端口中断优先级
PT1 IP.3 BBH 定时器1中断优先级
PX1 IP.2 BAH 外部中断1优先级
PT0 IP.1 B9H 定时器0中断优先级
PX0 IP.0 B8H 外部中断0优先级
//初始化程序
void init()
{
   //设置INT0
   EX0 = 1;    //开(INT0)外部中断0的中断允许
   IT0 = 1;    //选择电平负跳变(下降沿)触发方式
   IP = 0x01;  //设置外部中断0为高级优先级
    
   //设置INT1
   EX1 = 1;    //开外部中断1
   IT1 = 1;    //选择电平负跳变(下降沿)触发方式,
   EA = 1;     //开总中断
    
    //设置串行口中断
    SCON = 0X50;  //串口工作方式设置,串口方式1 ,允许接收
    TMOD = 0X20;  //定时器工作方式设置,T1工作于方式2
    PCON = 0X00;  //波特率倍增设置,不倍增
    TH1 = 0XFD;   //波特率设置
    TL1 = 0XFD;
    TR1 = 1;   //开启定时器
}

35、编程题:有TMOD初值,用定时器+中断作答(TH,TL初始化值使用16进制): 点击此处查看(例子中TH\TL的计算方法我是直接用公式的,记得算一下)

另外一篇习题参考,很不错的哦,点击此处跳转

你可能感兴趣的:(51单片机)