单片机习题答案.docx

上传人:b****8 文档编号:10026047 上传时间:2023-05-23 格式:DOCX 页数:40 大小:36.21KB
下载 相关 举报
单片机习题答案.docx_第1页
第1页 / 共40页
单片机习题答案.docx_第2页
第2页 / 共40页
单片机习题答案.docx_第3页
第3页 / 共40页
单片机习题答案.docx_第4页
第4页 / 共40页
单片机习题答案.docx_第5页
第5页 / 共40页
单片机习题答案.docx_第6页
第6页 / 共40页
单片机习题答案.docx_第7页
第7页 / 共40页
单片机习题答案.docx_第8页
第8页 / 共40页
单片机习题答案.docx_第9页
第9页 / 共40页
单片机习题答案.docx_第10页
第10页 / 共40页
单片机习题答案.docx_第11页
第11页 / 共40页
单片机习题答案.docx_第12页
第12页 / 共40页
单片机习题答案.docx_第13页
第13页 / 共40页
单片机习题答案.docx_第14页
第14页 / 共40页
单片机习题答案.docx_第15页
第15页 / 共40页
单片机习题答案.docx_第16页
第16页 / 共40页
单片机习题答案.docx_第17页
第17页 / 共40页
单片机习题答案.docx_第18页
第18页 / 共40页
单片机习题答案.docx_第19页
第19页 / 共40页
单片机习题答案.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机习题答案.docx

《单片机习题答案.docx》由会员分享,可在线阅读,更多相关《单片机习题答案.docx(40页珍藏版)》请在冰点文库上搜索。

单片机习题答案.docx

单片机习题答案

《单片机原理与应用》作业

第二章:

第1、3、5、8、9、10、11题

1.MCS-51系列单片机内部有哪些主要的逻辑部件P10

答:

程序存储器、数据存储器、中断系统、定时器/计数器、串行口、4个并行I/O、特殊

功能寄存器、CPU。

3.MCS-51内部RAM区功能如何分配?

如何选用4组工作寄存器中的一组作为当前的工作

寄存器组?

位寻址区域的字节地址范围是多少?

P14

答:

MCS-51内部RAM分三个区域,00H~1FH为寄存器工作区、20H~2FH为位寻址区、

30H~7FH为用户区。

通过PSW中的RS1、RS0来设置当前工作寄存器组。

当RS1RS0=00时,选择寄存器1

组,地址为00H~07H;当RS1RS0=01时,选择寄存器2组,地址为08H~0FH,当RS1RS0=10

时,选择寄存器2组,地址为10H~17H,当RS1RS0=11时,选择寄存器3组,地址为18H~

1FH。

位寻址区域的字节地址范围为20H~2FH。

5.8031设有4个8位并行端口,若实际应用8位I/O,应使用P0~P3中哪个端口传送?

16

位地址如何形成?

答:

若实际应用8位I/O,应使用P1口传送。

16位地址的低8位地址由P0端口给出,高8位地址由P2端口给出。

(8031没有内部程序存储区,只能外接P3有第二功能)

8.MCS-51的时钟周期、机器周期、指令周期是如何分配的?

当振荡频率为10MHz时,一

个机器周期为多少微秒?

P25

答:

指令周期:

CPU执行一条指令的时间称为指令周期。

机器周期:

MCS-51典型的指令周期为一个机器周期。

时钟周期:

即为振荡周期。

每个机器周期由6个状态周期组成,每个状态周期由2个

振荡周期组成,即一个机器周期由12个振荡周期组成。

若MCS-51振荡频率为12MHz,则每一个指令周期(机器周期)为1us。

当振荡频率为10MHz时,一个机器周期为

1

121.2

10MHz

s

9.在MCS-51扩展系统中,片外程序存储器和片外数据存储器地址一样时,为什么不会发

生冲突?

答:

因为MCS-51系列单片机的存储器组织采用的是哈佛结构,即将程序存储器和数据存储

器分开,程序存储器和数据存储器具有各自独立的寻址方式、寻址空间和控制信号。

访问时

用的指令也不一样。

对外部程序存储器,使用MOVC指令;对外部数据存储器,使用MOVX

指令。

10.MCS-51的P3口具有哪些第二种功能?

P19

答:

P3口的第二功能定义

端口引脚第二功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2INT0(外部中断0)

P3.3INT1(外部中断1)

P3.4T0(定时器0外部中断)

P3.5T1(定时器1外部中断)

P3.6WR(外部数据存储器写信号)

P3.7RD(外部数据存储器读信号)

11.位地址7CH与字节地址7CH有什么区别?

位地址7CH具体在内存中什么位置?

答:

字节地址7CH是内部RAM的实际地址,其存储空间为一个字节,处于用户区,只能

按字节寻址。

位地址7CH不是内部RAM的实际地址,其存储实间为一个二进制位,要通

过位寻址才能找到。

位地址7CH位于内部RAM的位寻址区20H~2FH范围内,具体为字节地址2FH从低

位算起的第5位位地址。

(7CH12420H-2FH128)

第三章:

第2、3、7、8、9、10题

2.什么是寻址方式?

MCS-51单片机有哪几种寻址方式?

P36

答:

寻址方式是指令中确定操作数的形式。

单片机寻址方式有:

立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、基址寄存

器+变址寄存器的间接寻址、相对寻址和位寻址。

3.指出下列指令中画线的操作数的寻址方式。

MOVR0,#55H

答:

立即寻址

MOVA,2AH

答:

直接寻址

MOVA,@R1

答;寄存器间接寻址

MOV@R0,A

答:

寄存器寻址

DIVA,B

答:

寄存器寻址

ADDA,R7

答:

寄存器寻址

MOVXA,@DPTR

答:

寄存器间接寻址

MOVDPTR,#0123H

答:

立即寻址

MOVCA,@A+DPTR

答:

基址寄存器+变址寄存器间接寻址

INCDPTR

答:

寄存器寻址

7.为什么要进行十进制调整?

调整方法是什么?

答:

因为在单片机,表示0~9之间的十进制数是用4位二进制数表示的,即BCD码。

在运算过程中,是按二进制规则进行的,即每位相加大于16时进位,十进制数是大于10

时进位。

因此BCD码运算时,结果大于9时得到的结果不是正确的,必须进行调整。

调整方法是在加法指令后用指令DAA进行调整。

(注意,减法指令不可以使用DA进行调整)

8.编程实现两个一字节压缩型BCD码的减法。

设被减数地址在R0中,减数地址在R1中,

差仍存于被减数地址单元中。

(BCD码减法不考)

答:

CLRC

MOVA,#9AH

SUBBA,@R1

ADDA,@R0

DAA

MOV@R0,A

也可以在开头改为:

SETBC

MOVA,#99H

9.把片外数据存储器8000H单元中的数据读到累加器中,应用哪几条指令?

答:

MOVDPTR,#8000H

MOVXA,@DPTR

外部数据存储器(@R0、@R1、DPTR)

10.已知内部RAM中,(A)=35H,(R0)=6FH,(P1)=0FCH,(SP)=0C0H

答:

(1)MOVR0,A

答:

(R0)=35H

(2)MOV@R0,A

答:

(6FH)=35H

(3)MOVA,#90H

答:

(A)=90H

(4)MOVA,90H

答:

(A)=(P1)=0FCH/P1的物理地址是90HP15

(5)MOV80H,#81H

答:

(80H)=81H

(6)MOVX@R0,A

答:

(6FH)=35H

(7)PUSHA

答:

(SP)=0C1H,(0C1H)=35H

(8)SWAPA

答:

(A)=53H

(9)XCHA,R0

答:

(A)=6FH,(R0)=35H

第四章:

第2、3、6、11、12题

2.在汇编语言程序设计中,为什么要采用标号来表示地址?

标号的构成原则是什么?

使用

标号有什么限制?

注释段起什么作用?

P69

答:

标号位于语句的开始,代表语句的地址,采用标号便于在编写程序时,实现跳转、循

环等程序控制转移。

标号由以字母开头的字母和数字组成。

标号与指令间要用冒号“:

”分开,标号与“:

”之间不能有空格,“:

”与操作码之间

可以有空格。

注释段放在语句的最后,以“;”开始,为不可执行部分,对程序进行解释说明。

3.MCS-51汇编语言有哪几条常用伪指令?

各起什么作用?

答:

(1)设置起始地址伪指令ORG

格式:

ORG起始地址

作用:

ORG伪指令总是出现在每段源程序或数据块的开始,可以使程序、子程序或数据块

存放在存储器的任何位置。

若在源程序开始处不放ORG指令,则汇编将从0000H单元开始

编排程序。

(2)定义字节伪指令DB

格式:

〈标号:

〉DB〈项或项表〉

作用:

从指定地址(标号)开始,定义字节数据,把项或项表的数值存入从标号开始的连续

单元中。

(3)定义字伪指令DW

格式:

〈标号:

〉DW〈项或项表〉

作用:

从指定地址(标号)开始,定义16位数据,常用于建立地址表,16位数据的高8位

存低地址,低8位存高地址。

(4)预留存储区伪指令DS

格式:

〈标号:

〉DS〈表达式〉

作用:

由标号指定的单元开始,定义一个存储区,以给程序使用。

存储区内预留的存储单元

数由表达式的值决定。

(5)为标号赋值伪指令EQU

格式:

〈标号:

〉EQU数或汇编符号

作用:

将操作数中的地址或数据赋给标号字段的标号,又称为等值指令。

(6)数据地址赋值伪指令DATA

格式:

〈标号:

〉DATA数或表达式

作用:

可以把数据或可求值的表达式赋给字符名,常在程序中定义数据地址。

(7)位地址符号伪指令BIT

格式:

字符名BIT位地址

作用:

把位地址赋给字符名称。

(8)源程序结束伪指令END

格式:

〈标号:

〉END〈表达式〉

作用:

END命令通知汇编程序结束汇编。

在END之后,所有的汇编语言指令均不作处理。

6.外部RAM中从1000H到10FFH有一个数据区,现在将它传送到外部RAM中2500H单

元开始的区域中,编写有关程序。

答:

第一种方法:

START:

MOVR0,#00H

MOVDPTR,#1000H

LOOP:

MOVXA,@DPTR

MOVDPH,#25H

MOVX@DPTR,A

MOVDPH,#10H

INCDPTR

//INCR0

DJNZR0,LOOP

SJMP$

第二种方法:

START:

MOVR7,#00H

MOVR1,#10H

MOVR2,#00H

MOVR3,#25H

MOVR4,#00H

LOOP:

MOVDPH,R1

MOVDPL,R2

MOVXA,@DPTR

INCDPTR

MOVR1,DPH

MOVR2,DPL

MOVDPH,R3

MOVDPL,R4

MOVX@DPTR,A

INCDPTR

MOVR3,DPH

MOVR4,DPL

DJNZR7,LOOP

SJMP$

第三种方法:

MOVP2,#25H

MOVR0,#00H

MOVR3,#00H

MOVDPTR,#1000H

LOOP:

MOVXA,@DPTR

MOVX@R0,A

INCDPTR

INCR0

DJNZR3,LOOP

SJMP$

11.设系统晶体振荡频率为12MHz,请编写延时50ms的延时子程序。

答:

1个机器周期为1us,一条DJNZ耗时2us。

所以50ms=2us×250×100,程序如下:

DELAY:

MOVR4,#100

DELAY1:

MOVR3,#250

DELAY2:

DJNZR3,DELAY2

DJNZR4,DELAY1

RET

12.分析下列程序中各条指令的作用,并说明运行后相应寄存器和内存单元的结果。

MOVA,#34H;将立即数34H送到累加器A,(A)=34H

MOVB,#0ABH;将立即数0ABH送到寄存器B,(B)=0ABH

MOV34H,#78H;将立即数78H送到内部RAM中的34H单元中,(34H)=78H

XCHA,R0;寄存器R0与累加器A交换数值,(R0)=34H

XCHA,@R0;寄存器R0的值所表示的地址中的数值与累加器A的数值交换,

(A)=(34H)=78H

XCHA,B;寄存器B与累加器A交换数值,(A)=0ABH,(B)=78H

SJMP$

第五章:

第2、6、9题

2.8051单片机的定时器/计数器有哪几种工作方式?

各有什么特点?

P105

答:

8051单片机的定时器/计数器有4种工作方式,分别是:

(1)工作方式0:

M1M0=00,为13位定时器/计数器,其计数器由THi的全8位和TLi的低5位构成,

TLi的高3位未用。

当TLi的低5位计满时,向THi进位,THi溢出后对中断标志位TFi置

“1”,并申请中断。

Ti是否溢出可用软件查询TFi是否为“1”。

计数值范围为1~8192,如需再次定时或计数,需要用指令重置时间常数。

(2)工作方式1:

M1M0=01,与工作方式0基本相同,不同之处在于其为16位定时器/计数器,计数值

范围为1~65536。

如需再次定时或计数,需要用指令重置时间常数。

(3)工作方式2:

M1M0=10,为可重装初值的8位定时器/计数器。

把16位的计数器拆成两个8位计数

器,TLi用作8位计数器,THi用来保存初值。

每当TLi计满溢出时,可自动将THi的初值

再装入TLi,继续计数,循环重复。

其计数范围为1~256。

(4)工作方式3:

M1M0=11,T0分成两个独立的8位计数器,其中TL0既可以作计数器使用,又可以作

定时器使用。

而TH0只能作8位定时器使用,并占用了T1的控制启动位TR1和溢出标志

位TF1。

T1只能工作在方式0、方式1或方式2,只能用在不需中断控制的场合。

6、编程实现一个利用定时器T1产生一个50HZ(20000us)的方波,由p1.3输出,设晶体振荡

器频率为12MHz。

解:

START:

MOVTMOD,#10H;//工作方式1

MOVTH0,#D8

MOVTL0,#F0

SETBTR0

LOOP:

JNBTF0,LOOP

CPLP1.3

CLRTF0

CLRTR0

AJMPSTART

9.设晶体振荡器频率为6MHz。

编程实现,使用定时器T0工作在方式2、定时,在P1.4

输出周期为100us,占空比为4:

1的矩形脉冲。

答:

因为晶体振荡器频率为6MHz,所以1个机器周期为2us。

因为占空比为4:

1,所以将矩形脉冲分为5分,前4份P1.4输出高电平,第5份输

出低电平。

则计数初值满足:

8100

(2x)220,解得计数初值为246=0F6H,所以

5

TH0=TL0=0F6H。

TMOD设置:

00000010=02H,定时器0,定时,方式2。

所以程序如下:

206=0CEH,216=0D8H,246=0F6H,

第一种方法:

ORG2000H

START:

MOVTMOD,#02H

MOVTL0,0F6H

MOVTH0,0F6H

SETBP1.4

SETBTR0

LOOP:

MOVR0,#4

WAIT1:

JNBTF0,WAIT1

CLRTF0

DJNZR0,WAIT1

CPLP1.4

WAIT2:

JNBTF0,WAIT2

CLRTF0

CPLP1.4

SJMPLOOP

第二种方法:

MOVTMOD,#02H

LOOP:

SETBP1.4

MOVTL0,#216

MOVTH0,#216

SETBTR0

WAIT1:

JNBTF0,WAIT1

CLRTF0

CPLP1.4

MOVTL0,#246

MOVTH0,#246

WAIT2:

JNBTF0,WAIT2

CLRTF0

AJMPLOOP

第三种方法:

MOVTMOD,#02H

MOVTH0,#206

MOVTL0,#206

SETBTR0

SETBP1.4

WAIT1:

CJNETL0,#246,WAIT1

CLRP1.4

WAIT2:

JNBTF0,WAIT2

SETBP1.4

LJMPWAIT1

第六章:

第2、3、7题

2.MCS-51单片机的串行口共有哪几种工作方式?

各有什么特点和功能?

答:

MCS-51单片机的串行口共有4种工作方式,其特点和功能为:

(1)工作方式0:

SM1SM0=00,为同步移位寄存器。

特点为:

移位数据的发送和接收以8位为一帧,不

f

osc

设起始位和停止位,低位在前高位在后,波特率是固定的,为,即一个机器周期移位

12

一次。

(2)工作方式1:

SM1SM0=01,为8位UART。

特点为:

一帧信息为10位,其中1位起始位“0”,8位

数据位(低位在前)和1位停止位“1”,其波特率可变,为

s

mod

2

32

定时器的溢出率。

T1

(3)工作方式2:

SM1SM0=10,为9位UART。

特点为:

一帧信息为11位,1位起始位“0”,8位数据

位(低位在先),1位可编程为“1”或“0”的第9位数据,1位停止位“1”。

波特率为

smodsmod

22

振荡器频率=f。

osc

6464

(4)工作方式3:

SM1SM0=11,为9位UART。

特点为:

一帧信息为11位,1位起始位“0”,8位数据

位(低位在先),1位可编程为“1”或“0”的第9位数据,1位停止位“1”。

波特率为

s

mod

2

32

定时器的溢出率。

T1

3.MCS-51的单片机4种工作方式的波特率应如何确定?

答:

f

osc

(1)方式0:

波特率为

12

(2)方式1:

波特率为

s

2

32

mod

定时器T1的溢出率,定时器T1通常采用方式2,

2

smod

f

osc

即8位自动重装方式,所以波特率为

3212[256(TH1)]

(3)方式2:

波特率为

smod

2

64

f,若SMOD=1,波特率为

osc

f

osc

32

,若SMOD=0,

波特率为

f

osc

64

(4)方式3:

波特率为

s

mod

2

32

定时器的溢出率,定时器T1通常采用方式2,

T1

2

smod

f

osc

即8位自动重装方式,所以波特率为

3212[256(TH1)]

7.请用查询法编写程序实现串行口工作方式1下的发送程序。

设单片机主频为11.0592MHz,

波特率为1200bps、发送数据缓冲区在外部RAM,起始址为1000H,数据块长度为30B,

采用偶校验(其他条件自设)。

答:

设数据为ASCII码形式,最高位作为奇偶校验位,T1作为波特率发生器,工作于方式

2。

设SMOD=0

已知串行口工作在方式1,波特率为1200bps,f11.0592MHz,通过查表得T1

osc

的时间常数为0E8H。

程序如下:

ORG1000H

START:

MOVTMOD,#20H//定时器1工作方式2

MOVTL1,#0E8H

MOVTH1,#0E8H

SETBTR1//定时器1工作方式2启动计时

MOVPCON,#00H//最高位SMOD=0波特率不变

MOVSCON,#40H//工作方式1

MOVDPTR,#1000H

MOVR2,#30//计数值30数据块长度

LOOP:

MOVA,@DPTR

MOVC,P//送奇偶标志

MOVACC.7,C//送ASCII码最高位

MOVSBUF,A//发送字符

WAIT:

JNBTI,WAIT//等待TI置1,发送完毕

CLRTI//发送完毕TI清零

INCDPTR

DJNZR2,LOOP

AJMPSTART

第7章:

第1、2、8题

1.MCS-51有几个中断源?

有几级中断优先级?

各中断标志是怎样产生的,以是如何清除

的?

答:

MCS-51有5个中断源,包括2个外部中断INT0、INT1,3个内部中断T0、T1和串

行发送/接收中断。

MCS-51有2个中断优先级,为高优先级和低优先级,由用户通过设定IP定义。

INT0的中断标志为IE0,中断允许/禁止位为EX0,优先级定义位为PX0

INT的中断标志为IE1,中断允许/禁止位为EX1,优先级定义位为PX1

1

T0的中断标志为TF0,中断允许/禁止位为ET0,优先级定义位为PT0

T1的中断标志为TF1,中断允许/禁止位为ET1,优先级定义位为PT1

串行发送/接收中断的中断标志为TI/RI,中断允许/禁止位为ES,优先级定义位为PS

各中断标志的产生与清除方法如下:

IE0(IE1):

外部中断请求标志位,当CPU采样到INT0或INT1端出现有效有断请求时,

此位由硬件置1。

在中断响应完成后转向中断服务程序时,对采用边沿触发方式的外部中断

请求,由内部硬件自动清零。

TF0(TF1):

计数溢出中断标志位。

当定时器/计数器回零溢出时,此位由内部硬件置

位。

当中断响应后,由硬件自动清零。

TI/RI:

串行发送/接收中断标志位。

当完成串口发送或接收一帧数据时,由硬件置位,

在中断响应后,由软件清零。

2.什么是中断优先级?

中断优先处理的原则是什么?

答:

中断优先级:

一个CPU通常可以和多个中断源相连,故总会发生在同一时间有两个或

两个以上的同优先级中断源同时请求中断的情况,这就要求CPU能按轻重缓急给每个中断

源的中断请求赋予一个中断自然优先级。

这样,当多个同级中断源同时向CPU请求中断时,

CPU就可以通过中断自然优先级排队电路率先响应中断优先级高的中断请求而把中断自然

优先级低的中断请求暂时搁置起来,等处理完自然优先级高的中断请求后再来响应自然优先

级低的中断。

原则:

(1)低优先级中断请求不能打断高优先级的中断服务,但高优先级中断请求可以

打断低优先级的中断服务,从而实现中断嵌套。

(2)同一优先级的中断源,由内部查询的顺序来确定其优先次序。

同级优先顺序

由高到低为:

INT0→T0→INT1→T1→串行口→T2

8.试编写一段对中断系统初始化的程序,使之允许INT0、INT1、T0和串行口中断,且

使串行口中断为高优先级中断。

答:

根据题意,IE控制字为:

10010111B=97H

要使串行口中断为高优先级,则置位PS,或IP=00010000=10H

初始化程序如下:

OR

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2