山科大 《单片机的C语言程序设计与运用(第2版)》期末复习题及答案1 下载本文

一、填空

1.KeiL C51软件中,工程文件的扩展名是____UV2______,编译连接后生成可烧写的文件扩展名是_____HEX_______。

2.C51支持的指针有 一般指针 和 存储器指针 。

3.C51中,没有专门的循环语句,我们可以用函数______crol_______完成一个字节的循环左移,用____irol_____完成二个字节的循环左移。 4. 函数 是C语言的基本单位。

5.C语言中输入和输出操作是由库函数 scanf 和 printf 等函数来完成。 6.若有说明int i,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为__ 900______。 7. 数组 是一组有固定数目和相同类型成分分量的有序集合。

8.变量的指针就是变量的 地址 ;指针变量的值是 指针 。

9.在C语言中,把多个不同类型的变量结合在一起形成的一个组合型变量,称为 结构变量 ,简称 结构 。

10.C51的数据类型有 基本类型 、 构造类型 、 指针类型 、 空类型 。

11.C51的基本数据类型有 位型 、 字符型 、 整形 、 长整形 、 浮点型 、 双精度浮点型 。

12.C51的构造数据类型有 数组类型 、 结构类型 、 共用体型 、 梅举型 。 13.C51的存储类型有 data 、 bdata 、 idata 、 pdata 、 xdata 、 code 。 14.C51的存储模式有 SMALL 、 COMPACT 和 LARGE 。

15.C51程序与其他语言程序一样,程序结构也分为 顺序结构 、 选择结构(或分支结构) 、 循环结构 三种。

16.数组的一个很重要的用途就是 查表 。 17.

二、单项选择题:

1.89S51的内部程序存储器与数据存储器容量各为多少?(C) (A)64KB、 128B ( B)4KB、64KB (C)4KB、128B (D)8KB、256B

2.在8x51芯片里,哪个引脚用于控制使用内部程序存储器还是外部程序存储器?(B) (A)XTAL1 (B)/EA (C)/PSEN (D)ALE 3.下列哪个不是KeilC的预处理命令?(C)

(A)#include (B)#define (C)#exit (D)#if 4.下列哪个不是KeilC的数据类型?(B)

(A)void (B)string (C)char (D)float 5.在8x51的输入/输出端口里,哪个输入/输出端口执行在输出功能时没有内部上拉电阻(A) (A)P0 (B)P1 (C)P2 (D)P3 6.在KeilC的程序里,若要指定P0口的bit3,如何编写?(C)

(A)P0.3 (B)Port0.3 (C)P0^3 (D)Port^3 7.在8x51里,若要扩展外部存储器时,数据总线连接哪个输入/输出端口?(A) (A)P0 (B)P1 (C)P2 (D)P3 8.点亮一般的LED所耗的电流约为多少?(D)

(A)1~5uA (B)10~20uA (C)1~5mA (D)10~20mA

9.在8x51的程序里,若要将个输入/输出端口设置成输入功能,应如何处理?(A) (A)先输出高电平到该输入/输出端口 (B)先输出低电平到该输入/输出端口

(C)先读取该输入/输出端口的状态 (D)先保存该输入/输出端口的状态 10.根据实验统计,当操作开关时,其不稳定关态大约持续多久?(B)

(A)1~5ms (B)10~20ms (C)100~150ms (D)150~250us 11.在KeilC里,判读开关状态时,使用if_else if语句与使用switch语句有何差异?(B) (A)if-else if 语句较快 (B)if-else if语句有优先级 (C)switch语句可判读较多开关状态 (D)switch语句有优先级

12.对于低电平动作(低电平触发)的开关而言,下列哪个不是在输入口上连接一个上拉电阻VCC的目的?(A)

(A)提供足够的驱动电流 (B)防止确定状态 (C)保持输入高电平 (D)防止噪声干扰

13.中断功能具有什么好处?(C) (A)让程序更复杂 (B)让程序执行速度更快 (C)让程序更有效率 (D) 以上皆非

14.8x51的IP缓存器的功能为何?(A)

(A)设置中断优先级 (B)启用中断功能 (C)设置中断触发信号 (D)定义CPU的网址

15.在KeilC里,中断子程序与函数有何不同?(A)

(A)中断子程序不必声明 (B)函数不必声明 (C)中断子程序必须有形式参数 (D)中断子程序一定会有返回值

16.若要同时启用INT0及INT1中断功能,则应如何设置?(B)

(A)TCON=0x81 (B)IE=0x85 (C)IP=0x83 (D)IE=0x03 17.若要提高INT1的优先级,则应如何设置?(C)

(A)IP=0x01 (B)IE=0x01 (C)IP=0x04 (D)IE=0x04

18.在8x51的Timer里,若使用Mode 0,其最大计数值为多少个机器周期?(B) (A)65636 (B)8192 (C)1024 (D)256 19.12 MHz的8x51系统里,哪一种方式一次可定时5ms?(A) (A)Mode0及Mode1 (B)Mode1及Mode2 (C ) Mode2及Mode3 (D) Mode3及Mode1

20.8x51的定时器,在下列哪种方式下具有自动加载功能?(C) (A)Mode0 (B) Mode1 (C)Mode2 (D)Mode3 21.若将Timer0设置为外部启动,则可由哪个引脚启动?(A) (A)P3.2 (B)P3.3 (C)P3.4 (D)P3.5 22.下列哪个IC具有将串行数据转换成并行数据的功能?(B) (A)74138 (B)74164 (C)74165 (D)74168 23.在同一时刻,只能接收或发送信号者称为什么?(A)

(A)半双工 (B)全双工 (C)半单工 (D)单工 24‘在8x51的串行口里,在哪一种方式下,可利用Timer1产生波特率?(C) (A)Mode0 (B)Mode1 (C)Mode2 (D)Mode3

25.在8x51里,若通过串行端口传出数据,则只要将数据放入哪个寄存器,CPU就会自动将它会传出?(B)

(A)SMOD (B)SBUF (C)PCON (D)RBUF

26.在8x51里,若CPU完成串行端口数据的接收将会如何?(D)

(A)将TI标志变为0 (B)将RI标志为0 (C)将TI标志变为了 1 (D)将RI标志变为1

2

27.若要设置8x51串行端口方式,可在哪个寄存器中设置?(B) (A)SMOD (B)SCON (C)PCON (D)TCON 28.在共阳极8*8LED点阵里,其阳极如何连接?(C)

(A)各行阳极连接到行引脚 (B)各列阳极连接到列引脚 (C)各行阳极连接到列引脚 (D)各列阳极连接到行引脚 29.在共阳极8*8点阵里,其阴极如何连接?(A)

(A)各行阴极连接到行引脚 (B)各列阴极连接到列引脚 (C)各行阴极连接到列引脚 (D)各列阴极连接到行引脚 30.通常8*8LED点阵的驱动方式是什么?(B)

(A)直接驱动 (B)扫描驱动 (C)双向驱动 (D)以上皆非 31.若要对LCM下指令,则应如保设置?(A)

(A)RS=0,R/~W=0 (B)RS=1,R/~W=0 (C)RS=1,R/~W=1 (D)RS=0,R/~W=1

32.若要在LCM中显示些字符,则需把所要显示的字符放入何处?(B) (A)CG RAM (B)DDRAM (C)IRAM (D)GDRAM 33.若要将数据写入LCM,则应如何设置?(B)

(A)RS=0,R/~W=0 (B)RS=1,R/~W=0 (C)RS=1,R/~W=1 (D)RS=0,R/~w=1 341.利用下列( D )关键字可以改变工作寄存器组 A、interrupt B、sfr C、while D、using

35.C51中一般指针变量占用( C )字节存储。 A、一个 B、两个 C、三个 D、四个

36.使用宏来访问绝对地址时,一般需包含的库文件是( B ) A、reg51.h B、absacc.h C、intrins.h D、startup.h 37.执行#define PA8255 XBYTE[0x3FFC];

PA8255=0x7e;

后存储单元0x3FFC的值是(A )

A、Ox7e B、8255H C、未定 D、7e

38.设有int a[ ]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是 (C)

A、10,11,12 B、11,12,12 C、10,12,12 D、11,11,12 A、1 B、2 C、3 D、4

三、判断题:(每小题1分,共10分。正确的在括号内打“√”,错误的打“×”。判对得分,不判、判错均不得分。)

1.若一个函数的返回类型为void,则表示其没有返回值。( √ )

2.特殊功能寄存器的名字,在C51程序中,全部大写。(√ ) 3.“sfr”后面的地址可以用带有运算的表达式来表示。( × ) 4.#include 与#include “reg51.h”是等价的。(√ )

5.sbit不可以用于定义内部RAM的可位寻址区,只能用在可位寻址的SFR上。(× ) 6.Continue 和break都可用来实现循环体的中止。( × )

3

7.所有定义在主函数之前的函数无需进行声明。( × ) 8.int i,*p=&i;是正确的C说明。( √ ) 9.7&3+12的值是15。( × )

10.一个函数利用return不可能同时返回多个值。( √ )

四、问答题

1.简述C51语言和汇编语言的比较

使用C51语言进行嵌入式系统的开发,有着汇编语言所不可比拟的优势: ① 编程调试灵活方便; ② 生成的代码编译效率高; ③ 模块化开发; ④ 可移植性好; ⑤ 便于项目的维护;

2.简述单片机的C语言和标准C的比较

答:单片机的C语言和标准C的比较主要有以下几点不同: ① C51中定义的库函数和标准的C语言定义的库函数不同; ② C51中的数据类型和标准C的数据类型也有一定的区别; ③ C51变量的存储模式与标准C中变量的存储模式不一样; ④ C51与标准C的输入/输出处理不一样;

⑤ C51与标准C语言在函数使用方面有一定的区别。

3.简述单片机的C语言的特点

单片机的C语言的特点主要体现在以下几个方面:

① 无需了解机器硬件及其指令系统,只需初步了解MCS-51的存储器结构; ② C51能方便的管理内部寄存器的分配、不同存储器的寻址和数据类型等细节问题,但对硬件控制有限;而汇编语言可以完全控制硬件资源;

③ C51在小应用程序中,产生的代码量大,执行速度慢;但在较大的程序中代码效率高;

④ C51程序由若干函数组成,具有良好的模块化结构,便于改进和扩充;

⑤ C51程序具有良好的可读性和可维护性;而汇编语言在大应用程序开发中,开发难度增加,可读性差;

4