单片机课后习题答案 下载本文

作业习题答案

《单片机应用技术》部分习题与参考答案

第1章 单片机概述

1-1什么是嵌入式系统?嵌入式系统的硬件和软件各包括哪些内容?

答: 以应用为中心,以计算机技术为基础,软/硬件可剪裁,针对具体应用系统,对功能、可靠性,成本、体积、功耗严格要求的专用计算机系统称为嵌入式计算机系统。简称为嵌入式系统。

嵌入式系统的硬件包括:嵌入式处理器、存储器和外部设备器件、输入输出接口、图形控制器等。软件包括操作系统和应用程序。

嵌入式系统是专用的计算机系统,嵌入式系统的核心是嵌入式处理器,单片机是嵌入式处理器的典型代表。

1-2 什么叫单片机?一个完整的单片机芯片至少有哪些部件?

答:将微处理器(CPU)、存储器、定时/计数器及输入输出接口电路等部件集成在一块集成电路上,称为单片微型计算机,简称单片机。一个完整的单片机芯片至少有中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、定时/计数器及I/O接口等部件。

1-3嵌入式处理器有何特点?嵌入式处理器分为哪几类?

答:嵌入式处理器对实时和多任务系统有和强的支持能力、对存储区保护功能强、具有可扩展的处理器结构及低功耗等特点。

嵌入式处理器分为:嵌入式微处理器、微控制器、嵌入式DSP处理器和片上系统等。 1-4 单片机系统的开发过程分为那几步进行?

答:1.硬件的设计与调试。2 应用程序的设计和调试。3系统联调。4程序的固化。5.脱机运行。

1-5 Intel 公司的主要单片机产品分为哪几大系列?各系列的区别何在? 答:Intel公司的MCS-48系列、MCS-51系列、MCS-96系列产品;

48系列的单片机在片内集成4位CPU,片内含有多种I/O接口,有的根据不同用途还配有许多专用接口,价格便宜,控制功能强。

51系列的单片机在片内集成8位CPU、片内RAM为128字节,ROM为4K字节,4个并行I/O口、2个16位定时/计数器、串行接口、5个中断源。

96系列单片机CPU为16位,片内RAM为232字节,ROM为8K字节,片内带有高速输入输出部件,多通道10位A/D转换部件,中断处理为8级。 1-6 叙述51子系列与52子系列的区别?

答:51子系列包含8031/8051/8751三种型号,它们的基本组成、基本性能都相同,都具有一个8位CPU、片内数据存储器RAM128B、2个16位定时/计数器、有5个中断源,一个全双工串行接口,它们之间的区别在于片内程序存储器配置:8031片内没有ROM,使用时需在片外接EPROM。8051片内含有4KB的掩模ROM,其中的程序是生

产厂家制作芯片时烧制的。8751片内含有4KB的EPROM,用户可以先用紫外线擦除器擦除,然后再利用开发机或编程器写入新的程序。

52子系列包含8032/8052/8752三种型号,52子系列与51子系列的区别在于:片内ROM和RAM的容量比8051子系列各增加一倍,另外,增加了一个定时/计数器和一个中断源。

第2章 MCS-51系列单片机的基本结构

2-1 画出微型计算机基本结构框图,简述各部分的基本功能。 答:见教材图2-2。

2-2 MCS-51单片机的引脚有何功能?在使用8031时如何接法?使用8751时如何接法?

答:引脚是片内外程序存储器的选择信号。当端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对于8051/8751/80C51)或1FFFH(对于8052)时,将自动转向访问外部程序存储器。当端保持低电平时,不管是否有内部程序存储器,则只访问外部程序存储器。

由于8031片内没有程序存储器,所以在使用8031时,引脚必须接低电平。 2-3 微型计算机的存储器普林斯顿结构和哈弗结构有什么不同? 答:按微型计算机的存储器地址空间的不同分配形式分为普林斯顿结构和哈弗结构。普林斯顿结构的特点是计算机只有一个地址空间。CPU访问ROM和RAM采用相同的指令。哈弗结构将ROM和RAM安排在相互独立的两个地址空间,ROM和RAM可以有相同的地址,但采用不同的指令访问。51系列单片机采用哈弗结构。

2-4 微型计算机存储器的地址线与存储的容量有什么关系?如果存储器的地址线有13条,则存储的容量为多大?

n

答:存储的容量=2,(n: 存储器的地址线的条数)。213=8KB. 2-5 89C51单片机的存储器从物理结构上分别可划分为几个空间?89C51单片机采用何种方式区分内外程序存储器和内外数据存储器?

答:89C51单片机的存储器从物理结构上分别内外程序存储器和内外数据存储器。内外程序存储器采用引脚/EA、/PSEN接到不同的电平区分,内外数据存储器采用引脚/RD、/WR连接和不同的指令加以区分。

2-6 MCS-51单片机的内部存储空间是怎样分配的?

答:MCS-51单片机的内部存储空间分为数据存储器和程序存储器。

内部数据存储器:共256字节单元,包括低128个单元和高128个单元。低128字节又分成3个区域:工作寄存器区(00H~1FH),位寻址区(20H~2FH)和用户RAM区(30H~7FH)。高128字节是供给特殊功能寄存器使用的,因此称之为特殊功能寄存器区。

内部程序存储器:在8031片内无程序存储器,8051片内具有4KB掩模ROM,8751片内具有4KBEPROM。

2-7 如何从MCS-51单片机的4个工作寄存器组中选择当前工作寄存器组?

答:MCS-51单片机提供了4组工作寄存器,对于当前工作寄存器组的选择,是通过PSW中的RS1和RS0来进行选择。具体关系如下表:

RS1 0 0 1 1 RS0 0 1 0 1 当前寄存器组 第0组工作寄存器 第1组工作寄存器 第2组工作寄存器 第3组工作寄存器

2-8 内部RAM低128个单元是如何划分的?

答:内部RAM低128个单元按用途分成3个区域:工作寄存器区(00H~1FH),位寻址区(20H~2FH)和用户RAM区(30H~7FH)。

2-9 DPTR是什么寄存器?它的作用是什么?它由哪几个寄存器组成?

答:DPTR是数据指针寄存器,是一个16位寄存器,用来存放16位存储器的地址,以便对外部数据存储器RAM中的数据进行操作。DPTR由高位字节DPH和低位字节DPL组成。

2-10 什么是堆栈?堆栈有何作用?为什么在程序初始化时要对SP重新赋值?

答:所谓堆栈,顾名思义就是一种以“堆”的方式工作的“栈”。堆栈是在内存中专门开辟出来的按照“先进后出,后进先出”的原则进行存取的RAM区域。堆栈的用途是保护现场和断点地址。在8051单片机复位后,堆栈指针SP总是初始化到内部RAM地址07H。从08H开始就是8051的堆栈区,这个位置与工作寄存器组1的位置相同。因此,在实际应用中,通常要根据需要在程序初始化时对SP重新赋值,以改变堆栈的位置。

2-11 试述程序状态字寄存器PSW各位的含义。

答:程序状态字寄存器PSW是8位寄存器,用于存放程序运行的状态信息。 CY(PSW.7):进位标志位。 AC(PSW.6):辅助进位标志位。

F0(PSW.5)、F1(PSW.1):用户标志位。

RS1(PSW.4)、RS0(PSW.3):工作寄存器组选择位。 OV(PSW.2):溢出标志位。 P(PSW.0):奇偶标志位。 2-12 P0、P1、P2、P3口的结构有何不同?使用时要注意什么?各口都有什么用途? 答:P0口由一个所存器、两个三态输入缓冲器、场效应管、控制与门、反相器和转换开关组成;作为输出口时,必须外接上拉电阻才能有高电平输出,作为输入口时,必须先向锁存器写“1”;作为普通I/O口使用或低8位地址/数据总线使用。

P1口内没有转换开关,但有上拉电阻;只用作普通I/O口使用。

P2口比P1口多了一个转换控制开关;作为普通I/O口使用或高8位地址线使用。 P3口比P1口增加了与非门和缓冲器;具有准双向I/O功能和第二功能。 上述4个端口在作为输入口使用时,应注意必须先向端口写“1”。

2-13 请说出指令周期、机器周期、状态和拍的概念。当晶振频率为12MHz、8MHz时,一个机器周期为多少微秒?

答:指令周期:执行一条指令所需要的时间。

机器周期:CPU完成一个基本操作所需要的时间。

状态:振荡脉冲经过二分频后,得到的单片机的时钟信号。 拍:振荡脉冲的周期。

当晶振频率为12MHz时,一个机器周期为1μs;当晶振频率为8MHz时,一个机器周期为1.5μs。

2-14 什么是单片机复位?复位后单片机的状态如何? 答:在时钟电路工作后,只要在单片机的RESET引脚上出现24个时钟震荡脉冲(两个机器周期)以上的高电平,单片机就能实现复位。

复位后,CPU和系统都处于一个确定的初始状态,在这种状态下,所有的专用寄存器都被赋予默认值,除SP=07H,P0~P3口为FFH外,其余寄存器均为0。程序指针Pc=0000H。

第3章 MCS-51系列单片机的指令系统

3-1 MCS-51系列单片机指令格式是怎样的? 各有何含义?

答:单片机指令格式由操作码和操作数组成。操作码说明指令操作性质,操作数说明操作对象。

3-2 MCS-51系列单片机有哪几种寻址方式?各种寻址方式所对应的寄存器或存储器寻址空间如何?

答:MCS-51系列单片机提供了7种寻址方式:

(1)立即寻址:操作数在指令中直接给出,立即数前面有“#”。

(2)直接寻址:在指令中直接给出操作数地址。对应片内低128个字节单元和特殊功能寄存器。

(3)寄存器寻址:以寄存器的内容作为操作数。对应的寄存器有:R0~R7、A、AB寄存器和数据指针DPTR。

(4)寄存器间接寻址:以寄存器的内容作为RAM地址,该地址中的内容才是操作数。对应片内RAM的低128个单元采用R0、R1作为间址寄存器,片外RAM低256个单元可用R0、R1作为间址寄存器,整个64KB空间可用DPTR作为间址寄存器。

(5)变址寻址:以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成的16位地址作为操作数地址。对应片内、片外的ROM空间。

(6)相对寻址:只在相对转移指令中使用。对应片内、片外的ROM空间。

(7)位寻址:对可寻址的位单独进行操作。对应位寻址区20H~2FH单元的128位和字节地址能被8整除的特殊功能寄存器的相应位。

3-4 若访问特殊功能寄存器,可使用那些寻址方式? 答:直接寻址方式。

3-5 若访问外部RAM单元,可使用那些寻址方式? 答:寄存器间接寻址方式。

3-6 若访问内部RAM单元,可使用那些寻址方式?

答:立即寻址方式,直接寻址方式,寄存器寻址方式,寄存器间接寻址方式,位寻址方式。

3-7 若访问内外程序存储器,可使用那些寻址方式? 答:变址寻址方式

3-8 外部数据传送指令有几条?试比较下面每一组中两条指令的区别。

(1) MOVX A,@R1 , MOVX A,@DPTR (2) MOVX A,@DPTR , MOVX @DPTR,A

(3) MOV @R0 ,A , MOVX @ R0,A

(4) MOVC A,@A+DPTR , MOVX A,@DPTR

答:外部数据传送指令有6条:

MOVX A,@DPTR MOVX @DPTR,A MOVX A,@Ri MOVX @Ri,A MOVC A,@A+DPTR MOVC A,@A+PC (1)MOVX A,@R1 MOVX A,@DPTR 都是访问片外RAM,但二者寻址范围不同。

前1条指令是对片外RAM低256个单元的“读”操作。 后1条指令是对片外RAM64KB空间的“读”操作。 (2)MOVX A,@DPTR MOVX @DPTR,A 访问空间相同,但数据传送方向不同。

前1条指令是对片外RAM64KB空间的“读”操作。 后1条指令是对片外RAM64KB空间的“写”操作。 (3)MOV @R0,A MOVX @R0,A 二者访问的空间不同。

前1条指令是对片内RAM低128个单元的“写”操作。 后1条指令是对片外RAM低256个单元的“写”操作。 (4)MOVC A,@A+DPTR MOVX A,@DPTR 二者访问的空间不同,寻址方式不同。 前1条指令是变址寻址方式,对ROM操作。

后1条指令是寄存器间接寻址方式,对片外RAM操作。

3-9 已知(30H)=40H,(40H)=10H,(10H)=32H,(P1)=EFH,试写出执行以下程序段后有关单元的内容。

MOV R0, #30H MOV A, @R0 MOV R1, A MOV B, @R1 MOV @R1, P1 MOV P2, P1 MOV 10H, #20H MOV 30H, 10H

答: R0←30H,(R0)=30H

A←((R0)),(A)=40H R1←(A),(R1)=40H B←((R1)),(B)=10H

(R1)←(P1),((R1))=(40H)=EFH P2←(P1),(P2)=EFH 10H←20H,(10H)=20H 30H←(10H),(30H)=20H

结果:(R0)=30H,(A)=40H,(R1)=40H,(B)=10H,(40H)=EFH,(P2)=EFH,(10H)=20H,(30H)=20H

3-10 试写出完成以下数据传送的的指令序列。 (1)R1的内容传送R0;

(2)片外RAM 60H单元的内容送入R0;

(3)片外RAM 60H单元的内容送入片内RAM 40H单元; (4)片外RAM 1000H单元的内容送入片外RAM 40H单元; (5)ROM 2000H单元的内容送入R2;

(6)ROM 2000H单元的内容送入片内RAM 40H单元; (7)ROM 2000H单元的内容送入片外RAM 0200H单元。

答:

(1)由于在工作寄存器与工作寄存器之间不能直接传送数据,所以需要借助累加器A。

MOV A,R1 MOV R0,A

(2)片外RAM向片内RAM传送数据,不能直接进行,需要借助累加器A。由于片外RAM是60H单元,地址小于FFH,所以间址寄存器使用Ri即可。 MOV R1,#60H MOVX A,@R1 MOV R0,A (3) MOV R1,#60H MOVX A,@R1 MOV 40H,A

(4)片外数据不能直接送入片外单元,需要先将片外数据读入累加器,然后再送到片外。

MOV DPTR,#1000H MOVX A,@DPTR MOV R1,#40H MOVX @R1,A

(5)ROM中的数据需要使用查表指令才能读出来,所以此题不能使用一般的传送指令从ROM中读数据。

MOV DPTR,#2000H MOV A,#00H MOVC A,@A+DPTR MOV R2,A

(6) MOV DPTR,#2000H MOV A,#00H MOVC A,@A+DPTR MOV 40H,A

(7) MOV DPTR,#2000H MOV A,#00H MOVC A,@A+DPTR MOV DPTR,#0200H MOVX @DPTR,A

3-11 试编程,将外部RAM 1000H单元中的数据与内部RAM 60H单元中的数据相互交换。

答:片外RAM与片内RAM之间的数据传送不能直接进行,需要借助累加器A。数据交换需要使用数据交换指令XCH。 MOV DPTR,#1000H

MOVX A,@DPTR XCH A,60H MOVX @DPTR,A

3-12 已知(A)=5BH,(R1)=40H,(40H)=C3H,(PSW)=81H,试写出各条指令的执行结果,并说明程序状态字的状态。

(1) XCH A, R1 (2) XCH A, 40H (3) XCH A,@R1 (4) XCHD A, @R1 (5) SWAP A (6) ADD A, R1 (7) ADD A, 40H (8) ADD A, #40H (9) ADDC A, 40H (10) SUBB A, 40H (11)SUBB A, #40H 答:

(1)结果:(A)←→(R1),(A)=40H,(R1)=5BH,(PSW)=81H (2)结果:(A)←→(40H),(A)=C3H,(40H)=5BH,(PSW)=80H (3)结果:(A)←→((R1)),(A)=C3H,((R1))=(40H)=5BH,(PSW)=80H

(4)结果:(A)0~3←→((R1))0~3,(A)=53H,((R1))=(40H)=CBH,(PSW)=80H

(5)结果:(A)0~3←→(A)4~7,(A)=B5H,(PSW)=81H (6)结果:A←(A)+(R1),(A)=9BH,(PSW)=05H (7)结果:A←(A)+(40H),(A)=1EH,(PSW)=80H (8)结果:A←(A)+40H,(A)=9BH,(PSW)=05H

(9)结果:A←(A)+(40H)+CY,(A)=1FH,(PSW)=81H (10)结果:A←(A)-(40H)-CY,(A)=97H,(PSW)=85H (11)结果:A←(A)- 40H - CY,(A)=1AH,(PSW)=01H

3_13 已知(A)=5BH,(R1)=40H,(40H)=C3H,(PSW)=81H,试写出各条指令的执行结果,并说明程序状态字的状态。

(1) XCH A, R1 (2) XCH A, 40H (3) XCH A,@R1 (4) XCHD A, @R1 (5) SWAP A (6) ADD A, R1 (7) ADD A, 40H (8) ADD A, #40H (9) ADDC A, 40H (10) SUBB A, 40H (11)SUBB A, #40H 答:

指令LJMP addr16是长转移指令,指令中提供了16位目的地址,寻址范围是64KB。 指令AJMP addr11是绝对转移指令,指令中11位目的地址,其中a7~a0在第二字节,a10~a8则占据第一字节的高3位,寻址范围是与PC当前值(本指令所在地址+本条指令所占用的字节数2)在同一个2K的区域内。

3-14 试分析以下两段程序中各条指令的作用。程序执行完将转向何处? (1) MOV P1,#0CAH MOV A,#56H JB P1.2 ,L1 JNB ACC.3,L2 …

L1: ┇ L2: ┇

(2) MOV A,#43H JB ACC.2 ,L1 JBC ACC.6,L2 ?

L1: ┇ L2: ┇ 答:

(1) MOV P1,#0CAH ;P1←CAH,P1=CAH=11001010B MOV A,#56H ;A←56H,A=56H=01010110B JB P1.2,L1 ;若P1.2=1,则转移至L1 JNB ACC.3,L2 ;若ACC.3=0,则转移至L2 …

L1: … L2: …

执行完本段程序后将转移至L2,因为P1.2=0,ACC.3=0,所以转至L2。 (2) MOV A,#43H ;A←43H,A=43H=01000011B JB ACC.2,L1 ;若ACC.2=1,则转移至L1

JBC ACC.6,L2 ;若ACC.6=1,则转移至L2,同时将ACC.6清零 …

L1: … L2: …

执行完本段程序后将转移至L2,因为ACC.2=0,ACC.6=1,所以转至L2,并且将ACC.6清零。

第4章 汇编语言程序设计

4-1 什么是伪指令?伪指令和指令有何区别?它们的用途是什么 4-2 基本程序结构有哪几种?各有何特点?

4-3 存放在内部RAM的DATA单元中的变量X是一个无符号整数,试编程计算下面函数的函数值并存放到内部RAM的FUNC单元中。

答:

ORG 0300H

MOV A,DATA

CJNE A,#20,LOP1 LOP1: JC LOP3

CJNE A,#50,LOP2 LOP2: JC LOP4 MOV B,#1 LJMP LOP5 LOP3: MOV B,#2 LJMP LOP5 LOP4: MOV B,#5 LOP5: MUL AB

MOV FUNC,A RET

4-5 某单片机应用系统有4×4键盘,经键盘扫描程序得到被按键的键值(00H~0FH)存放在R2中,16个键的键处理程序入口地址分别为KEY0、KEY1、KEY2、?、KEY15。试编程实现,根据被按键的键值,转对应的键处理程序。

答: ORG 0500H

MOV DPTR,#JPTAB MOV A,R2 RL A

JMP @A+DPTR

JPTAB: AJMP KEY0 AJMP KEY1

AJMP KEY2 ……

AJMP KEY15 KEY0: … KEY1: … KEY2: … ……

KEY15: …

4-6 试编程将片内 40H~60H单元中内容传送到外部RAM以2000H为首地址的存储区中。

答: ORG 0600H

MOV R0,#40H

MOV DPTR,#2000H MOV R7,#21H LOOP: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,LOOP RET

4-7 试编程将片内 40H~60H单元中内容传送到外部RAM以2000H为首地址的存储区中。

答: ORG 0700H

MOV DPTR,#DATA MOV R7,#10 LOOP: MOVX A,@DPTR ORL A,#80H MOVX @DPTR,A INC DPTR DJNZ R7,LOOP RET

4-8 编写程序将外部RAM 3000H开始的13个单元中的数据隔一个传送到内部RAM 30H开始的区域。

答: ORG 0800H

MOV DPTR,#3000H MOV R0,#30H MOV R7,#7 LOOP: MOVX A,@DPTR MOV @R0,A INC DPTR INC DPTR INC R0 DJNZ R7,LOOP RET

4-9 编程将片外RAM地址为1000H~1030H的数据块,全部搬迁到片内RAM 30H~60H中,并将原数据区全部清0。

答: ORG 0900H

MOV DPTR,#1000H MOV R1,#30H MOV R7,#31H LOOP: MOVX A,@DPTR MOV @R1,A CLR A MOVX @DPTR,A INC DPTR INC R1 DJNZ R7,LOOP RET

4-10 试编程把长度为10H的字符串从内部RAM首地址为DAT1的存储器中向外部RAM首地址为DAT2的存储器进行传送,一直进行到遇见字符CR或整个字符串传送完毕结束。

答: ORG 0A00H

MOV R1,#DAT1 MOV DPTR,#DAT2 MOV R6,#10H LOOP1: MOV A,@R1

CJNE A,#0DH,LOOP2 LJMP LOOP3 LOOP2: MOVX @DPTR,A INC R1 INC DPTR

DJNZ R6,LOOP1 LOOP3: RET

4-11 设在外部RAM 2000H~2004H单元中,存放有5个压缩BCD码,试编程将它们转换成ASCⅡ码,存放到以2005H单元为首地址的存储区中。

答: ORG 1200H

MOV DPTR,#2000H MOV R0,#30H MOV R7,#5 LOP1: MOVX A,@DPTR ANL A,#0FH ADD A,#30H MOV @R0,A INC R0 MOVX A,@DPTR ANL A,#0F0H SWAP A ADD A,#30H

MOV @R0,A INC R0 INC DPTR

DJNZ R7,LOP1

MOV DPTR,#2005H MOV R0,#30H MOV R7,#10 LOP2: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,LOP2 RET

4-12 已知内部RAM 30H和40H单元分别存放着一个数a、b,试编写程序计算a2

– b2,并将结果送入30H单元。设a、b均是小于10的数。

答: ORG 1400H MOV A,40H MOV B,A MUL AB MOV 31H,A MOV A,30H MOV B,A MUL AB CLR C SUBB A,31H MOV 30H,A RET

4-13 P1口连接8个LED发光二极管,设计灯亮移位程序,要求8个发光二极管每次亮一个,点亮时间为40ms。顺次一个一个地循环右移点亮,循环不止。

答: ORG 1500H MOV A,#80H LOOP: MOV P1,A LCALL DEL RR A SJMP LOOP DEL: MOV R7,#100 DEL1: MOV R6,#198 DJNZ R6,$ DJNZ R7,DEL1 RET RET

第5章 定时/计数器

5-1 51系列单片机的内部设有几个定时/计数器?有哪几种工作方式?由哪位选择?

不同方式下,脉冲来源是否一样?

答:51系列单片机的内部设有两个定时/计数器。分别有两种工作方式:定时器方式和计数器方式。由TMOD(定时器模式控制寄存器)中的控制位进行选择。定时器方式的脉冲来自于内部时钟脉冲,每个机器周期是计数器的值增1;计数器方式的脉冲来自于外部输入引脚T0(P3.4)或T1(P3.5)。

5-2 51系列单片机的定时/计数器有哪几种工作模式?各有什么区别?

答:51系列单片机的定时/计数器有四种工作模式。分别由TMOD中的M1和M0进行选择。特点如下:

M1 M0 特 点 0 0 0 1 1 0 1 1 模式0。TLX中低5位与THX中的8位构成13位计数器。计满溢出时,13位计数器回零。模式1。TLX与THX构成16位计数器。计满溢出时,16位计数器回零。 模式2。8位自动重装载的定时/计数器,每当计数器TLX溢出时,THX中的内容重新装载到TLX中。模式3。对定时器0,分成2个8位计数器,对于定时器1,停止计数。

5-3 51系列单片机的T0和T1在模式0中,都使用了计数器的哪些位?

答:51系列单片机的T0和T1在模式0中,使用了TLX中低5位与THX中的8位构成13位计数器,TLX中的高3位弃之未用。

5-4 51系列单片机的T0和T1在模式3时有何不同?

答:对于T1,设置为模式3,将使它停止计数并保持原有的计数值,其作用如同使TR1=0,因此,没有什么实质意义。

对于T0,设置为模式3时,16位计数器被分成两个互相独立的8位计数器TL0和TH0,其中TL0利用了定时/计数器0本身的一些控制位:、GATE、TR0、和TF0。它既可以按照计数方式工作,也可以按照定时方式工作。而TH0被规定只可用作定时器方式,借用了T1的控制位TR1和TF1。

5-5 试问当(TMOD)=27H时,是怎样定义T0和T1的? 答:(TMOD)=27H=00100111B

此时,T1工作于模式2,定时方式(即波特率发生器方式)。T1工作于模式3,TL0和TH0同为计数方式。

5-6 系统复位后执行下述指令,试问T0的定时时间为多长?

MOV TH0,#06H

MOV TL0,#00H SETB TR0 ?

答:单片机系统复位后(TMOD)=00H,即T0工作在模式0,使用的是TL0的低5位和TH0构成13位定时/计数器,由于(TH0)=06H,(TL0)=00H,所以定时的初值为:

X=0000011000000B=192

假设系统晶振频率为6MHz,机器周期T=2μs,则定时时间为:

定时值=(M-X)T=(213-192)×2μs=16000μs=16ms

5-7 已知51系列单片机的系统晶振频率为6 MHZ,请利用定时器T1和P1.2输出矩形脉冲。

答: ORG 0000H LJMP START ORG 0200H START: MOV TMOD,#20H MOV TL1,#231 SETB TR1 LOOP: SETB P1.2

MOV TH1,#81 LOP1: JBC TF1,LOP2 SJMP LOP1 LOP2: CLR P1.2

MOV TH1,#231 LOP3: JBC TF1,LOOP SJMP LOP3 END

第6章 串行接口

6.1 并行通信和串行通信各有什么特点?它们分别适用于什么场合?

答: 计算机与外界信息交换的基本方式可分为并行通信与串行通信:并行通信是数据的各位同时传送,并行通信的特点是传送速度快,但不适用长距离传输;串行通信是数据的各位依次逐位传送,串行通信的特点是传送速度较慢,但传输距离较长。

并行通信适合近距离的CPU之间或设备之间快速进行数据交换;串行通信适合长距离的CPU之间或设备之间进行数据交换,或近距离的慢速数据交换。

6.2 什么是串行异步通信?它有哪些特点?串行异步通信的数据帧格式是怎样的? 答:①异步通信依靠起始位、停止位、保持通信同步。

②特点是数据在线路上的传送不连续,传送时,字符间隔不固定,各个字符可以是连续传送,也可以间断传送,这完全取决于通信协议或约定。

③ 串行异步通信的数据帧格式如图6-1:一位起始位“0”电平;其后是5位、6位、7位或8位数据位,低位在前,高位在后;后面是一位奇偶校验位;最后是停止位“1”电平。

起始位 D0 D1 D2 D3 D4 D5 D6 D7 奇偶校验位 停止位

图6-1 异步通信的数据帧格式

6.3 串行通行有哪几种数据传送形式,试举例说明。 答:串行通信有3种数据传送形式

单工方式:数据传送是单向的。

半双工方式:数据传送是双向的,在同一时间只能做一个方向的传送。 全双工方式:数据传送是双向的,即可同时发送,又可同时接收。

图6-2串行通信数据传送3种形式

6.4 何谓波特率?某异步通信,串行口每秒传送250个字符,每个字符由11位组成,

其波特率应为多少?

答:波特率表示每秒传输的二进制数据位数。

Fb=11×250=2750 其波特率应为2750bps。

6.5 MCS-51单片机串行口有几种工作模式?如何选择?简述其特点,并说明这几种工作模式各用于什么场合? 答:MCS-51单片机串行口有4种工作模式,由串行控制寄存器SCON 中的SM0、SM1 两

位组合来确定。

模式0是同步位移寄存器方式,用于I/O口的串、并转换。

模式1是8位异步通信方式,桢格式10位,波特率可变,用于双机通信。 模式2是9位异步通信方式,桢格式11位,波特率固定,用于多机通信。

模式3是9位异步通信方式,桢格式11位,波特率可变,用于多机远距离通信。 模式1、2、3的区别主要表现在桢格式和波特率两个方面。 6.6 MCS-51单片机4种工作模式的波特率如何确定? 答:模式0的波特率固定:fosc/12

模式2的波特率固定:fosc/n(n=64或32)

模式1、3的波特率可变:T1溢出率/n(n=32或16) 6.10 设计一个MCS-51单片机的双机通信系统,并编写程序将甲机片外RAM 2200H~

2250H的数据块通过串行口传送到乙机的片外RAM1400H~1450H单元中。要求串行口工作在模式2,系统晶振为6 MHz,传送时进行奇校验;若出错,置F0标志为1。

答:串行口工作在模式2,确定SMOD=1。未规定波特率,定时器初值任取,但两机要

保持一致。

甲机发送子程序:

TXDA:MOV TMOD, #20H ;置T1定时器工作方式2 MOV TL1, #0FDH ;置初值 MOV TH1, #0FDH ;置初值 SETB TR1 ;启动T1

MOV SCON, #90H ;置串口方式2,允许接收,且SM2=0 MOV PCON, #80H ;置SMOD=1(SMOD不能位操作) CLR ES ;禁止串行中断

MOV DPTR, #2200H ;指发送数据区首地址 MOV R2, #51H ;指发送数据长度 TRSA:MOVX A, @DPTR ;读一个数据 MOV C,P

MOV TB8,C ;置校验位

MOV SBUF, A ;发送

JNB TI, $ ;等待一桢数据发送完毕 CLR TI ;清发送中断标志 INC DPTR ;指向下一字节单元

DJNZ R2, TRSA ;判数据发完否?未完继续 RET ; 乙机接收子程序:

RXDB:MOV TMOD, #20H ;置T1定时器工作方式2 MOV TL1, #0FDH ;置初值 MOV TH1, #0FDH ;置初值 SETB TR1 ;启动T1

MOV SCON, #90H ;置串行方式2,允许接收,且SM2=0 MOV PCON, #80H ;置SMOD=1(SMOD不能位操作) CLR ES ;禁止串行中断

MOV DPTR, #1400H ;置接收数据区首地址 MOV R2, #51H ;置接收数据长度 SETB REN ;启动接收

SETB F0 ;先置出错标志F0为1。

RDSB:JNB RI, $ ;等待一桢数据接收完毕

CLR RI ;清接收中断标志 MOV A, SBUF ;读接收数据 MOVX @DPTR, A ;存接收数据 MOV C,RB8 ANL C,P

JC RDSB2 ;都是1,则正确 MOV C,RB8 ORL C,P

JNC RDSB2 ;都是0,则正确 LJMP RXDBD ;出错

RDSB2:INC DPTR ;指向下一数据存储单元

DJNZ R2, RDSB ;判数据接收完否?未完继续 CLR F0 ;正确接收,则清除出错标志F0

RXDBD:RET ;

第7章 中断系统

7.1 MCS-51系统有几个中断源,各中断标志是如何产生的,又如何清零的?CPU响应中断时,中断入口地址各是多少?

答:①MCS-51系统有 、T0、 、T1和串行口共五个中断源; ②和的中断标志是IE0和IE1,在电平方式下,当外部中断输入信号是低电

平时,由硬件置1;在边沿方式下,当外部中断输入信号是下降沿时,由硬件置1;定时计数器溢出中断T0和T1的中断标志位是TF0和TF1,当定时/计数器产生溢出时,该位由硬件置1;串行口中断标志是TI或RI,当单片机接收到或发送完一帧数据后,由硬件置1。

③外部中断和的电平方式,无法清除,需采取硬件和软件相结合的方法来清除;边沿方式,在CPU响应中断后自动清除;定时/计数器0和1的溢出中断,在CPU响应中断后自动清除;串行口中断(包括串行接收中断RI和串行发送中断TI),由软件清零。

④ 、T0、 、T1和串行口中断5个中断源分别对应的中断入口地址是: 0003H、000BH、0013H、001BH、0023H。

7.2 MCS-51的中断系统有几个中断优先级?中断优先级是如何控制的? 答:MCS-51的中断系统有两个中断优先级:高优先级和低优先级。 中断优先级的控制方式是:

①高优先级中断可以中断正在响应的低优先级中断,反之则不能。

②优先级中断不能互相中断。即某个中断(不论是高优先级或低优先级)一旦得到响应,与其同级的中断就不能再中断它。

③同一中断优先级中优先权由高到低的次序是 、T0、 、T1和串行口中断,若有多个中断源同时请求中断,CPU将先响应优先权高的中断,后响应优先权低的中断。

通过中断优先级控制寄存器IP可以选择5个中断源的优先级别

7.3 MCS-51有几个中断标志位?它们有什么相同之处,又有什么不同的地方? 答:①MCS-51有IE0、TF0、IE1、TF1、TI和RI 共6个中断标志位。

②相同之处是这些中断标志位都是由硬件自动产生的,不同之处是外部中断和计数/定时器中断标志的清零是由硬件自动完成的,而串行口中断标志(TI、RI)不会自动清除,必须由用户在串行中断服务程序中用指令对TI或RI清0。

7.4 试编程实现,将设为高优先级中断,且为电平触发方式,T0溢出中断设为低优先级中断,串行口中断为高优先级中断,其余中断源设为禁止状态。 答:MOV IE, #10010110B ;T0、、串行口允许中断 MOV IP, #00010100B ;和串行口中断为高优先级 CLR IT1 ;电平触发方式

7.5 如何将定时器中断扩展为外部中断源? 答:

(1)置定时/计数器为工作模式2,且为计数方式,即8位的自动装载方式; (2)定时/计数器的高8位和低8位初值都预置0FFH;

(3)将定时/计数器的计数输入端(P3.3、P3.4)作为扩展的外部中断请求输入; (4)在相应的中断服务程序入口开始存放外中断服务的中断服务程序。

7.8 试用中断技术设计一个秒闪电路,其功能是发光二级管LED每秒闪亮400ms。主机频率为6MHz。 答:

①主机频率6MHz,定时器最大定时130 ms左右,取100 ms为定时时间单位,高电平包含6个单位,低电平包含4个单位,共10个单位。选用定时器T0模式1,初值:

P1.7驱动发光二极管,R7作时间单位计数器。电路如图7-1。电路中7404是反向器,

P1.7输出高电平,灯不亮。

②编程: ORG 0000H ;复位地址

LJMP STAT ;转初始化程序 ORG 000BH ;T0中断服务程序 LJMP PT0 ;转T0中断服务程序 ORG 1000H ;初始化程序首地址

STAT: CLR P1.7 ;输出低电平

MOV TMOD, #01H ;置T0定时器方式1

MOV TH0, #3CH ;置T0初值,定时100 ms MOV TL0, #0B0H ;置T0初值,定时100 ms SETB TR0, ;T0启动

MOV R7, #10 ;计数器置初值 MOV IE, #10000010B ;T0开中 LJMP $ ;等待中断

PT0: CJNE R7,#10, PT02

SETB P1.7 ;计数器值10~5时,灯灭 LJMP PT04

PT02: CJNE R7,#4, PT04

CLR P1.7 ;计数器值4~1时,灯亮 PT04: DJNZ R7, PT0D

MOV R7, #10 ;计数器置初值

PT0D: RETI ;中断返回

第8章MCS-51单片机的系统扩展

8.1 在MCS-51扩展系统中,程序存储器和数据存储器共用16位地址线和8位数据线,为什么两个存储空间不会发生冲突?

答:程序存储器和数据存储器虽然共用16位地址线和8位数据线,但数据存储器的读和写由和信号控制,程序存储器由读选通信号控制,两者虽然共处同一地址空间,但由于控制信号不同,故不会发生总线冲突。

8.2 MCS-51单片机的寻址范围是多少?8031单片机可以配置的存储器最大容量是多少?而用户可以使用的最大容量又是多少

答:MCS-51单片机的寻址范围是64KB,既0000H~FFFFH;

8031单片机可以配置的存储器最大容量:程序存储器64KB;片外数据存储器64KB; 用户可以使用的最大容量是:64KB ROM、64KBRAM、128B片内RAM及SFR。 8.3 为什么单片机外扩存储器时,P0口要外接锁存器,而P2口却不接?

答:单片机外扩存储器时,P0口要外接锁存器,是因为P0口是分时提供低8位地址和数据信息的,为避免低8位地址信息丢失,所以P0口要外接锁存器;而P2口不具备分时、复用功能,所以不用外接锁存器。

8.4 程序存储器和数据存储器的扩展有何相同点及不同点?试将8031芯片外接一片2732EPROM和一片6116RAM组成一个扩展系统,画出连接的逻辑图。

答:程序存储器和数据存储器的扩展相同点是:由P2口提供高8位地址,P0口分时提供低8位地址和8位双向数据线。

程序存储器和数据存储器的扩展不相同点是:数据存储器的读和写由CPU的和信号控制,地址空间任意选取;程序存储器读选信号由CPU的控制,程序空间从0000H开始。

8031与2732、6116连接的电路图如图8-1。

8.5 设某一以8031单片机为主的系统,拟采用2片2732AEPROM芯片,扩展成8KB程序存储器,请设计它的硬件结构图。

答:8031单片机与两片2732A EPROM芯片连接如图8-2

8.6 设某一以8031单片机为主的系统,拟扩展4KB数据存储器,请考虑选用合适的RAM芯片,并设计它的硬件结构图。

答:静态RAM 6116的容量是2KB,选用2片6116可满足扩展要求,8031单片机与2片6116芯片连接如图8-3。

图8-3 8031与两片6116的连接图

8.8 用8255芯片扩展单片机的I/O口,8255的A口用作输入,A口的每一位接一个开关,用B口作为输出,输出的每一位接一个显示发光二极管,现要求某个开关接1时,相应位上的发光二极管就亮(输出为0),试编写相应的程序。

答: 分析可编程8255的工作状况可知:A口为普通输入,B口普通输出,C口未用,可定义成普通输入,控制字为10011001B,即99H,编程如下: MOV DPTR, #8255命令口 MOV A, #99H MOVX @DPTR,A

LOOP: MOV DPTR, # 8255A口 MOVX A, @DPTR CPL A

MOV DPTR, # 8255B口 MOVX @DPTR,A LJMP LOOP

第9章MCS –51单片机的接口技术 9.2 CPU对键盘的监视采用哪两种手段?

答:键盘的工作方式一般有编程扫描方式和中断扫描方式两种。

编程扫描方式是利用CPU在完成其他工作的空余,调用键盘扫描子程序,来响应按键输入要求。这种方式不管键盘上有无键按下,CPU总要定时扫描键盘,因此CPU经常

处于空扫描状态。

中断扫描工作方式是当键盘上有键闭合时产生中断请求,CPU响应中断请求后,转去执行中断服务程序,在中断服务程序中判别键盘上闭合键的键号,并作相应的处理。 9.4 无论是LCD显示,还是LED显示,其显示方式都有哪两种方式?

答:无论是LCD还是LED,其显示方式都有静态显示和动态显示两种显示方式。

所谓静态显示,就是当显示器显示某一字符时,相应段的发光二极管恒定地导通或截止,并且显示器的各位可同时显示。静态显示时,较小的驱动电流就能得到较高的显示亮度。

所谓动态显示就是一位一位地轮流点亮显示器的各个位(扫描),对于显示器的每一位而言,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。

9.6 A/D转换器的主要技术指标有哪些? 答:A/D转换器的主要技术指标包括:

①量化误差与分辨率:分辨率是以输出二进制位数或者BCD码位数表示。测量误差和分辨率是统一的,量化误差是由于A/D转换器的有限字长引起的。量化误差理论上为一个单位分辨率,即±1/2LSB。提高分辨率可减少量化误差。

②转换精度:A/D转换器的转换精度反映了一个实际A/D转换器在量化值上与理想A/D转换器进行A/D转换的差值,可表示成绝对误差和相对误差。

③转换时间与转换速率:A/D转换器完成一次A/D转换所需要的时间为A/D转换时间。通常A/D转换速率是转换时间的倒数。目前A/D转换最快的是高速全并行式A/D转换器。

④失调(零点)和增益温度系数:这两项指标都是表示A/D转换器受环境温度影响的程度,一般用每摄氏度温度变化所产生的相对误差作为指标,以ppm/℃为单位表示。

⑤对电源电压变化的抑制比:A/D转换器对电源电压的抑制比(PSRR)用改变电源电压使数据发生±1LSB变化时所对应的电源电压变化范围来表示。 9.10 什么应用场合下选择ADC0809? 答:

ADC0809主要特点:8通道8位分辨率;由外部加入参考电源及转换时钟源,当时钟fc=640 kHz时,典型转换时间100μs,是中速廉价型产品。适合多路信号输入、精度和速度要求不高的场合。

9.12 D/A转换器的选择原则是什么?

答:D/A转换器的选择原则包括:D/A转换器的主要性能指标和结构特性

①D/A转换器的主要性能指标

D/A转换器的主要性能指标有:静态指标,包括各项精度指标和动态指标;增益温度系数;转换精度和转换时间。其中转换精度和转换时间是用户首要考虑的。

②D/A转换器结构特性

主要表现为芯片内部的配置情况,主要有:数字输入特性中的接收数码制、数据格式、逻辑电平等;模拟输出特性中的参考电压、参考电阻、满码输出,以及最大输出短路电流和输出电压范围;锁存特性及转换特性;影响输出电压的参考源。这些会给接口设计带来很大的影响。

9.16 什么应用场合下选择DAC0832?什么应用场合下选择MAX538?

答: 对D/A转换输出精度和速度要求不高的场合,可选择中速、廉价的DAC0832。

如果对D/A转换输出精度要求高、速度快,且需要多种输出的场合,可选择MAX538。