(完整版)单片机习题册(含答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《微处理器(单片机)应用技术》习题册
(含答案)
101 二进制、十进制、和十六进制间的转换
一、填空题(每空1分)
1、二进制的11001011B转换成十六进制是________。
CBH,
2、二进制的01111110B转换成十六进制是________。
7EH
3、二进制的10000111B转换成十六进制是________。
87H
4、二进制的11010010B转换成十六进制是________。
D2H
5、二进制的11110001B转换成十六进制是_______。
F1H
6、十六进制的5EH转换成二进制是_________。
01011110B
7、十六进制的0AAH转换成二进制是_________。
10101010B
8、十六进制的4BH转换成二进制是_________。
01001011B
9、十六进制的41H转换成二进制是_________。
01000001B
10、十六进制的35H转换成二进制是_________。
00110101B
11、二进制的11001011B转换成十进制是________。
293
12、二进制的01111110B转换成十进制是________。
126
13、二进制的10000111B转换成十进制是________。
135
14、二进制的11010010B换成十进制是________。
210
15、二进制的11110001B转换成十进制是________。
241
二、单项选择题(每题1分)
1、将十进制数215转换成对应的二进制数是(A )。
A.11010111 B.11101011 C.10010111 D.10101101
2、二进制数110110110对应的十六进制数可表示为(B )。
A.1D3H B.1B6H C.DB0H D.666H
3、十进制数80其对应的十六进制可表示为(B )H。
A.16 B.50 C.51 D.80
4、十六进制数4FH对应的十进制数是( C )。
A.78 B.59 C.79 D.87
5、将十进制数98转换成对应的二进制数是(A )。
A.1100010 B.11100010 C.10101010 D.1000110
6、十进制数89.75其对应的二进制可表示为( C )。
A.10001001.01110101 B.1001001.10 C.1011001.11 D.10011000.11
7、十进制数126对应的十六进制数可表示为(D )。
A.8FH B.8EH C.FEH D.7EH
8、二进制数110010010对应的十六进制数可表示为( A )。
A.192H B.C90H C.1A2H D.CA0H
102 单片机的概念
一、填空题(每空1分)
1、单片机是一种将、存储器和输入输出接口集成在一个芯片中的微型计算机。
【答案】CPU
2、单片机是一种将CPU 、和输入输出接口集成在一个芯片中的微型计算机。
【答案】存储器
3、单片机是一种将CPU 、存储器和集成在一个芯片中的微型计算机。
【答案】输入输出接口
4、单片机应用系统是由和软件系统组成的。
【答案】硬件系统
5、单片机应用系统是由硬件系统和组成的。
【答案】软件系统
二、单项选择题(每题1分)
1、MCS-51系列单片机的CPU主要由(A )组成。
A、运算器、控制器
B、加法器、寄存器
C、运算器、加法器
D、运算器、译码器
2、下面设备不是输入设备的是(C )。
A.A/D转换器
B.键盘
C.打印机
D.扫描仪
三、判断题(每题1分)
(×)(1)MCS-51单片机是高档16位单片机。
(×)(2)MCS-51单片机具有高功耗的特点。
(×)(3)MCS-51单片机只能应用到工业和商业产品中。
四、论述题(每题5分)
1、什么是单片机?它由哪几部分组成?
【答案】单片微型计算机是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(Central Processing Unit)、随机存取存储器RAM(Random Access Memory)、只读存储器ROM(Read-only Memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时器/计数器等都制作在一块集成芯片上,构成一个完整的微型计算机,可以实现微型计算机的基本功能。
2、什么是单片机应用系统?
【答案】单片机应用系统是以单片机为核心,配以输入、输出、显示、控制等外围电路和软件,能实现一种或多种功能的实用系统。
单片机应用系统是由硬件和软件组成的,硬件是应用系统的基础,软件则是在硬件的基础上对其资源进行合理调配和使用,从而完成应用系统所要求的任务,二者相互依赖,缺一不可。
3、什么是单片机开发系统?
【答案】单片机开发过程所用的设备与软件称为单片机开发系统或开发工具。
103 51系列单片机内部的组成及外部引脚
一、填空题(每空1分)
1、MCS-51系列单片机的存储器主要有4个物理存储空间,即、片内程序存储器、片外数据存储器、片外程序存储器。
【答案】片内数据存储器
2、MCS-51系列单片机的存储器主要有4个物理存储空间,即片内数据存储器、
、片外数据存储器、片外程序存储器。
【答案】片内程序存储器
3、MCS-51系列单片机的存储器主要有4个物理存储空间,即片内数据存储器、片内程序存储器、、片外程序存储器。
【答案】片外数据存储器
4、MCS-51系列单片机的存储器主要有4个物理存储空间,即片内数据存储器、片内程序存储器、片外
数据存储器、。
【答案】片外程序存储器
5、片内RAM低128单元,按其用途划分为、位寻址区和用户RAM区3个区域。
【答案】工作寄存器组
6、片内RAM低128单元,按其用途划分为工作寄存器组、和用户RAM区3个区域。
【答案】位寻址区
7、片内RAM低128单元,按其用途划分为工作寄存器组、位寻址区和3个区域。
【答案】用户RAM区
8、除了单片机和电源外,单片机最小系统包括电路和复位电路。
【答案】时钟
9、除了单片机和电源外,单片机最小系统包括时钟电路和电路。
【答案】复位
10、MCS-51系列单片机的XTAL1和XTAL2引脚是引脚。
【答案】时钟电路
11、MCS-51系列单片机的复位电路有两种,即和按键复位电路。
【答案】上电复位电路
12、MCS-51系列单片机的复位电路有两种,即上电复位电路和。
【答案】按键复位电路
13、在MCS-51系列单片机的4个并行输入/输出端口中,常用于第二功能的是口。
【答案】P3
14、单片机的系统总线有、控制总线、地址总线。
【答案】数据总线
15、单片机的系统总线有数据总线、、地址总线。
【答案】控制总线
16、单片机的系统总线有数据总线、控制总线、。
【答案】地址总线
17、输入单片机的复位信号需延续个机器周期以上的高电平即为有效,用以完成单片机的复位初始化操作。
【答案】2
18、输入单片机的复位信号需延续2个机器周期以上的电平即为有效,用以完成单片机的复位初始化操作。
【答案】高
19、8051系列单片机最大可以扩展________KB程序存储器。
【答案】64
20、8051系列单片机最大可以扩展________KB数据存储器。
【答案】64
21、8051单片机EA引脚是内外ROM的选择,当该引脚为电平时,指令从片内ROM开始读取。
【答案】高
22、8051单片机EA引脚是内外ROM的选择,当该引脚为电平时,指令从片外ROM开始读取。
【答案】低
23、8051系列单片机有4个8位的并行I/O口(P0、P1、P2、P3),这4个I/O口可作为一般的I/O口外,P0口还可作为低8位的总线端口。
【答案】地址
24、8051系列单片机有4个8位的并行I/O口(P0、P1、P2、P3),这4个I/O口可作为一般的I/O口外,
P2口也可作为高8位的总线。
【答案】地址
25、8051系列单片机有4个8位的并行I/O口(P0、P1、P2、P3),这4个I/O口可作为一般的I/O口外,而口还具有第二功能。
【答案】P3
26、8051系列单片机有4个8位的并行I/O口(P0、P1、P2、P3),这4个I/O口中只有口仅作一般的I/O口。
【答案】P1
二、单项选择题(每题1分)
1、51系列单片机芯片中不包括( D )。
A.CPU
B.存储器
C.I/O端口
D.显示器
2、单片机8051的XTAL1和XTAL2引脚是(D)引脚。
A.外接定时器B.外接串行口C.外接中断D.外接晶振
3、A T89S51单片机的Vcc(40)引脚是(A)引脚。
A.主电源+5V B.接地C.备用电源D.访问片外存贮器
4、A T89S51单片机的V SS(20)引脚是(B )引脚。
A.主电源+5V B.接地C.备用电源D.访问片外存贮器
5、A T89S51引脚ALE是( C )。
A.程序读选通信号
B.数据锁存允许信号
C.地址锁存允许信号
D.控制锁存允许信号
6、MCS—51单片机的CPU主要的组成部分为( A )。
A.运算器、控制器B.加法器、寄存器C.运算器、加法器D.运算器、译码器
7、A T89S51单片机中不包含( B )。
A.CPU
B. 继电器
C.存储器
D. I/O端口
8、8051单片机有(C )组并行I/O口。
A、2
B、3
C、4
D、5
9、单片机的堆栈指针SP始终是指示(B )。
A.堆栈底B.堆栈顶C.堆栈地址D.堆栈长度
10、单片机中的程序计数器PC用来(C )。
A、存放指令
B、存放正在执行的指令地址
C、存放下一条指令地址
D、存放上一条指令地址
11、8051单片机的程序计数器PC为16位计数器,其寻址范围是(D )。
A、8KB
B、16KB
C、32KB
D、64KB
12、8051单片机的(A )口内部没有接上拉电阻,使用时需要外接上拉电阻。
A、P0
B、P1
C、P2
D、P3
13、MCS-51系列单片机的4个并行I/O端口作为通用I/O端口使用,在输出数据时,必须外接上拉电阻的是(A )。
A、P0口
B、P1口
C、P2口
D、P3口
14、单片机8031的/EA引脚(A )。
A、必须接地
B、必须接+5V电源
C、可悬空
D、以上三种视需要而定
15、单片机的ALE引脚是以晶振震荡频率的(C)固定频率输出正脉冲,因此它可以作为外部时钟或外部定时脉冲使用。
A、1/2
B、1/4
C、1/6
D、1/12
16、51系列单片机中(B )单片机内部没有程序存储器。
A、8051
B、8031
C、2051
D、8751
17、当MCS-51系列单片机应用系统需要扩展外部存储器或其他接口芯片时,( A )可作为低8位地址总线使用。
A、P0口
B、P1口
C、P2口
D、P0口和P2口
18、外部扩展存储器时,分时复用做数据线和低8位地址线的是(A )。
A、P0口
B、P1口
C、P2口
D、P3口
19、外部扩展存储器时,用作高8位地址线的是(C )。
A、P0口
B、P1口
C、P2口
D、P3口
20、在程序状态字PSW中奇偶效验位P在(A )位置。
A.PSW.0
B.PSW.3
C.PSW.6
D.PSW.7
21、MCS-51单片机复位操作的功能是把P0~P3初始化为(C )。
A.00H
B.11H
C.0FFH
D.不能确定
22、当MCS-51系列单片机应用系统需要扩展外部存储器或其他接口芯片时,(C )可作为高8位地址总线使用。
23、、P0口B、P1口C、P2口D、P0口和P2口
24、PSW中的RS1和RS0用来(A )。
A、选择工作寄存器组
B、指示复位
C、选择定时器
D、选择工作方式
25、单片机上电复位后,SP的内容为(B )。
A、0x00
B、0x07
C、0x0b
D、0xff
26、在程序状态字PSW中PSW.7表示(A )标志位。
A.Cy
B.AC
C.F0
D.P
三、判断题(每题1分)
(×)(1)MCS-51系列单片机直接读端口和读端口锁存器的结果永远是相同的。
(√)(2)是读端口还是读锁存器是用指令来区别的。
(×)(3)堆栈指针SP的内容可指向片内00H--7FH的任何RAM单元,系统复位后,SP初始化为00H。
(√)(4)数据指针DPTR是一个16 位的特殊功能寄存器。
(×)(5)程序计数器PC是一个可以寻址的特殊功能寄存器。
(√)(6)单片机89C51复位后,其PC指针初始化为0000H,使单片机从该地址单元开始执行程序。
四、论述题(每题5分)
1、P0口用作通用I/O口输出数据时应注意什么?
【答案】 P0口与其它端口不同,它的输出级无上拉电阻。
当把它用作通用I/O口时,输出级是开漏电路,故用其输出时应外接上拉电阻1。
104、单片机的时钟频率与时钟周期、机器周期、指令周期的关系
三、判断题(每题1分)
(√)(1)MCS-51单片机中一个机器周期包含12个时钟周期。
(×)(1)MCS-51单片机中一个时钟频率包含12个时钟周期。
四、论述题(每题5分)
1、什么是机器周期?机器周期和晶振频率有何关系?
【答案】规定一个机器周期的宽度为12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。
2、当晶振频率为6MHz时,计算机器周期是多少?
【答案】当振荡脉冲频率为12 MHz时, 一个机器周期为1µs;当振荡脉冲频率为6 MHz时,一个机器周期为2 µs。
五、计算分析题(每题5分)
1、51系列单片机的晶振频率为3MHz,则单片机系统的机器周期为多少μS。
【答案】已知晶振频率=3MHz,则时钟周期=1/晶振频率=1/3MHz=1/3μS
机器周期=12*时钟周期=12*1/3μS=4μS。
2、51系列单片机的晶振频率为4MHz,则单片机系统的机器周期为多少μS。
【答案】已知晶振频率=4MHz,则时钟周期=1/晶振频率=1/4MHz=1/4μS
机器周期=12*时钟周期=12*1/4μS=3μS。
3、51系列单片机的晶振频率为6MHz,则单片机系统的机器周期为多少μS。
【答案】已知晶振频率=6MHz,则时钟周期=1/晶振频率=1/6MHz=1/6μS
机器周期=12*时钟周期=12*1/6μS=2μS。
【4、51系列单片机的晶振频率为12MHz,则单片机系统的机器周期为(A)μS。
【答案】已知晶振频率=12MHz,则时钟周期=1/晶振频率=1/12MHz=1/12μS
机器周期=12*时钟周期=12*1/12μS=1μS。
5、51系列单片机的晶振频率为24MHz,则单片机系统的机器周期为(A)μS。
【答案】已知晶振频率=24MHz,则时钟周期=1/晶振频率=1/24MHz=1/24μS
机器周期=12*时钟周期=12*1/24μS=0.5μS。
6、8051单片机的机器周期为2μS,则其晶振频率fosc为多少MHz。
【答案】已知机器周期=2μS,则时钟周期=机器周期/12=2μS/12=1/6μS,
晶振频率fosc=1/机器周期=6 MHz。
7、8051单片机的机器周期为1μS,则其晶振频率fosc为多少MHz。
【答案】已知机器周期=1μS,则时钟周期=机器周期/12=1μS/12=1/12μS,
晶振频率fosc=1/机器周期=12 MHz。
8、8051单片机的机器周期为4μS,则其晶振频率fosc为多少MHz。
【答案】已知机器周期=6μS,则时钟周期=机器周期/12=4μS/12=1/3μS,
晶振频率fosc=1/机器周期=3 MHz。
9、8051单片机的机器周期为3μS,则其晶振频率fosc为多少MHz。
【答案】已知机器周期=3μS,则时钟周期=机器周期/12=3μS/12=1/4μS,
晶振频率fosc=1/机器周期=4 MHz。
10、8051单片机的机器周期为0.5μS,则其晶振频率fosc为多少MHz。
【答案】已知机器周期=0.5μS,则时钟周期=机器周期/12=0.5μS/12=1/24μS,晶振频率fosc=1/机器周期=24 MHz。
11、当单片机晶振频率fosc=12MHz,则系统的时钟周期、机器周期各为多少?
【答案】T时=1/fosc=1/12μS;T机=T时*12=1/12μS*12=1μS。
12、当单片机晶振频率fosc=24MHz,则系统的时钟周期、机器周期各为多少?
【答案】T时=1/fosc=1/24μS;T机=T时*12=1/24μS*12=0.5μS。
13、当单片机晶振频率fosc=6MHz,则系统的时钟周期、机器周期各为多少?
【答案】T时=1/fosc=1/6μS;T机=T时*12=1/6μS*12=2μS。
14、当单片机晶振频率fosc=4MHz,则系统的时钟周期、机器周期各为多少?
【答案】T时=1/fosc=1/4μS;T机=T时*12=1/4μS*12=3μS。
15、当单片机晶振频率fosc=2MHz,则系统的时钟周期、机器周期各为多少?
【答案】T时=1/fosc=1/2μS;T机=T时*12=1/2μS*12=6μS。
201、C语言基础知识
一、填空题(每空1分)
1、结构化程序设计的三中基本结构是、选择结构、循环结构。
【答案】顺序结构
2、结构化程序设计的三中基本结构是顺序结构、、循环结构。
【答案】选择结构
3、结构化程序设计的三中基本结构是顺序结构、选择结构、。
【答案】循环结构
4、表达式语句由组成。
【答案】表达式加上分号“;”
5、一个C源程序至少应包括一个函数。
【答案】主函数main( )
6、C51的变量存储器类型是指。
【答案】变量在MCS-51硬件系统中所使用的存储区域
7、在单片机的C语言程序设计中,类型数据经常用于处理ASCII字符或用于处理小于等于255的整型数。
【答案】unsigned char
8、C51的字符串总是以作为串的结束符,通常用字符数组来存放。
【答案】'\0'
9、一个函数由两部分组成,即和函数体。
【答案】函数名
10、一个函数由两部分组成,即函数名和。
【答案】函数体
二、单项选择题(每题1分)
1、C程序总是从(A )开始执行的。
A、主函数
B、主程序
C、子程序
D、主过程
2、单片机能够直接运行的程序是( D )。
A、汇编源程序
B、C语言源程序
C、高级语言程序
D、机器语言程序
3、程序是以(C )形式存放在程序存储器中的。
A、C语言源程序
B、汇编程序
C、二进制编码
D、BCD码
4、以下选项中不合法的用户标识符是( A )。
A)abc.c B)file C)Main D)PRINT
5、选出下列标识符中不是合法的标识符的是( D )。
A. hot_do
B. cat1
C. _pri
D. 2ab
6、C语言用( C )表示逻辑“真”值。
A.True B. t 或y C. 非零整型值 D. 整型值0
7、在C语言中,逻辑值"真"的表示是用( C )。
A) true B) 整型值0 C)非零整型值D) T
8、使用单片机开发系统调试C语言程序时,首先应新建文件,该文件的扩展名是( D )。
A、.c
B、 .hex
C、.bin
D、.asm
9、以下选项中属于C语言的数据类型是( B )。
A. 复合型
B. 双精度型
C. 逻辑型
D. 集合型
10、设C语言中,int类型数据占2个字节,则float类型数据占(D )个字节。
A)1 B)2 C)8 D)4
11、以下说法中正确的是( C )。
A. C语言程序总是从第一个的函数开始执行
B. 在C语言程序中,要调用的函数必须在main()函数中定义
C. C语言程序总是从main()函数开始执行
D. C语言程序中的main()函数必须放在程序的开始部分
12、下列语句不具有赋值功能的是( C )
A.a*=b B.x=1 C.a+b D.a++
13、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+3后,c2中的值为( A )。
A)D B)68 C)不确定的值D)C
14、C语言中最简单的数据类型包括( B )。
A、整型、实型、逻辑型
B、整型、实型、字符型
C、整型、字符型、逻辑型
D、整型、实型、逻辑型、字符型
15、使用单片机开发系统调试汇编语言程序时,首先应新建文件,该文件的扩展名是(A )。
A、.c
B、 .hex
C、.bin
D、.asm
16、下面叙述不正确的是(C )。
A、一个C源程序可以由一个或多个函数组成。
B、一个C源程序必须包含一个主函数main( )。
C、在C程序中,注释说明只能位于一条语句的后面。
17、在C51的数据类型中,unsigned char型的数据长度和值域为(C )。
A、单字节,-128~127
B、双字节,-32768~+32767
C、单字节,0~255
D、双字节,0~65535
18、下列描述中不正确的是( C )。
A. 字符型数组中可能存放字符串。
B. 可以对字符型数组进行整体输入、输出。
C. 可以对整型数组进行整体输入、输出。
D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
19、设有数组定义:char array[]=”China”;则数组所占的存贮空间为( C )。
A.4个字节 B. 5个字节 C. 6个字节 D. 7个字节
20、逻辑运算符两侧运算对象的数据类型是( D )。
A、只是0或1
B、只能是0或非0正数
C、只能是整型或字符型数据
D、可以是任何合法的类型数据
21、最基本的C语言语句是(B )。
A、赋值语句
B、表达式语句
C、循环语句
D、复合语句
22、不属于字符型常量的是( C )。
A.‘A’B、'a' C、“A”D、'b'
23、C语言是由( C )基本单位组成的。
A.过程 B.语句 C.函数 D.程序
24、判断char型变量c1是否为小写字母的正确表达式为( D )。
A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z')
C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z')
三、判断题(每题1分)
(√)(1)数据是操作的对象,操作的结果会改变数据的状况。
(×)(2)字符型变量用来存放字符常量,注意只能放2个字符。
(×)(3)C语言中可以把一个字符串赋给一个字符变量。
(×)(4)在C语言中的实型变量分为两种类型,它们是float(实型)和double(双精度实型)。
(√)(5)在C语言中,要求参加运算的数必须是整数的运算符是%。
(√)(6)输入语句的格式为:scanf("%d%d%d",&a,&b,&c);是正确的。
(×)(7)getchar函数的功能是接收从键盘输入的一串字符。
(×)(8)在变量说明中给变量赋初值的方法是:int a=b=c=10。
(×)(9)把k1、k2定义成基本整型变量,并赋初值0的定义语句是int k1=k2=0。
(×)(10)如果i的原值为3,则:j = ++ i,j的值为3。
(×)(11)输入语句的格式为:scanf("%d,%d,%d",a,b,c);是正确的。
(√)(12)若一个函数的返回类型为void,则表示其没有返回值。
(×)(13)不能用“sfr16” 直接访问定时器/计数器0和1。
(×)(14)“sfr”后面的地址可以用带有运算的表达式来表示。
(√)(15)#include <reg51.h>与#include “reg51.h”是等价的。
(×)(16)sbit不可以用于定义内部RAM的可位寻址区,只能用在可位寻址的SFR上。
四、论述题(每题5分)
1、用C51编程较汇编语言有哪些优势?
【答案】(1)编程容易
(2)容易实现复杂的数值计算
(3)容易阅读、调试、维护程序
(4)容易实现模块化开发
(5)程序可移植性好
2、什么叫堆栈?堆栈指针SP的作用是什么?
【答案】堆栈是在RAM专门开辟的一个特殊用途的存储区。
堆栈是按照“先进后出”(即先进入堆栈的数据后移出堆栈)的原则存取数据。
堆栈指针SP是一个8位寄存器,其值为栈顶的地址,即指向栈顶,SP为访问堆栈的间址寄存器。
202、顺序结构程序设计
二、单项选择题(每题1分)
1、下面不正确的赋值语句是( B )。
A.a=a+1; B、a= =b; C、a+=b ; D、a=1;
2、设int n=3;则有表达式++n,n的结果是( C )。
A)2 B)3 C)4 D)5
3、下面是对一维数组s的初始化,其中不正确的是(D )。
A、char s[5]={“abc”};
B、char s[5]={‘a’,’b’,’c’};
C、char s[5]=””;
D、char s[5]=”abcdef”;
4、下列属于整型常量的是( A )。
A、12
B、12.0
C、-12.0
D、10E10
5、根据C语言的语法规则,下列( A )是不合法标识符。
A.While B. Name C. Rern5 D. _exam
6、在C语言中,char型数据在内存中的存储形式是( D )。
A) 补码B) 反码C) 原码D) ASCII码
三、判断题(每题1分)
(×)(1)在printf函数中,输出表列的各输出项之间可用冒号分隔。
(×)(4)printf函数是一个标准库函数,它的函数原型在头文件"string.h"中。
四、论述题(每题5分)
1、中断函数的定义形式是怎样的?
【答案】常用的中断函数定义语法如下:
void 函数名() interrupt n
其中n为中断类型号,C51编译器允许0~31个中断,n取值范围0~31。
六、程序题(每题10分)
1、在横线上将空缺的语句补充完整。
//52系列单片机头文件
#define uint unsigned int //宏定义
sbit led1=P1^0; //声明单片机P1口的第一位
uint i,j;
void main() //主函数
{
while(1) //大循环
{
led1=0; /*点亮第一个发光二极管*/
for(i=1;i>0;i--) //延时
for(j=110;j>0;j--);
led1=1; /*关闭第一个发光二极管*/
for(i=1000;i>0;i--) //延时
for(j=110;j>0;j--);
}
}
【答案】#include <reg52.h>
2、在横线上将空缺的语句补充完整。
//该程序功能为点亮第一个发光二极管
#include <reg52.h> //52系列单片机头文件
sbit //声明单片机P1口的第一位为led1
void main() //主函数
{
led1=0; /*点亮第一个发光二极管*/
}
【答案】led1=P1^0;
3、在横线上将空缺的语句补充完整。
//该程序功能为使第一个发光二极管以间隔500ms亮灭闪动。
#include <reg52.h> //52系列单片机头文件
#define uint unsigned int //宏定义
sbit led1=P1^0; //声明单片机P1口的第一位
void delay1s( ); //声明子函数
void main( ) //主函数
{
while(1) //大循环
{
led1=0; /*点亮第一个发光二极管*/
delay1s( ); //调用延时子函数
led1=1; /*关闭第一个发光二极管*/
delay1s( ); //调用延时子函数
}
}
//子函数体
{
uint i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
}
【答案】void delay1s( )
4、在横线上将空缺的语句补充完整。
//该程序功能为使第一个数码管显示8
#include <reg52.h> //52系列单片机头文件
sbit dula=P2^6; //申明U1锁存器的锁存端
sbit wela=P2^7; //申明U2锁存器的锁存端
void main()
{
①//打开U2锁存器
P0=0xFE; //送入位选信号
wela=0; //关闭U2锁存器
②//打开U1锁存器
P0=0x7F; //送入段选信号
dula=0; //关闭U2锁存器
while(1); //程序停止到这里
}
【答案】①wela=1; ②dula=1;
5、在横线上将空缺的语句补充完整。
//该程序功能为点亮第一个发光二极管
#include <reg52.h> //52系列单片机头文件
sbit led1=P1^0; //声明单片机P1口的第一位
//主函数
{
led1=0; /*点亮第一个发光二极管*/
}
【答案】void main( )
6、在横线上将空缺的语句补充完整。
#include <reg52.h> //52系列单片机头文件
#define uint unsigned int //宏定义
sbit led1=P1^0; //声明单片机P1口的第一位
void delay1s(); //声明子函数
void main() //主函数
{
while(1) //大循环
{
led1=0; /*点亮第一个发光二极管*/
①//调用延时子函数
led1=1; /*关闭第一个发光二极管*/
②//调用延时子函数
}
}
void delay1s() //子函数体
{
uint i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
}
【答案】①delay1s(); ②delay1s();
7、在横线上将空缺的语句补充完整。
#include <reg52.h> //52系列单片机头文件
#define uint unsigned int //宏定义
①//声明单片机P1口的第一位为led1 void delayms(uint); //声明子函数
void main() //主函数
{
while(1) //大循环
{
led1=0; /*点亮第一个发光二极管*/
delayms(200); //延时200毫秒
led1=1; /*关闭第一个发光二极管*/
②//延时800毫秒
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒for(j=110;j>0;j--);
}
【答案】①sbit led1=P1^0; ②delayms(800);
8、在横线上将空缺的语句补充完整。
#include <reg52.h> //52系列单片机头文件
#include <intrins.h>
#define uint unsigned int //宏定义
#define uchar unsigned char
void delayms(uint); //声明子函数
uchar aa;
void main() //主函数
{
①//将aa赋初值11111110
while(1) //大循环
{
P1=aa;
②//延时500毫秒
aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}
【答案】①aa=0xfe; ②delayms(500);
203、分支结构程序设计
一、填空题(每空1分)
1、语句一般用做单一条件或分支数目较少的场合,如果超过3个以上分支的程序,可用多分支选择的switch语句。
【答案】if
2、if语句一般用做单一条件或分支数目较少的场合,如果超过3个以上分支的程序,可用多分支选择
的语句。
【答案】switch
二、单项选择题(每题1分)
1、在C51语言的if语句中,用做判断的表达式为(D )。
A、关系表达式
B、逻辑表达式
C、算术表达式
D、任意表达式
2、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与( C )组成配对关系。
A. 缩排位置相同的if
B. 在其之前未配对的if
C. 在其之前未配对的最近的if
D.同一行上的if
六、程序题(每题10分)
1、在横线上将空缺的语句补充完整
#include <reg51.h> //包含头文件REG51.H
sbit P1_0=P1^0; //定义P1.0引脚位名称为P1_0
sbit P1_1=P1^1; //定义P1.1引脚位名称为P1_1
sbit P3_0=P3^0; //定义P3.0引脚位名称为P3_0
sbit P3_1=P3^1; //定义P3.1引脚位名称为P3_1
void delay(unsigned char i); //延时函数声明
void main() //主函数
{
while(1) { //while循环
if (P3_0==0&&P3_1==0) //如果P3.0和P3.1状态都为0
{ P1_0=0; //则点亮左转灯和右转灯
P1_1=0;
delay(200);
}
else if (P3_0==0) //如果P3.0(左转向灯)状态为1
{ P1_0=0; //则点亮左转灯
delay(200);
}
else (P3_1==0) //如果P3.1(右转向灯)状态为1
{ P1_1=0; //则点亮右转灯
delay(200);
}
else
{
; //空语句
}
P1_0=1; //左转灯回到熄灭状态
P1_1=1; //右转灯回到熄灭状态
delay(200);
}
}
//函数名:delay
//函数功能:实现软件延时
//形式参数:unsigned char i;
// i控制空循环的外循环次数,共循环i*255次
//返回值:无
void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数
{
unsigned char j,k; //定义无符号字符型变量j和k
for(k=0;k<i;k++) //双重for循环语句实现软件延时
for(j=0;j<255;j++);
}
【答案】if
2、在横线上将空缺的语句补充完整
//功能:采用switch语句实现的模拟汽车转向灯控制程序
#include <reg51.h> //包含头文件REG51.H
sbit P1_0=P1^0;
sbit P1_1=P1^1;
void delay(unsigned char i); //延时函数声明
void main() //主函数
{
unsigned char ledctr; //定义转向灯控制变量ledctr
P3=0xff; //P3口作为输入口,必须先置全1
while(1) {
ledctr=P3; //读P3口的状态送到ledctr
ledctr=ledctr&0x03; //与操作,屏蔽掉高6位无关位,取出P3.0和P3.1引脚的状态(0x03即二进制数00000011B)
(ledctr)
{ case 0:P1_0=1;P1_1=0;break; //如P3.0、P3.1都为0则点亮左、右灯
case 1:P1_1=0; break; //如果P3.1(右转向灯)为0则点亮右灯
case 2:P1_0=0; break; //如果P3.0(左转向灯)为0则点亮左灯default: ; //空语句,什么都不做
}
delay(200); //延时
P1_0=1; //左转灯回到熄灭状态
P1_1=1; //右转灯回到熄灭状态
delay(200); //延时
}
}
//函数名:delay
//函数功能:实现软件延时
//形式参数:unsigned char i;
// i控制空循环的外循环次数,共循环i*255次
//返回值:无
void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数
{
unsigned char j,k; //定义无符号字符型变量j和k
for(k=0;k<i;k++) //双重for循环语句实现软件延时
for(j=0;j<255;j++);
}
【答案】switch
3、在横线上将空缺的语句补充完整
//功能:采用if语句实现的模拟汽车转向灯控制程序
#include <reg51.h>
sbit P1_0=P1^0; //定义P1.0引脚位名称为P1_0
sbit P1_1=P1^1; //定义P1.1引脚位名称为P1_1
sbit P3_0=P3^0; //定义P3.0引脚位名称为P3_0
sbit P3_1=P3^1; //定义P3.1引脚位名称为P3_1
void delay(unsigned char i); //延时函数声明
void main() //主函数
{
while(1) { //while循环
if (P3_0==0) P1_0=0; //如果P3.0(左转向灯)状态为0,则点亮左转灯
if (P3_1==0) ; //如果P3.1(右转向灯)状态为1,则点亮右转灯delay(200); //延时
P1_0=1; //左转灯回到熄灭状态
P1_1=1; //右转灯回到熄灭状态
delay(200); //延时
}
}
//函数名:delay
//函数功能:实现软件延时
//形式参数:unsigned char i;
// i控制空循环的外循环次数,共循环i*255次
//返回值:无
void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数
{
unsigned char j,k; //定义无符号字符型变量j和k
for(k=0;k<i;k++) //双重for循环语句实现软件延时
for(j=0;j<255;j++);
}
【答案】P1_1=0
204、循环结构程序设计
一、填空题(每空1分)
1、whlie语句和do-while语句的区别在于:语句是先执行、后判断,而while句是先判断、后执行。
【答案】do-while
2、whlie语句和do-while语句的区别在于:do-while语句是先执行、后判断,而句是先判断、后执行。
【答案】while
二、单项选择题(每题1分)
1、在C51语言中,当do-while语句中的条件为(A )时,结束循环。
A、0
B、false
C、true
D、非0
2、下面的while循环执行了(A )次空语句。
while (i=3);
A、无限次
B、0次
C、1次
D、2次\
3、Break语句的正确的用法是( B )。
A. 无论在任何情况下,都中断程序的执行,退出到系统下一层。
B. 在多重循环中,只能退出最靠近的那一层循环语句。
C. 跳出多重循环。
D. 只能修改控制变量。
4、以下描述正确的是(B )。
A、continue语句的作用是结束整个循环的执行。
B、只能在循环体内和 switch语句体内使用break语句。
C、在循环体内使用break语句或continue语句的作用相同。
D、以上三种描述都不正确。
六、程序题(每题10分)
1、下面的while循环执行了次空语句。
i=3;
while (i!=0);
【答案】无限次
2、在横线上将空缺的语句补充完整。
#include<reg51.h>
/****************************************
函数功能:延时一段时间
*****************************************/。