单片机期末考试试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机期末考试试题
一、选择题(每题 3 分,共 30 分)
1、单片机能够直接识别和执行的语言是()
A 高级语言
B 汇编语言
C C 语言
D 机器语言
2、单片机的复位引脚是()
A VCC
B GND
C RST
D ALE
3、当单片机的 PSW 寄存器中的 RS1 和 RS0 分别为 0 和 1 时,工作寄存器组选择的是()
A 0 组
B 1 组
C 2 组
D 3 组
4、单片机的中断源中,优先级最高的是()
A 外部中断 0
B 外部中断 1
C 定时器/计数器 0 中断
D 串行口中断
5、要使单片机的定时器/计数器 0 工作在方式 1,需要设置 TMOD 寄存器的值为()
A 0x01
B 0x02
C 0x05
D 0x10
6、在单片机的串行通信中,方式 1 的波特率取决于()
A 定时器 1 的溢出率
B 系统时钟频率
C 晶振频率
D 电源频率
7、单片机的 P0 口在作为输出口使用时,必须外接()
A 上拉电阻
B 下拉电阻
C 电容
D 电感
8、以下指令中,属于位操作指令的是()
A MOV
B ADD
C CLR
D SUBB
9、单片机在扩展外部存储器时,数据总线连接的是()
A P0 口
B P1 口
C P2 口
D P3 口
10、要使单片机进入掉电模式,需要设置()
A PCON 寄存器
B SCON 寄存器
C TCON 寄存器
D I
E 寄存器
二、填空题(每题 3 分,共 30 分)
1、单片机是将_____、_____、_____和_____等集成在一块芯片
上的微型计算机。

2、51 单片机的内部数据存储器的地址范围是_____,可分为_____、_____和_____。

3、单片机的指令周期是指执行一条指令所需要的_____。

4、 51 单片机有_____个中断源,其中_____个外部中断源。

5、当单片机执行 MOV A,30H 指令时,将立即数 30H 送到_____中。

6、单片机的定时器/计数器有_____种工作方式。

7、在串行通信中,根据数据传输方向的不同,可以分为_____、_____和_____三种方式。

8、单片机的引脚 EA 接高电平时,访问的是_____存储器。

9、要使单片机的 P1 口的第 0 位输出低电平,可执行指令_____。

10、单片机的堆栈遵循_____的数据存储原则。

三、简答题(每题 10 分,共 20 分)
1、简述 51 单片机的定时/计数器的工作原理。

答:51 单片机的定时/计数器的核心是一个加 1 计数器。

当对定时/
计数器设置好工作方式、初值,并启动后,计数器就会在相应的时钟
脉冲作用下进行加 1 计数。

当计数值达到设定的终值时,就会产生溢
出中断。

在定时模式下,计数器对内部机器周期脉冲进行计数,实现
定时功能;在计数模式下,计数器对外部脉冲进行计数,实现计数功能。

2、简述 51 单片机中断系统的结构和工作过程。

答:51 单片机的中断系统由5 个中断源、中断允许控制寄存器IE、中断优先级控制寄存器 IP 等组成。

5 个中断源分别是外部中断 0、外
部中断 1、定时器/计数器 0 中断、定时器/计数器 1 中断和串行口中断。

当有中断请求发生时,如果相应的中断允许位为 1,并且没有被更高优先级的中断所打断,CPU 就会响应中断,执行相应的中断服务程序。

在响应中断时,CPU 会自动完成断点保护,然后转向中断服务程序入
口地址执行中断服务程序。

中断服务程序执行完毕后,通过 RETI 指令
返回断点继续执行主程序。

四、编程题(20 分)
用 51 单片机控制 8 个发光二极管,实现依次点亮的流水灯效果。

要求使用定时器/计数器 0 产生定时中断,定时时间为 05 秒。

```c
include <reg51h>
define uchar unsigned char
define uint unsigned int
uchar led ={0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
void timer0_init()

TMOD = 0x01; //设置定时器 0 工作在方式 1
TH0 =(65536 50000) / 256; //定时 05 秒,计算初值
TL0 =(65536 50000) % 256;
EA = 1; //开总中断
ET0 = 1; //开定时器 0 中断
TR0 = 1; //启动定时器 0

void timer0_isr() interrupt 1

static uchar i = 0;
P1 = ledi;
i++;
if (i == 8)

i = 0;

TH0 =(65536 50000) / 256; //重新装载初值TL0 =(65536 50000) % 256;

void main()

timer0_init();
P1 = 0xff;
while (1);

```。

相关文档
最新文档