单片机57习题答案.docx
《单片机57习题答案.docx》由会员分享,可在线阅读,更多相关《单片机57习题答案.docx(13页珍藏版)》请在冰豆网上搜索。
单片机57习题答案
第五章
仅有存储容量为512B×4、1KB×4、2KB×4、4KB×1、4KB×4、16KB×1、32KB×4、64KB、128KB×8、512KB和4MB的存储器,试问这些存储器分别需要多少条地址线和数据线(设它们均非动态RAM)
解答:
存储容量
地址线
数据线
存储容量
地址线
数据线
512B×4
9
4
32KB×4
15
4
1KB×4
10
4
64KB
16
8
2KB×4
11
4
128KB×8
17
8
4KB×1
12
1
512KB
19
8
4KB×4
12
4
4MB
22
8
16KB×1
14
1
今要设计一个32KB的外部RAM存储器,若采用2114,试问需要多少块若改用2116,试问需要2116,试问需要多少块
解答:
因为2114芯片的存储容量是1K×4,所以2114的地址线是10条,数据线是4条。
所以要设计一个32KB的外部RAM存储器,一共需要(32÷1)×(8÷4)=64块。
2116芯片的存储容量是16K×1,所以地址线是14条,数据线是1条。
要设计一个32KB的外部RAM存储器,一共需要(32÷16)×(8÷1)=16块。
5.16在进行外部存储器设计中,地址译码共有哪三种方式各有什么特点
解答:
译码共有三种方式:
1、全译码方式:
特点是所有片选地址线全部参加译码的工作方式,存储器每个存储单元只有唯一的一个CPU地址与它对应;但所需的地址译码电路较多。
2、部分译码方式:
单片机片选线中只有部分参加译码,其余部分是悬空的,所以还有重叠地址,但可以减少所用地址译码器的数量。
3、线选法方式:
单片机片选线中的某一条与存储芯片的
相连。
如果有悬空地址线,就有重叠地址。
试画出8031和2716的连线图,要求采用三—八译码器,8031的、和参加译码,基本地址范围3000H~3FFFH。
该2716有没有重叠地址根据是什么若有,写出每片2716的重叠地址范围。
解答:
因为2716的存储容量是2K×8,所以一共需要11条地址线,即~,~。
基本地址范围:
3000H~3FFFH
即:
0011000000000000~0011111111111111
从基本地址范围可以看出,参加译码的、和从110到111(即上面地址加下划线的3位),所以该存储器应包括2块2716芯片,存储芯片(1#、2#)的
端分别与译码器的
、
相连,如图所示。
因为8031有悬空的地址线、,所以有重叠地址。
两片2716的重叠地址范围分别为:
(下划线表示悬空线)
1#:
0011000000000000~0011011111111111,(3000H~37FFH)
0111000000000000~0111011111111111,(7000H~77FFH)
1011000000000000~1011011111111111,(B000H~B7FFH)
1111000000000000~1111011111111111,(F000H~F7FFH)
2#:
0011100000000000~0011111111111111,(3800H~3FFFH)
0111100000000000~0111111111111111,(7800H~7FFFH)
1011100000000000~1011111111111111,(B800H~BFFFH)
1111100000000000~1111111111111111,(F800H~FFFFH)
~
ALE
~
PSEN
8031
G
74LS373
D7
┆
D0
Q7
┆
Q0
A
B
C
Y0
Y1
Y7
┊
三|八译码器
A10…A0
D7
┊
D0
27162#
OE
27161#
CE
OE
CE
A10…A0
D7
┊
D0
Y6
试用线选法画出8031对一片62128的连线图,要求基本地址范围为8000H~BFFFH,重叠地址范围为8000H~FFFFH。
若基本地址范围为8000H~9FFFH和C000H~DFFFH,重叠地址范围为8000H~FFFFH,试问连线图应该如何修改
解答:
因为62128的存储容量为16K,所以它需要14条地址线;
因为采用线选法,所以有一条悬空线。
1、若基本地址范围为8000H~BFFFH(即1000000000000000~1011111111111111)
重叠地址范围为8000H~FFFFH(即1000000000000000~1111111111111111)
因为基本地址定义为当悬空线为0时,片内地址线从全0到全1的地址范围。
1)由基本地址范围8000H~BFFFH可知,只有始终等于0,所以为悬空线;
2)片选线(即与存储芯片
相连的片选地址线)应该在基本地址范围和重叠地址范围中始终保持不变,分析可知,只有始终为1。
因为片选信号
是低电平有效,所以与
之间应该添加一个反相器。
(如图所示)。
2、若基本地址为8000H(10000…0)~9FFFH(10011…1)
和C000H(11000…0)~DFFFH(11011…1)
重叠地址范围为8000H(10000…0)~FFFFH(11111…1)
1)在基本地址范围和重叠地址范围中只有始终保持不变,等于1。
所以为片选线,应接一个反相器连到存储器的
端。
2)在基本地址范围中只有始终等于0,所以为悬空线;
连线时只需将悬空,连到存储器的A13上(如上图虚线)。
第六章
6.1什么叫中断中断通常可以分为哪几类计算机采用中断有什么好处?
6.2中断是指计算机暂时停止原程序的执行转而为外部设备服务(执行中断服务程序),并在服务完成后自动返回原程序执行的过程。
6.3计算机采用中断可以提高CPU的工作效率和实时数据的处理时效。
6.4什么叫中断源MCS-51有哪些中断源各有什么特点?
6.5中断源是指引起中断原因的设备或部件,或发出中断请求信号的源泉。
6.6通常中断源有以下几种:
外部设备中断源、控制对象中断源、故障中断源和定时脉冲中断源。
6.7特点:
书上P202页(新书)。
6.8什么叫中断嵌套什么叫中断系统中断系统的功能是什么?
6.9中断嵌套:
在某一瞬间,CPU因响应某一中断源的中断请求而正在执行它的中断服务程序时,若CPU此时的中断是开放的,那它必然可以把正在执行的中断服务程序暂停下来转而响应和处理中断优先权更高中断源的中断请求,等到处理完后再转回继续执行原来的中断服务程序,这就是中断嵌套。
6.10中断系统:
是指能够实现中断功能的那部分硬件电路和软件程序。
它的功能通常有以下几条:
1、进行中断优先权排队;2、实现中断嵌套;3、自动响应中断;4实现中断返回。
6.118031的5个中断标志位代号是什么位地址是什么它们在什么情况下被置位和复位?
6.125个中断标志位:
6.131)IE0:
位地址是89H;当
引脚上有中断时为1,无中断为0;
6.142)IE1:
位地址是8BH;当
引脚上有中断时为1,无中断为0;
6.153)TF0:
位地址是8DH;当有定时器T0中断时为1,否则为0;
6.164)TF1:
位地址是8FH;当有定时器T1中断时为1,否则为0;
6.175)串行口中断标志位有2个:
6.18TI:
位地址是99H;当串行口有发送中断时为1,否则为0;
6.19RI:
位地址是98H;当串行口有接收中断时为1,否则为0;
6.20
6.21中断允许寄存器IE各位定义是什么请写出允许T1定时器溢出中断的指令?
6.22IE各位的定义见书上P208页,图6-5。
6.23允许T1定时器溢出中断的指令:
MOVIE,#88H
6.24或改用位寻址指令:
SETBEA
6.25SETBET1
6.26
试写出设定
和
上的中断请求为高优先级和允许它们中断的程序。
此时,若
和
引脚上同时有中断请求信号输入,试问MCS-51先响应哪个引脚上的中断请求为什么?
6.27程序:
SETBEA
6.28SETBEX0或:
MOVIE,#85H
6.29SETBEX1
6.30SETBPX0
6.31SETBPX1
6.32若
和
引脚上同时有中断请求信号输入时,MCS-51先响应
引脚上的中断请求。
因为在出现同级中断请求时,在MCS-51内部
的优先级高于
,所以先响应
引脚上的中断请求。
6.33MCS-51响应中断是有条件的,请说出这些条件是什么中断响应的全过程如何
响应中断的条件:
1)若CPU处在非响应中断状态且响应中断是开放的,则MCS-51在执行完现行指令后就会自动响应来自某中断源的中断请求。
2)若CPU正处在响应某一中断请求状态时,又来了一个新的优先级更高的中断请求,则MCS-51便会立即响应并实现中断嵌套,若新来的中断优先级比正在服务的优先级低,则CPU必须等到现有中断服务完成以后才会自动响应新来的中断请求。
3)若CPU正处在执行RETI或任何访问IE/IP指令(如SETBEA)的时刻,则MCS-51必须等待执行完下条指令后,才响应该中断请求。
中断响应的过程:
1)把中断点的地址(断点地址),也就是当前程序计数器PC中的内容压入堆栈,以便执行到中断服务程序中的RETI指令时按地址返回原程序执行;
2)关闭中断,以防在响应中断期间受其它中断的干扰;
3)根据中断源入口地址转入执行相应中断服务程序。
6.34写出并记住8031五级中断的入口地址。
6.35中断源为
:
中断的入口地址为:
0003H
6.36中断源为T0:
中断的入口地址为:
000BH
6.37中断源为
:
中断的入口地址为:
0013H
6.38中断源为T1:
中断的入口地址为:
001BH
6.39中断源为串行口中断:
中断的入口地址为:
0023H
6.40
第七章
7.8决定8255A选口地址的引脚有哪几条作用是什么
解答:
A0、A1,用于选中A口、B口、C口和控制字寄存器中哪一个工作。
7.98255如何辨认方式控制字和C口单一置复位控制字方式控制字各位定义如何
解答:
这两个控制字以D7位状态作为标志。
方式控制字的定义见书上P252页图7-13。
7.10结合图7-17简述8255A口在模式1选通输入方式下的工作过程。
解答:
见书上P255页图7-17下面(a)~(d)
7.118255B口可以设定为方式2吗为什么
解答:
不可以,因为方式2作为双向I/O,只适用于A口。
7.12在采用8255扩展I/O口时,若把8255A口作为输入,A口每一位接一个开关,B口每一位接一个发光二极管。
请编写A口开关接1时B口相应位发光二极管点亮的程序。
解答:
假设电路如图所示,当开关闭合时(即A口的输入信号
等于1),使发光二极管点亮(即B口的输出信号等于1)。
设8255的A、B、C、控制口地址分别为8000H、
8001H、8002H和8003H。
控制字:
B(90H)
即A口输入、方式0;B口输出、方式0。
程序如下:
ORG1000H
MOVDPTR,#8003H
MOVA,#90H
MOVX@DPTR,A;写控制字
LOOP:
MOVDPTR,#8000H
MOVXA,@DPTR;将A口的数据送到累加器A中
INCDPTR
MOVX@DPTR,A;将累加器中的数从B口输出
SJMPLOOP
END
7.13某一生产过程共有6道工序,每道工序的时间均为10s,生产过程循环进行。
先要用MCS-51通过8255A口进行过程控制,A口中每一位都可控制一道工序的启停。
试画出有关硬件电路并编写有关程序,设有一DELAY延时程序可供调用,延时时间为1s。
解答:
假设用PA0~PA5分别控制6道工序,当PA0~PA5等于1时,相应的工序启动,当工序停止时,A口相应的位等于0。
设8255的A、B、C、控制口地址分别为8000H、8001H、8002H和8003H。
控制字:
10000000B(80H)即A口输出、方式0
假设MCS-51的时钟频率为12MHz,则其时钟周期应为1μs,采用延时程序来设置延时时间为1s。
程序如下:
ORG1000H
MOVA,#80H
MOVDPTR,#8003H
MOVX@DPTR,A
LOOP:
MOVA,#01H
MOVDPTR,#8000H
LOOP1:
MOVX@DPTR,A
MOVR2,#0AH
LCALLDELAY
DJNZR2,LOOP
RLA
JNB,LOOP1
SJMPLOOP2
DELAY:
MOVR5,#99;延时程序
DEL1:
MOVR6,#100
DEL2:
MOVR7,#100
DEL3:
NOP
DJNZR7,DEL3
DJNZR6,DEL2
DJNZR5,DEL1
END
在图7-27中,若把字符打印机的
和8031的
相接,使简述电路的工作原理并编写能把以20H为起始地址的连续50个内存单元中的内容输出打印的程序。
解答:
在方式1输出方式下,当打印机从A口上取走输出数据的同时,
信号会变成低电平。
因为
和8031的
相接,所以
信号有效,即向CPU发出中断请求。
当CPU响应中断请求后,便可通过中断服务程序把下一个输出数据送到8255,准备传输下一个数据。
相应程序只需将
中断的触发方式由负边沿触发改成电平触发即可,
即将主程序中SETBIT0改成CLRIT0
某一生产过程共有6道工序,每道工序的持续时间均为10s,生产过程循环进行。
任何一道工序出现故障时都会产生故障信号,要求故障信号能引起单片机中断,停止送出顺序控制信号,并进行声光告警。
现采用MCS-51通过8255进行控制,A口用于输出各工序的顺序控制信号,C口中某一位输入故障信号,B口中某两位用于声光告警。
请画出相应的硬件图并编写有关程序。
解答:
用PA0~PA5输出各工序的顺序控制信号;设等于1时,工序启动。
用PB0~PB1输出声光告警控制信号;输出1时,发出告警信号。
用PC4接收故障信号。
当有故障信号时,为1。
A、B口均采用模式0。
方式控制字为:
10001000B(88H)
设8255A的A、B、C和控制端口地址分别8000H、8001H、8002H、8003H
相应程序为:
;主程序:
ORG1000H
┆
SETBEA
SETBEX0
SETBPX0
CLRIT0;令
为电平触发中断
MOVDPTR,#8003H
MOVA,#88H
MOVX@DPTR,A;写控制字
MOVDPTR,#8000H
MOVA,#01H
LOOP:
MOVX@DPTR,A;从A口输出工序控制信号
MOVR2,#10;延时10s
DEL:
LCALLDELAY
DJNZR2,DEL
RLA;顺序输出控制信号
JNB,NEXT;如果PA6=0,则继续循环控制工序
MOVA,#01H;若PA6=1,则将PA0=1
NEXT:
SJMPLOOP
SJMP$
DELAY:
MOVR5,#99;延时1s的子程序
DEL3:
MOVR6,#100
DEL2:
MOVR7,#100
DEL1:
NOP
DJNZR7,DEL1
DJNZR6,DEL2
DJNZR5,DEL3
;中断服务程序:
ORG0003H
LJMPPINT0
ORG2000H
PINT0:
MOVDPTR,#8000H
MOVA,#00H
MOVX@DPTR,A;A口停止送出工序控制信号
INCDPTR
MOVA,#03H
MOVX@DPTR,A;B口输出声光告警信号
RETI
END