C51单片机复习题简答题.docx
《C51单片机复习题简答题.docx》由会员分享,可在线阅读,更多相关《C51单片机复习题简答题.docx(26页珍藏版)》请在冰豆网上搜索。
![C51单片机复习题简答题.docx](https://file1.bdocx.com/fileroot1/2023-2/4/f40dca66-6276-4651-b31f-83049153fa8a/f40dca66-6276-4651-b31f-83049153fa8a1.gif)
C51单片机复习题简答题
一、问答题
1.简述C51语言和汇编语言的比较
使用C51语言进行嵌入式系统的开发,有着汇编语言所不可比拟的优势:
①编程调试灵活方便;
②生成的代码编译效率高;
③模块化开发;
④可移植性好;
⑤便于项目的维护;
2.简述单片机的C语言的特点
单片机的C语言的特点主要体现在以下几个方面:
①无需了解机器硬件及其指令系统,只需初步了解51的存储器结构;
②C51能方便的管理内部寄存器的分配、不同存储器的寻址和数据类型等细节问题,但对硬件控制有限;而汇编语言可以完全控制硬件资源;
③C51在小应用程序中,产生的代码量大,执行速度慢;但在较大的程序中代码效率高;
④C51程序由若干函数组成,具有良好的模块化结构,便于改进和扩充;
C51程序具有良好的可读性和可维护性;而汇编语言在大应用程序开发中,开发难度增加,可读性差;
C51有丰富的库函数,可大大减少用户的编程量,显著缩短编程与调试时间,大大提高软件开发效率;
⑦使用汇编语言编制的程序,当机型改变时,无法直接移植使用,而C语言程序是面向用户的程序设计语言,能在不同机型的机器上运行,可移植性好。
3.哪些变量类型是51单片机直接支持的?
答:
C51编译器支持的数据类型有:
位型()、无符号字符型()、有符号字符型()、无符号整型()、有符号整型()、无符号长整型()、有符号长整型()、浮点型()和指针型等。
C51编译器支持的数据类型、长度和值域如表1-1所示。
表1-1C51的数据类型
数据类型
长度
长度
值域
1
0,1
8
1
0~255
8
1
-128~127
16
2
0~65535
16
2
-32768~32767
32
4
0~4294967295
32
4
-2147483648~2147483647
32
4
±1.17638~±3.4038(6位数字)
64
8
±1.17638~±3.4038(10位数字)
一般指针
24
3
存储空间0~65535
4.简述C51的数据存储类型
答:
我们都知道,8051单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区。
8051单片机内部的数据存储区是可读写的,8051派生系列最多可有256字节的内部数据存储区,其中低128字节可直接寻址,高128字节(从0x80到0)只能间接寻址,从20H开始的16字节可位寻址。
内部数据区可分为3个不同的存储类型:
、和。
外部数据区也是可读写的,访问外部数据区比访问内部数据区慢,因为外部数据区是通过数据指针加载地址来间接访问的。
C51提供两种不同的存储类型和访问外部数据。
程序存储区是只能读不能写。
程序存储区可能在8051单片机内部或者在外部或者内外都有,这由8051单片机的硬件决定。
C51提供了存储类型来访问程序存储区。
每个变量可以明确地分配到指定的存储空间,对内部数据存储器的访问比对外部数据存储器的访问快许多,因此应当将频繁使用的变量放在内部存储器中,而把较少使用的变量放在外部存储器中。
各存储区的简单描述如表1-2所示。
表1-2C51存储类型与8051存储空间的对应关系
存储区
描述
片内的低128字节,可在一个周期内直接寻址
片内的位寻址区,16字节
片内的256字节,必须采用间接寻址
外部数据存储区,使用间接寻址
外部存储区的256个字节,通过P0口的地址对其寻址。
使用,需要两个指令周期
程序存储区,使用寻址。
以上介绍的是C51的数据存储类型,C51存储类型及其大小和值域如表1-3所示。
表1-3C51存储类型及其大小和值域
存储类型
长度
长度
值域
8
1
0~255
8
1
0~255
8
1
0~255
16
2
0~65535
16
2
0~65535
5.简述C51对51单片机特殊功能寄存器的定义方法
答:
51通过其特殊功能寄存器()实现对其内部主要资源的控制。
51单片机有21个,有的单片机还有更多的,它们分布在片内的高128字节中,其地址能够被8整除的一般可以进行位寻址。
关于51单片机的特殊功能寄存器参看附录A。
对只能用直接寻址方式访问。
C51允许通过使用关键字、或直接引用编译器提供的头文件来实现对的访问。
(1)使用关键字定义
为了能直接访问特殊功能寄存器,C51提供了一种自主形式的定义方法。
这种定义方法与标准的C语言不兼容,只适用于对8051系列单片机进行C编程。
这种定义的方法是引入关键字“”,语法如下:
特殊功能寄存器名字=特殊功能寄存器地址;
如:
0x98;/*串口控制寄存器地址98H*/
0X89;/*定时器/计数器方式控制寄存器地址89H*/
(2)通过头文件访问
8051系列单片机的寄存器数量与类型是极不相同的,因此对单片机特殊功能寄存器的访问可以通过对头文件的访问来进行。
为了用户处理方便,C51编译器把51单片机的常用的特殊功能寄存器和特殊位进行了定义,放在一个“51”或“52”的头文件中。
当用户要使用时,只需要在使用之前用一条预处理命令“<51>”把这个头文件包含到程序中,然后就可以使用特殊功能寄存器名和特殊位名称了。
用户可以通过文本编辑器对头文件进行增减。
(3)中位定义
在8051单片机的应用问题中,经常需要单独访问中的位,C51的扩充功能使之成为可能,使用关键字“”可以访问位寻址对象。
特殊位()的定义,像一样不与标准C兼容。
与定义一样,用关键字“”定义某些特殊位,并接受任何符号名,“=”号后将绝对地址赋给变量名。
这种地址分配有三种方法:
第一种方法:
位名=特殊功能寄存器名^位置;
当特殊功能寄存器的地址为字节(8位)时,可使用这种方法。
特殊功能寄存器名必须是已定义的的名字。
“^”后的“位置”语句定义了基地址上的特殊位的位置。
该位置必须是0~7的数。
如:
第二种方法:
位名=字节地址^位置;
这种方法是以一个整常数为基地址,该值必须在0x80~0之间,并能被8整除,确定位置的方法同上。
第三种方法:
位名=位地址;
这种方法将位的绝对地址赋给变量,地址必须在0x80~0之间。
6.C51的、、有什么区别?
答:
、、是表明数据的存储类型,
是指片内的低128字节,可在一个周期内直接寻址;
是指片内的位寻址区,16字节;
是指片内的256字节,必须采用间接寻址。
7.C51中的中断函数和一般的函数有什么不同?
答:
C51编译器允许用C51创建中断服务函数,中断函数是由中断系统自动调用的。
中断函数的定义格式为:
函数类型函数名nn
其中:
和为关键字;
后面的n为中断源的编号,即中断号;
后面的n所选择的寄存器组,取值范围为0~3。
定义中断函数时,是一个选项,可以省略不用。
如果不用选项,则由编译器选择一个寄存器组作为绝对寄存器组。
8051的中断过程通过使用关键字和中断号(0~31)来实现,中断号告诉编译器中断函数的入口地址。
8.按照给定的数据类型和存储类型,写出下列变量的说明形式
(1)在区定义字符变量1
答:
;
(2)在区定义整型变量2
答:
2;
(3)在区定义无符号字符型数组3[4]。
答:
3[4];
(4)在区定义一个指向类型的指针。
答:
*;
(5)定义可位寻址变量。
答:
;
(6)定义特殊功能寄存器变量P3。
答:
P3=00;
9.什么是重入函数?
重入函数一般什么情况下使用,使用时有哪些需要注意的地方?
答:
多个函数可以同时使用的函数,称为重入函数。
通常情况下,C51函数不能被递归调用,也不能应用导致递归调用的结构。
有此限制是由于函数参数和局部变量是存储在固定的地址单元中。
重入函数特性允许你声明一个重入函数。
即可以被递归调用的函数。
重入函数可以被递归调用,也可以同时被两个或更多的进程调用。
重入函数在实时应用中及中断服务程序代码和非中断程序代码必须共用一个函数的场合中经常用到。
10.如何消除键盘的抖动?
答:
由于按键是机械开关结构,所以当用手按下其中一个键时,往往会出现所按键在闭合位置和断开位置之间发生跳几下后才会稳定到闭合状态的情况。
在释放一个键时,也会出现类似的情况,这就是键的抖动,抖动的持续时间不一,但通常不会大于10。
若抖动问题不解决,就会引起对闭合键的多次读入。
对于键抖动最方便的解决方法就是当发现有键按下后,不是立即进行扫描,而是延时大约10后再进行。
由于一个键按下的时间一般会持续上百毫秒,所以延迟10后再扫描处理并不迟。
11.在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么?
答:
(1)确定的工作方式——编程寄存器;
(2)计算中的计数初值,并装载到和;
(3)在中断方式工作时,须开中断和源中断——编程寄存器;
(4)启动定时器/计数器——编程中1或0位。
第1章单片机硬件系统
1.什么是单片机、单片机系统、单片机应用系统?
答:
单片机:
又名微控制器,是将微型计算机中的中央处理器()、随机存储器()、只读存储器()及口电路等主要部件,结合连接它们的总线集成在一块芯片上,即它是一块智能芯片。
单片机系统:
单片机本身只是一块芯片,它并不能集成计算机的全部电路,因此需要加上时钟、复位电路等,才能构成单片机最小应用系统;若最小系统资源不足时,还需扩展外围电路和外围芯片等,从而构成能满足应用要求的单片机系统。
单片机应用系统:
它是为实际的控制应用而设计的,该系统与控制对象结合在一起,是满足嵌入式对象要求的全部电路系统。
它在单片机的基础上配置了前/后向通道接口电路、人机交互通道接口电路、串行通信接口等面向对象的接口电路。
另单片机系统和单片机应用系统都是软硬件结合的系统,缺一不可。
2.单片机有哪些特点?
答:
单片机的特点很多,主要是体积小品种多,价格便宜,可靠性高,使用灵活,还有
(1)突出控制功能
(2)和分开(3)单片机资源具有广泛的通用性(4)易于扩展、、定时/计数器、中断源等资源。
3.为什么说89C51单片机是51系列的兼容机?
89C51单片机有何优点?
答:
89系列单片机是将存储器技术和51系列单片机的基本内核相结合的单片机,且管脚也与之兼容,可以直接代换,所以说89C51是51系列的兼容机。
89C51单片机是89系列机的标准型单片机,它的优点主要有:
内是存储器,已获得广泛应用的80C51兼容,采用静态逻辑设计,操作频率范围宽,具有两个软件选择的节电模式等。
4.89C51单片机由哪些主要功能部件组成?
答:
51系列——89C51单片机由下列部分组成:
1个8位、128B的、4K程序存储器、18个特殊功能寄存器、4个并行口、1个串行口、2个定时计数器和中断系统等资源。
补充:
52系列单片机的内部资源有哪些?
答:
52系列单片机内部有:
1个8位、128B的、8K程序存储器、21个特殊功能寄存器、4个并行口、1个串行口、3个定时计数器和中断系统等资源。
5.简述单片机应用研发过程和研发工具(了解)。
答:
任务分析→方案论证→硬件设计→软件设计→仿真调试→实物制作与调试。
研发工具:
调试仿真软件、在线仿真器、编程器或下载器、仿真平台、教学实验板等。
6.89C51单片机内部结构主要有哪些部件组成?
它们的主要功能是什么?
答:
89C51单片机内部结构主要有:
(1)中央处理器,是单片机的核心,完成运算和控制功能;
(2)内部数据存储器(256字节),前面128个单元007存储内部数据,后面128个单元80被专用寄存器占用,用来实现对片内各部件进行管理、控制、监视;
(3)程序计数器,是一个16位专用寄存器,其内容为下一条执行指令的地址;
(4)内部程序存储器(4K),用于存储程序、原始数据、表格等;
(5)4个并行口(8位),实现数据的并行输入输出;
(6)串行通信口,实现单片机和其他数据设备之间的串行数据传送;
(7)2个定时器/计数器(16位),实现定时或计数功能;
(8)中断控制系统,共5个中断源,分高低两个优先级;
(9)一个片内振荡器和时钟电路,为单片机产生时钟脉冲序列;
(10)总线,用于连接各个部件和单片机系统的扩展。
7.请将89C51的40个引脚按4类(电源、时钟、控制和引脚)分类。
答:
电源
(2):
接地端,接正电源线;
时钟
(2):
1,2
控制(4):
复位输入,()地址锁存允许/编程脉冲,外读选通信号,()/内外选择/编程电源
引脚(32):
P03并行8位口
8.89C51单片机引脚、、、的功能是什么?
答:
是片内外选择端,的寻址范围为64,而89C51内部只有4,当不够用时可在外扩展。
当信号为低电平时,指访问外部;当为高电平时,则先访问内部,当值超过4时自动转向外部中执行。
复位信号,当此引脚上的信号出现至少两个机器周期的高电平将使单片机复位。
地址锁存控制信号,当系统扩展时,用于控制把P0口输出的低8位地址送入锁存器存起来,以实现低位地址和数据的分时传送。
外部的读选通信号,在访问外部时,每个机器周期两次有效(低电平),但在此期间内,每当访问外部数据存储器时,这两次有效的将不出现。
8-
(1)说明51单片机的外部引脚的作用?
答:
1、引脚为访问内/外部程序存储器控制信号。
引脚高电平时,对的读操作先从内部4开始,当地址范围超出4时自动切换到外部进行;
当引脚为低电平,对的读操作限定在外部程序存储器。
9.(了解)什么是单片机的振荡周期、状态时钟周期、机器周期和指令周期?
它们之间有什么关系?
答:
单片机是按一定的时序进行工作的,而时序是通过1和2引脚跨接振荡器与内部振荡电路共同产生固定频率的波形。
我们把振荡频率的倒数称振荡周期。
状态时钟周期是指单片机时钟信号的周期,是振荡周期的两倍,又称状态周期。
一个机器周期由6个状态组成,即机器周期等于6个状态时钟周期或等于12个振荡周期。
指令周期是指单片机执行一条指令所占用的时间,根据指令的不同,可包含有1、2、4等机器周期的倍数。
10.当89C51单片机外接晶振为4时,其振荡周期、状态时钟周期、机器周期、指令周期的值各为多少?
答:
振荡周期为0.25μs,状态时钟周期为0.5μs,机器周期为3μs,指令周期根据指令而不同可能是3μs、6μs、12μs等。
11.51单片机扩展系统中,外部程序存储器和数据存储器共用16位地址线和8位数据线,扩展空间都为64,为什么两个存储空间不会发生冲突?
答:
51单片机是通过不同的信号来对片外数据存储器和程序存储器进行读、写的:
片外数据存储器的读、写:
通过和信号和片选信号等来控制;
程序存储器的读:
通过信号控制。
此外,通过用不同的命令(指令)来实现。
12、什么是堆栈?
简述单片机的堆栈处理过程。
什么是堆栈指针寄存器?
复位后值是多少?
答:
堆栈是:
按着“先进后出”的原则进行操作的一段片内数据存储器区域。
堆栈处理过程:
◆数据存入栈时,指针先加1,再存入数据;
◆数据出栈时,先取数据,再把指针减1。
堆栈指针就是指向堆栈区域的第一个存储单元地址(也称“栈顶”),向堆栈中每存一个数,中的值就自动加1,每取一个数就自动减1,指针始终指向栈顶地址。
复位后,值07H,这样堆栈就要从08H开始,而08H属于工作寄存器区,若程序要用到这些寄存器组则要将设置大些,因此堆栈最好在内部的(307)中开辟。
13.(了解)89C51单片机的空间中,这6个地址(0、03H、0、13H、1、23H)有什么特殊的意义和用途?
用户应怎样合理安排?
答:
他们都是特殊的地址单元,其中0000H是单片机复位后,系统开始取指、执行指令的地址,即单片机复位后值为0000H;而03H、0、13H、1、23H是单片机5个中断服务子程序的入口地址。
相邻中断入口地址间隔8个单元。
当程序使用中断时,在入口地址处安放一条跳转指令,而相应的中断服务子程序从转移地址开始安放,若中断服务子程序小于等于8个单元可直接存在入口地址开始的8个单元内。
若没有用到中断功能,这些单元就可以作为一般的程序存储器用。
14.位地址3和字节地址3有何区别?
位地址3具体在片内中什么位?
答:
字节地址3是内低128字节中的一个字节存储单元。
而位地址是针对可位寻址区域而言的,位寻址区占用了字节地址的202共16个字节,字节地址20H中的20H.0~20H.7位地址是0008H,因此位地址3是字节地址27H中的第7位。
15.程序计数器寄存器的作用?
复位后中值各为何?
答:
程序计数器时一个16位的计数器,其内容为将要执行的指令的首地址,寻址范围达64,具有自动加1功能,以实现程序的顺序执行。
不可寻址,无法对它进行读写。
复位后,0000H,使单片机从0000H单元开始执行。
16.画图说明89C51单片机的存储空间结构。
答:
程序存储器结构内存储器结构
补充:
8051单片机内部的存储器结构
存储器是计算机的重要硬件之一,单片机存储器结构有两种类型:
一种是程序存储器和数据存储器统一编址,属于普林斯顿结构。
另一种是程序存储器和数据存储器分开编址的哈佛结构。
51采用的是哈佛结构。
19、8051单片机的内部的结构
内部256B共分为:
(低128B)和特殊功能寄存器区(高128B)(参考教材P15)
51内部有128个字节的数据存储器,它们可以作为数据缓冲器、堆栈、工作寄存器和软件标志等使用。
内部地址为00H~7,不同的地址区域内,规定的功能不完全相同。
低128字节地址空间的中不同的地址区域功能分配为:
①工作寄存器区(001)
单片机的内部工作寄存器以形式组成,即工作寄存器包含在内部数据存储器中。
地址为00H~1单元,内部的低32字节分成4个工作寄存器区,每一个区有8个工作寄存器,编号为R0~R7。
②位寻址空间(202)
不仅对内部的20H~2这16个单元有字节寻址功能,而且具有位寻址功能(可以单独读写某一位)。
给这128位赋以了位地址为00H~7,能直接寻址这些位。
③堆栈和数据缓冲区(307)
原则上51单片机的堆栈可以设在内部的任意区域内,但是一般设在30H~7的范围内。
栈顶的位置由堆栈指针指出。
④特殊功能寄存器区(高128B,即80H~)
在高128B区中,在80H~的地址空间内离散地分布着18个特殊功能寄存器(),并允许像访问内部一样方便地访问特殊功能寄存器。
例如:
四个口P03、、、、、、0、0等。
(参考教材P17)
(补充:
8052有21个特殊功能寄存器。
)
输入/输出()口及其简单应用
1.89C51四个口使用时有哪些分工和特点?
试作比较,并填写下表。
口
相同的结构
不同的结构
基本功能
第二功能
字节地址
位地址
范围
驱动能力
P0
都有锁存器、输入缓冲器和输出驱动器
多路选择开关
输入输出
数据线
/低8位地址线
80H
80~87H
强,8个输入,8个引脚最大吸收电流26
P1
输入输出
90H
90~97H
4个输入,8个引脚最大吸收流15
P2
多路选择开关
输入输出
高8位地址线
A0H
A07H
P3
选择输出功能
输入输出
第二功能
B0H
B07H
2.89C51的4个口作为输入口时,为什么要先写“1”?
答:
89C51读操作时,为读入正确的引脚信号,必须先保证场效应管截止。
因为场效应管导通,引脚电平为0,显然,从引脚输入的任何外部信号都被场效应管强迫短路,严重时可能因有大电流流过场效应管,而将它烧坏。
为保证场效应管截止,必须先向锁存器写“1”,使场效应管截止。
30口作输出口时,为什么要外加上拉电阻?
答:
因为当P0口作数据传输作用时,输出驱动器是开漏电路,需要外加上拉电阻。
4.为什么外扩存储器时,P0口要外接锁存器,而P2口却不接?
答:
因为P0口8位是地址线与数据线分时复用的,即P0口8位先输出外部数据存储器的低8位地址到锁存器中锁存,然后再输出8位数据到数据总线上。
P2口8位输出的数据只作为地址总线的高8位,所以不需要连接锁存器。
5.为什么当P2口作为扩展程序存储器的高8位地址后,就不宜作口用?
答:
P2口虽然有地址/数据的双重作用,可是在同一时间只能在一个状态下工作,如果有外部,访问的操作连续不断,P2口作为高8位要不断的传送地址,因此不宜再作为数据传输用,如果是外,则根据对其读写的频繁度来决定是否将P2口作为数据传输。
6.单片机P3口各引脚的第二功能有哪些?
答:
单片机P3口各引脚复用的第二功能有:
串行通信(P3.03.1)、外部中断请求输入(P3.23.3)、外部计数脉冲(P3.43.5)和外部存储器的读写控制信号((P3.63.7)。
定时器/计数器与中断系统
1.与定时器/计数器工作相关的寄存器是哪两个?
分别列表说明它们各控制位的含义和功能是什么?
答:
与定时器/计数器工作相关的两个特殊寄存器是和,各有8位。
(1)是工作方式寄存器,高四位和低四位分别用于控制T0和T1,作用相同,因此这里就介绍低四位,它们分别是:
M0,M1这两位用于工作方式选择,对应于定时器状态而言;(T)位是计数/定时方式选择位;是门控位,用于定时器启动信号源的选择。
(2)是控制寄存器,其中低四位用于外部中断信号控制,高四位用于定时器/计数器控制,其中:
1定时器/计数器1启动标志;0定时器/计数器0启动标志。
2.简述8051的定时/计数器T0和定时/计数器T1的工作方式分别有哪几种?
答:
定时/计数器T0的工作方式有:
工作方式
各方式功能说明
方式0
13位定时/计数器
方式1
16位定时/计数器
方式2
8位自动重置定时/计数器
方式3
两个8位的定时/计数器
定时/计数器T1的工作方式
工作方式
方式说明
0
13位定时/计数器
1
16位定时/计数器
2
8位自动重置定时/计数器
重要知识点:
晶振频率
时钟周期(也称为振荡周期)1
1状态周期=2拍2*时钟周期
1机器周期=6拍6*状态周期=12*时钟周期
补充说明:
定时器/计数器的最大定时容量、定时容量、初值之间的关系如何?
答:
定时器/计数器的最大定时容量是指从0开始到最终溢出的容量,在方式0和方式2下最大定时容量分别为213=8192和28=256,
而定时容量是根据当前初值到最终溢出的容量;而初值就是指当前定时器/计数器在定时/计数开始之前赋予的数值,定时容量就是最大容量和初值的差。
3、晶振60工作在模式1,最大定时的时长是多少?
答:
最大定时=(0初值)×时钟周期×12
=(216-0)×1/6×12=131072μs
补充:
晶振120工作在模式0、模式1和模式2,最大定时的时长分别是多少?
答:
在模式0:
最大定时=(0初值)×时钟周期×12
=(213-0)×1/12×12
=8192μs
在模式1:
最大定时=(0初值)×时钟周期×