习题答案单片机原理与实践基于STC89C52与Proteus的嵌入式开发技术刘大铭.docx
- 文档编号:6494628
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:16
- 大小:57.49KB
习题答案单片机原理与实践基于STC89C52与Proteus的嵌入式开发技术刘大铭.docx
《习题答案单片机原理与实践基于STC89C52与Proteus的嵌入式开发技术刘大铭.docx》由会员分享,可在线阅读,更多相关《习题答案单片机原理与实践基于STC89C52与Proteus的嵌入式开发技术刘大铭.docx(16页珍藏版)》请在冰豆网上搜索。
习题答案单片机原理与实践基于STC89C52与Proteus的嵌入式开发技术刘大铭
习题答案
第一章习题答案
1-1什么是单片机?
1个完整的单片机至少有哪些部件?
答;单片机就是一片采用超大规模集成电路技术的集成电路芯片,是一个小而完善的微型计算机。
1个完整的单片机由CPU、RAM、ROM、并行IO、串行IO、定时器/计数器、中断系统、系统时钟电路及系统总线等组成。
1-251系列单片机的名称有何而来?
它与MCS-51单片机是等同的概念吗?
答:
MCS-51系列单片机的典型产品是8051单片机,其他单片机都是8051功能的基础上增减的。
20世纪80年代中后期,由于Intel公司把精力放在高档CPU芯片的开发研制上,逐渐退出单片机芯片的开发和生产。
由于MCS-51系列单片机设计上的成功和较高的市场份额,Intel公司以专利转让或技术交换的形式把8051的内核技术转让给了世界许多半导体芯片厂家,如ATMEL、PHLIPS、LG、ADI等,这些厂家生产的兼容机均采用8051的内核结构,指令系统相同,功能模块不断完善,使得51系列单片机迅速发展起来,新机型不断涌现,形成了“51系列单片机”的庞大系统,这也是51系列单片机的名称由来。
MCS-51单片机主要指Intel公司的8051子系列和8052子系列。
它属于51系列单片机的子集,世界上各大公司所生产的51系列单片机型号有多种,例如,美国ATMEL公司的AT89C5x系列,AVR系列;深圳宏晶科技公司的STC89系列等等。
1-3单片机具有哪些特点?
主要应用在哪些领域?
答:
单片机具有以下特点:
(1)集成度高、体积小、可靠性高;
(2)性价比高,易产品化
(3)控制功能强大
(4)目前大多数单片机采用哈佛结构体系
单片机广泛应用各个领域,从工业控制,机电一体化,智能仪器仪表,家用电器、汽车电子等方面,直到国防尖端技术领域,单片机都发挥着十分重要的作用。
(1)工业控制。
在工业领域,单片机可构成形式多样的控制系统、数据采集系统、通信系统、信号检测系统、测控系统等应用控制系统。
例如,锅炉燃烧的自动控制、工厂流水线的智能化管理、以及当今非常流行的物联网系统等。
(2)机电一体化。
在工业自动化的领域中,单片机的出现促使了机电一体化的发展。
机电一体化产品指集机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品。
单片机作为机电产品的控制器,使传统的机械产品结构简单化、控制智能化。
例如,在电传打字机中,单片机取代了近千个机械部件。
(3)智能仪器仪表。
单片机广泛应用于仪器仪表中,结合不同类型的传感器,可实现对温度、湿度、流量、长度、压力等物理量的测量。
单片机控制可使仪表数字化、智能化、微型化,集测量、处理、控制于一身,赋予仪器仪表崭新的面貌。
例如精密的测量设备(电压表、功率计、示波器等)
(4)家用电器。
单片机由于价格低廉、体积小、控制功能强大广泛应用于在家用电器当中,单片机使得诸如电冰箱、电饭煲、微波炉、电视机、洗衣机、空调等家用电器越来越人性化、智能化。
(5)汽车电子设备。
单片机在汽车电子设备中应用广泛,例如汽车ABS(AntilockBrakeSystem)防抱死系统,汽车GPS(GlobalPositioningSystem,全球定位系统)导航系统,汽车胎压监测系统,汽车防撞检测系统,汽车智能自动驾驶系统等。
(6)通信。
单片机集成有通信接口,通信设备基本上都实现了单片机智能控制,从手机、电话机、传真机到列车无线通信系统、无线遥控系统等各种通信设备及系统中,单片机都得到了广泛的应用。
(7)武装设备。
在现代化的武装设备中,如飞机、军舰、坦克、导弹、鱼雷制导、智能武器装备、航天飞机导航系统,都有单片机的嵌入。
1-4试述目前8位单片机市场中3种市场占有率较高的主流单片机类型。
答:
目前8位单片机市场上占有率高的除了采用复杂指令集(CISC)的51系列,还有美国Atmel公司的AVR系列单片机和美国微芯公司的PIC系列单片机。
其它如摩托罗拉、西门子、艾默生等诸多公司生产的单片机也在8位单片机市场占有自己的位置。
1-5分析51单片机是冯诺依曼结构还是哈佛结构?
答:
目前大多数51单片机采用哈佛结构。
这种结构采用数据存储器RAM与程序存储器ROM分开的方式,各自有自己的数据总线和地址总线。
单片机主要用于控制系统,通常有较多的控制程序和较少的用户数据,小容量的数据存储器以高速RAM形式集成在单片机内部,可以加速单片机的执行速度,程序一旦烧写入程序存储器ROM中,运行中不会更改,可靠性高。
1-6补码是可以带符号位进行运算吗?
试用补码计算54H-64H的结果。
答:
可以。
补码的优点是可以将减法运算转换为加法运算,且符号位可以连同数值位一起运算,这非常有利于计算机的实现。
对[-10H]补码再求补,得到其原码为:
10010000B,所以真值为-10H。
与直接减法运算的结果一致:
54H-64H=-10H
第二章习题答案
2-1MCS-51单片机由哪几部分组成,功能分别是什么?
答:
MCS-51单片机内部总体结构由8部分组成:
(1)中央处理器(CPU)。
CPU是单片机的指挥中心和执行机构,它的作用是产生合适的时序,读入和分析每条指令代码,根据每条指令代码的功能要求,指挥并控制单片机的有关部件和器件,具体执行指定的操作。
(2)片内程序存储器(ROM)。
用于存放程序、表格和常数。
(3)片内数据存储器(RAM)。
用于存放变量的值、运算结果和标志位等信息
(4)并行输入、输出接口(I/O口,分为P0、P1、P2、P3)。
通过对这4个寄存器的读写,可以实现数据从相应口的输入输出。
(5)串行接口(UART)。
MCS-51系列单片机有一个全双工的串行通信接口,能同时进行串行发送和接收数据,它可以做UART(通用异步接收和发生器)用,也可以作同步移位寄存器用。
(6)定时/计数器(T0/T1)。
具有定时和计数两种功能。
(7)中断系统。
单片机能够及时地响应中断请求源的请求,快速响应并及时处理。
极大地提高它的工作效率和处理问题的灵活性。
(8)特殊功能寄存器SFR。
单片机的CPU对片内各功能部件的控制采用的是特殊功能寄存器集中控制方式。
特殊功能寄存器用于管理片内和片外的功能部件:
定时/计数器、串行口,中断即外部扩展的存储器等。
2-2MCS-51单片机哪些信号需要使用引脚的第二功能?
答:
MCS-51单片机的控制线有4根,其中3根是复用线(ALE/
、
/VPP、RESET/VPD)具有两种功能,正常使用时主要是第一功能。
除此之外,P3口最常用到引脚的第二功能。
P3口P3.0~P3.7这8条引脚的第二功能,如表2-1所示。
表2-1P3口引脚的第二功能
引脚
第二功能
说明
P3.0
RXD
串行数据接收端
P3.1
TXD
串行数据发送端
P3.2
外部中断0输入
P3.3
外部中断1输入
P3.4
T0
定时/计数器0外部计数输入
P3.5
T1
定时/计数器1外部计数输入
P3.6
片外数据存储器“写”选通控制输出
P3.7
片外数据存储器“读”选通控制输出
2-3MCS-51单片机的内部存储空间是如何分配的?
答:
MCS-51单片机存储器的结构是哈佛结构,将程序存储器和数据存储器分开,拥有各自的寻址系统和访问指令。
8051系列单片机在物理上有4个存储空间:
片内程序存储空间和片外程序存储空间,片内数据存储空间和片外数据存储空间。
除了可以访问内部128B的数据存储器和4KB的程序存储器,还可以访问片外扩展的64KB外部数据存储器和64KB外部程序存储器。
2-4MCS-51单片机内部RAM128个单元是如何划分的?
答:
MCS-51单片机内部RAM128个单元,应用最为灵活,用于存放变量的值、运算结果和标志位等信息。
按其用途可分为三个区域。
(1)工作寄存器区。
字节地址为00H~1FH的32个单元是4组通用工作寄存器区,每组占用8个字节,都标记为R0~R7。
在某一时刻,CPU只能使用其中的一组工作寄存器,工作寄存器的选择由程序状态字寄存器PSW中RS1、RS0两位来确定,如表2-3所示。
工作寄存器可以直接和累加器A以及内部RAM之间进行数据传送、算术及逻辑运算等操作,也可以在寄存器间接寻址时提供地址。
(2)位寻址区。
位寻址区,占用地址20H~2FH,共16个字节,128位,这个区域除了可以作为一般RAM单元进行读写之外,CPU可以对字节内部的每一个位(bit)都独立编址且每一位都可以独立置位、复位。
这些位都规定了固定的位地址,从20H单元的第0位起到2FH单元的第7位止共16×8=128位,用位地址00H~7FH分别与之对应。
对于需要进行按位操作的数据,可以存放到这个区域。
(3)用户RAM区。
字节地址为30H~7FH,共80个字节。
这是真值给用户使用的一般RAM区,用户对该区域的访问是按字节寻址的方式进行的。
该区域主要用来存放随机数据及运算的中间结果。
另外,也常把堆栈开辟在该区域中。
2-5什么是堆栈?
堆栈有何作用?
为什么在程序初始化时要对SP进行重新赋值?
答:
堆栈是在内存中专门开辟出来的按照“先进后出、后进先出”的原则进行存取数据的RAM区域。
堆栈的作用是保护现场和断点地址。
堆栈可设置在内部RAM的任意区,对堆栈有两种操作:
数据进栈(写)和数据出栈(读)。
但不论是数据进栈还是数据出栈,都是对堆栈的栈顶单元进行的,最后进栈的数据所在单元称为栈顶。
为了对栈顶单元进行读、写操作时,指示栈顶地址,需要设置堆栈指示器,在8051单片机中由特殊功能寄存器SP来指示栈顶地址。
SP也称为堆栈指针,它是一个8位寄存器,SP的初值称为栈区的栈底,每当一个数据送到堆栈中(称为压栈)或从堆栈中取出(称为弹栈),堆栈指针都要随之作相应的变化,SP始终指向栈顶地址。
8051单片机的堆栈属于向上生长型,单片机复位后,堆栈指针SP总是初始化到内部RAM地址07H。
从08H开始就是8051的堆栈区,这个位置与工作寄存器组1的位置相同,因此,在实际应用中,通常要根据需要在主程序开始处通过指令改变SP的值,从而改变堆栈区的位置。
2-6试述程序状态寄存器PSW各位的含义。
答:
程序状态字寄存器PSW(ProgramStatusWord),是一个8位可读/写的标志寄存器,位于单片机片内特殊功能寄存器区,字节地址是D0H。
它用于寄存当前指令被执行后的相关状态,为下一条或以后的指令执行提供状态条件,许多指令的执行结果将影响PSW中某些状态标志位。
PSW的结构及各位状态标志的定义如表2-2所示。
表2-2PSW的各位状态标志
D7
D6
D5
D4
D3
D2
D1
D0
Cy
AC
F0
RS1
RS0
OV
-
P
(1)Cy(PSW.7):
进位标志位。
当指令运算结果的最高位产生进位或借位时,置位(Cy=1),否则复位(Cy=0)。
除此之外,Cy还在布尔处理器中作为位累加器使用,常用“C”表示。
(2)AC(PSW.6):
辅助进位标志。
在进行加法或减法运算中,当一个字节的低4位数向高4位数有进位或借位时,AC将被硬件置位AC=1,否则就被清零AC=0。
AC常被用于BCD码运算时的十进制调整。
(3)F0(PSW.5):
用户自定义标志。
可由用户通过程序对其置位或复位,具体含义也由用户定义。
(4)RS1,RS0(PSW.4、PSW.3):
工作寄存器区选择控制位1和位0。
由软件置位或清零,共四种组合,每种组合对应片内RAM中的一个工作寄存器区。
RS1、RS0与四组工作寄存区的的关系如表2-3所示。
表2-3RS1、RS0与片内RAM的四组工作寄存区的关系
RS1RS0
所选的四组工作寄存区
00
0区(内部RAM地址00H~07H)
01
1区(内部RAM地址08H~0FH)
10
2区(内部RAM地址10H~17H)
11
3区(内部RAM地址18H~1FH)
(5)OV(PSW.2):
溢出标志。
当执行带符号算术加减运算时,OV用来指示运算结果是否发生溢出,如果0V=1,表示加减运算的结果超出了目的寄存器A所能表示的带符号数的范围(-128~+127)。
无符号数乘法指令MUL:
当A×B的结果超过255时,OV=1,否则OV=0。
由于乘法运算的积的高8位放在B内,低8位放在A内,因此,当OV=0时,只要从A中取得乘积即可,否则要从BA寄存器对之中取得乘积;除法指令DIV:
当除数为0时,OV=1,否则OV=0。
(6)P(PSW.0):
奇偶标志位。
该位在每个指令周期期间都由硬件来置位或清零,以表示累加器A中1的位数的奇偶性:
若A中1的位数为奇数,则P置位,否则清0,因此该位是针对累加器A中1的个数的偶校验。
该标志位可用来生成串行通信中的奇偶校验位。
2-7P0、P1、P2、P3各口都有什么用途?
使用时要注意什么?
答:
P0、P1、P2、P3口,都能用作I/O口。
用作输入时,均须先写入“1”,用作输出时,P0口应外接上拉电阻。
在并行扩展外存储器或I/O口情况下,P0口用于低8位地址总线和数据总线,P2口用于高8位地址总线,P3口常用于第二功能,用户能使用的I/O口只有P1口和未被用作第二功能的部分P3口端线。
2-8请说出指令周期、机器周期、状态和拍的概念,当晶体振荡频率为12MHz时,一个机器周期是多少?
答:
(1)时钟周期是单片机控制信号的最小时序单位,也称为拍,用P表示。
(2)一个状态周期包含两个时钟周期(拍),用S来表示,分为P1和P2两拍。
(3)机器周期是CPU完成一个基本操作所需要的时间,8051系列单片机的一个机器周期包括12个时钟周期,分为6个状态:
S1~S6,每个状态又分为2拍,P1和P2。
(4)指令周期是8051系列单片机中最大的时序单位,是指完成一条指令所需要的时间。
它以机器周期为单位,是机器周期的整数倍。
晶体振荡频率为fosc=12MHz,则时钟周期Tosc=1/fosc=83.3ns,机器周期=12Tosc=1μs。
2-9什么是单片机复位?
复位后单片机的状态如何?
答:
复位操作可使单片机初始化,特别是因程序运行出错或操作错误而处于死机状态时,复位使单片机重新启动。
单片机的复位都是靠外部复位电路来实现的,在时钟电路工作后,只要在单片机的RESET引脚上出现24个时钟振荡脉冲(两个机器周期)以上的高电平,单片机就能实现复位。
计算机在启动时,系统进入复位状态。
在复位状态下,CPU和系统都处于一个确定的初始状态或原始状态,所有的专用寄存器被赋予默认值,寄存器的复位状态见表2-6所示。
表2-6寄存器复位状态
寄存器
复位状态
寄存器
复位状态
PC
0000H
TMOD
00H
ACC
00H
TCON
00H
B
00H
TH0
00H
PSW
00H
TL0
00H
SP
07H
TH1
00H
DPTR
0000H
TL1
00H
P0~P3
FFH
SCON
00H
IP
XXX0000B
SBUF
XXXXXXXXB
IE
0XX00000B
PCON
0XXX0000B
2-10如何使单片机进入掉电保护方式?
答:
在程序中设置PCON特殊功能寄存器相应位PD=1,单片机便进入掉电保护模式,掉电保护主要是为了防止电源突然中断时,保存了一些重要的数据。
此时内部时钟振荡器停止工作,CPU及其内部所有的功能部件均停止工作,片内RAM和全部的特殊功能存储器的数据都可以被保存。
第三章习题答案
3-1C51语言有哪些新增的数据类型?
答:
C51有4类新增的数据类型。
(1)位变量bit。
Bit的值可以是1(true),也可以是0(false)。
(2)特殊功能寄存器sfr。
51单片机的特殊功能寄存器分布在片内数据存储区的地址单元80H~FFH之间,“sfr”数据类型占用一个内存单元。
利用它可以访问单片机内部所有的特殊功能寄存器。
(3)特殊功能寄存器sfr16。
“sfr16”数据类型占用两个内存单元。
sfr16和sfr一样用于操作特殊功能寄存器。
所不同的是它用于操作占两个字节的特殊功能寄存器。
(4)特殊功能位sbit。
sbit是指单片机内部特殊功能寄存器的可寻址位。
3-2C51有哪些语句类型?
使用每种类型的语句编写一个简单的程序。
答:
C51有顺序、分支和循环结构语句类型。
顺序结构比较简单和便于理解,这里仅举例分支结构和循环结构。
1)分支结构主要是if语句和switch语句。
(1)C51提供3种形式的if语句:
◆形式1
if(表达式){语句;}
例如:
if(x>y){max=x;min=y;}
◆形式2
if(表达式){语句1;}else{语句2;}
例如:
if(x>y){max=x;}
else{max=y;}
◆形式3
if(表达式){语句1;}
elseif(表达式){语句2;}
elseif(表达式){语句3;}
…
else{语句n;}
例如:
if(x>100){y=1;}
elseif(x>50){y=2;}
elseif(x>30){y=3;}
elseif(x>20){y=4;}
else{y=5;}
本形式相当于串行多分支选择结构。
(2)switch语句
if语句只有两个分支可供选择,而switch语句是多分支语句,其一般形式如下:
switch(表达式1)
{case常量表达式1:
{语句1;}break;
case常量表达式2:
{语句2;}break;
…
case常量表达式n:
{语句n;}break;
default:
{语句n+1;}
}
例如,常用switch语句作为键盘中按键按下的判别,并根据按下的键号跳向各自的分支处理程序。
input:
keynum=keyscan()
switch(keynum)
{case1:
key1();break;/*如果按下键的键值为1,则执行函数key1()*/
case2:
key2();break;/*如果按下键的键值为2,则执行函数key2()*/
case3:
key3();break;/*如果按下键的键值为3,则执行函数key3()*/
case4:
key4();break;/*如果按下键的键值为4,则执行函数key4()*/
…
default:
gotoinput
}
2)实现循环结构的语句有以下3种:
while语句、do-while语句和for语句。
(1)while语句
while语句的语法形式为:
while(表达式)
{循环体语句;
}
例如,
while(P1&0x80==0)
{…}
while中的条件语句对单片机的P1口进行测试,如果P1.7为低电平(0),由于循环体无实际操作语句,故继续测试下去(等待),一旦P1.7的电平变高
(1),则循环终止。
(2)do-while语句
do-while语句的语法形式为:
do
{循环体语句;
}
while(表达式);
例,实型数组sample存有10个采样值,编写程序段,要求返回其平均值(平均值滤波)程序如下:
floatavg(float*sample)
{floatsum=0;
charn=0;
do
{sum+=sample[n];
n++;
}while(n<10);
return(sum/10);
}
(3)基于for语句的循环
for循环的一般格式为,
for(表达式1;表达式2;表达式3)
{循环体语句;}
例如,
for(i=0;i<=100;i++)sum=sum+i;
3-351程序有哪些常用的头文件?
怎么在程序中使用它们?
答:
常用的头文件有:
(1)特殊功能寄存器包含文件reg51.h和reg52.h。
reg51.h包含的8051的sfr及其位定义。
reg52.h包含所有8052的sfr及其位定义,一般系统都包含reg51.h或reg52.h。
(2)绝对地址包含文件absacc.h。
该文件定义了几个宏,以确定各类存储空间的绝对地址。
(3)输入/输出流函数位于stdio.h文件中。
流函数默认8051的串口来作为数据的输入/输出。
(4)动态内存分配函数,位于stdlib.h中。
(5)能够方便地对缓冲区进行处理的缓冲区处理函数位于string.h中,其中包括复制,移动,比较等函数。
当程序中需要调用C51语言编译器提供的各种库函数时,必须在文件的开头使用#include命令将相应函数的说明文件包含进来。
例如,
#include
#include
#include
3-4使用C51编程语言实现将片内数据存储器中地址30H和40H的单元内容交换。
答:
#definetempDBYTE[0x50]
temp=DBYTE[0x40];
DBYTE[0x40]=DBYTE[0x30];
DBYTE[0x30]=temp;
3-5举例说明利用KeilμVision4与Proteus软件仿真一个单片机实验的全过程。
答:
参考教材3.3.2节及3.4.2节。
3-6关于Proteus与KeilμVision4的联合仿真和联合调试,两者的区别是什么?
答:
联合仿真是指,在Proteus环境下建立了单片机仿真电路后,再将KeilμVision4环境下生成的HEX文件加载到单片机模型中,最后运行仿真电路的过程。
如果修改了C51程序,就要停止仿真电路,再重新手动加载新的HEX文件到仿真电路中,最后再运行仿真电路观察结果。
联合调试是指,在KeilμVision4中全速运行程序时,Proteus中的单片机系统也会自动运行。
即使修改了C51程序,中途无需停止仿真电路,仿真电路的结果会因程序的改变自动变化。
第四章习题答案
4-1什么是中断、中断优先级和中断源?
答:
计算机在执行程序的过程中,由于CPU以外的某种原因,必须尽快暂停当前程序的执行,而去执行相应的处理程序,待处理结束后,再返回被暂停的位置继续执行原来的程序。
这种程序在执行过程中由于外界的原因而中间被打断的情况称为“中断”。
中断优先级是为中断嵌套服务的,51单片机有两个中断优先级:
高优先级和低优先级。
低优先级中断请求不能打断高优先级的中端服务程序,但高优先级中断请求可以打断低优先级的终端服务程序,从而实现中断嵌套。
引起中断的原因,或能发出中断申请的来源,称为中断源。
4-2MCS-51单片机有几个中断源?
各中断标志是如何产生的?
又是如何复位的?
CPU响应各中断时,其中断入口地址是多少?
答:
MCS-51单片机共有5个中断源:
、
、T0、T1和串行通信口。
(1)
:
外部中断0,中断标志位为IE0,外部中断请求信号从P3.2引脚引入,其复位有两种触发方式:
边沿触发和电平触发。
中断入口地址为0003H。
(2)
:
外部中断1,中断标志位为IE1,外部中断请求信号从P3.3引脚引入,其复位有两种触发方式:
边沿触
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 答案 单片机 原理 实践 基于 STC89C52 Proteus 嵌入式 开发 技术 刘大铭