浙工大微机原理期末考试卷
浙江工业大学命题纸
第 3 页
5. 下面是关于 8051 特殊功能寄存器的描述,正确的是 (a) 所有特殊功能寄存器都必须采用直接地址寻址方式进行访问 (b) 所有特殊功能寄存器的位都不允许用位指令进行访问 (c) 每一个特殊功能寄存器的位都可以使用位指令进行访问 (d) 每一个特殊功能寄存器都是用于控制某个或几个硬件功能单元,因而得此名 9. 假设(R0)=50H、(50H)=02H、(51H)=02H。并顺序执行 (1) (2) (3) (4) (5) (6) (7) skip: (8) loop: (9) Table: MOV DPTR, #Table ; 让 DPTR 指向常数表 MOV A, @R0 ; 将 R0 所指向的地址单元内容传送给 A MOVC A, @A+DPTR ; 查表 ADD A, #0B1H ; 执行加法 ; 如果前面的加法有进位则跳转 JC skip INC R0 ; 指针 R0 移向下一个单元 XRL A,@R0 ; 执行逻辑异或运算 AJMP loop ; 程序停止在这儿 DB 40H, 41H, 42H, 43H ; 常数表
6. 几乎所有的单片计算机都具有中断系统,MCS-51 系列单片机也具有一个多源中断系统, 并采用 2 级优先级管理多源中断的响应顺序。 ( ) 7. 当 8051 单片机的 RST 引脚处于高电平期间,8051 处于复位状态,不执行任何指令。一旦 RST 引脚退出高电平并进入低电平,8051 复位结束,开始执行程序。 ( ) 8. 一般的 MCS-51 单片机都具有两种节电工作模式:空闲模式和掉电模式,分别由特殊功能 寄存器 PCON 的两个位:IDL 和 PD 控制。一般情况下,空闲模式比掉电模式更省电,而且 两种节电模式期间,单片机所消耗的电流都比正常工作模式要小。 ( ) 9. MCS-51 单片机的指令集没有数值比较指令,但仍然可以使用“SUBB”或“CJNE”指令, 并根据这些指令执行后 Cy 位的状态来确定对应操作数的大小。 ( ) 10. 众所周知,MCS-51 系列属于 8 位单片机,每次只能处理 8 位宽的数据。采用汇编语言 编程时不能操作 16 位或更宽的数据。如果采用 C 语言编程,可以操作 16 位或更宽的数据变 量,如“unsigned int var = 0xF802” 。 ( )
3. IE
D7 EA
D6 D6 D6 AC
D5 D5 D5 F0
D4 ES D4 PS D4 RS1
D3 ET1 D3 PT1 D3 RS0
D2 EX1 D2 PX1 D2 OV
D1 ET0 D1 PT0 D1 -
D0 EX0 D0 PX0 D0 P
4. IP
D7 -
5. PSW
D7 Cy
命题: 一、填空题 (共 20 分, 每小题 2 分) 1. MCS-51 系列单片机片内低 128 字节 RAM 中,有 个字节的每一个位都是可寻址的, 该区域称为位寻址区。 寄存器区的部分字节也可以采用位寻址,如 IT1=1。 2. 外部中断 0 (INT0)的中断程序入口地址是 3. 子程序返回指令“RET”和中断返回指令“ H,将其配置为下降边沿触发,如何操作? ”的共同点是 H,如何确定它所
2. MCS-51 系列单片机片内高 128 字节 RAM 的物理地址空间与特殊功能寄存器地址空间相 同,但两者采用不同的寻址方式进行访问。 ( ) 3. 当计算机执行子程序调用指令时,堆栈指针不受影响。 4. 当计算机执行数据传送类指令时,源操作数不受影响。 5. P1.0 引脚最大输出电流是 20mA,不能作为输入端口使用。 ( ( ( ) ) )
附:试卷中可能用到的特殊功能寄存器 D7 D6 D5 1. TCON
TF1 TR1 TF0
一
二
三
四
五
六
七
八
九
十
总评
D4 TR0
D3 IE1
D2 IT1
D1 IE0
D0 IT0
2. TMOD
D7 Gate
D6 C/TΒιβλιοθήκη D5 M1D4 M0
D3 Gate
D2 C/T
D1 M1
D0 M0
for T1
for T0
9. 当某个 MCS-51 单片机的通用异步收发器(UART)被设置为方式 1 时,即可变波特率 10 位 异步通讯方式,它发送的串行数据流将出现在 引脚,并通过 引脚接收串行数据。 10. MCS-51 单片机的 PC(程序计数器)的宽度是 位,复位后的初值为零。它始终保存着 。
二、判断题 (共 10 分, 每小题 1 分。对的用“” ,否则用“”) 1. 所有 MCS-51 单片机都采用 40 个引脚的双列直插封装,体积非常小。 ( )
浙江工业大学命题纸
第 4 页
四、简答题 (共 20 分, 每小题 10 分) 1. 简述 8051 单片机片内低 128 字节数据存储器(RAM)的功能分区,以及对应的寻址方式。
2. 当 INT0 采用下降边沿触发方式时,简述该中断的响应过程。
浙江工业大学命题纸
第 5 页
五、程序设计题 (共 30 分, 每小题 10 分) 某 MCS-51 嵌入式系统的晶体振荡频率为 24MHz,扩展的数据存储器(RAM)的地址空间 为:8000H~8FFFH。请编程实现:(可用 C 语言或汇编语言) 1. 计算扩展的数据存储器 8000H~800FH 单元中所有数据(都是 8 位无符号的整数)之和, 并 将计算结果存放在片内 RAM 的 20H(高 8 位)和 21H(低 8 位)。 2. 假设片内 RAM 的 30H~3FH 单元中保存的都是 8 位无符号的整数,找出它们中的最大 数。 3. 在 P1.0 引脚输出一个占空比为 1/2 的方波,要求方波的周期为 5ms。(注意:必须使用 定时/计数器 1(T0);而且 T0 工作在方式 1,即 16 位方式)。 (请写在答题纸上)
浙江工业大学命题纸
第 2 页
三、单项选择题 (共 20 分, 每小题 2 分) 1. 执行下面语句后,累加器 A 的内容必定会改变的语句是 (a) POP A (b) MOVX @DPTR, A (c) INC A (d) SWAP A 2. 下面的 4 条指令,可用于读片外扩展的数据存储器或 I/O 单元的是 (a) MOV A, @R0 (b) MOVX A, @R0 (c) MOV @R0,A (d) MOVX @R0, A 3. 某同学很纠结:到底该学好汇编语言,还是 C 语言?下面正确的说法是 (a) 所有编程语言中,汇编程序的执行效率是最高的,但编写程序的效率很低 (b) 编写汇编程序效率低,大型软件都选择使用 C 语言,没有任何模块用汇编语言编写 (c) C 语言的数据结构复杂,如结构体,而且使用 C 语言不能直接访问硬件地址单元 (d) C 语言的编程效率高,易学易用,不懂汇编语言,照样能写出高质量的嵌入式系统软件 4. 下面是关于单片机这种集成电路的描述,错误的是 (a) 所有单片机都具有一定数量的 I/O 引脚,以满足开关控制的需要 (b) 所有单片机都片内 ROM,用于存储嵌入式系统的程序代码 (c) 所有单片机都具有片内 RAM,用于临时数据的存储,部分还可以作为堆栈区使用 (d) 与一般的台式机的 CPU 相比,所有单片机都具有多种低功耗特性 5. 下面是关于嵌入式系统特征的描述,正确的是 (a) 根据 MCS-51 的内核可断定,嵌入式系统所用的单片机片内都没有显示器接口 (b) 所有嵌入式系统不仅 CPU 速度低,而且资源都十分有限,程序空间都必须小于 64KB (c) 某些功能简单的嵌入式系统,完全有可能是由单颗芯片和必要的供电单元组成 (d) 嵌入式都带有丰富的网络功能,譬如异步串行收发器、以太网控制器 6. 下面关于 8051 定时/计数器 0(T0)的描述,错误的是 (a) T0 有 4 种工作方式,由 TMOD 寄存器的最低 2 位(即 M1 和 M0 位)指定 (b) 当 T0 作为计数器使用时,可用于记录出现在 P3.4(T0)引脚上的脉冲个数 (c) 当 T0 作为定时器使用时,其输入时钟信号的周期等于系统振荡周期的 12 倍 (d) 当 T0 工作在方式 2(即 8 位自动重装方式)时,可以用作 UART 的波特率发生器 7. 下面关于 8051 单片机多源中断系统优先级的描述,正确的是 (a) 采用 8 级优先级管理,允许高优先级中断暂停正在执行的低优先级中断服务程序 (b) 采用 2 级优先级管理,允许同时响应两个具有同优先级的中断请求 (c) 不允许外部中断 0 和 1 同时设置为高优先级 (d) 多个同优先级中断同时发生时,CPU 按 INT0T0INT1T1UART 先后顺序响应
4. 通用寄存器 R0 所对应的实际物理地址可能是 00H、07H、10H 或 代表的实际物理地址?
浙江工业大学命题纸
第 1 页
5. 当 MCS-51 系列单片机在执行并行 I/O 扩展时,地址总线宽度是 16 位宽, 作为其高 8 位地址, 端口分时复用作为低 8 位地址总线和 8 位数据总线。
当程序执行到第(8)行时,下面的描述,正确的是 (a) (R0)=50H, (A)=00H (b) (R0)=50H, (A)=0F0H (c) (R0)=51H, (A)=00H (d) (R0)=51H, (A)=0F0H 10. 假设 8051 系统使用的晶体振荡频率为 12MHz,执行下面的子程序: (1) initTimer: (1) CLR TR0 ; 停止定时/计数器 ; 配置定时/计数器的工作方式 (2) MOV TMOD, #21H (3) MOV TH0, #(65536-10000)/256 ; 装载初始值(高字节为 216) (4) MOV TL0, #(65536-10000)%256 ; 装载初始值(低字节为 240) (5) SETB TR0 ; 启动定时/计数器 (6) RET 下面的描述,错误的是 (a) 这个子程序将定时器 0(T0)初始化为方式 1,即 16 位定时器方式 (b) 这个子程序将定时器 0(T0)的定时周期为初始化为 5ms,即 10000 个机器周期 (c) 这个子程序将定时器 0(T0)的定时周期为初始化为 10ms,即 10000 个机器周期 (d) 这个汇编子程序相同功能作用的 C 语言子程序为: void initTimer (void) { TR0 = 0; TMOD = 21; TH0 = (65536-10000)/256; TL0 = (65536-10000)/256; TR0 = 1; }