单片机第五章答案.docx
《单片机第五章答案.docx》由会员分享,可在线阅读,更多相关《单片机第五章答案.docx(15页珍藏版)》请在冰豆网上搜索。
单片机第五章答案
单片机第五章答案
【篇一:
单片机第五章答案】
5-8要在单片机片外扩展16kb数据存储器,选择其地址为0000~3fffh。
如选用6264为存储器芯片,74ls138为译码器,试画出硬件的连接图。
(图中右边的6116应该改为6264)
74ls138
5-9要在单片机片外扩展32kb数据存储器,选择其地址为8000h~ffffh。
如选用线选法,试设计其硬件的连接图。
5-10写出图5-43中#1~#7存储器的寻址范围,片选信号低电平有效,其中#1~#3为2kb的rom;#4~#7为1kb的ram.
1#:
8000h----87ffh2#:
8800h----8fffh3#:
9000h----97ffh4#:
0a000h—0a3ffh5#:
0a400h---0a7ffh6#:
0a800h---0abffh7#:
0ac00h---0afffh
5-11决定8155端口地址的引脚有哪些?
io/m的作用是什么?
t/in和t/out的作用是什么?
1.ad0~ad7(8条)三态地址/数据线
控制总线(8条)i/o总线(22条)电源线(2条)
2.io/m为i/o口及存储器选择信号,若io/m=0,则选择存储器;否则选择i/o口;
t/out3.t/in为定时器输入,定时器工作所需的时钟信号由此端输入。
为定时器输出;
5-13led数码管显示器在单片机系统中有哪几种显示方式?
led显示器的显示方式可分为静态显示和动态显示两种。
静态显示是指每个数码管的段选线控制是独立的,其特点是各led管能稳定地同时显示各自的字形。
动态显示又称扫描显示方式,它是将每个数码管的段选线同名相连,在某一时刻只让一根位选线有效,同时在段选线上输出该位要显示的字形码,在下
一时刻改变要显示的字位并在段选线上输出相应的字形码,如此各led轮流地一遍一遍地显示各自的字符,由于视觉器官具有视觉暂留效应,从而看到的是各led似乎在同时显示不同的字形。
5-14以共阴极数码管为例说明其字形码是如何形成的?
共阴极是把八个二极管的阴极接在一起作为位选线,低电平有效。
下图为八段led数码显示管的结构和原理图。
管脚信号a~h用来控制显示的字形,称为段选线,一般将段选线的高低电平按h、g、f、e、d、c、b、a顺序排列,形成十六进制编码,称为字形码
h
g
f
e
d
c
b
a
h
g
f
e
d
c
b
a
5-16已知30h单元中有一带符号数,若它是正数,则在图5-41所示接口电路中
自左至右不断地依次显示0;若它是负数,则自右至左不断地依次显示1。
试编写相应的程序。
org
start:
movmovmovmovmovmovmovmovmovjbsjmpneg:
movmovmovxnxn:
movmovmovxrrmovacallnextn:
djnzsjmppos:
movmovmovx
0000h
r1,#06hr2,#20hr3,#01hr7,#02hr6,#0ffha,#0ehdptr,#2100h@dptr,aa,30hacc.7negposa,#06hdptr,#2102h@dptr,aa,r2dptr,#2103h@dptr,aar2,adlr1,nxnjsa,#3fhdptr,#2102h@dptr,a
;数码管个数
;负数时数码管自右向左显示时初始位控制字;正数时数码管自左向右显示时初始位控制字;延时1ms,内部循环;延时1ms,外部循环
;命令控制字,b口输出,c口输出;命令寄存器地址;写命令
;取出30h单元的数,判断正负;如果为负则跳转至neg;如果为正则跳转至pos;“1”的字形码;b寄存器;
;负数的位控制字;c寄存器
;输出位控制字,控制数码管的显示
;位控制字右移一位,实现数码管自右向左点亮;把位控制字放回r2寄存器;调用延时程序,延时1ms
;判断数码管是否已经循环完毕;如果显示完毕则跳转至js;“0”的字形码;b寄存器;
共阳极
共阴极
nxp:
mov
movmovx
rlmovacallnextp:
djnzjs:
sjmpdl:
movdl6:
djnzdjnzretend
a,r3
dptr,#2103h@dptr,aar3,adlr1,nxpstartr6,#0ffhr6,dl6r7,dl;正数的位控制字
;c寄存器;
;位控制字左移一位,实现数码管自左向右点亮;把位控制字放回r3寄存器;调用延时程序,延时1ms
;判断数码管是否已经循环完毕;如果显示完毕则跳转至js;延时1ms子程序;;
5-18设计具有三个按键的电路并编写相应的程序:
当第一个按键按下时,将40h
单元置1;当第二个按键按下时,40h单元置2;当第三个按键按下时,40h单元置0。
+5v
org
scan:
movmovmovmovmovxanlcjnekeyscan:
acallmovkeysm1:
movmovmovxmov
0000h
dptr,#0101ha,#00h@dptr,adptr,#0103ha,@dptra,#07ha,#07h,keyscandyrmsr2,#0feha,r2dptr,#0101h@dptr,adptr,#0103h
;;;;;;;;;
jsadd:
jsadd1:
jsadd2:
done:
dyrms:
dyrms1:
dyrms2:
movxa,@dptr
anla,#07h;
cjnea,#07h,jsaddsjmp$
jbacc.0,jsadd1mov40h,#01hajmpdonejbacc.1,jsadd2mov40h,#02hajmpdonejbacc.2,donemov40h,#00hsjmp$
movr7,#18hmovr6,#0ffhdjnzr6,dyrms2djnzr7,dyrms1retend
【篇二:
第5章答案单片机】
>一、基础题
1.b2.a3.b4.c5.b6.c7.b8.a9.a10.c二、思考题与编程题
1.简述mcs-51单片机的定时器/计数器的结构和工作原理。
答:
mcs-51单片机的定时器/计数器的结构:
mcs-51单片机有2个定时器/计数器,被称为定时器/计数器t0和定时器/计数器t1。
定时器/计数器t0的计数器由2个8位的特殊功能寄存器tl0和th0构成;定时器/计数器t1的计数器由特殊功能寄存器tl1和th1构成,t0和t1有多种工作方式,由定时器/计数器方式寄存器tmod设置。
t0和t1的启动和停止由定时器/计数器控制寄存器tcon控制。
工作原理:
定时器/计数器工作在计数模式时,计数器对外部脉冲进行计数,脉冲信号发生1到0负跳变,计数器自动加1;
定时器/计数器工作在定时模式时,计数脉冲信号来自单片机的内部,每个机器周期产生一个计数脉冲,计数器自动加1,也就是每个机器周期计数器加1。
计数器计满后,再计一次,计数器溢出,溢出标志被置1。
2.mcs-51单片机的定时器/计数器t0中有哪几种工作方式?
作为计数器和定时器使用时,它们的计数信号有什么不同?
其最大计数和定时时间分别是多少?
答:
t0有4种工作方式,方式0:
13位定时器/计数器,方式1:
16位定时器/计数器,方式2:
8位常数自动装入的定时器/计数器,方式3:
2个8位的定时器/计数器
作为计数器,计数信号由外部脉冲提供,作为定时器,计数信号由单片机内部提供;计数模式时,方式0的最大计数次数为8192,方式1的最大计数次数为65536,方式2和方式3的最大计数次数为256。
设单片机的机器周期为最大定时为,定时模式时,方式0的最大定时为8192tm,方式1的最大定时为65536tm,方式2和方式3的最大定时为256tm。
3.设置工作方式寄存器tmod时,gate位对定时器/计数器的工作有什么影响?
定时器/计数器工作在方式2时,与其他几种方式有什么区别?
当设置为方式3时,定时器/计数器t1将如何工作?
答:
当gate=0时,只要tr0被置1时,定时器/计数器t0启动开始计数。
当gate=1时,定时器/计数器t0启动受int0引脚的外部信号控制。
只有当tr0被置1,且int0引脚输入信号为高电平时,定时器/计数器t0才开始计数。
定时器/计数器工作在方式2时,与其他几种方式的区别在于当计数器tl0溢出时,tf0被置1,同时把th0的内容装载到tl0,计数器便以该值为初始值重新开始计数,而其他几种方式计数器将清零。
当设置为方式3时,定时器/计数器t1将停止工作。
因为系统的晶振频率为12mhz,则机器周期。
设计数初始值为x:
x?
213?
td50?
213?
?
8142tm1
x的低5位赋给tl0,转换为二进制数得x?
1111000001100b。
取x的高8位赋给th0,
则(th0)=11110000b=0f0h,(tl0)=00001100b=0ch,tl0的高3位默认为0。
(2)设置工作方式
方式0:
m1m0=00,定时器模式:
c/t?
0,计数器启动不受外部控制:
gate=0,因此,tmod的内容为00h。
(3)采用查询方式的程序设计如下:
movtmod,#00h
movth0,#0f0hmovtl0,#0chsetbloop:
ajmp
jbctf0,ovflow
loop
;重新设置计数初值
;重复循环
;设置计数器初始值;查询计数溢出
tr0;启动定时器/计数器
ovflow:
movth0,#0f0hmovtl0,#0chcplp1.0ajmporg0000hljmpmainorg000bhljmpp_t0org0030hmain:
loop
(4)采用中断方式的程序设计如下:
movsp,#60hmovth0,#0f0hmovtl0,#0chsetbeasetbet0here:
;开辟栈区
movtmod,#00000000b;设置工作方式0和定时器模式
;设置计数器初始值;计数器启动
setbtr0
ajmphere;模拟执行一段较长的主处理程序
;中断处理程序:
p_t0:
pushacc;保护现场
push
psw
movth0,#0f0h
movtl0,#0chpoppopreti
pswacc
;设置计数器初始值;产生方波
cplp1.0
5.用定时器/计数器t1计数,每计1000个脉冲,从p1.1输出一个100ms单脉冲。
程序框图见图5.1
movtmod,#01000000b;设置工作方式0和计数器模式
图5.1题5程序流程图
main:
movth1,#11100000b;设置计数初始值高8位
movth1,#00011000b;设置计数初始值低5位setbtr1;启动计数器
cnting:
jbctf1,ok;检测是否溢出,溢出,清标志sjmpcnting;等待,计数ok:
setbp1.1;脉冲开始输出
acalldl100ms;脉冲保持100msclrp1.1;脉冲结束ret
;延时100ms子程序,晶振频率为12mhzdl100ms:
movr7,#100dl1ms:
movr6,#200dl:
nopnopnop
djnzr6,dldjnzr7,dl1msret
6.一批数据存放在外部ram以data单元开始数据区,数据长度为100个,要求以50ms的间隔从外部ram读取一个字节的数据,然后从p1口输出,设晶振频率为6mhz。
要求定时用以下方式实现:
(1)一个定时器;
(2)两个定时器串联。
(1)一个定时器实现,程序流程图见图5.2main:
movr0,#100
;数据长度
;外部数据存储首地址
movdptr,#8000h
movtmod,#00010000b;工作方式1和定时器模式movth1,#10011110b;计数初始值高8位movtl1,#01011000b;计数初始值低8位setbtr1;定时器启动cnting:
jbctf1,okok:
;检测是否溢出;重新装入计数常数值;取外部数据
sjmpcnting;
movth1,#10011110b
movtl1,#01011000bmovxa,@dptr
?
5.2?
6
(1)?
?
?
?
movp1,a;输出外部数据
;改变地址,指向下个数据;判断数据取完否,否则跳转;关定时器/计数器
incdptrdjnzr0,cntingclrtr1
ret
(2)两个定时器串联main:
movr0,#100
;数据长度
;外部数据存储首地址;工作方式1和定时器模式;设置计数初始值高8位;设置计数初始值低8位;定时器启动t1;检测是否溢出
;设置定时初始值高8位
movdptr,#8000h
movtmod,#00010001bd1:
movth1,#11001111bmovtl1,#00101100bsetbtr1cnting1:
jbctf1,d0
sjmpcnting1d0:
movth0,#11001111bclrtr1
setbtr0
cnting0:
jbctf0,ok
;定时器启动t0
;检测是否溢出,若溢出,清溢出标志;设置计数初始值高8位;设置计数初始值低8位;定时器启动t1
movtl0,#00101100b;设置定时初始值低8位
sjmpcnting0ok:
movth1,#11001111bmovtl1,#00101100bsetbtr1
clrtr0
movxa,@dptr;取外部数据
movp1,a;输出外部数据
incdptr;改变地址,指向下个数据djnzr0,d1;判断数据取完否,否则跳转
clrtr1clrtr0
ret
7.一个声光报警器如图5.19所示。
当设备运行正常时,em为高电平,绿色指示灯l1亮;当设备运行不正常时,em为低电平,绿色指示灯l1灭,要求声光报警,红色指示灯l2闪烁、报警器持续鸣响。
当em再次为高电平时,报警解除,恢复为正常状态。
闪烁定时间隔为200ms,单片机的晶振频率为12mhz。
程序流程框图见图5.3.
0000h
主程序:
org
star:
ajmpmain
org0003h;外部事件0中断入口地址ajmpextint;转到中断处理程序org0030hmain:
movsp,#70h
;设置堆栈区
clrit0setbex0setbeaclrpx0here:
setbp1.4clrp1.5clrp1.6;中断处理程序:
org0200hextint:
pushpush
accpsw
;电平触发方式
;允许外部事件0中断源中断;开放cpu中断允许;设置中断优先级,;点亮l1;关闭l2;关闭警报器;模拟执行很长的程序
ajmphere
;入栈保护
setbp1.6;打开警报器
;
熄灭l1
clrp1.4
;检测是否溢出
sjmpcnting
movth1,#00111100b;重新装入计数常数值
;200ms到否,否怎跳转;取反,l2闪烁;恢复现场;中断返回
movtl1,#10110000bdjnzr0,cntingcplp1.5poppsw
(2)?
?
?
?
?
?
?
?
?
?
5.3?
7?
?
?
?
?
popaccreti
8.一个单片机应用系统要求每隔1秒检测一次p1.0的状态,如果所读的状态为1,
从单片机的内部ram的20h单元提取控制信息并左移一次,从p2口的输出,如果所读的状态为0,则把提取的控制信息右移一次,从p2口的输出。
假定晶振频率为12mhz。
程序流程图如图5.4所示。
movr0,#20;
main:
movtmod,#00010000b;设置为工作方式1和定时器模式movth1,#00111100b;设置定时初始值高8位movtl1,#10110000b;设置定时初始值低8位setbtr1;定时器启动cnting:
jbctf1,ok;检测是否溢出sjmpcntingok:
movth1,#00111100bmovtl1,#10110000bdjnzr0,cntingmovc,p1.0
;重新装入计数常数值
【篇三:
单片机第五章习题答案】
1什么是中断系统?
中断系统的功能是什么?
实现中断功能的硬件和软件称为中断系统.
中断系统功能包括进行中断优先排队、实现中断嵌套、自动响应中断和实现中断返回。
5-2什么是中断嵌套?
cpu在响应某一个中断源中断请求而进行中断处理时,若有中断优先级更高的中断源发出中断请求,cpu会暂停正在执行的中断服务程序,转向执行中断优先级更高的中断源的中断服务程序,等处理完后,再返回继续执行被暂停的中断服务程序,这个过程称为中断嵌套。
5-3什么是中断源?
mcs-51有哪些中断源?
各有什么特点?
①实现中断功能的硬件和软件称为中断系统,产生中断请求的请求源称为中断源.②5个中断源中共有两个外部中断、两个定时中断和一个串行中断。
(1)外部中断源
外部中断是由外部原因(如打印机、键盘、控制开关、外部故障)引起的,可以通过两个固定引脚来输入到单片机内的信号,即外部中断0(int0)和外部中断1(int1)。
(2)定时中断类
定时中断是由内部定时(或计数)溢出或外部定时(或计数)溢出引起的,即t0和t1中断。
(3)串行口中断类
串行口中断是为接收或发送一帧串行数据,硬件自动使ri和ti置1,并申请中断5-4mcs-51单片机响应外部中断的典型时间是多少?
在哪些情况下,cpu将推迟对外部中断请求的响应?
(1)mcs-51单片机的最短响应时间为3个机器周期,最长响应时间8个机器周期。
(2)有下列任何一种情况存在,则中断响应会受到阻断。
①cpu正在执行一个同级或高一级的中断服务程序;
②当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令还未完成前,任何中断请求都得不到响应;
③正在执行的指令是返回指令或者对专业寄存器ie、ip进行读/写的指令,此时。
在执行reti或者读写ie或ip之后,不会马上响应中断请求,至少在执行一条其他之后才会响应。
若存在上述任何一种情况,中断查询结果就被取消,否则,在紧接着的下一个机器周期,就会响应中断。
5-5mcs-51有哪几种扩展外部中断源的方法?
各有什么特点?
扩展外部中断源的方法有定时扩展法和中断加查询扩展法两种。
定时扩展法用于外部中断源个数不太多并且定时器有空余的场合。
中断加查询扩展法用于外部中断源个数较多的场合,但因查询时间较长,在实时控制中要注意能否满足实时控制要求。
5-6mcs-51单片机各中断源发出的中断请求信号,标记那些寄存器中?
外部中断0(int0)和外部中断1(int1)中断请求信号标记在tcon中ie1和ie0。
t0和t1中断中断请求信号标记在tcon中tf1和tf0
串行口中断类中断请求信号标记在scon中ti和ri
5-7编写出外部中断1为跳沿触发的中断初始化程序。
setbea
setbex1
setbit1
5-8中断查询确认后,在下列各种8031单片机运行情况中,能立即进行响应的是
(d)。
(a)当前正在进行高优先级中断处理。
(b)当前正在执行reti指令。
(c)当前指令是div指令,且正处于取指令的机器周期。
(d)当前指令是mova,r3。
5-9在mcs-51中,需要外加电路实现中断撤除的是(d)。
(a)定时中断
(b)脉冲方式触发的外部中断
(c)外部串行中断
(d)电平方式触发的外部中断
5-10下列说法正确的是(acd)。
(a)同一级别的中断请求按时间的先后顺序响应。
(b)同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。
(c)低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求。
(d)同级中断不能嵌套。
5-11中断服务子程序返回指令reti和普通子程序返回指令ret有什么区别?
ret用于一般程序的返回。
reti用于中断服务程序的返回,reti指令除了将堆栈中保存着的地址取出,送回pc;使程序从主程序的中断处继续往下执行在返回的同时清除相应的优先级触发器,以允许下次中断。
5-12某系统有三个外部中断源1、2、3,当某一中断源变为低电平时,便要求cpu进行处理,它们的优先处理次序由高到底为3、2、1,中断处理程序的入口地址分别为1000h,1100h,1200h。
试编写主程序及中断服务程序(转至相应的中断处理程序的入口即可)。
org0000h
ljmpmain
org0003h
ljmpint_ex0
org0030h
main:
clrit0;采用低电平有效中断
setbex0;允许外部中断0
setbea
;插入用户程序
wait:
movpcon,#01h;单片机进入休眠方式等待中断
nop
ljmpwait
;以下为外部中断0服务子程序
int_ex0:
jnbp1.0,next1;判断是不是1号中断
ljmpint_ir1;跳转到1号中断处理程序
next1:
jnbp1.1,next2;判断是不是2号中断
ljmpint_ir2;跳转到2号中断处理程序
next2:
ljmpint_ir3;跳转到3号中断处理程序
org1000h
int_ir1:
;插入相应中断处理程序
reti;中断返回
org1100h
int_ir2:
;插入相应中断处理程序
reti;中断返回
org1200h
int_ir3:
;插入相应中断处理程序
reti;中断返回
5-13如果采用的晶振的频率为3mhz,定时器/计数器工作在方式0、1、2下,其最大的定时时间各为多少?
方式0下的最大定时时间为32.768ms;方式1下的最大定时时间为262.144ms;方式2下的最大定时时间为1024ms
5-14定时器/计数器用作定时器时,其计数脉冲由谁提供?
定时时间与哪些因素有关?
定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。
定时时间与时钟频率和定