单片微型计算机原理与接口技术髙锋版课后答案全集.docx

上传人:b****6 文档编号:6557304 上传时间:2023-01-07 格式:DOCX 页数:48 大小:132.92KB
下载 相关 举报
单片微型计算机原理与接口技术髙锋版课后答案全集.docx_第1页
第1页 / 共48页
单片微型计算机原理与接口技术髙锋版课后答案全集.docx_第2页
第2页 / 共48页
单片微型计算机原理与接口技术髙锋版课后答案全集.docx_第3页
第3页 / 共48页
单片微型计算机原理与接口技术髙锋版课后答案全集.docx_第4页
第4页 / 共48页
单片微型计算机原理与接口技术髙锋版课后答案全集.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

单片微型计算机原理与接口技术髙锋版课后答案全集.docx

《单片微型计算机原理与接口技术髙锋版课后答案全集.docx》由会员分享,可在线阅读,更多相关《单片微型计算机原理与接口技术髙锋版课后答案全集.docx(48页珍藏版)》请在冰豆网上搜索。

单片微型计算机原理与接口技术髙锋版课后答案全集.docx

单片微型计算机原理与接口技术髙锋版课后答案全集

单片微型计算机原理与接口技术_髙锋版

课后答案

第三章【单片机的指令系统】思考与练习题解析

【3—1】什么是指令及指令系统?

【答】控制单片机进行某种操作的命令称为“指令”。

单片机就是根据指令来指挥和控制

单片机各部分协调工作。

指令由二进制代码表示,指令通常包括操作码和操作数两部分:

操作码规定操作的类型,操作数给出参加操作的数或存放数的地址。

所有指令的集合称为“指令系统”。

80C51单片机的指令系统专用于80C51系列单片机,

是一个具有255种操作码(OOH~FFH,除A5H外)的集合。

【3—2】80C51单片机的指令系统具有哪些特点?

【答】80C51单片机的指令系统容易理解和阅读。

只要熟记代表33种功能的42种助记即可。

有的功能如数据传送,可以有几种助记符,如MOV、MOVc、MOVX。

而指令功能助

记符与操作数各种寻址方式的结合,共构造出111种指令,而同一种指令所对应的操作码可以多至8种(如指令中Rn对应寄存器R0~R7)。

80C51单片机的指令系统具有较强的控制操作类指令,容易实现“面向控制”的功能;具有位操作类指令,有较强的布尔变量处理能力。

【3—3】简述80C51指令的分类和格式。

【答】80C51的指令系统共有111条指令,按其功能可分为5大类:

数据传送类指令(28条)、算术运算类指令(24条)、逻辑运算类指令(25条)、控制转移类指令(17条)和布尔操作(位)类指令(17条)。

指令的表示方法称之为“指令格式”,其内容包括指令的长度和指令内部信息的安排等。

在80C51系列的指令系统中,有单字节、双字节和三字节等不同长度的指令。

·单字节指令:

指令只有一个字节,操作码和操作数同在一个字节中。

·双字节指令:

包括两个字节。

其中一个字节为操作码,另一个字节是操作数。

·三字节指令:

操作码占一个字节,操作数占两个字节。

其中操作数既可能是数据,也可能是地址。

【3—4】简述80C51的指令寻址方式,并举例说明。

【答】执行任何一条指令都需要使用操作数,寻址方式就是在指令中给出的寻找操作数或操作数所在地址的方法。

80C5l系列单片机的指令系统中共有以下7种寻址方式。

①立即寻址。

在指令中直接给出操作数。

出现在指令中的操作数称为“立即数”,为了与直接寻址指令中的直接地址相区别,在立即数前面必须加上前缀“#”。

例如:

MOVDPTR,#1234H;1234H为立即数,直接送DPTR

②直接寻址。

在指令中直接给出操作数单元的地址。

例如:

MOVA,55H;55H是操作数单元的地址,55H单元内的数据才是操作数,取出后送累加器A

③寄存器寻址。

在指令中将指定寄存器的内容作为操作数。

因此,指定了寄存器就能得

到操作数。

寄存器寻址方式中,用符号名称来表示寄存器。

例如:

INCR7;R7的内容为操作数,加1后再送回R7

④寄存器间接寻址。

在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才

是操作数。

可以看出,在寄存器寻址方式中,寄存器中存放的是操作数;而在寄存器间接寻址

方式中,寄存器中存放的则是操作数的地址。

寄存器间接寻址须以寄存器符号名称的形式表示。

为了区别寄存器寻址和寄存器间接寻

址,在寄存器间接寻址中,应在寄存器的名称前面加前缀“@”。

例如:

ORLA.@Ro;当R0寄存器的内容是60H时,该指令功能是以RO寄存器的内容60H为地址,将60H地址单元的内容与累加器A中的数相“或”,其结果仍存放在A中。

⑤相对寻址。

在指令中给出的操作数为程序转移的偏移量。

相对寻址方式是为实现程序的相对转移而设立的,为相对转移指令所采用。

在相对转移指令中,给出地址偏移量(在80C51系列单片机的指令系统中,以“rel”表示,为8位带符号数),把PC的当前值加上偏移量就构成了程序转移的目的地址。

而PC的当前值是指执行完转移指令后的PC值,即转移指令的PC值加上转移指令的字节数。

转移的目的地址可用如下公式表示:

目的地址=(转移指令所在地址+转移指令字节数)+rel

例如:

SJMP80H;80H为程序转移的偏移量,即一128。

当前PC值减去128后即为转移地址

⑥变址寻址。

以DPTR或PC作基址寄存器,累加器A作变址寄存器,以两者内容相加形成的16位程序存储器地址作为操作数地址。

又称“基址寄存器+变址寄存器间接寻址”。

变址寻址方式只能对程序存储器进行寻址。

例如:

MOVCA,@A+DPTR;功能是把DPTR和A的内容相加,所得到的程序存储器地址单元的内容送A

⑦位寻址。

80C51系列单片机有位处理功能,可以对数据位进行操作,因此,就有相应的位寻址方式。

位寻址的寻址范围:

●片内RAM中的位寻址区。

·可位寻址的特殊功能寄存器位。

例如:

MOVc,80H;功能是把位寻址区的80H位(即P0.0)状态送累加位C

【3—5】访问特殊功能寄存器SFR,可使用哪些寻址方式?

【答】访问特殊功能寄存器SFR的惟一寻址方式是直接寻址方式。

这时除了可以单元地址形式(如90H)给出外,还可以寄存器符号形式(如P1)给出。

虽然特殊功能寄存器可以使用寄存器符号标志,但在指令代码中还是按地址进行编码的。

【3—6】若访问外部RAM单元,可使用哪些寻址方式?

【答】访问外部RAM单元的惟一寻址方式是寄存器间接寻址方式。

片外RAM的64KB单元,使用DPTR作为间址寄存器,其形式为@DPTR,例如“MOVXA,@DPTR”的功能是把DPTR指定的片外RAM单元的内容送累加器A。

片外RAM低256个单元,除了可使用DPTR作为间址寄存器外,也可使用:

R0或R1作间址寄存器。

例如“MOVXA,@R0'’即把R0指定的片外RAM单元的内容送累加器A。

【3—7】若访问内部RAM单元,可使用哪些寻址方式?

【答】片内RAM的低128单元可以使用寄存器间接寻址方式,但只能采用R0或R1为间址寄存器,其形式为@Ri(i=0,1)。

片内RAM的低128单元可以使用直接寻址方式,在指令中直接以单元地址形式给出。

片内RAM的低128单元中的20H~2FH有128个可寻址位,还可以使用位寻址方式,对这128个位的寻址使用直接位地址表示。

【3—8】若访问程序存储器,可使用哪些寻址方式?

【答】访问程序存储器可使用的寻址方式有立即寻址方式、变址寻址方式和相对寻址方式三种。

立即寻址是指在指令中直接给出操作数。

变址寻址方式只能对程序存储器进行寻址,或者说这是专门针对程序存储器的寻址方式。

相对寻址方式是为实现程序的相对转移而设立的。

这三种寻址方式所得到的操作数或操作数地址都在程序存储器中。

【3—9】MOV、MOVC、MOⅥ(指令有什么区别?

分别用于哪些场合?

为什么?

【答】MOV指令用于对内部RAM的访问。

MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。

MOVX指令采用间接寻址方式访问外部数据存储器.有Ri和DPTR两种间接寻址方式。

执行MOVX指令时,在P3.7引脚上输出RD有效信号.或在P3.6引脚上输出WR有效信号,可以用做外部数据存储器或I/O的读/写选通信号,与单片机扩展电路有关。

【3—10】说明“DAA”指令功能,并说明二一十进制调整的原理和方法。

【答】“DAA”指令的功能是对两个BCD码的加法结果进行调整。

两个压缩型BCD码按二进制数相加之后,必须经过该指令的调整才能得到压缩型BCD码的和数。

“DAA”指令对两个BCD码的减法结果不能进行调整。

BCD码采用4位二进制数编码,并且只采用了其中的10个编码,即0000~1001,分别代表BCD码0~9,而10lO~1111为无效码。

当两个BCD码相加结果大于9时,说明已进入无效编码区;当两个BCD码相加结果有进位时,说明已跳过无效编码区。

若结果进入或跳过无效编码区,则结果是错误的,相加结果均比正确结果小6(差6个无效编码)。

十进制调整的修正方法为:

当累加器低4位大于9或半进位标志AC=1时,进行低4位加6修正;当累加器高4位大于9或进位标志CY=l时,进行高4位加6修正。

【3一11】说明80C51单片机的布尔处理机的构造及功能。

【答】80C51单片机内部有一个布尔(位)处理机,具有较强的布尔变量处理能力。

布尔处理机实际上是一位微处理机,它包括硬件和软件。

布尔处理机以进位标志CY作为位累加器,以80C51单片机内部RAM的20H~2FH单元及部分特殊功能寄存器为位存储器,以80C51单片机的PO、P1、P2和P3为位I/O。

对位地址空间具有丰富的位操作指令,包括布尔传送指令、布尔状态控制指令、位逻辑操作指令及位条件转移指令,为单片机的控制带来很大方便。

【3—12】试分析以下程序段的执行结果。

【答】结果如下:

MOVSP,#60tt;(SP)=60H

NOVA,#88tt;(A)=88H

MOVB.#0FFH;(B)=FFH

PUSHACC;(SP)=61H,(61H)=88H

PUSHB;(SP)=62H,(62H)=FFH

POPACC;(A)=FFH,(SP)=61H

POPB;(B)=88H,(SP)=60H

程序段的执行结果:

累加器A和寄存器B的内容通过堆栈进行了交换。

注意:

80C51单片机的堆栈是按照先进后出的原则进行管理的。

【3-1】已知(A)=7AH,(RO)=30H,(30H)=A5H,(PSW)=80H。

请填写各条指令单独执行后的结果。

【答】结果如下:

(1)XCHA,R0;(A)=30H,(R0):

7AH

(2)XCHA,30H;(A)=A5H,(30H)=7AH,(PSW)=81H

(3)XCHA,@R0;(A)=R5H,(30H)=7AH,(PSW)=81H

(4)XCHDA,@R0;(A)=75H,(30H)=AAH,(PSW)=81H

(5)SWAPA;(A)=A7H

(6)ADDA,R0;(A)=AAH,(PSW)=04H

(7)ADDA,30H;(A)=1FH,(PSW)=81H

(8)ADDA,#30H;(A)=AAH,(PSW)=04H

(9)ADDCA,30H;(A)=20H,(PSW)=01H

(10)SUBBA,30H;(A)=D4H,(PSW)=84H

(11)SUBBA,#30H;(A)=49H,(PSW)=01H

【3—14】已知(30H)=40H,(40H)=10H,(10H)=00H,(P1)=CAH,请写出执行以下程序段后有关单元的内容。

【答】有关单元的内容如下:

MOVR0,#30H;(RO)=30H

MOVA,@R0;(A)=40H

MOVRl,A;(R1)=40H

MOVB,@R1;(B)=1OH

MOV@R1,P1;(40H)=CAH

MOVA,@RO;(A)=40H

MOV10H,#20H;(10H)=20H

MOV30H,10H;(30H)=20H

执行以上程序段后,有关单元的内容分别为:

(30H)=20H,(40H)=CAH,(10H)=20H,(P1)=CAH。

【3-15】已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后A的内容。

【答】各指令的执行结果如下:

MOVA,#55H;(A)=55H

ANLA,#0FFH;(A)=55H

ORL20H,A;(20H)=FFH

XRLA,@R1;(A)=AAH

CPLA;(A)=55H

执行完程序段后,A的内容为55H。

【3-16】阅读下列程序,说明其功能。

【答】对程序注释如下:

MOVR0,#30H;(RO)=30H

M0VA,@R0;取数

RLA;(A)×2

MOVR1,A

RLA;(A)x4

RLA;(A)×8

ADDA,R1;(A)Xi0

MOV@R0,A;存数

功能:

将30H中的数乘以10以后再存回30H中。

条件:

30H中的数不能大于25,25×10=250仍为一个字节。

若30H中的数大于25,则应考虑进位。

【3—17】已知两个十进制数分别在内部RAM中的40H单元和50H单元开始存放(低位在前),其字节长度存放在内部RAM的30H单元中。

编程实现两个十进制数求和,求和结果存放在40H开始的单元中。

【答】程序如下:

ORG0000H

SJMPMAIN

ORG0030H

MAIN:

MOVR0,#40H;被加数首址.又作两个十进制数和的首址

MOVR1,#50H;加数首址

MOVR2,30H;字节长度

CLRC

PP:

MOVA,@R1;取加数

ADDCA,@R0;带进位加

DAA;二一十进制数调整

MOV@R0,A;存和

INCR0;修正地址

INCR1

DJNZR2,PP;多字节循环加

AJMP$

END

【3—18】编程实现把外部RAM中从8000H开始的100个字节数据传送到8100开始的单元中。

【答】程序如下:

ORG0000H

SJMPMAIN

ORG0030H

MAIN:

MOVDPTR,#8000H;字节数据源首地址

MOVR1,#100;字节数据计数器

MOVR2,#01H

MOVR3,#00H

PP:

MOVXA,@DPTR;读数据

MOVR4,A;保存读出数据

CLRC

MOVA,DPL;计算得到字节数据目的地址

ADDA,R3

MOVDPL,A

MOVA,DPH

ADDCA,R2

MOVDPH,A

MOVA,R4;恢复读出数据

MOVX@DPTR,A;写数据至目的地址

CLRC;恢复源数据地址.

MOVA,DPL

SUBBA,R3

MOVDPL,A

MOVA,DPH

SUBBA,R2

MOVDPH,A

INCDPTR;地址加1

DJNZR1,PP;是否传送完?

SJMP$

注意:

字节数据源地址和目的地址都在外部RAM中,地址指针都为DPTR,所以要注意DPTR地址指针的保护和恢复。

地址的保护和恢复的方法有多种,如通过堆栈或寄存器。

【3-20】读下列程序,请:

①写出程序功能,并以图示意。

②对源程序加以注释。

ORG0000H

MAIN:

MOVDPTR,#TAB

MOVR1,#06H

LP:

CLRA

MOVCA,@A+DPTR

MOVP1,A

LCALLDELAYO.5s.

、INCDPTR

DJNZR1,LP

AJMPMAIN’

TAB:

DB01H,03H,02H,06H,04H,05H

DELAY0.5s:

······

RET

END

【答】.

①程序功能:

将TAB表中的6个参数依次从P1口中输出(每次输出延时0.5s),然后

重复输出。

P1口输出波形如图3-1所示。

这是步进电机三相六拍输出波形。

图3-lPl口输出波形

②注释见源程序右边所述。

ORG0000H

MAIN:

MOVDPTR,#TAB;P1输出参数表首地址

MOVR1,#06H;P1输出参数有6个

L,P:

CLRA

MOVCA,@A+DPTR;查表输出

MOVP1,A

LCALLDELAY0.5s;软件延时0.5S

INCDPTR

DJNZR1,LP;输出参数已有6个?

AJMPMAIN;输出参数已有6个,则重复输出

TAB:

DB01H,03H,02H,06H,04H,05H;参数表

DELAY0.5s:

……;延时0.5S子程序

RET

【3—21】读下列程序,然后①画出PI.O~P1.3引脚上的波形图,并标出电压V一时间t坐标。

②对源程序加以注释。

ORG0000H

START:

MOVSP,#20H

MOV30H,#01H

MOVP1,#01H

MLP0:

ACALT,D50ms

M07A,30H

CJNEA,#08H,MLPI

MOVA,#01H

MOVDPTR,#ITAB

MLP2:

MOV30H,A

MOVCA,@A+DPTR

MOVP1,A

SJMPMr,p0

MLPl:

INCA

SJMPMLP2

ITAB:

DB0,1,2,4,8.

DB8,4,2,1

D50ms:

······.

【答】

①程序功能:

P1.O~P1.3引脚上的波形图如图3—2所示。

图3—2P1.O~P1.3引脚上的波形图

②注释见源程序右边所述。

ORG0000H

START:

MOVSP,#20H

MOV30H,#01H

MOVP1,#01H

MLP0:

ACALL,D50ms;软件延时50ms

MOVA,30H

CJNEA,#08H,MLPI;判断表格中数据是否取完?

MOVA,#01H;取完,从表头开始取

MOVDPTR,#ITAB;表格首地址

MLP2:

MOV30H,A

MOVCA,@A+DPTR;取表格中数据

MOVP1,A

SJMPMLP0

MLPI:

INCA;表格中数据未取完,准备取下一个

SJMPMLP2

ITAB:

DB0,1,2,4,8;表

DB8,4,2,1

D50ms:

……;软件延时50ms子程序

RET

第四章【单片机的程序设计】

思考与练习题解析

【4—1】简述下列基本概念:

程序、程序设计、机器语言、汇编语言及高级语言。

【答】各基本概念如下。

·程序:

为计算某一算式或完成某一工作的若干指令的有序集合。

·程序设计:

单片机的全部工作概括起来,就是执行程序的过程。

为单片机准备这一程序,即编制程序的工作过程。

·机器语言:

用二进制代码表示的指令系统称为“机器语言系统”,简称为“机器语言”。

·汇编语言:

用英文字符来代替机器语言,这些英文字符称为“助记符’’。

用这种助记符表示指令系统的语言称为“汇编语言”或“符号语言”。

·高级语言:

参照数学语言而设计的、近似于人们日常用语的语言。

它是面向问题或者面向过程的语言。

这种语言不仅直观、易学、易懂,而且通用性强,易于移植到不同类型的机器中。

【4—2】在单片机领域,目前最广泛使用的是哪几种语言?

有哪些优越性?

单片机能否直接执行这几种语言?

【答】在单片机领域,目前最广泛使用的是汇编语言和高级语言。

汇编语言编写的程序效率高,占用存储空间小,运行速度快,而且能反映单片机的实际运行情况。

但编程比使用高级语言困难,通用性差。

单片机不能直接执行汇编语言程序,必须通过人工(或机器)汇编把汇编语言程序转换为机器语言程序。

高级语言不受具体机器的限制,而且使用了许多数学公式和习惯用语,从而简化了程序设计的过程,通用性强,易于移植到不同类型的单片机中。

单片机不能直接识别和执行高级语言,需要将其转换为机器语言程序才能识别和执行。

对于高级语言,这一转换工作通常称为“编译”或者“解释”。

进行编译或者解释的专用程序称为“编译程序”或者“解释程序”。

【4—3】什么是结构化程序设计?

它包含哪些基’本结构程序?

【答】程序设计有时可能是一件很复杂的工作,但往往有些程序结构是很典型的。

采用结构化程序编程时,规律性极强,简单清晰,易读/写,具有调试方便、生成周期短、可靠性高等特点。

根据结构化程序设计的观点,功能复杂的程序结构一般采用三种基本控制结构,即顺序结构、分支结构和循环结构,再加上子程序结构及中断服务子程序结构,共包含五种基本程序结构。

【4—4】顺序结构程序的特点是什么?

试用顺序结构编写三字节无符号数的加法程序段,最高字节的进位存入用户标志F0中。

【答】顺序结构是按照逻辑操作顺序,从某一条指令开始逐条顺序执行,直至某一条指令为止。

比如数据的传送与交换、简单的运算、查表等程序的设计。

顺序结构是所有程序设计中最基本、最单纯的程序结构形式,因而是一种最简单、应用最普遍的程序结构。

在顺序结构程序中没有分支,也没有子程序,但它是组成复杂程序的基础和主干。

例如:

三字节无符号数的加法程序段,最高字节的进位存人用户标志FO中。

假设加数存放在内存20H、21H和22H中,被加数存放在内存3OH、31H和32H中,和存放在内存40H、41H和42H中。

数据存放次序为低字节在前。

MOVA,30H;取被加数低字节数

ADDA,20H;求和

M0740H,A;和存入

MOVA,31H

ADDCA,21H;带进位求和

MOV41H,A

MOVA,32H

ADDCA,22H;带进位求和

MOV42H.A,

MOVF0,C;最高字节的进位存入用户标志F0中

【4—5】80C51单片机有哪些查表指令?

它们有何本质区别?

请编写按序号i值查找Di(16位长度)的方法。

设值i存放在R7中,将查找到的数据存放于片内RAM的30H、31H单元中。

请画出程序流程图,编写查表程序段,加上必要的伪指令,并对源程序加以注释。

【答】80c51有两种查表指令,即近程查表指令“MOVCA,@A+PC”和远程查表指令“MOVCA,@AA+DPTR"这两条指令的功能均是从程序存储器中读取数据(如表格、常数等),执行过程相同,其差别是基址不同,因此,适用范围也不同。

累加器A为变址寄存器,而PC、DPTR为基址寄存器。

DPTR为基址寄存器时,允许数表存放在程序存储器的任意单元,称为“远程查表”,编程比较直观;而PC为基址寄存器时,数表只能放在该指令单元往下的256个单元中,称为“近程查表”。

编程时需要计算累加器A中的值与数表首址的偏移量。

例如,按序号i值查找Di(16位长度)的源程序如下所示:

ORGXXXXH

MOVDPTR,#TABLE指向表首址

MOVA,R7;取值i

RLA;Di为二个字节

MOVR7,A;ix2

MOVCA,@A+DPTR;查表获得Di的高字节

MOV30H.A

MOVA,R7

INCA指向表的下一个地址

MOVCA,@A+DPTR;{表获得Di的低字节

MOV31H,A

TABLE:

Dw……;表(Dw为双字节,高字节在前)

RET

查表程序流程图如图4-1所示。

【4—6】根据运算结果给出的数据到指定的

数据表中查找对应的数据字。

运算结果给出的

数据在片内RAM的40H单元中,给出的数据大

小在00~0FH之间,数据表存放在20H开始的

片内存储器中。

查表所得数据字为双字节(高字

节在后),高字节存于42H、低字节存于41H单

元。

其对应关系为:

给出数据:

00H01H02H…0DH0EH0FH

对应数据:

00A0H7DC2HFF09H…3456H89ABH5678H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1