一、单选题
- B. 07H
- 解析: MCS-51单片机复位后,堆栈指针SP的内容被自动初始化为07H。这意味着第一个入栈操作(PUSH)的数据将存放在内部RAM的08H单元。
- A. P0
- 解析: P0端口内部是漏极开路结构,没有内部上拉电阻。当它作为通用I/O口(特别是输出高电平)时,必须在外部连接上拉电阻才能正常输出高电平。
- C. 先访问片内0000H-0FFFH,然后自动转向片外1000H-FFFFH
- 解析:
EA
是外部程序存储器访问允许引脚。当EA
=1时,CPU首先从片内ROM的0000H开始执行程序,当PC值超出片内ROM的容量(如4K机型的0FFFH)时,会自动转向从片外的1000H地址继续取指令。
- C.
MOVC A, @A+DPTR
- 解析:
MOVC
指令中的 "C" 代表 "Code",是专门用于从程序存储器(Code Memory)中读取数据的指令,通常用于查表操作。
- D. B
- 解析: 在执行
MUL AB
乘法指令时,A和B寄存器为两个乘数,乘积的低8位在A中,高8位在B中。在执行DIV AB
除法指令时,A为被除数,B为除数,商在A中,余数在B中。
- C. 寄存器间接寻址
- 解析: 寄存器名称前加"@"符号是寄存器间接寻址的标志。该指令表示将寄存器R0中的内容作为地址,去片内RAM中寻址,然后将该地址单元的内容传送给累加器A。
- C. 自动重装载的8位定时/计数器
- 解析: 方式2是8位自动重装载模式。TLx作为8位计数器,当计数溢出时,会自动将THx中的内容重新装载到TLx中,并置位TFx标志,申请中断。
- B. TI (SCON.1)
- 解析: TI(Transmit Interrupt Flag)是发送中断标志位。当串行口成功发送完一帧数据后,硬件会自动将TI置1。
- D. 它不会改变SP寄存器的值
- 解析:
LCALL
(长调用)指令会执行子程序调用操作,调用时需要将下一条指令的地址(断点)压入堆栈保存,这个过程会使SP的值加2。因此“不会改变SP寄存器的值”是错误的。
- C. CPU复位后,其值为00H
- 解析: TMOD寄存器在CPU复位后会被清零,即所有定时器默认都处于方式0。A错误,TMOD不能位寻址;B错误,TMOD地址是89H;D错误,高4位用于T1,低4位用于T0。
二、判断题
- 错误 ( × )
- 解析: 指令周期可以包含1、2或4个机器周期,取决于指令的复杂性。
- 正确 ( √ )
- 解析: 访问SFR(如ACC)属于直接寻址方式。该指令功能上等同于
MOV A, 0E0H
。
- 正确 ( √ )
- 解析: 根据中断控制原则,正在执行的中断服务程序不能被同级别的中断请求所打断。
- 错误 ( × )
- 解析:
MOVX
是访问外部数据存储器(RAM)的指令。写操作应使用写选通信号/WR
。因此,是/WR
引脚输出低电平脉冲。
- 错误 ( × )
- 解析: 减1指令
DEC
的操作对象不能是16位的DPTR。INC DPTR
是有效的,但DEC DPTR
不存在。
- 错误 ( × )
- 解析:
DAA
(十进制调整)指令必须紧跟在加法指令(如ADD
、ADDC
)之后使用,用于将二进制和调整为压缩BCD码。
- 错误 ( × )
- 解析: P3.0口的第二功能是串行数据接收(RXD),P3.1的第二功能才是串行数据发送(TXD)。
- 正确 ( √ )
- 解析:
/PSEN
(Program Store Enable)是片外程序存储器的读选通信号,在CPU从外部ROM取指令时,该引脚输出低电平。
- 正确 ( √ )
- 解析: MCS-51的堆栈在内部RAM中由低地址向高地址生长,称为向上生长。执行PUSH操作时,SP先加1,再存入数据。
- 正确 ( √ )
- 解析:
LJMP
是三字节长转移指令,其后的16位地址操作数可以直接指定64KB程序空间内的任何地址。
三、填空题
P3
1
,0
6
,12
不相等
,1
P3.4
,P3.5
位
10001010B
起始
(低电平),数据
,停止
(高电平)
MOVX
四、程序填空题
计算过程:
- 机器周期计算:
- 晶振频率 fosc = 12MHz
- 机器周期 Tmachine=12/fosc=12/12MHz=1μs
- 定时初值计算:
- 方波周期为2ms,所以半周期(定时时间)为1ms。
- 需要计数的机器周期数 = 1ms/1μs=1000
- 定时器初值 X = 216−1000=65536−1000=64536
- 将64536转换为十六进制:
FC18H
- 因此,TH0 =
FCH
,TL0 =18H
答案:
0FCH
018H
SETB ET0
0FCH
018H
CPL P1.0