admin 管理员组文章数量: 1184232
2024年1月28日发(作者:ospf计算cost主要依据哪些参数)
一、填空
1.KeiL C51软件中,工程文件的扩展名是___.c______,编译连接后生成可烧写的文件扩展名是_______HEX____。
2.C51支持的指针有 基于存储器的指针 和 一般指针 。
3.C51中,没有专门的循环语句,我们可以用函数___________完成一个字节的循环左移,用______完成二个字节的循环左移。
4. 函数 是C语言的基本单位。
5.C语言中输入和输出操作是由库函数 和 等函数来完成。
6.若有说明int i,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为__ ______。
7. 是一组有固定数目和相同类型成分分量的有序集合。
8.变量的指针就是变量的 ;指针变量的值是 。
9.在C语言中,把多个不同类型的变量结合在一起形成的一个组合型变量,称为 ,简称 。
10.C51的数据类型有 、 、 、 。
11.C51的基本数据类型有 、 、 、 、 、 。
12.C51的构造数据类型有 、 、 、 。
13.C51的存储类型有 data 、 idata 、 bdata 、 xdata 、 pdata 、 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语句可判读较多开关状态
语句有优先级
12.对于低电平动作(低电平触发)的开关而言,下列哪个不是在输入口上连接一个上拉电阻VCC的目的?( A)
D)switch(
(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)65536 (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
27.若要设置8x51串行端口方式,可在哪个寄存器中设置?( B)
(A)SMOD (B)SCON (C)PCON (D)TCON
28.在共阳极8*8LED点阵里,其阳极如何连接?(C)
(A)各行阳极连接到行引脚 (B)各列阳极连接到列引脚 (C)各行阳极连接到列引脚 (D)各列阳极连接到行引脚
29.在共阳极8*8点阵里,其阴极如何连接?( C)
(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 )
2
(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
34.利用下列( 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 i;则表达式i=1,++i,++i||++i,i的值为 ( )
A、1 B、2 C、3 D、4
39.设有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
40.设有int i;则表达式i=1,++i,i||++i,i的值为 ( )
A、1 B、2 C、3 D、4
三、判断题:(每小题1分,共10分。正确的在括号内打“√”,错误的打“×”。判对得分,不判、判错均不得分。)
1.若一个函数的返回类型为void,则表示其没有返回值。( 对 )
2.特殊功能寄存器的名字,在C51程序中,全部大写。( 对 )
3.“sfr”后面的地址可以用带有运算的表达式来表示。( 错 )
4.#include
5.sbit不可以用于定义内部RAM的可位寻址区,只能用在可位寻址的SFR上。(对 )
6.Continue 和break都可用来实现循环体的中止。( 错 )
7.所有定义在主函数之前的函数无需进行声明。( 错 )
8.int i,*p=&i;是正确的C说明。( 对)
9.7&3+12的值是15。( 错 )
10.一个函数利用return不可能同时返回多个值。(对 )
四、问答题
1.简述C51语言和汇编语言的比较
使用C51语言进行嵌入式系统的开发,有着汇编语言所不可比拟的优势:
① 编程调试灵活方便;
② 生成的代码编译效率高;
③ 模块化开发;
3
④ 可移植性好;
⑤ 便于项目的维护;
2.简述单片机的C语言和标准C的比较
单片机的C语言和标准C的比较主要有以下几点不同:
① C51中定义的库函数和标准的C语言定义的库函数不同;
② C51中的数据类型和标准C的数据类型也有一定的区别;
③ C51变量的存储模式与标准C中变量的存储模式不一样;
④ C51与标准C的输入/输出处理不一样;
⑤ C51与标准C语言在函数使用方面有一定的区别。
3.简述单片机的C语言的特点
单片机的C语言的特点主要体现在以下几个方面:
① 无需了解机器硬件及其指令系统,只需初步了解MCS-51的存储器结构;
② C51能方便的管理内部寄存器的分配、不同存储器的寻址和数据类型等细节问题,但对硬件控制有限;而汇编语言可以完全控制硬件资源;
③ C51在小应用程序中,产生的代码量大,执行速度慢;但在较大的程序中代码效率高;
④ C51程序由若干函数组成,具有良好的模块化结构,便于改进和扩充;
⑤ C51程序具有良好的可读性和可维护性;而汇编语言在大应用程序开发中,开发难度增加,可读性差;
⑥ C51有丰富的库函数,可大大减少用户的编程量,显著缩短编程与调试时间,大大提高软件开发效率;
⑦ 使用汇编语言编制的程序,当机型改变时,无法直接移植使用,而C语言程序是面向用户的程序设计语言,能在不同机型的机器上运行,可移植性好。
4.简述使用KeilC51开发工具开发软件的流程
使用Keil Software工具时,用户的项目开发流程和其它软件开发项目的流程极其相似,主要包括以下几个步骤:
① 创建一个项目,从器件库中选择目标器件并配置工具软件的设置;
4
② 用C语言或汇编语言创建源程序;
③ 用项目管理器生成用户的应用;
④ 修改源程序中的错误;
⑤ 调试链接后的应用。
1.哪些变量类型是51单片机直接支持的?
C51编译器支持的数据类型有:位型(bit)、无符号字符型(unsigned char)、有符号字符型(signed
char)、无符号整型(unsigned int)、有符号整型(signed int)、无符号长整型(unsigned long)、有符号长整型(signed long)、浮点型(float)和指针型等。
2.简述C51的数据存储类型
我们都知道,8051单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区。8051单片机内部的数据存储区是可读写的,8051派生系列最多可有256字节的内部数据存储区,其中低128字节可直接寻址,高128字节(从0x80到0xFF)只能间接寻址,从20H开始的16字节可位寻址。内部数据区可分为3个不同的存储类型:data、idata和bdata。
3.简述C51对51单片机特殊功能寄存器的定义方法
(1)使用关键字定义sfr
(2)通过头文件访问SFR
(3)SFR中位定义
4.简述C51对51单片机片内I/O口和外部扩展的I/O口的定义方法
答:
C51对51单片机片内I/O口的定义方法是将片内I/O口看成SFR。 C51对51单片机片外I/O的访问有两种比较常用的访问方法: (1)绝对宏
C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。
(2)_at_关键字
可以使用关键字_at_对指定的存储器空间的绝对地址进行访问,一般格式如下: [存储器类型] 数据类型说明符 变量名 _at_地址常数;
5
5.简述C51对51单片机位变量的定义方法
答:除了通常的C数据类型外,C51编译器支持bit数据类型。 采用关键字“bit”进行定义。如: bit
direction_bit; bit lock_pointer;
/* 将direction_bit定义为位变量 */ /* 将lock_pointer定义为位变量 */
bit display_invers; /* 将display_invers定义为位变量 */
6.C51 和Turbo C 的数据类型和存储类型有哪些异同点?
答:C51增加了位变量,取消了布尔变量。
7.C51 的data、bdata、idata 有什么区别?
答:data、bdata、idata是表明数据的存储类型, data是指片内RAM的低128字节,可在一个周期内直接寻址; bdata是指片内RAM的位寻址区,16字节;
8.C51中的中断函数和一般的函数有什么不同?
答:C51编译器允许用C51创建中断服务函数,中断函数是由中断系统自动调用的。 中断函数的定义格式为:
函数类型 函数名 interrupt n using n 其中:
interrupt和using为关键字;
interrupt后面的n 为中断源的编号,即中断号; using后面的n所选择的寄存器组,取值范围为0~3。
定义中断函数时,using是一个选项,可以省略不用。如果不用using选项,则由编译
器选择一个寄存器组作为绝对寄存器组。
8051的中断过程通过使用interrupt关键字和中断号(0~31)来实现,中断号告诉编译器中断函数的入口地址。
9.C51采用什么形式对绝对地址进行访问?
绝对地址的访问包括片内RAM、片外RAM及I/O的访问。C51提供了两种比较常用的访问绝对地址的方法。
(1)绝对宏
(2)_at_关键字
6
可以使用关键字_at_对指定的存储器空间的绝对地址进行访问
10.按照给定的数据类型和存储类型,写出下列变量的说明形式
答:
(1)在data区定义字符变量val1
char data vall;
(2)在idata区定义整型变量val2
int idata val2;
(3)在xdata区定义无符号字符型数组val3[4]。 unsigned xdata val3[4];
(4)在xdata区定义一个指向char类型的指针px。
char xdata *px;
(5)定义可位寻址变量flag。
bit flag;
11/13
(6)定义特殊功能寄存器变量P3。
Sfr P3=0xB0;
11.break和continue语句的区别是什么?
答:break语句用于从循环代码中退出,然后执行循环语句之后的语句,不再进入循环。 Continue语句用于退出当前循环,不再执行本轮循环,程序代码从下一轮循环开始执行,直到判断条件不满足为止。
和break的区别是该语句不是退出整个循环。
12.C51选择语句、循环语句包含那些?
答:参看课本P68~P77。
13.什么是重入函数?重入函数一般什么情况下使用,使用时有哪些需要注意的地方?
答: 多个函数可以同时使用的函数,称为重入函数。
通常情况下,C51函数不能被递归调用,也不能应用导致递归调用的结构。有此限制是由于函数参数和局部变量是存储在固定的地址单元中。重入函数特性允许你声明一个重入函数。即可以被递归调用的函数。
重入函数可以被递归调用,也可以同时被两个或更多的进程调用。重入函数在实时应用中及中断服务程序代码和非中断程序代码必须共用一个函数的场合中经常用到。
14.如何消除键盘的抖动?
答:由于按键是机械开关结构,所以当用手按下其中一个键时,往往会出现所按键在闭合位置和断开位置之间发 7
生跳几下后才会稳定到闭合状态的情况。在释放一个键时,也会出现类似的情况,这就是键的抖动,抖动的持续时间不一,但通常不会大于10ms。
若抖动问题不解决,就会引起对闭合键的多次读入。对于键抖动最方便的解决方法就是当发现有键按下后,不是立即进行扫描,而是延时大约10ms后再进行。由于一个键按下的时间一般会持续上百毫秒,所以延迟10ms后再扫描处理并不迟。
15.在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么?
答: (1)确定T/C的工作方式——编程TMOD寄存器;
(2)计算T/C中的计数初值,并装载到TH和TL;
(3)T/C在中断方式工作时,须开CPU中断和源中断——编程IE寄存器;
(4)启动定时器/计数器——编程TCON中TR1或TR0位。
16.外部中断源初始化步骤是什么?
外部中断源初始化
2个外部中断源:
/INT0中断,外部中断0请求,占用P3.2引脚,其中断请求号为0。
/INT1中断,外部中断1请求,占用P3.3引脚,其中断请求号为2。
(1)TCO寄存器中的IT0、IT1位
12/13
(2)IP寄存器中的PX0、PX1位
(3)IE寄存器中的EA、EX0、EX1位
五、读程序、编程序
1.第四章 中断:例4-1 P104 例4-9 P116 例4-10 P117
定时:例4-16 P123 例4-17 P124 例4-18 P126
2.第五章 例5-9 P154 例5-10 P155 例5-11 P157
3.第六章 静态: 例6-1 P169 动态: 例6-3 P171
独立式键盘:例6-6 P178 矩阵式键盘:例6-7 P181
LED阵列:例6-10 P187 LCD1602:例6-12 P194
4.第七章 D/A:例7-4 P208 A/D:例7-6 P213
8
版权声明:本文标题:c51复习题(2) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1706412345a506125.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论