单片机原理及应用(曹克澄)课程课后习题答案

更新时间:2024-03-02 08:38:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《单片机原理及应用》习题答案

第一章 基础知识

1.微型计算机主要由哪几部分组成?各部分有何功能?

答:一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bus):即地址总线AB、数据总线DB和控制总线CB来连接。

CPU由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作。

存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据。按其功能可分为RAM和ROM。

输入/输出(I/O)接口是CPU与外部设备进行信息交换的部件。

总线是将CPU、存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道。

2. 将下列十进制数分别转换成为二进制数,十六进制数和BCD码数的形式:

100,64,78,80

解:1)100=1100100B=64H=0001 0000 0000BCD; 2)64=1000000B=40H=0110 0100BCD; 3)78=1001110B=4EH=0111 1000BCD。

3. 写出下列十六进制无符号数对应的十进制数和二进制:

0D5H,64H,2CH,4FEH 2) 64H=100=1100100B; 3) 2CH=44=101100B;

4) 4FEH=1278=10011111110B。

4. 写出下列十进制数对应的二进制原码、反码和补码:

+35,+50,-10,-20

解:1) +35=(23H)原=(23H)反=(23H)补; 2) +50=(32H)原=(32H)反=(32H)补;

3) -10=(8AH)原=(0F5H)反=(0F6H)补; 4) -20=(94H)原=(0EBH)反=(0ECH)补; 解:1)0D5H=213=11010101B;

5. 根据给定的原码、反码、补码求真值。 1) (0CBH)原=(-75)真值; 2) (8BH)反=(-116)真值; 3) (9BH)补=(-101)真值; 4) (6BH)补=(+107)真值;

解:1) (0CBH)原=(-75)真值; 2) (8BH)反=(-116)真值; 3) (9BH)补=(-101)真值; 4) (6BH)补=(+107)真值;

6. 试分别判断下列各组数据大小? 1)A=0.011B 2)A=1001B

B=0.011

-1

-2

C=0.011H

-3

B=1001 C=1001H

解:1)A=0.011B=0×2+1×2+1×2=0.25+0.125=0.375;

B=0.011

C=0.011H=0×16-1+1×16-2+1×16-3=0.004150390625

所以:A>B>C

2)A=1001B=9;B=1001;C=1001H=4097 所以:A

7.先将下列各组数据转换为补码表示的带符号数,然后用进行补码运算,再将结果还原成原码,并写出对应的十进制数检验结果是否正确。

1) (―74)+41 2) (―74)―41 解:根据补码定义有:

―74=(0B6H)补,+41=(29H)补,―41=(0D7H)补

1)[(―74)+41]补=(―74)补+(41)补=(0B6H+29H)补=(0DFH)补

=(-33)真值

十进制数运算:(―74)+41=―33 所以:二者运算结果相同。

2)[(―74)―41]补=(―74)补+(―41)补=(0B6H+0D7H)补=(8DH)补 =(-115)真值 十进制数运算:(―74)―41=―115 所以:二者运算结果相同。

8.何谓单片机?单片机有何特点?

答:单片机(Single Chip Microcomputer)是指把CPU、RAM、ROM、定时器/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机。

单片机在控制应用领域中的特点: (1)体积小、结构简单、可靠性高; (2)控制功能强; (3)低电压、低功耗; (4)优异的性价比。

9.单片机内部ROM的配置有几种形式? 答:单片机片内ROM的配置状态可分四种:

(1)片内掩膜(Mask)ROM型单片机(如8051),适合于定型大批量应用产品的生产;

(2)片内EPROM型单片机(如8751),适合于研制产品样机;

(3)片内无ROM型单片机(如8031),需外接EPROM,单片机扩展灵活,适用于研制新产品;

(4)EEPROM(或Flash ROM)型单片机(如89C51),内部程序存储器电可擦除,使用更方便。

第2章 MCS-51系列单片机的结构和时序

1.8051单片机内包含哪些主要功能部件?各有什么功能?

答:8051单片机是一个完整的单片微型计算机。它包括以下功能部件: (1)1个8位CPU;

(2)片内4KB的程序存储器ROM; (3)片内128B的数据存储器RAM;

(4)可寻址外部程序存储器和数据存储器空间各64KB的控制电路; (5)21个特殊功能寄存器SFR;

(6)4个8位并行I/O口P0~P3,共32根I/O线; (7)1个全双工的串行口; (8)2个16位定时器/计数器;

(9)5个中断源,有2个优先级嵌套中断结构; (10)片内振荡器及时钟电路。

2.8051单片机的EA信号有何功能?8031的EA引脚应如何处理,为什么? 答:(1) EA是访问外部程序存储器ROM的控制信号。

当EA为低电平(接地)时,CPU只执行外部程序存储器中的程序。

当EA为高电平且PC值小于0FFFH(4K)时,CPU执行内部程序存储器的程序,但当PC的值超出4K时(对8051/8751/8951)将自动转去执行片外程序存储器内的程序。

8031单片机无片内ROM的,必须外部扩展程序存储器,因此,8031的EA必须接地(低电平)。

3.MCS-51单片机的P0~P3口各有什么特点?

答:MCS-51单片机有P0、P1、P2、P3四个双向的8位并行I/O口,每个端口可以按字节输入或输出,每一条I/O线也可以单独用作输入或输出(即按位进行输入或输出)。每个端口都是由一个锁存器(即特殊功能寄存器P0~P3),一个输出驱动器和两个(P3口为3个)输入缓冲器组成。并行I/O口作输出时数据可以锁存,作输入时数据可以缓冲,但它们又各具特点。

(1)P0口和P2口构成MCS-51单片机的16位地址总线,P0口还是8位的数据总线。P3口多用于第二功能输入或输出。通常只有P1口用于一般输入/输出。

P3口各位的第二功能

P3口 引脚 P3.0 第二功能 RXD(串行输入端) P3口引脚 第二功能 P3.4 T0(定时器0的外部输入) P3.1 P3.2 P3.3 TXD(串行输出端) INT0(外部中断P3.5 T1(定时器1的外部输入) P3.6 P3.7 WR(片外数据存储器写选通控制输出) RD(片外数据存储器读选通控制输出) 0输入) INT1(外部中断1输入) (2)系统复位后,P0~P3口的32个管脚均输出高电平,因此在系统的设计过程中,应保证这些管脚控制的外设不会因为系统复位而发生误动作。

(3)P0~P3口输出级的电路结构有所不同。P0口是三态输出,其每个管脚均可以驱动8个LSTTL输入,而P1~P3口的输出级均有上拉电阻,每个管脚可驱动4个LSTTL输入。

(4)每个并行口,可定义一部分管脚为输入脚,另一部分管脚为输出脚,没有使用的管脚可以悬空。

4.简述8051单片机存储器的组织结构和片内RAM的地址空间分配。

答:8051单片机的存储器包括程序存储器和数据存储器,从用户使用的角度可分为三个逻辑地址空间:

(1)片内、片外统一编址的64KB程序存储器地址空间0000H~0FFFFH; (2)64KB的外部数据存储器或扩展I/O口地址空间0000H~0FFFFH;

(3) 256B的片内数据存储器地址空间00H~FFH(包括低128B的内部RAM地址00H~7FH和高128B的特殊功能寄存器地址空间,21个SFR离散地分布在这个区域)。

内部RAM共有128个单元,根据用途可划分为工作寄存器区、位寻址区和通用RAM区,各区域的特性如下:

(1)工作寄存器区(00H~1FH) 寄存器区32个单元共分4个组,每个组有8个8位的寄存器R0~R7。在任何时刻,四个组中只能有一组可以成为当前工作寄存器组使用,其他三组作为一般的内部RAM使用。当前工作寄存器组由程序状态字寄存器PSW的RS0和RS1两位的状态来决定。

(2)位寻址区( 20H~2FH)共16个单元,每个单元有8个位,每个位都有一个位地址,编号为00H~7FH,位寻址区的16个单元也可以按字节寻址,作为一般的内部RAM使用。

(3)通用RAM区(30H~7FH) 这部分存储空间作为一般的内部RAM区或堆栈区,CPU只能按字节方式寻址。

5.8051单片机有哪些特殊功能寄存器?

答:8051单片机有21个8位的特殊功能寄存器(SFR),它们的地址离散地分部在内部数据存储器的80H~FFH地址空间。

在8051单片机结构中,21个SFR在物理上是分散在片内各功能部件中:

(1)CPU的中SFR:Acc、B、PSW、SP和DPTR(16位寄存器,由DPH和DPL组成); (2)定时/计数器单元中的寄存器:TMOD、TCON、T0(16位寄存器,由TH0和TL0

组成)和T1(16位寄存器,由TH1和TL1组成);

(3)并行I/O口寄存器:P0、P1、P2和P3; (4)中断系统内的寄存器:IE和IP;

(5)串行端口中的寄存器:SCON、SBUF和PCON。

6.程序计数器PC的功能和特点?

答:程序计数器PC是一个16位的专用寄存器,用来存放即将要执行的指令地址,可对64KB的程序存储器直接寻址。它具有自动加1功能,当CPU要取指令时,PC的内容送地址总线上,从存储器中取出指令后,PC内容则自动加1,指向下一条指令,从而保证程序按顺序执行。PC虽然也是CPU内部的一个寄存器,但它在物理结构上是独立的,没有地址,是不可寻址的,用户无法对它进行直接读写,不属特殊功能寄存器。

7.什么叫堆栈?堆栈指针SP的作用是什么?8051单片机堆栈的最大容量是多少字节?

答:堆栈是按照“先进后出,后进先出”的原则来存取数据的一个内部RAM区域,这个存储器区域的一端是固定的(栈底),另一端是活动的(栈顶),每个存储单元是不能按字节任意访问的。

堆栈指针SP始终指向栈顶单元,栈顶随着数据入栈和出栈上下浮动。 8051单片机堆栈的最大容量是128字节。

8.8051单片机是如何确定和改变当前工作寄存器组?

答:在任何时刻,8051单片机的四个工作寄存器组中只能有一组可以成为当前工作寄存器组使用,其他三组作为一般的内部RAM使用。当前工作寄存器组由程序状态字寄存器PSW的RS0和RS1两位的状态来决定,如表所示。

当前工作寄存器组的选择 RS1 RS0 被选寄存器组 0 0 1 1 的工作寄存器组。

9.单片机复位后,CPU使用了哪一组工作寄存器?工作寄存器R0~R7对应的单元地址是什么?

答:单片机复位后,RS1和RS0都为0,CPU选中第0组作为当前工作寄存器组,工

0 1 0 1 0组 1组 2组 3组 寄存器R0~R7的地址 00H~07H 08H~0FH 10H~17H 18H~1FH 根据需要,用户可以利用传送指令或位操作指令改变RS1和RS0的内容来选择不同

作寄存器R0~R7对应的单元地址是00H~07H。

10.程序状态字寄存器PSW的作用是什么?各位的作用是什么?

答:PSW是一个8位的特殊功能寄存器,由一些标志位组成,用于存放程序运行中的各种状态信息。它可以进行位寻址。各位的作用如下:

Cy:进位标志位。在进行加(或减)法运算时,若操作结果的最高位(D7位)有进位(或借位)时,Cy由硬件置1,否则Cy清0。在进行位操作时,Cy又是位累加器,指令助记符用C表示。

AC:辅助进位标志位。在进行加(或减)运算时,若操作结果的低半字节(D3位)向高半字节产生进位(或借位)时,AC位将由硬件自动置1,否则AC位清0。

F0:用户标志位。用户根据需要对F0置位或复位,作为软件标志。

RS1和RS0:工作寄存器组选择控制位。由用户用软件改变RS1和RS0的状态,以选择内RAM中的哪组工作寄存器为当前工作寄存器组。

OV:溢出标志位。当进行补码运算时,运算结果超出-128~+127范围时,产生溢出,则OV自动置1,否则OV清0。

PSW.1:保留位。8051中未定义。

P:奇偶校验标志位。每条指令执行完后,该位始终跟踪累加器A中1的数目的奇偶性。如果A中有奇数个1,则P=1;否则P=0。

11.什么是时钟周期、机器周期和指令周期?

答:(1)时钟周期(又称为振荡周期)是指振荡器产生一个振荡脉冲信号所用的时间,是振荡频率的倒数,称为拍节。

(2)机器周期是指CPU完成某一个规定操作所需的时间,8051单片机的一个机器周期包含6个状态,并依次表示为S1~S6,每个状态分为2个节拍。因此一个机器周期包含12个时钟周期(振荡周期),依次表示为:S1P1、S1P2、S2P1、?、S6P1、S6P2。

(3)指令周期是指CPU执行一条指令所需要的时间称为指令周期。MCS-51单片机指令周期根据指令的不同,可包含有1或2或4个机器周期。

12.8051单片机复位后寄存器PC、A、PSW、SP 、P0~P3的状态各是什么?复位后内部RAM中的数据有何影响?

答:8051单片机复位后PC为0000H,A和PSW均为00H,SP为07H,P0~P3均为FFH。 单片机的复位不影响内部RAM的状态(包括工作寄存器Rn )。

13.80C51如何进入节电工作方式?

答:只有CHMOS型单片机(如80C51)才有这种工作方式,有两种节电方式,即待机方式和掉电保护方式。

由片内SFR中的电源控制寄存器PCON的低4位来控制待机和掉电两种方式,其格式如下:

位 D7 D6 D5 — D4 — D3 D2 D1 PD D0 IDL 位名称 SMOD — GF1 GF0 (1)IDL:待机方式位。若IDL=1,进入待机方式; (2)PD:掉电方式位。若PD=1,进入掉电方式;

当PD和IDL同时为1,则先进入掉电工作方式。复位后,PCON中有定义的位均为0。

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

1.简述汇编指令格式。

答:汇编语言的指令格式一般如下:

[标号:]操作码 [第一操作数][,第二操作数][,第三操作数][;注释] 其中:

带有方括号[??]的部分代表可选项。

标号:是表示该指令的符号地位,可以根据需要进行设置。标号以英文字母开始的1-6个字母或数字组成的字符串表示,并以“:”结尾。

操作码:是表示指令的操作功能,用助记符表示。每条指令都有操作码,是指令的核心部分。

操作数:表示参与传送、运算的数据或数据地址。这里的操作数不一定就是直接参与运算或传送的,而应根据操作数的寻址方式,寻找出真正参与运算或传送的数据。二个或二个以上操作数之间用“,”间隔。

注释:用来解释该条指令或一段程序的功能,便于对指令或程序的阅读理解。注释以“;”为开始,注释部分对程序的执行没有影响。

2.什么叫寻址方式?在MCS-51系列单片机指令系统中,主要有哪几种寻址方式?试分别举例说明。

答:寻址就是寻找操作数的地址,寻找操作数地址的方式,称为操作数地址的寻址方式,简称寻址方式。

在MCS-51系列单片机指令系统中,主要的寻址方式有: (1)立即寻址方式,指令如:MOV A,#67H; (2)立即寻址方式,指令如:MOV A,66H; (3)寄存器寻址方,指令如:MOV A,R3;

(4)寄存器间接寻址方式,指令如:MOV A,@R1; (5)变址寻址方式,指令如:MOVC A,@A+DPTR; (6)相对寻址方式,指令如:SJMP 30H; (7)位寻址方式,指令如:MOV ACC.3,Cy

3.试说明下列指令中划线部分的寻址方式。

MOV A,@R0 ADD A,#36H MOVC A,@A+PC DJNZ R2,rel

SETB RS1 CLR A MOV 45H,A CLR C

解:第1条为寄存间接寻址方式;第2条指令为立即寻址方式;第3条指令为变址寻址方式;第4条指令为相对寻址方式,第5条指令为位寻址方式,第6条指令为寄存器寻址,第6条指令为直接寻址方式,第7条指令为位寻址方式。

4.设A=9BH,R0=30H,内RAM的(30H)=40H,(40H)=6DH,分别执行下列指令,说明被真正传送的数据是多少?

1)MOV A,#40H 2)MOV 40H,@R0 3)MOV A,30H 4)MOV A,@R0 5)MOV A,R0

答:1)真正被传送的数据是立即数40H。

2)真正被传送的数据是R0间址中(即30H单元中)的数据40H。 3)真正被 传送的数据是30H单元中的数据40H。

4)真正被传送的数据是R0间址中(即30H单元中)的数据40H。 5)真正被传送的数据是R0中的数据30H。

5.设A=86H,R0=30H,R1=40H,内RAM的(30H)=76H,(40H)=6BH,执行下面程序:

MOV A,40H MOV @R0,A MOV A,R0 MOV @R1,A MOV R1,A MOV @R1,#70H

后,A= ,R0= ,R1= ,(30H)= ,(40H)= 解: MOV A,40H ;A=6BH

MOV @R0,A ;(R0)=(30H)=6BH MOV A,R0 ;A=30H

MOV @R1,A ;(R1)=(40H)=30H MOV R1,A ;R1=30H

MOV @R1,#70H ;(R1)=(30H)=70H

JNZ LOOP2 ;判断A是否为非0,非0转移 INC 41H ;零的个数统计量加1 SJMP LOOP4

LOOP2:JB ACC.7,LOOP3 ;判断A是否为负数,是负数则转移

INC 40H ;正数的个数统计量加1 SJMP LOOP4

LOOP3:INC 42H ;负数的个数统计量加1 LOOP4:INC R0

DJNZ R2,LOOP1 END

14.分析执行下面各段程序的结果。 (1) ORG 1000H MOV A,#34H

ADD A,#78H DA A RET

A= ,OV= ,P= ,Cy= ,AC=

解: ORG 1000H

MOV A,#34H ;A=34H

ADD A,#78H ;A=A+78H=34H+78H=0ACH,Cy=0,AC=0,OV=1,P=0 DA A ;A=A+66H=0ACH+66H=12H,Cy=1,AC=0,OV=0,P=0 RET

所以:A= 12H ,OV= 0 ,P= 0 ,Cy= 1 ,AC= 0

(2) MOV SP,#5FH

MOV A,#54H MOV B,#78H PUSH A PUSH B POP A POP B RET

A= ,B= ,SP=

解: MOV SP,#5FH ;SP=5FH

MOV A,#54H ;A=54H

MOV B,#78H ;B=78H

PUSH A ;SP=60H,(SP)=(60H)=54H PUSH B ;SP=61H,(SP)=(61H)=78H POP A ;A=(SP)=(61H)=78H,SP=60H POP B ;B=(SP)=(60H)=54H,SP=5FH RET

所以:A= 78H ,B= 54H ,SP= 5FH

(3) MOV A,#7DH ADD A,#6BH MOV R0,#34H MOV 34H,#0BCH ADDC A,@R0 XRL A,R0 ORL A,34H MOV @R0,A SWAP A XCH A,R0

RET

A= ,R0= ,(34H)= 解: MOV A,#7DH ;A=7DH

ADD A,#6BH ;A=7DH+6BH=0E8H,Cy=0 MOV R0,#34H ;R0=34H MOV 34H,#0BCH ;(34H)=0BCH

ADDC A,@R0 ;A=A+(R0)+Cy=A+(34H)+Cy=0E8H+0BCH+0=0A4H,Cy=1 XRL A,R0 ;A=A⊕R0=0A4H⊕34H=90H ORL A,34H ;A=A∨(34H)=90H∨0BCH=0BCH MOV @R0,A ;(R0)=(34H)=A=0BCH SWAP A ;A=0CBH XCH A,R0 ;A=34H,R0=0CBH

RET

所以:A= 34H ,R0= 0CBH ,(34H)= 0BCH

(4) CLR C

MOV A,#55H MOV R0,#23H

LOOP1:ADDC A,R0

JNC LOOP1 RET

A= ,R0=

解: CLR C ;Cy=0

MOV A,#55H ;A=55H MOV R0,#23H ;R0=23H

LOOP1:ADDC A,R0 ;(1)A=A+R0+Cy=78H,(2)A=9BH,(3)A=0BEH,(4)A=0E1H ;(5)A=04H,Cy=1

JNC LOOP1 RET

A= 04H ,R0= 23H

(5) ORG 2000H

MOV A,#00H MOV R2,#09H

LOOP1:ADD A,#03H

DA A

DJNZ R2,LOOP1

MOV 30H,A

RET

A= ,R2= ,(30H)=

解: ORG 2000H

MOV A,#00H ;A=00H MOV R2,#09H ;R2=09H

LOOP1:ADD A,#03H ;(1)A=03H,(2)A=06H,(3)A=09H,(4)A=0CH,(5)?

DA A ;(1) A=03H,(2)A=06H,(3)A=09H,(4)A=12H,(5)? DJNZ R2,LOOP1;(1) R2=08H,(2)R2=07H,(3)R2=06H,(4)R2=05H,(5)?

MOV 30H,A ;(30H)=27H

RET

A= 27H ,R2= 00H ,(30H)= 27H

15.对3-14(1)、(5)题进行手工汇编。 解:(1) 源程序 ORG 1000H MOV A,#34H ADD A,#78H DA A RET (5)

源程序 ORG 2000H MOV A,#00H MOV R2,#09H LOOP1:ADD A,#03H DA A DJNZ R2,LOOP1 MOV 30H,A RET

16.试编制能延时40ms的程序。 解: 设fosc=12MHz,则机器周期为1us。

参考程序

START:MOV R0,#84H ;1个机器周期数,R0=132

MOV R1,#96H ;1个机器周期数,R1=150 LOOP1:DJNZ R1,LOOP1 ;2个机器周期数

MOV R1,#64H ;1个机器周期数 DJNZ R0,LOOP1 ;2个机器周期数 RET ;2个机器周期数

上述程序执行的机器周期数为:1+1+(2×150+1+2)×132+2=40000(个) 所以上述程序执行的时间即为40ms。

17.试编制程序,实现1+2+3+?+100=?

解:分析:进行十进制数加法,因此需要进行BCD码调整,其中千位、百位数存放在31H单元,十位、个位数存放在30H单元中。

参考程序

START:MOV A,#00H

地址 2000H 2002H 2004H 2006H 2007H 2009H 200BH 机器码 74 00 7A 09 24 03 D4 DA FB F5 30 22 地址 1000H 1002H 1004H 1005H 机器码 74 34 24 78 D4 22 MOV R0,#01H MOV 31H,#00H LOOP1:ADD A,R0 DA A JNC LOOP2 INC 31H LOOP2:PUSH A MOV A,R0 ADD A,#01H DA A JC LOOP3 MOV R0,A POP A SJMP LOOP1 LOOP3:POP A

INC 31H

MOV 30H,A END

18.在内RAM的30H~3FH单元中存放着16个字节的无符号数,要求比较大小,并按从大到小顺序存放在内RAM的30H~3FH单元中。

解:参考程序

START:MOV R0,#30H MOV R2,#0FH LOOP1:MOV A,R0 INC A

MOV R1,A

LOOP2:MOV A,@R0 CLR C SUBB A,@R1 JNC LOOP2 XCH A,@R0 XCH A,@R1 INC R1

CJNE R1,#40H,LOOP2 INC R0

11.要求在P1.7引脚输出周期为20ms的方波。设单片机系统时钟频率fosc=12MHz。试编写定时器初始化程序和中断服务程序,并指定程序入口地址。

解:根据题意,由于fosc=12MHz,所以机器周期为1us;由于要产生周期为20ms的方波,因此定时时间为10ms。

设定采用定时器0,工作方式为方式1,TR触发方式,则:TMOD=00H

定时初值=216-10000/1=65536-10000=55536=01100011 11000B,TH0=F0H,TL0=C8H

程序如下:

ORG 0000H LJMP MAIN

ORG 000BH LJMP IT0

ORG 0030H IT0:MOV TH0,#0F0H MOV TL0,#0C8H CPL P1.7 RETI

ORG 0100H MAIN:MOV TMOD,#00H

MOV TH0,#0F0H MOV TL0,#0C8H SETB ET0 SETB EA SETB TR0 LOOP:SJMP LOOP

END

12.要求将定时器T0和T1的外部信号输入端P3.4和P3.5作为新增的二个外部中断请求信号,如何设置计数初值?

答:根据题意,就是控制要求外部中断源2个太少,需要增加2个外部中断源,因此将内部的T0和T1的两个中断源改为外部中断源,这两个外部中断源输入口分别为P3.4和P3.5,此时只要将T0和T1设置为计数器工作状态,方式均设置为方式0,则它们的初值均为11111111 11111B,即TH0=TH1=0FFH,TL0=TL1=1FH,只要P3.4和P3.5有信

号输入,即使T0和T1生产中断信号。

13.要求在P1.0引脚上输出如图4-16所示的波形。试编写定时器初始化程序和中断服务程序,并指定程序入口地址。

图 4-16

解:根据题意,只要将定时时间为50us,并设定一个计数寄存器,当为0和4时对P1.0取反即可。假定本题采用T0,定时器工作状态,由TR0启动,工作方式为方式2。

则:TMOD=00000010B=02H,

初值=28-50=256-50=206=11001110B=CEH,TH0=0CEH,TL0=0CEH 程序如下:

ORG 0000H LJMP MAIN ORG 000BH LJMP IT0

ORG 0030H

IT0:CJNE R7,#00H,LOOP1 SEBT P1.0

LOOP1:CJNE R7,#01H,LOOP2 CLR P1.0 LOOP2:INC R7

CJNE R7,#05H,LOOP3

MOV R7,#00H LOOP3:RETI

ORG 0100H

MAIN:MOV R7,#00H

MOV TMOD,#02H MOV TH0,#0CEH MOV TL0,#0CEH SETB ET0 SETB EA SETB TR0

LOOP:SJMP LOOP END

另一种方法,采用二个定时器T0和T1,工作方式均为方式2,TR触发方式,其中T0定时时间为50us,T1定时时间为200us,二个定时器交替定时工作。

则:TMOD=22H

T0定时初值=28-50=256-50=206=11001110B=CEH,TH0=0CEH,TL0=0CEH T1定时初值=28-200=256-200=56=00111000B=38H,TH0=38H,TL0=38H 程序如下:

ORG 0000H LJMP MAIN

ORG 000BH

CLR TR0 CLR P1.0 SETB TR1 RETI

ORG 001BH CLR TR1 SETB P1.0

SETB TR0 RETI

ORG 0100H MAIN:MOV TMOD,#22H

MOV TH0,#0CEH MOV TL0,#0CEH MOV TH1,#38H MOV TL1,#38H SETB ET0 SETB ET1 SETB EA SETB P1.0 SETB TR0 LOOP:SJMP LOOP

END

14.试编写程序,使T1每计满100个外部输入脉冲后,使P0口输出0FFH的数据。 解:根据题意,T1应为计数器工作状态,采用方式2,TR1启动工作。 则:TMOD=20H

初值=28-100=256-100=156=10011100B=9CH,TH0=9CH,TL0=9CH 程序如下:

ORG 0000H LJMP MAIN

ORG 001BH MOV P0,#0FFH RETI

ORG 0100H MAIN:MOV TMOD,#20H

MOV TH1,#9CH MOV TL1,#9CH SETB ET1 SETB EA SETB TR1 LOOP:SJMP LOOP

END

第5章 存储器扩展技术

1.只读存储器有哪几种类型?其各自的特点是什么? 答:只读存储器共分为以下五种:

(1)掩膜ROM:掩膜ROM简称为ROM,其编程是由半导体存储器制造厂家完成,即在生产过程中进行编程。掩膜ROM制造完成后,用户不能更改其内容。这种ROM芯片存储结构简单,集成度高,但由于掩膜工艺成本高,因此只适合于大批量生产。

(2)可编程只读存储器:可编程只读存储器即PROM,这种芯片出厂时并没有任何程序信息,其程序是在开发时由用户写入。但这种ROM芯片只能写一次,其程序一旦写入就不能再进行修改。

(3)紫外线擦除可改写只读存储器:紫外线擦除可改写只读存储器即EPROM,这种芯片的内容也由用户写入,但允许进行多次擦除和重新写入。

(4)电擦除可改写只读存储器:电擦除可改写只读存储器即EEPROM(也写成E2PROM),它是一种用电信号编程也用电信号擦除的ROM芯片,它可以通过读写操作进行逐个存储单元的读出和写入,读写操作与RAM几乎没有什么差别。

(5)闪速存储器:闪速存储器即Flash ROM,是在EPROM和E2PROM的基础上发展起来的一种只读存储器,读写速度均很快,存取时间可达70ns,存储容量可达2KB~16KB,近期甚至有16~64MB的芯片出现。这种芯片的可改写次数可以从1万次到100万次。闪速存储器(Flash Memory) 又称PEROM,具有掉电后信息保留的特点,又可以在线写入,自动覆盖以前内容,且可以按页连续字节写入。

2.随机存取存储器有哪几种类型?其各有什么不同?

答:随机存取存储器(Random Access Memory)简称RAM,在单片机系统中用于存放可随时修改的数据。

按半导体工艺不同,RAM分为MOS型和双极型两种。MOS型集成度高、功耗低,价格便宜,但速度较慢,双极型的特点则正好相反。

按工作方式不同,RAM又可分为静态RAM(Static Random Access Memory)和动态RAM(Dynamic Random Access Memory)两种,(简称SRAM和DRAM)。

动态RAM的集成度高,功耗小,价格低。

3.8031与8051最小系统有什么不同?

答:用8031芯片构成最小应用系统时,由于片内无驻留ROM,所以必须在片外扩展程序存储器,这常常选用EPROM芯片。在扩展程序存储器时,还必须接上地址锁存器。

8051/8751 片内驻留4KB的掩膜ROM /EPROM,在构成最小应用系统时,只要加上

则:TMOD=00000001B=01H

初值=2-100000/2=65536-50000=15536=0011 1100 1011 0000B, TH0=3CH,TL0=0B0H 参考程序

ORG 0000H LJMP MAIN

ORG 000BH LJMP IT0

ORG 0050H IT0:MOV TH0,#3CH MOV TL0,#0B0H INC R0

CJNE R0,#14H,LOOP1 MOV R0,#00H RL A MOV P1,A

LOOP1:RETI

ORG 0100H MAIN:MOV R0,#00H

MOV A,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA SETB TR0 LOOP:SJMP LOOP END

8.与8255A比较,8155接口芯片有何特点?

答:与8255A比较,8155接口芯片具有可扩展的256B RAM,且包含14位的定时/计数器电路。但在数据传送方式上,8155没有可以同时进行双向传送的端口,任一工作方式下只能作为输入端口或输出端口。

16

9.按图6-14所示,将8155内部RAM单元全部清0。

解:根据图6-14,8155的256B RAM的地址范围为:7E00H~7EFFH(P2口连接的线视为1)。

START:MOV P2,#7EH

MOV R0,#00H MOV A,#00H LOOP:MOVX @R0,A

INC R0

CJNE R0,#00H,LOOP END

START:MOV DPTR,#7E00H

MOV A,#00H MOV R2,#00H LOOP:MOVX @DPTR,A

INC DPTR DJNZ R2,LOOP END

10.写出8255A方式0可能出现的十六种控制字及相对应的各口输入输出组态。

解:

工作方式控制字 10000000B或80H 10000001B或81H 10000010B或82H 10000011B或83H 10001000B或80H 10000001B或80H 10000010B或80H 10000011B或80H 10010000B或80H 10010001B或80H 10010010B或80H 10010011B或80H 10011000B或80H A口 输出 输出 输出 输出 输出 输出 输出 输出 输入 输入 输入 输入 输入 B口 输出 输出 输入 输入 输出 输出 输入 输入 输出 输出 输入 输入 输出 C口高4位 C口低4位 输出 输出 输出 输出 输入 输入 输入 输入 输出 输出 输出 输出 输入 输出 输入 输出 输入 输出 输入 输出 输入 输出 输入 输出 输入 输出 10011001B或80H 10011010B或80H 10011011B或80H 输入 输入 输入 输出 输入 输入 输入 输入 输入 输入 输出 输入

第7章 串行通信技术

1.什么是并行通信和串行通信?

答:并行通信就是一次的传输量为8个位(l个字节)。

串行通信则是一次只传输l个位(也就是一个标准电位状态)。

2.RS-232与USB各采用哪种信号传输方式,试比较其差异。 答:RS-232采用串行通信信号传输方式。 USB采用串行通信扩展信号传输方式。

RS-232串行通信端口是每台计算机上必要配备,通常有COM1与COM2两个端口。一般的计算机将COM1端口以9引脚的接头接出,而以25引脚的接头将COM2端口接出。

USB(UniversalSehalBus,通用串行总线)接口,采用了整合计算机所使用的外围产品的连接方式。

3.试简述RS-232C串行通讯标准的数据传送格式和电气标准。 答:RS-232C串行通讯标准的数据传送格式如下图所示:

它是以位串行方式传送数据的格式,数据从最低有效位开始连续传送,以奇偶校验位结束。RS-232C标准接口并不限于ASCⅡ数据,还可有5一8个数据位后加一位奇偶校验位的传送方式。

RS-232C串行通讯标准的电气标准如下表所示: 最大电缆长度 最大数据率 驱动器输出电压(开路) 驱动器输出电压(满载) 驱动器输出电阻 驱动器输出短路电流 接收器输入电阻 接收器输入门限电压值 接收器输入电压 15m 20kbPs ±25V(最大) ±5~±15V(最大) 300Ω(最小) ±500mA 3~7KΩ -3~+3V -25~+25V(最大) RS-232C标准采用负逻辑,逻辑“l”电平在-5~-15V范围内,逻辑“0”电平则在十5~十15V范围内。它要求RS-232C接收器必须能识别低至十3Ⅴ的信号作为逻辑“0”,而识别高至-3Ⅴ的信号作为逻辑“l”,这意味着有2V的噪音容限。

4.RS-232标准的接口信号有哪几类?其中主要信号是什么?

答:RS-232标准的接口信号有四类:数据信号(4根)、控制信号(12根)、定时信号(3根)和地(2根)。

其中主要信号是“发送数据”和“接收数据”。

5.说明如何利用MCS-51串行口方式0,将串行口扩展为并行口?

答:利用串行接口方式0,外接移位寄存器,将串行接口扩展为并行输入、输出接口。如下图。

图中串行接口工作于方式0输出,CD4094为串行输入、8为并行输出的移位寄存器。在CLK端移位脉冲的作用下,SI端的信号进入移位寄存器。Qs为串行输出端,用于级连。当STB端输入选通信号为1时,移位寄存器中的数据从Q1~Q8并行输出。现用两片CD4094串联构成16位并行输出电路。当单片机从RXD端连续送出16位串行数据后,利用一根I/O接口线(如P1.0)送出选通信号,使16位并行数据同时从两片CD4094输出。

6.以MCS—51串行口方式1为例,说明其发送和接收工作过程?

答:在方式l状态下,串行口为8位异步通信接口。一帧信息为l0位;l位起始位(0),8位数据(低位在先)和1位停止位(l)。TXD为发送端,RXD为接收端。波特率不变。

(1)发送:数据由TXD端输出,CPU执行一条写入SBUF的指令后,便启动串行口发送,发送完一帧信息时,发送中断标志置1。

(2)接收:数据从RXD端输入。当允许输入位REN置l后,接收器便以波特率的16倍速率采样RXD端电平,当采样到l至0的跳变时,启动接收器接收,并复位内部的16分频计数器,以实现同步。计数器的16个状态把1位时间等分成16份,并在第7、8、

第8章 I/O设备接口技术

1.A/D转换器和D/A转换器各有哪些主要技术指标?

答:A/D转换器的主要技术指标有:分辨率——通常用数字量的位数表示,即对输入量的变化灵敏度;量程——所能转换的电压范围;精度——有绝对精度和相对精度两种表示方法;转换时间——完成一次A/D转换所需要的时间;输出逻辑电平;工作温度。

D/A转换器的主要性能指标有:分辨率——表示D/A转换器对微小输出量变

化的敏感程度,通常用数字量的数位表示;相对精度——在满刻度已校准的前提下,在整个量程内,对应于任一数码的模拟量输出与它的理论值的相对误差;转换时间——在数字量满刻度情况下,达到终值+LSB/2时所需的时间;线性误差:在一定温度下的最大非线性度。

2.一个12位D/A转换器的满量程为10V,如果输出信号的下限为2V,上限信号为6V,试确定该上、下限信号所对应的二进制码。

解:12位D/A转换器输出的上限值为FFFH,对应的输出模拟值为10V,则输出信号2V的下限有:

210? X4095X2V=819=333H=001100110011B 而输出信号6V的上限有:

610? X4095

X6V=2514=86AH=100001101010B

3.试利用图8-3电路,要求输出一个周期为10ms的三角波。

解:假设fosc=12MHz,则机器周期为1us。

三角波的机器周期的10ms,则上半周期与下半周期各为5ms,每半个周期有250个小平台(输出最大不用255,而是250,即FAH),则每个平台占用的时间为20us,因此2个数据输出之间间隔为20us,即需要有20个机器周期。

参考程序如下:

START:MOV DPTR,#00FEH

MOV A,#00H

UP:MOVX @DPTR,A ;2个机器周期

INC A ;1个机器周期 MOV R0,#07H ;1个机器周期

LOOP1:DJNZ R0,LOOP1 ;2个机器周期

CJNE A,#0FAH,UP ;2个机器周期

DOWN:MOVX @DPTR,A ;2个机器周期

DEC A ;1个机器周期 MOV R0,#07H ;1个机器周期

LOOP1:DJNZ R0,LOOP1 ;2个机器周期

CJNE A,#00H,UP ;2个机器周期 END

4.叙述逐次逼近式A/D转换器的工作原理。

答:逐次逼近式A/D转换器的工作原理:如下图所示,比较开始时,首先对二进制计数器(输出锁存器)的最高位D7置“1”,然后进行转换、比较、判断。若输入模拟量UIN大于Ui,比较器输出为“1”,则使输出锁存器的最高位保持为1,否则对最高位清“0”;然后依次对较低的位按照上述方法进行比较和调整,直至最低位D0。此时D/A转换器的数字输入量(即输出锁存器内容)即为对应的输入模拟量UIN的数字量,将此数据读入单片机内,即完成了A/D转换过程。逐次逼近式这种方法与天平称物体质量的原理相似,天平称物体质量从最大砝码开始的,逐次逼近式是从最高位开始。对于n位的转换器,总共需要n次这样的过程即可。

5.叙述双积分式A/D转换器的工作原理。

答:双积分式A/D转换器的工作原理:如下图a所示,首先是由控制信号(来自单片机数据总线)使电子开关合向模拟量输入电压UIN处,模拟量输入电压UIN加到积分电路上进行积分,同时计数器作为定时器对时钟脉冲进行计数。当计数器计数的数值达到规定的值时,将极性相反的标准电压加到积分电路,同时计数器清零后重新对时钟脉冲计数,直至积分器的输出电压为零,比较器输出信号向控制逻辑发出回零信号,控制逻辑分别向计数器发出停止计数的控制信号、向CPU发出A/D转换结束信号(也称“数据准备好”或“数据有效”)的状态信号,此时计数器的输出的数字量就是该模拟量对应的数字量,CPU接收到转换结束信号后就从计数器的输出端读计数值即得到转换结果。从图中b所示,输入模拟电压UIN大,则固定时间积分后的电压值就高,斜率越陡,如A线,则相应的反向积分时间就越长,即计数器的计数值就越大,反之如B线,计数器的计数值就越小。

6.现有8个模拟量,要求分时将它们进行转换成数字量,转换结果存放在30H开始的内RAM中。

解:

电路图如下图。

MAIN:

INT1:

GOMAIN:

ORG 0000H LJMP MAIN ORG 0013H LJMP INT1 ORG 0100H

MOV R1,#30H MOV R2,#08H SETB IT1

MOV DPTR,#FEF8H MOVX @DPTR,A SETB EX1 SETB EA SJMP $ ORG 0200H

MOVX A,@DPTR MOV @R1,A INC R1 INC DPTR

DJNZ R2,GOMAIN MOV R1,#30H MOV R2,#08H

MOV DPTR,#FEF8H MOVX @DPTR,A RETI

;转主程序

;转中断服务子程序

;置数据区首地址 ;置通道数

;置边沿触发方式

;置ADC0809通道0地址

;启动ADC0809通道0进行A/D转换 ;允许INT1中断 ;CPU开中 ;等待中断

;读A/D值 ;存A/D值

;修正数据区地址 ;修正通道地址

;新一轮循环设置

;启动下一通道A/D转换

第9章 单片机应用系统设计

1.单片机控制系统的设计一般分几步?每一步完成什么任务? 答:单片机控制系统的设计一般分四步,每一步完成任务如下:

(1)总体设计 在对系统要求进行全面分析之后,确定实施方案,画出系统的硬件结构框图和应用程序结构框图。

(2)硬件设计 包括选择主机,配置外设,设计输入通道和输出通道,设计电源和接地系统,同时要考虑抗干扰措施。

(3)软件设计 结合硬件设计,首先明确软件部分各个模块的功能,更详细地画出各摸块的流程图,然后连行主程序设计和各模块程序设计,最后连接起来得到完整的应用程序。

(4)系统调试 将硬件和软件相结合,分模块进行调试、修正和完善原始设计,最后进行整个系统的调试。系统调试需要借助一定的设备,调试完成后将应用程序固化在程序存储器中。

2.硬件设计和软件设计主要包括那些内容?

答:1)硬件设计设计:包括单片机的选择、输入通道设计、输出通道设计、操作信号等部分的接口和电路设计、硬件合成、电源配置。

2)软件设计:软件结构设计、主程序和各模块程序的设计。

3.单片机控制系统接地要注意什么问题? 答:单片机控制系统接地要注意以下问题:

1)单片机系统的地(即其直流电源地)与信号地、功率地必须分开,也避免干扰信号通过地线传人单片机。信号地与功率地也要分开,以免影响被测信号。

2)数字地与模拟地必须区分开。且只在一点相连,否则两种回路会相互影响。 3)长传输线的屏蔽层应一端接屏蔽地。屏蔽地都接到机柜,然后单独接大地。 4)当有多个元器件要接在同一地线上时,这些元器件应多点就近接地还是统一接地?在低频(10MHz)电路中,元件和布线的电感和分布电容将造成各接地线之间的耦合,为缩短接地线,采用多点就近接地。当频率为l~10MHz之间时。如采用一点接地。其地线长度不应超过波长的1/20,原则上应采用多点接地。

(5)其它硬件

1)为防止电磁波和静电感应的干扰,单片机装置应加全属外壳屏蔽。

2)继电器和接触器的线圈、触头和其它通断电流较大的按钮、开关,在操作时会产生感应电动势或较大火花而引起干扰,对此可利用阻容电路予以吸收。

3)设计印制电路板时,尽量加粗接地线,且应形成闭合环路;在电源输入端连接10~

本文来源:https://www.bwwdw.com/article/7rda.html

Top