单片机判断题50题 - 详细解析
1. P0口的第一功能是准双向I/O口,第二功能是分时复用的低8位地址线和8位数据线。
- 答案:× (错误)
- 解析: P0口的第一功能是开漏型双向I/O口,而不是准双向口。作为通用I/O口使用时,通常需要外接上拉电阻。第二功能是作为分时复用的地址/数据总线(AD0-AD7)是正确的。P1, P2, P3才是准双向口。
2. CPU响应中断时,硬件自动进行断点地址保护,自动转去执行中断服务程序。
- 答案:√ (正确)
- 解析: 当中断被响应时,单片机硬件会自动将当前的程序计数器(PC)的值(即下一条要执行指令的地址,也称为断点)压入堆栈进行保护,然后将对应的中断服务程序的入口地址加载到PC,从而实现跳转。
3. 中断服务程序的保护现场也是单片机硬件自动完成的。
- 答案:× (错误)
- 解析: 硬件只保护断点(PC)。而“现场”通常指累加器A、B寄存器、PSW(程序状态字)以及其他在中断服务程序中可能会被修改的寄存器。这些寄存器的保护和恢复需要程序员在中断服务程序的开头和结尾通过
PUSH
和POP
等指令来手动完成。
4. 中断服务程序的最后一条指令是RET。
- 答案:× (错误)
- 解析: 中断服务程序的最后一条指令必须是
RETI
(Return from Interrupt)。RETI
指令不仅会从堆栈中弹出地址并返回,还会清除内部的中断优先级逻辑,以允许响应同级或低级的中断。普通的RET
指令用于子程序返回,没有这个功能。
5. MOVC A,@A+DPTR是一条查表指令,寻址空间是ROM。
- 答案:√ (正确)
- 解析:
MOVC
指令中的“C”代表Code(代码),是专门用于访问程序存储器(ROM)的指令。该指令将DPTR和A中的内容相加作为地址,从程序存储器中取出一个字节的数据放入A中,是典型的查表操作。
6. MUL AB的执行结果是高8位在A中,低8位在B中。
- 答案:× (错误)
- 解析:
MUL AB
指令执行8位无符号乘法,结果为16位。其中,低8位在累加器A中,高8位在B寄存器中。
7. DPTR 是由DPH和DPL两个8位特殊寄存器组成的。
- 答案:√ (正确)
- 解析: DPTR(数据指针)是一个16位的寄存器,用于寻址外部数据存储器或程序存储器。它由高8位寄存器DPH(Data Pointer High)和低8位寄存器DPL(Data Pointer Low)组合而成。
8. 由于MCS-51 串行口的数据发送和接收缓冲器都是SBUF,所以其串行口不能同时发送和接收数据,即不是全双工的串行口。
- 答案:× (错误)
- 解析: 虽然发送和接收都使用同一个特殊功能寄存器地址SBUF,但在物理上,它们是两个独立的寄存器:一个是只写的发送缓冲器,另一个是只读的接收缓冲器。因此,MCS-51的串行口是全双工的,可以同时进行数据的发送和接收。
9. ADC0809是8位逐次逼近式模/数转换器。
- 答案:√ (正确)
- 解析: ADC0809是一个常用的A/D转换器芯片,它有8路模拟输入通道,输出8位数字量,其内部转换原理是逐次逼近法。
10. 51单片机复位后,堆栈指针SP中的内容为07H。
- 答案:√ (正确)
- 解析: 系统复位后,堆栈指针SP被初始化为07H。这意味着第一次执行
PUSH
指令时,SP会先加1变为08H,然后数据被存入内部RAM的08H单元。
11. 51单片机的串行口有四种工作方式。
- 答案:√ (正确)
- 解析: 通过设置SCON寄存器中的SM0和SM1位,可以选择串行口的四种工作方式(方式0、方式1、方式2、方式3)。
12. 51单片机串行口的工作方式0是I/O扩展方式。
- 答案:√ (正确)
- 解析: 方式0是同步移位寄存器方式,RXD线用于数据输入/输出,TXD线输出同步时钟,常用于扩展并行I/O口或连接其他移位寄存器类芯片。
13. 定时器/计数器T0、T1工作在计数方式时,能够计数任意频率的外部脉冲。
- 答案:× (错误)
- 解析: 计数器对外部引脚(T0/T1)的脉冲进行采样。为了可靠地识别一个脉冲,要求脉冲的高电平和低电平的持续时间都至少要有一个机器周期。因此,被测脉冲的频率存在一个上限,不能是任意频率。最高计数频率为 f_osc / 24(f_osc为晶振频率)。
14. MCS-51单片机的各中断源发出中断请求时,都会在TCON 中建立相应的标志。
- 答案:× (错误)
- 解析: 外部中断(IE0, IE1)和定时器中断(TF0, TF1)的标志位在TCON寄存器中。但是,串行口中断的标志位(RI, TI)是在SCON寄存器中。
15. 只有进制加法和减法运算,才能进行进制调整。
- 答案:× (错误)
- 解析: 十进制调整指令
DA A
是专门用于加法运算后的调整。对于减法,MCS-51没有直接的十进制调整指令。
16. 执行返回指令时,返回的断点是此时堆栈顶部的内容。
- 答案:√ (正确)
- 解析:
RET
或RETI
指令执行时,会从堆栈顶部弹出两个字节,并将其加载到程序计数器PC中,这个弹出的值就是之前保存的断点地址。
17. CPU和外设进行数据传送时主要采用查询方式和中断方式,两者相比后者能节省 CPU资源。
- 答案:√ (正确)
- 解析: 查询方式下CPU需要反复检查外设状态,空耗CPU时间。中断方式下CPU可以处理其他任务,仅在有中断请求时才为外设服务,效率更高,更节省CPU资源。
18. MCS-51单片机的五个中断源中,优先级最高的是外部中断0,优先级最低的是串行口中断。
- 答案:√ (正确)
- 解析: 在默认的自然优先级下,优先级从高到低依次为:外部中断0 (IE0) → 定时器0 (TF0) → 外部中断1 (IE1) → 定时器1 (TF1) → 串行口 (RI/TI)。
19. MCS-51单片机的五个中断源有五个优先级。
- 答案:× (错误)
- 解析: MCS-51的中断系统只有两个优先级等级:高优先级和低优先级,可以通过中断优先级寄存器IP进行设置。在同一个优先级内部,再按固定的自然优先级响应。
20. 0区工作寄存器的R2所对应的内部存储器的地址是03H。
- 答案:× (错误)
- 解析: 题目是 “R2对应03H”,那么是错误的。R0对应00H, R1对应01H, R2对应02H。
21. 8051单片机的P2口只能用作通用I/O口。
- 答案:× (错误)
- 解析: P2口除了用作通用I/O口,在访问外部存储器时,它还用作高8位地址总线(A8-A15)。
22. 程序存储器和数据存储器的作用不同,程序存储器一般用来存放数据表格和程序,而数据存储器用来存放数据。
- 答案:√ (正确)
- 解析: 描述基本正确。程序存储器(ROM)存放固定的代码和常量表。数据存储器(RAM)存放变量、临时数据和堆栈。
23. DA A指令只能用在BCD运算的加法指令后,才能起到进制调整的作用。
- 答案:√ (正确)
- 解析:
DA A
(十进制调整)指令必须紧跟在对累加器A进行的加法指令(如ADD
或ADDC
)之后使用,才能正确地将二进制和调整为BCD码。
24. MCS-51单片机中的特殊功能寄存器,可采用寄存器间接寻址方式。
- 答案:× (错误)
- 解析: 特殊功能寄存器(SFR)只能使用直接寻址方式访问(例如
MOV A, P1
或MOV A, 90H
),不能使用寄存器间接寻址(例如MOV A, @R0
)。
25. MCS-51系列单片机中,高级中断能够打断低级和同级中断。
- 答案:× (错误)
- 解析: 高优先级中断可以打断低优先级中断。但是,一个中断服务程序在执行期间,不能被同级别的中断所打断。
26. 若A中的内容为23H,那么,PSW中的P标志位为1。
- 答案:× (错误)
- 解析: P是奇偶校验位。23H = 0010 0011B。其中有3个‘1’。因为‘1’的个数是奇数,所以P标志位被清零,即 P = 0。
27. 执行指令MOV SBUF,A能够启动MCS-51系列单片机的串行发送。
- 答案:√ (正确)
- 解析: 向发送缓冲器SBUF写入数据是启动串行发送的标志。一旦数据写入,硬件就会自动开始发送。
28. MOV SP, #5FH开辟的堆栈空间为内部RAM的60H单元开始。
- 答案:√ (正确)
- 解析: 堆栈操作是“先增加指针,后存入数据”。若SP=5FH,执行
PUSH
指令时,SP先变为60H,然后数据存入60H单元。所以堆栈从60H开始向上增长。
29. MCS-51单片机是8位机,但可以进行16位运算。
- 答案:√ (正确)
- 解析: MCS-51的CPU和数据总线是8位的,所以是8位机。但它有16位的数据指针DPTR,并且可以通过编程实现16位甚至更宽的数据运算。
30. NOP 不会使计算机产生任何操作,因此属于伪指令。
- 答案:× (错误)
- 解析:
NOP
是一条机器指令,有自己的机器码(00H)。它会占用一个机器周期的时间,只是不执行任何数据操作。伪指令(如ORG
,END
)是在汇编阶段起作用,不产生机器码。
31. 在MCS-51中,为使准双向的I/O口工作在输入方式,必须先预置为1。
- 答案:√ (正确)
- 解析: 对于准双向口(P1/P2/P3),要作为输入使用,必须先向该口的锁存器写入'1',以关闭内部的下拉场效应管,使引脚处于高阻态,从而能正确读取外部信号电平。
32. MOVX A,@DPTR 是向外部RAM写一个字节数据。
- 答案:× (错误)
- 解析: 这条指令是读操作。它的作用是将DPTR指向的外部RAM单元中的数据读到累加器A中。写操作的指令是
MOVX @DPTR, A
。
33. 汇编语言源程序中的伪指令汇编成目标程序时不产生机器码。
- 答案:√ (正确)
- 解析: 伪指令是给汇编器的指示,用于控制汇编过程,本身不被翻译成CPU可执行的机器码。
34. 访问片内RAM用MOV指令,访问片外RAM用MOVX指令。
- 答案:√ (正确)
- 解析: 这是基本规则。
MOV
用于访问内部数据存储器,MOVX
中的'X'代表External(外部),用于访问外部数据存储器。
35. 位地址98H,位于8031的20H~2FH的位寻址区中。
- 答案:× (错误)
- 解析: 内部RAM的位寻址区是字节地址20H~2FH,对应的位地址范围是00H~7FH。位地址98H位于特殊功能寄存器(SFR)的位寻址区(具体是P2口的位地址P2.0)。
36. MCS-51 单片机启动串行发送的指令是MOV SBUF,A,启动串行接收的指令是MOVA, SBUF。
- 答案:× (错误)
- 解析:
MOV SBUF, A
是启动发送。但接收是硬件自动的,只要设置了REN=1
,串行口就会自动接收数据。MOV A, SBUF
是接收完成后,从SBUF中读取数据,而不是启动接收。
37. END 表示指令执行到此结束。
- 答案:× (错误)
- 解析:
END
是伪指令,它告诉汇编器源程序文件到此结束,是在编译(汇编)时起作用。程序的执行并不会因为它而停止。
38. 定时器与计数器的工作原理均是对输入脉冲进行计数。
- 答案:√ (正确)
- 解析: 它们的本质都是计数器。定时器模式下,计数对象是固定的内部机器周期脉冲;计数器模式下,计数对象是来自外部引脚的脉冲。
39. TMOD中GATE=1时,表示INTO或INT1参与控制定时器的启停。
- 答案:√ (正确)
- 解析: 当GATE=1时,定时器的运行除了受TRx位控制,还受外部中断引脚INTx的电平控制。只有当TRx=1且INTx为高电平时,定时器才会计数。
40. 相对寻址方式中,“相对”两字是相对于当前指令的首地址。
- 答案:× (错误)
- 解析: 相对寻址的目标地址等于下一条指令的首地址(即当前PC值)加上一个8位的有符号偏移量。
41. 要进行多机通信,MCS-51串行接口的工作方式应为方式1。
- 答案:× (错误)
- 解析: 实现多机通信通常使用方式2或方式3。这两种方式支持9位数据帧,第9位可以用来作为地址/数据标志位。方式1是标准的8位异步通信,不直接支持多机寻址。
42. MCS-51系统对串行口接收中断标志RI只能用软件进行清零。
- 答案:√ (正确)
- 解析: 发送中断标志TI和接收中断标志RI在被硬件置1后,都必须由程序(软件)来手动清除,硬件不会自动清零。
43. 共阴极数码管能够显示数码的必要条件是其共同端接高电平。
- 答案:× (错误)
- 解析: 共阴极数码管的公共端(COM)应该接低电平(GND),而需要点亮的段选线接高电平。
44. JBC P1.0, rel和JB P1.0, rel 均为转移指令,但它们的转移条件不同。
- 答案:× (错误)
- 解析:
JB
(Jump if Bit set)是判断指定位是否为1,如果是则跳转。JBC
(Jump if Bit set and Clear bit)也是判断指定位是否为1,如果是则跳转,并且在跳转之前将该位清零。功能上多了一个清零操作。
45. MCS-51系列芯片特殊功能寄存器区按字节寻址时可以采用间接寻址。
- 答案:× (错误)
- 解析: 重复第24题。SFR只能使用直接寻址。
46. 8051单片机的算术逻辑部件能完成带借位和不带借位的减法运算。
- 答案:错(错误)
- 解析: 8051有带借位减法指令
SUBB
。不带借位的减法只可以通过先CLR C
(清零进位/借位标志),再执行SUBB
指令来实现。
47. 串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。
- 答案:√ (正确)
- 解析: 在方式2和方式3下,接收到的第9位数据位被存储在SCON寄存器的RB8位中。
48. MCS-51 的定时器/计数器对外部脉冲进行计数时,要求输入的计数脉冲的高电平和低电平的持续时间均不小于1个机器周期。
- 答案:√ (正确)
- 解析: 这是对外部计数脉冲的硬件要求,以保证单片机能可靠地采样到电平的变化。
49. MCS-51 中工作寄存器R7的实际物理地址与PSW中内容有关。
- 答案:√ (正确)
- 解析: PSW寄存器的RS1和RS0位决定了当前使用哪一组工作寄存器(共4组)。R7的物理地址可能是07H(第0组)、0FH(第1组)、17H(第2组)或1FH(第3组)。
50. MCS-51在串行方式0时TXD是时钟发送端,RXD 是数据接收端。
- 答案:× (错误)
- 解析: 在方式0(同步移位寄存器模式)下,TXD引脚输出同步时钟,而RXD引脚用于串行数据的输入和输出。因此,TXD是时钟端,RXD是数据端。