各章习题答案 2.docx
《各章习题答案 2.docx》由会员分享,可在线阅读,更多相关《各章习题答案 2.docx(27页珍藏版)》请在冰豆网上搜索。
各章习题答案2
第一章习题
1,什么是单片机?
8位单片机和32位单片机的典型机型是什么机器?
单片机就是在一片半导体硅片上集成了中央处理单元(CPU)、存储器(RAM/ROM)和各种I/O接口的微型计算机。
这样一块集成电路芯片具有一台微型计算机的功能,因此被称为单片微型计算机,简称单片机。
2,什么是嵌入式控制系统?
它有哪些应用?
单片机主要应用在测试和控制领域,由于单片机在使用时,通常处于测试和控制领域的核心地位并嵌入其中,因此我们也常把单片机称为嵌入式控制器(EmbeddedMicroControllerUnit),把嵌入某种微处理器或单片机的测试和控制系统称为嵌入式控制系统(EmbeddedControlSystem)。
3,什么是交叉开发环境?
MCS-51单片机的交叉开发环境有哪两种?
在“宿主机”上运行的开发工具软件,我们也称这套开发工具软件为交叉编译环境或集成开发环境,
4,什么是“宿主机”?
什么是“目标机”?
做为嵌入式控制器的单片机,不管是8位单片机还是16位单片机或32位单片机,由于受其本身资源限制,其应用程序都不能在其本身上开发,我们开发其应用程序,还需要一台通用计算机,运行交叉编译环境,我们也称这台通用计算机为“宿主机”,称做为嵌入式控制器的单片机为“目标机”,
5,简述嵌入式控制系统的开发过程。
应用程序在“宿主机”上开发,在“目标机”上运行。
第二章习题
1,MCS-51单片机有几个系列?
它们的区别是什么?
有51和52两个系列。
对于51系列,主要有8031、8051、8751三种机型,它们的引脚和指令系统完全相同,只是片内程序存储器的容量不同,8031芯片内部没有ROM,8051芯片内部代4KB的ROM,8751芯片内部代4KB的EPROM。
2,MCS-51单片机有哪些特性?
1.8位CPU。
2.片内代128B的数据存储器。
3.程序存储器寻址空间为64KB。
4.数据存储器寻址空间为64KB。
5.128个用户可以按“位”寻址的位空间。
6.21个特殊功能寄存器。
7.4个8位的I/O口。
8.两个16位的定时/计数器。
9.两个优先级的5个中断源。
10.一个全双工的串行接口。
11.片内带振荡器电路,频率范围1.2M~12M,外加晶振就可工作。
12.单一+5V电源。
3,MCS-51单片机有几个并行口?
它们的用法是什么?
P0
P3四个并行口,P0口包括P0.0~P0.7共8个引脚,在不扩展I/O口和片外存储器时,做I/O口使用;在有I/O扩展或片外存储器时,分时做8位数据线和地址总线的低8位(A0~A7)。
P1口包括P1.0~P1.7共8个引脚,是MCS-51单片机唯一的专用I/O口线。
在简单的嵌入式控制系统中,经常用它来控制外围设备。
P2口包括P2.0~P2.78个引脚,在系统进行存储器扩展时做地址总线的高8位(A8~A15),如果存储器扩展时不需要16位地址总线,如扩展容量小于64K时,省下的P2口可做普通I/O口线。
P3口包括P3.0~P3.78个引脚,除做普通I/O口线外,每个引脚还有第二功能,详见后面介绍。
4,P0口做为数据线,如何分时做地址总线的低8位?
利用ALE信号,该信号是地址锁存信号输出端,ALE在每个机器周期输出两次,在访问片外程序存储器时,下降沿用于锁存P0口输出的地址总线低8位(A0~A7),在访问片外数据存储器时,ALE脉冲会跳空一次
5,MCS-51单片机的数据线、控制线和地址线有哪些?
数据总线宽度为8位,由P0口提供。
地址总线宽度为16位,可以访问64K的存储器空间。
由P0经锁存器提供地址总线的低8位(A0~A7),由P2提供地址总线的高8位(A8~A15)。
控制总线由P3口在第二功能状态下提供,此外还有RST、
、ALE和
四根控制线。
6,MCS-51单片机存储器结构和IBM_PC机有什么不同?
单片机程序存储器和数据存储器分开。
7,信号线
有什么作用?
是片外程序存储器选择端,
=0,选片外程序存储器,
=1,选片内程序存储器。
8,MCS-51单片机数据存储器地址在什么情况下会重叠?
MCS-51系列单片机的片内数据存储器除了RAM块外,还有特殊功能寄存器(SFR)块。
对于51子系列,前者有128个字节,编址为0X00~0X7F;后者也占128个字节,编址为0X80~0XFF;二者连续不重叠。
对于52子系列,前者有256字节,编址为0X00~0XFF;后者也有128字节,编址为0X80~0XFF;后者与前者的后128字节编址重叠,访问时通过不同的指令相区分。
9,MCS-51单片机特殊功能寄存器有哪些?
如何按字节或位来访问?
CPU专用寄存器:
累加器A,寄存器B,程序状态寄存器PSW,堆栈指针SP,数据指针DPTR。
并行接口:
P0~P3
串行接口:
串行控制寄存器SCON,串口数据缓冲器SBUF,电源控制寄存器PCON。
定时/计数器:
方式寄存器TMOD,控制寄存器TCON,初值寄存器TH0、TL0;TH1、TL1。
中断系统:
中断允许寄存器IE,中断优先寄存器IP。
特殊功能寄存器在C中引用方法见表2-3
10,简述什么是8031、8051、8751最小系统?
所谓最小系统,是指一个真正可用的单片机最小配置系统。
对于单片机内部资源已能满足系统需要的,可直接采用最小系统。
详见2.3节。
第三章习题
1,STC89C51/STC89C52单片机在硬件结构上和MCS-51的8051/8751有哪些不同?
STC89C51/89C52单片机继承了MCS-51单片机的所有功能,在芯片引脚(见图2-1)和系统指令方面完全兼容,同时增加了许多新功能,如WDT技术(watchdog,看门狗定时器)、ISP(In_SystemProgramming,在系统编程,无须将存储芯片从嵌入式设备拔出既可对其编程,简称ISP)、SPI(SerialPeripheralInterface,串行外设接口)等技术,时钟频率提高到80MHz。
STC89C51/89C52单片机在MCS-51单片机基础上增加了一个P4口,该口的使用同P1、P2、P3口一样,口地址是0XE8。
STC89C51将MCS-51系列中的8751的4KB片上EPROM改为4KB的Flash,使得STC89C51可以不使用仿真器在线编程或使用仿真器重复编程。
2,什么是ISP,什么是IAP?
它们在系统调试时有什么作用?
ISP(In_SystemProgramming,在系统编程,无须将存储芯片从嵌入式设备拔出既可对其编程,简称ISP),IAP(In-ApplicationProgramming)是应用在FLASH程序存储器基础上的一种编程模式,它可以在应用程序正常运行情况下,通过IAP程序对另外一段程序FLASH空间进行读/写操作,甚至可以控制对某段、某字节的读/写操作,这给数据存储和硬件现场升级带来了更大的灵活性。
IAP和ISP功能是STC89C51/89C52单片机的特别重要功能。
4,在满足系统要求情况为什么单片机要尽量采用较低频率?
因为低频率可以降低系统功耗,减少发热,增加系统稳定性。
5,低电平电源的单片机适用在什么场合?
在便携式、袖珍式、电池供电的手持产品中应选这类单片机。
6,最小系统中晶振的傍路电容有什么作用,如何选择?
帮助起振,其值大小对振荡频率有一定影响。
第四章习题
1,C51与C语言不同的数据类型有几个?
都是什么?
C51的数据类型分为基本数据类型和组合数据类型,情况与标准C中的数据类型基本相同,其中float型与double型相同,另外,C51中还有专门针对于MCS-51单片机的特殊功能寄存器型和“位”类型。
2,C51存储器类型有几个?
它们表示的存储区是什么?
存储器类型是用于指明变量所处的单片机的存储器区域情况。
存储器类型与存储种类完全不同。
C51编译器能识别的存储器类型有以下几种,如表4-2所示。
3,C51存储种类有几个?
有几个与C语言不同?
存储种类是指变量在程序执行过程中的作用范围。
C51变量的存储种类有四种,分别是自动(auto)、外部(extern)、静态(static)和寄存器(register)。
4,C51编译器支持哪三种存储模式?
实际使用是哪种?
有几种方法来设置存储模式?
C51编译器支持三种存储模式:
SMALL模式、COMPACT模式和LARGE模式。
不同的存储模式对变量默认的存储器类型不一样。
5,绝对地址的访问需引用哪个头文件?
能访问几种地址?
数据宽度是多少?
IBP-PC机对外部设备进行端口管理,KeilC51也是这样,为了能对外部设备进行I/O操作,C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。
规定只能以无符号数方式访问,定义了8个宏定义,其函数原型如下:
#defineCBYTE((unsignedcharvolatile*)0x50000L)
#defineDBYTE((unsignedcharvolatile*)0x40000L)
#definePBYTE((unsignedcharvolatile*)0x30000L)
#defineXBYTE((unsignedcharvolatile*)0x10000L)
#defineCWORD((unsignedintvolatile*)0x50000L)
#defineDWORD((unsignedintvolatile*)0x40000L)
#definePWORD((unsignedintvolatile*)0x30000L)
#defineXWORD((unsignedintvolatile*)0x20000L)
这些函数原型放在absacc.h文件中。
使用时须用预处理命令把该头文件包含到文件中,形式为:
#include。
6,C51程序结构有几种,各是什么?
1.顺序结构
2.选择结构
3.循环结构
7,C51程序循环结构分为哪两种?
当型循环结构和直到型循环结构
8,if语句是C51中的一个基本条件选择语句,它通常有哪三种格式?
1.if(表达式){语句;}
2.if(表达式){语句1;}else{语句2;}
3.if(表达式1){语句1;}
elseif(表达式2)(语句2;)
elseif(表达式3)(语句3;)
……
elseif(表达式n-1)(语句n-1;)
else{语句n}
9,什么是循环的嵌套?
C51允许几层?
它们多用在何处?
在一个循环的循环体内又包含一个完整的循环结构,这种两重循环结构叫循环的嵌套,在C51中,允许三层循环嵌套,循环嵌套多用在软件延时程序中。
10,break和continue语句有什么不同?
它们都用在什么地方?
break和continue语句通常用于循环结构中,用来跳出循环结构。
11,return语句一般放在程序的什么位置?
可以省略否?
return语句一般放在函数的最后位置,用于终止函数的执行,并控制程序返回调用该函数时所处的位置。
12,按给定的变量数据类型和存储类型定义变量val:
(1)data,ASCII字符
chardatavar
(2)idata,整型
intidatavar
(3)xdata,无符号字节
unsignedcharxdatavar
(4)xdata,char指针
charxdata*var
(5)位寻址变量
bitvar
(6)特殊功能寄存器变量
sbitP1=0x90
(7)P0的bit0位
sbitP1_0=P1^0
13,写出下列逻辑表达式结果,设A=3,B=4,C=5。
(1)A+B>C&&B==C
0
(2)A||B+C&&B-C
1
(3)!
(A>B)&&!
C||1
1
(4)!
(A+B)+C-1&&B+C
1
14,写出程序运行结果。
#include
externserial_initial();//串口初始化,省略
main()
{
intx,y,z;
serial_initial();
printf(“inputdatax,y\n”);
scanf(“%d,%d,”,&x,&y);
printf(“\nxyxyx>=yx!
=yx==y”);
printf(“\n”);
printf(\n%3d,%3d”,x,y);
ifz=xelseifz=x<=yprintf(“%5d”,z);
elseifz=x>yprintf(“%5d”,z);
elseifz=x!
=yprintf(“%5d”,z);
elseifz=x=yprintf(“%5d”,z);
while
(1);
}
程序运行结果:
inputdatax,y
5
6
xyxyx>=yx!
=yx==y
565
第五章习题
1,说明函数定义的一般格式。
函数定义的一般格式如下:
函数类型函数名(形式参数表)[reentrant][interruptm][usingn]
2,函数定义格式中,函数的类型、函数的形式参数表有什么作用?
函数类型说明了函数返回值的类型。
形式参数表用于列录在主调函数与被调用函数之间进行数据传递的形式参数。
3,什么函数声明时须带extern?
如果声明的函数不在文件内部,而在另一个文件中,声明时须带extern,指明使用的函数在另一个文件中。
4,什么叫函数的递归调用?
它多用在什么地方?
递归调用是嵌套调用的一个特殊情况。
如果在调用一个函数过程中又出现了直接或间接调用该函数本身,则称为函数的递归调用。
5,什么叫函数的嵌套?
它使用时有什么限制?
在一个函数的调用过程中调用另一个函数。
6,什么叫局部变量?
什么叫全局变量?
它们使用时有什么不同?
在一个函数内部定义的变量是局部变量,它只在本函数内部有效。
在所有函数外部定义的变量叫外部变量,外部变量也叫全局变量。
它的有效范围是定义变量的位置开始到整个程序的结束。
7,中断服务函数和一般函数在定义和函数返回值方面有什么不同?
(1)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。
(2)中断函数没有返回值,如果企图定义一个返回值将得不到正确的结果。
(3)在任何情况下都不能直接调用中断函数,否则会产生编译错误。
第六章习题
1,C51中如何定义数组?
如何给数组赋初值?
如何引用数组中元素?
数组的定义:
数据类型说明符数组名[常量表达式][={初值,初值……}]
“初值部分”用于给数组元素赋初值,这部分在数组定义时属于可选项。
对数组元素赋值,可以在定义时赋值,也可以定义之后赋值。
在定义时赋值,后面须带等号,初值须用花括号括起来,括号内的初值两两之间用逗号间隔,可以对数组的全部元素赋值,也可以只对部分元素赋值。
初值为0的元素可以只用逗号占位而不写初值0。
C51规定在引用数组时,只能逐个引用数组中的各个元素,而不能一次引用整个数组。
2,C51中字符数组和字符串有什么区别?
用来存放字符数据的数组称为字符数组,它是C51中常用的一种数组。
字符数组中的每一个元素都用来存放一个字符,也可用字符数组来存放字符串。
字符数组的定义与一般数组相同,只是在定义时把数据类型定义为char型。
C语言中没有字符串数据类型,定义字符串,只能通过定义字符数组来实现,在数组中最后一项加“\0”,就可以把该字符数组当成字符串使用。
就是说,字符数组有两种,最后一项有“\0”,就是字符串;没有“\0”就是普通字符数组。
3,C51数组中数据类型说明符有什么用途?
“数据类型说明符”说明了数组中各个元素存储的数据的类型。
4,什么是指针变量?
什么是变量的指针?
两者区别是什么?
变量的指针就是变量的地址,指针变量是指一个专门用来存放另一个变量地址的变量,它的值是指针。
5,指针变量的定义的一般形式为是什么?
数据类型说明符[存储器类型]*指针变量名;
其中:
“数据类型说明符”说明了该指针变量所指向的变量的类型。
“存储器类型”是可选项,它是C5l编译器的一种扩展,如果带有此选项,指针被定义为基于存储器的指针。
无此选项时,被定义为一般指针,这两种指针的区别在于它们占的存储字节不同。
6,指针变量的定义中数据类型说明符说明了什么?
“数据类型说明符”说明了该指针变量所指向的变量的类型。
7,指针变量的定义中“存储器类型”有什么用途?
“存储器类型”是可选项,它是C5l编译器的一种扩展,如果带有此选项,指针被定义为基于存储器的指针。
无此选项时,被定义为一般指针,这两种指针的区别在于它们占的存储字节不同。
8,一般指针在内存中占几个字节,各字节意义是什么?
一般指针在内存中占三个字节,第一个字节存存储器代码,具体如图6-1所示,第二和第三个字节存该指针存放的16位地址。
9,结构和联合是如何定义的?
它们有什么不同?
结构是一种组合数据类型,它是将若干个不同类型的变量结合在一起而形成的一种数据的集合体。
组成该集合体的各个变量称为结构元素或成员。
整个集合体使用一个单独的结构变量名。
“联合”组合类型也能够把不同类型的数据组合在一起使用,但它与结构又不一样,结构中定义的各个变量在内存中占用不同的内存单元,在位置上是分开的,而联合中定义的各个变量在内存中都是从同一个地址开始存放,即采用了所谓的“覆盖技术”。
这种技术可使不同的变量分时使用同一内存空间,提高内存的利用效率。
10,了解枚举数据类型的定义和用法。
枚举数据类型是一个有名字的某些整型常量的集合。
这些整型常量是该类型变量可取的所有的合法值。
枚举定义时应当列出该类型变量的所有可取值。
第七章习题
1,熟练掌握8255A的各引脚功能。
2,熟练掌握8255A的工作方式控制字的定义和设置。
3,熟练掌握8255AC口按位置位和复位控制字的定义和运用。
4,8255A有几种工作方式?
熟练掌握8255A的工作方式0。
A口有3种工作方式:
无条件输入输出方式、选通输入输出方式和双向选通输入输出方式。
B口2种工作方式:
无条件输入输出方式和选通输入输出方式。
当A口和B口工作于选通输入输出方式和双向选通输入输出方式时,C口中一部分线用做A口和B口输入输出的应答信号线,否则C口也可以工作在无条件输入输出方式。
5,熟练掌握8255A和单片机的连接和软件编程。
6,熟练掌握8155结构和工作方式。
7,熟练掌握8155控制字格式和设置。
8,熟练掌握8155状态字格式和使用。
9,8155有几种工作方式?
熟练掌握8155的I/O工作方式。
8155有三种工作方式
(1)存储器工作方式
存储器工作方式用于对片内256个字节RAM单元进行读写,如果
=0,IO/
=0,则可以通过AD0~AD7对8155片内RAM单元进行读写。
(2)基本I/O和选通I/O工作方式
基本I/O工作方式是我们使用最多的工作方式,在这种工作方式下,三个口做普通I/O。
选通I/O工作方式中,PA、PB做数据口,PC口做PA、PB口的联络信号。
其中:
PC0做A口的输入输出中断请求信号,向CPU申请输入输出中断;PC1做A口缓冲器满标志;PC2做A口选通输入。
PC3做B口的输入输出中断请求信号,向CPU申请输入输出中断;PC4做B口缓冲器满标志;PC5做B口选通输入。
(3)计数器/定时器工作方式
10,熟练掌握8155和单片机的连接和软件编程。
11,例7-5中,步进电机驱动程序在停止前应有减速,请加上软件减速程序。
以例7-5中单四拍工作方式为例
if(mode==3)
while
(1)
{
P1|=Dstep;
delay();
P1|=Cstep;
delay();
P1|=Bstep;
delay();
P1|=Astep;
delay();
if(dly_c
}
while
(1);
12,如果控制步进电机正转、反转和加减速?
通过控制脉冲频率,可以控制电机转速。
步进电机根据其线卷绕组数量,分为二相、三相或四相。
比如三相步进电机,其线卷绕组分为A,B,C三相,它的控制方式有多种,比如使用最多的三相六拍控制方式,通电顺序:
A->AB->B->BC->C->CA->A,电机正转;,通电顺序:
A->AC->C->CB->B->BA->A电机反转。
13,看懂例7-5、7-6软件程序。
14,上网查询L293、L298的用法。
第八章习题
1,什么是中断、中断优先级和中断源?
由于计算机内外部的原因:
使CPU从当前正在执行的程序中暂停下来,而自动转去执行预先安排好的为处理该原因所应对的服务程序。
执行完服务程序后,再返回被暂停的位置继续执行原来的程序,这个过程称为中断,实现中断的硬件系统和软件系统称为中断系统。
产生中断请求信号的事件、原因称为中断源。
在实际系统中,往往根据中断源的重要程度给不同的中断源限定等级。
当多个中断源提出中断请求时,优先级高的先响应,优先级低的后响应。
2,MCS-51单片机有几个中断源?
都叫什么名字?
有什么用途?
MCS-51单片机提供5个(52子系列提供6个)硬件中断源:
两个外部中断源INT0(P3.2)和INT1(P3.3),2个定时/计数器T0和T1的中断源TF0和TF1;1个串行口中断(发送TI和接收RT共用一个中断向量,算1个中断源)。
3,MCS-51单片机中断响应条件是什么?
MCS-51单片机中断响应条件是:
中断源有中断请求且中断允许。
MCS-51单片机工作时在每个机器周期,对所有的中断源按优先级顺序进行检查,如有中断请求,并满足以下条件,则在下一机器周期响应中断,否则忽略检查结果。
(1)无同级或高级中断正在处理。
(2)现行指令已执行结束。
4,MCS-51单片机中断响应过程是什么?
MCS-51单片机中断响应过程是:
(1)对相应的优先级状态做标志。
(2)保护断点。
(3)清除中断请求标志,例如IE0,IE1,TF0,TF1。
5,MCS-51单片机中断触发方式有几个,如何设置?
电平触发及跳变(边沿)触发,。
这两种触发方式可以通过特殊功能寄存器TCON来选择。
6,MCS-51单片机如何设置中断嵌套?
对于中断优先级和中断嵌套,MCS-51单片机有以下三条规定。
正在进行中的中断过程不能被新的低优先级的中断请求所中断,直到该中断服务程序结束,返回主程序且执行了主程序中的一条指令后,CPU才响应新的中断请求。
正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。
CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求。
7,串行中断只有一个中断向量,在中断服务程序中如何区别是发送中断还是接收中断?
利用标志RI和TI。
8,多个中断源共用一个电路向CPU申请中断,如何在中断服务程序中区别?
这些信号同时还接在P1口相应位,以便在中断服务程序查询具体哪个信号申请中断。
第九