单片机习题答案.docx
- 文档编号:6736509
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:17
- 大小:59.55KB
单片机习题答案.docx
《单片机习题答案.docx》由会员分享,可在线阅读,更多相关《单片机习题答案.docx(17页珍藏版)》请在冰豆网上搜索。
单片机习题答案
《单片机原理与应用》作业
第二章:
第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时,一个机器周期为
9.在MCS-51扩展系统中,片外程序存储器和片外数据存储器地址一样时,为什么不会发生冲突?
答:
因为MCS-51系列单片机的存储器组织采用的是哈佛结构,即将程序存储器和数据存储器分开,程序存储器和数据存储器具有各自独立的寻址方式、寻址空间和控制信号。
访问时用的指令也不一样。
对外部程序存储器,使用MOVC指令;对外部数据存储器,使用MOVX指令。
10.MCS-51的P3口具有哪些第二种功能?
P19
答:
P3口的第二功能定义
端口引脚
第二功能
RXD(串行输入口)
TXD(串行输出口)
INT0(外部中断0)
INT1(外部中断1)
T0(定时器0外部中断)
T1(定时器1外部中断)
WR(外部数据存储器写信号)
RD(外部数据存储器读信号)
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)的方波,由输出,设晶体振荡器频率为12MHz。
解:
START:
MOVTMOD,#10H;//工作方式1
MOVTH0,#D8
MOVTL0,#F0
SETBTR0
LOOP:
JNBTF0,LOOP
CPL
CLRTF0
CLRTR0
AJMPSTART
9.设晶体振荡器频率为6MHz。
编程实现,使用定时器T0工作在方式2、定时,在P1.4输出周期为100us,占空比为4:
1的矩形脉冲。
答:
因为晶体振荡器频率为6MHz,所以1个机器周期为2us。
因为占空比为4:
1,所以将矩形脉冲分为5分,前4份P1.4输出高电平,第5份输出低电平。
则计数初值满足:
,解得计数初值为246=0F6H,所以TH0=TL0=0F6H。
TMOD设置:
00000010=02H,定时器0,定时,方式2。
所以程序如下:
206=0CEH,216=0D8H,246=0F6H,
第一种方法:
ORG2000H
START:
MOVTMOD,#02H
MOVTL0,0F6H
MOVTH0,0F6H
SETB
SETBTR0
LOOP:
MOVR0,#4
WAIT1:
JNBTF0,WAIT1
CLRTF0
DJNZR0,WAIT1
CPL
WAIT2:
JNBTF0,WAIT2
CLRTF0
CPL
SJMPLOOP
第二种方法:
MOVTMOD,#02H
LOOP:
SETB
MOVTL0,#216
MOVTH0,#216
SETBTR0
WAIT1:
JNBTF0,WAIT1
CLRTF0
CPL
MOVTL0,#246
MOVTH0,#246
WAIT2:
JNBTF0,WAIT2
CLRTF0
AJMPLOOP
第三种方法:
MOVTMOD,#02H
MOVTH0,#206
MOVTL0,#206
SETBTR0
SETB
WAIT1:
CJNETL0,#246,WAIT1
CLR
WAIT2:
JNBTF0,WAIT2
SETB
LJMPWAIT1
第六章:
第2、3、7题
2.MCS-51单片机的串行口共有哪几种工作方式?
各有什么特点和功能?
答:
MCS-51单片机的串行口共有4种工作方式,其特点和功能为:
(1)工作方式0:
SM1SM0=00,为同步移位寄存器。
特点为:
移位数据的发送和接收以8位为一帧,不设起始位和停止位,低位在前高位在后,波特率是固定的,为
,即一个机器周期移位一次。
(2)工作方式1:
SM1SM0=01,为8位UART。
特点为:
一帧信息为10位,其中1位起始位“0”,8位数据位(低位在前)和1位停止位“1”,其波特率可变,为
。
(3)工作方式2:
SM1SM0=10,为9位UART。
特点为:
一帧信息为11位,1位起始位“0”,8位数据位(低位在先),1位可编程为“1”或“0”的第9位数据,1位停止位“1”。
波特率为
。
(4)工作方式3:
SM1SM0=11,为9位UART。
特点为:
一帧信息为11位,1位起始位“0”,8位数据位(低位在先),1位可编程为“1”或“0”的第9位数据,1位停止位“1”。
波特率为
。
3.MCS-51的单片机4种工作方式的波特率应如何确定?
答:
(1)方式0:
波特率为
(2)方式1:
波特率为
,定时器T1通常采用方式2,即8位自动重装方式,所以波特率为
(3)方式2:
波特率为
,若SMOD=1,波特率为
,若SMOD=0,波特率为
。
(4)方式3:
波特率为
,定时器T1通常采用方式2,即8位自动重装方式,所以波特率为
7.请用查询法编写程序实现串行口工作方式1下的发送程序。
设单片机主频为,波特率为1200bps、发送数据缓冲区在外部RAM,起始址为1000H,数据块长度为30B,采用偶校验(其他条件自设)。
答:
设数据为ASCII码形式,最高位作为奇偶校验位,T1作为波特率发生器,工作于方式2。
设SMOD=0
已知串行口工作在方式1,波特率为1200bps,
,通过查表得T1的时间常数为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//送奇偶标志
MOV,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个外部中断
、
,3个内部中断T0、T1和串行发送/接收中断。
MCS-51有2个中断优先级,为高优先级和低优先级,由用户通过设定IP定义。
的中断标志为IE0,中断允许/禁止位为EX0,优先级定义位为PX0
的中断标志为IE1,中断允许/禁止位为EX1,优先级定义位为PX1
T0的中断标志为TF0,中断允许/禁止位为ET0,优先级定义位为PT0
T1的中断标志为TF1,中断允许/禁止位为ET1,优先级定义位为PT1
串行发送/接收中断的中断标志为TI/RI,中断允许/禁止位为ES,优先级定义位为PS
各中断标志的产生与清除方法如下:
IE0(IE1):
外部中断请求标志位,当CPU采样到
或
端出现有效有断请求时,此位由硬件置1。
在中断响应完成后转向中断服务程序时,对采用边沿触发方式的外部中断请求,由内部硬件自动清零。
TF0(TF1):
计数溢出中断标志位。
当定时器/计数器回零溢出时,此位由内部硬件置位。
当中断响应后,由硬件自动清零。
TI/RI:
串行发送/接收中断标志位。
当完成串口发送或接收一帧数据时,由硬件置位,在中断响应后,由软件清零。
2.什么是中断优先级?
中断优先处理的原则是什么?
答:
中断优先级:
一个CPU通常可以和多个中断源相连,故总会发生在同一时间有两个或两个以上的同优先级中断源同时请求中断的情况,这就要求CPU能按轻重缓急给每个中断源的中断请求赋予一个中断自然优先级。
这样,当多个同级中断源同时向CPU请求中断时,CPU就可以通过中断自然优先级排队电路率先响应中断优先级高的中断请求而把中断自然优先级低的中断请求暂时搁置起来,等处理完自然优先级高的中断请求后再来响应自然优先级低的中断。
原则:
(1)低优先级中断请求不能打断高优先级的中断服务,但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套。
(2)同一优先级的中断源,由内部查询的顺序来确定其优先次序。
同级优先顺序由高到低为:
→T0→
→T1→串行口→T2
8.试编写一段对中断系统初始化的程序,使之允许
、
、T0和串行口中断,且使串行口中断为高优先级中断。
答:
根据题意,IE控制字为:
B=97H
要使串行口中断为高优先级,则置位PS,或IP=00010000=10H
初始化程序如下:
ORG0000H
LJMPMAIN
ORG0003H/INT0中断入口地址
LJMPINT0F
ORG000BH
LJMPT0F
ORG0013H4
LJMPINT1F
ORG0023H
LJMPSIOF
ORG0030H
MAIN:
MOVIE,#97H;开INT0、INT1和串行口中断
SETBPS;(或MOVIP,#10H)
CLRIT0;设INT0为电平触发
CLRIT1;设INT1为电平触发
第八章:
第1、10题
1.MCS-51单片机扩展片外存储器时,用到哪些控制信号线?
请说明各控制线的作用。
答:
控制信号线包括ALE、
、
、
、
,其作用如下:
ALE:
地址锁存允许,输出,用于锁存P0口输出的低8位地址信号。
:
程序存储器选通允许,输出,用于选通片外程序存储器。
区别于数据存储器的选通控制。
:
外部访问,输入,用于选择片内或片外程序存储器。
当
=0时,无论片内有无ROM,只访问片外程序存储器。
、
:
读/写,输出,用于片外数据存储器(RAM)的读写控制。
在执行“MOVX”指令时,自动生成这两个控制信号。
10.单片机用EPROM2764(8KB)和SRAM6264(8KB)各一片组成存储器,要求ROM起始地址为0000H、RAM起始地址为2000H,请给出系统连接电路图,并指明地址范围。
答:
ROM地址为0000H~1FFFH,RAM地址为2000H~3FFFH
系统连接电路图如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 习题 答案