《单片机原理与应用》第三版赵德安课后习题答案Word下载.docx

上传人:b****6 文档编号:17517339 上传时间:2022-12-07 格式:DOCX 页数:26 大小:41.86KB
下载 相关 举报
《单片机原理与应用》第三版赵德安课后习题答案Word下载.docx_第1页
第1页 / 共26页
《单片机原理与应用》第三版赵德安课后习题答案Word下载.docx_第2页
第2页 / 共26页
《单片机原理与应用》第三版赵德安课后习题答案Word下载.docx_第3页
第3页 / 共26页
《单片机原理与应用》第三版赵德安课后习题答案Word下载.docx_第4页
第4页 / 共26页
《单片机原理与应用》第三版赵德安课后习题答案Word下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

《单片机原理与应用》第三版赵德安课后习题答案Word下载.docx

《《单片机原理与应用》第三版赵德安课后习题答案Word下载.docx》由会员分享,可在线阅读,更多相关《《单片机原理与应用》第三版赵德安课后习题答案Word下载.docx(26页珍藏版)》请在冰豆网上搜索。

《单片机原理与应用》第三版赵德安课后习题答案Word下载.docx

在进行正式的单片机应用研究系统开发之前,需要根据不同单片机的特性,从中作出合理的选择。

1.仔细调查市场,尽量选用主流的、货源充足的单片机型号,这些器件使用比较广泛,有许多设计资料供学习或参考。

2.尽量选择所需硬件集成在单片机内部的型号,例如ADC、DAC、I2C、SPI和USB等。

这样便于整个控制系统的软件管理,减少外部硬件的投入,缩小整体电路板的面积,从而减少总体投资等。

3.对于手持设备,移动设备或者其他需要低功耗的设备,尽量选择低电压、低功耗的单片机型号,这样可以减少能量的消耗,延长设备的使用寿命。

4.在资金等条件允许的情况下,尽量选择功能丰富,扩展能力强的单片机,这样便于以后的功能升级和扩展。

5.对于体积有限制的产品,尽量选择贴片封装的单片机型号,这样可以减少电路板面积,从而降低硬件成本,同时也有助于电磁兼容设计。

第二章

1.分别写出一个MCS-51中ROM、EPROM、无ROM型单片机的型号和内部资源。

其中哪个产品内部具有固化的软件?

该软件能否被所有用户所使用?

怎样使用该种产品?

1、8051、80C51、8052、80C52。

此类芯片带有4K字节的掩膜ROM,由半导体厂家在芯片生产过程中,将用户的应用程序代码通过掩膜工艺制作到ROM中。

2、8751、87C51、8752。

此类芯片带有4K字节的EPROM,带有透明窗口,可通过紫外线擦除存储器中的程序代码,应用程序可通过专门的编程器写入到单片机中,需要更改时可擦除重新写入。

3、8031、80C31、8032。

此类芯片片内无ROM,使用时必须在外部并行扩展程序存储器芯片。

其中8051、80C51、8052、80C52等产品具有固化软件,该软件不能被所有用户所使用,应用程序只能委托半导体厂家“写入”。

2.MCS-51中无ROM型单片机在应用中P2口和P0口能否直接作为输入/输出口连接开关、指示灯之类的外围设备?

不能。

因为无ROM型单片机在应用中必须扩展程序存储器,P0口必须作为地址总线的低8位及数据总线复用,P2口必须作为高8位地址总线送出高8位地址,因此P2口和P0口的输出信号都是不稳定的,不能直接作为输入/输出口连接开关、指示灯之类的外围设备。

3.什么是堆栈?

8032的堆栈区可以设在什么地方?

一般应设在什么区域?

如何实现?

试举例说明。

堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"

后进先出"

的结构方式处理的。

实质上,堆栈就是一个按照"

原则组织的一段内存区域。

堆栈操作指令PUSHdirect、POPdirect只能采用直接寻址方式,8032的片内RAM中只有低128字节可以采用直接寻址方式访问,因此,尽管8032片内RAM的地址范围是00H-0FFH,但堆栈区只可以设在内部RAM中的00H-7FH的区域内,一般应设在30H-7FH的范围内。

可以通过赋值的方式设置堆栈区,如:

MOVSP,#60H。

4.8031的内部RAM中,哪些可以作为数据缓冲区?

8031内部RAM的128字节均可以作为数据缓冲区,但00H~1FH通常作为工作寄存器区使用,20H~2FH通常作为位寻址区使用。

5.对于8052单片机,地址为90H的物理单元有哪些?

一个是P1口,P1口的物理地址就是90H,使用直接寻址方式访问;

还有一个是RAM单元,必须使用寄存器间接寻址方式访问。

6.MCS-51单片机构成系统时,程序存储器的容量最大是多少?

MCS-51单片机构成系统时,程序存储器的容量最大是64KB。

7.当单片机系统的程序存储器的容量为8KB时,程序存储器的开始地址为多少?

因为单片机复位时,PC=0000H,程序都是从0000H开始执行,所以无论何种情况,程序存储器的开始地址都必须是0000H。

8.MCS-51单片机构成系统时,外部数据存储器的容量最大是多少?

MCS-51单片机构成系统时,外部存储器的容量最大是64KB。

9.当单片机系统外部数据存储器的容量为8KB时,数据存储器的开始地址一定要是0000H吗?

不一定。

10.什么是单片机的的节电方式?

MCS-51系列运行时耗电小,还提供两种节电工作方式——空闲方式和掉电方式。

在单片机空闲时程序停止运行,进入待机状态,在接收到一个中断时退出空闲方式,处理完后继续进入空闲方式,就这样断断续续的工作以达到节电目的。

11.CHMOS型单片机,进入掉电方式时,单片机的振荡器是否工作?

采用什么办法能使单片机退出掉电方式?

不工作。

在掉电方式中,振荡器停止工作,单片机内部所以功能部件停止工作。

在掉电方式期间,内部RAM和寄存器的内容维持不变。

退出掉电方式的唯一方法是硬件复位。

12.CHMOS型单片机,进入空闲方式时,单片机的振荡器是否工作?

采用什么办法能使单片机退出空闲方式?

工作。

进入空闲方式中,中断、串行口和定时器继续工作。

CPU现场、内部RAM和其他特殊功能寄存器内容维持不变。

有两种方法退出空闲方式,一是采用被允许的中断源请求中断;

二是硬件复位,因为空闲方式中,振荡器在工作,所以仅需两个机器周期便完成复位。

第三章

1.指出下列指令中划线操作数的寻址方式和指令的操作功能。

MOVA,#78H;

立即寻址,将立即数送入累加器A

MOVA,78H;

直接寻址,将内部RAM78H单元内容送累加器A

MOVA,R6;

寄存器寻址,将R6内容送累加器A

INC@R0;

寄存器间接寻址,将指针R0指向的内部RAM单元内容加1

PUSHACC;

直接寻址,将累加器A的内容入栈

RLA;

寄存器寻址,将累加器A的内容左移1位

CPL30H;

位寻址,将位变量30H的内容取反

SJMP$;

相对寻址,原地等待

MOVCA,@A+PC;

基寄存器加变址寄存器间接寻址,程序存储器PC和累加器A中内容相加形成ROM地址,取数送到累加器A。

2.指出下列指令中哪些是非法的?

INC@R1

DECDPTR

MOVA,@R2

MOVR1,@R0

MOVP1.1,30H

MOV#30H,A

MOV20H,21H

MOVOV,30H

MOVA,@A+DPTR

RRC30H

RLB

ANL20H,#30H

XRLC,30H

DECDPTRDECDPL

MOVA,@R2MOVA,@R1

MOVR1,@R0MOVA,@R0

MOVP1.1,30HMOVC,30H和MOVP1.1,C

MOV#30H,AMOVA,#30H

MOVOV,30HMOVC,30H和MOVOV,C

MOVA,@A+DPTRMOVCA,@A+DPTR

RRC30HRRCA因为所有的移位指令均是对累积器A进行的

RLBRLA

XRLC,30H错,因为位操作指令中,没有位的异或运算

3.如何将1个立即数30H送入内部RAM90H单元?

如何将立即数送特殊功能寄存器P1?

(1)MOVR0,#90H

MOV@R0,#30H

(2)MOVP1,#30H

4.执行下列一段程序后,试分析有关单元内容。

MOVPSW,#0;

(PSW)=00H

MOVR0,#30H;

(R0)=30H

MOV30H,#40H(30H)=40H

MOV40H,#50(40H)=32H

MOVA,@R0(A)=40H

ADDCA,#0CEH(A)=40H+0CEH+0=0EHPSW=10000001B=81H

INCR0(R0)=31H

最后的执行结果:

(R0)=31H,(30H)=40H,(40H)=32H,(A)=0EH,(PSW)=81H

5.试编写一段程序,将内部RAM40H、41H单元内容传送到外部RAM2000H、2001H单元中去。

MOVDPTR,#2000H

MOVR0,#40H

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

MOVX@DPTR,A

6.试编写一段程序,根据累加器A的内容,到程序存储器1000H起始的表格中取一双字节数,送内部RAM50H、51H单元。

MOVDPTR,#1000H

PUSHACC

MOVCA,@A+DPTR

MOV50H,A

POPACC

INCDPTR

MOV51H,A

7.试编写一段程序,进行两个16位数的相减运算:

6483H-56E2H。

结果高8位存内部RAM40H,低8位存41H。

CLRC

MOVA,#83H

SUBBA,#0E2H

MOV41H,A

MOVA,#64H

SUBBA,#56H

MOV40H,A

8.试编写一段程序,将30H、31H单元中存放的BCD数,压缩成一个字节(原30H单元内容为高位),并放入30H单元。

MOVA,30H

SWAPA

ORLA,31H

MOV30H,A

9.试编写一段程序,将30H~32H单元中的压缩BCD拆成6个单字节BCD数,并放入33H到38H单元。

MOVR0,#33H

ACALLLP

MOVA,31H

ACALLLP

MOVA,32H

SJMP$

LP:

MOVB,A

ANLA,#0FH

MOV@R0,A

INCR0

MOVA,B

SWAPA

ANLA,#0FH

RET

10.设晶振频率为6MHz,试编写一个延时1ms的子程序,并利用该子程序,编写一段主程序,在P1.0引脚上输出高电平宽2ms、低电平宽1ms的方波信号。

机器周期T=2μs,延时1ms的子程序应运行500T,子程序为:

DELAY:

MOVR0,#248;

1T

DJNZR0,$;

2T

NOP;

RET2T

子程序运行机器周期数为:

1T+248*2T+1T+2T=500T,500T=1ms

主程序为:

MOVPSW,#00H

LOOP:

SETBP1.0

ACALLDELAY

CLRP1.0

ACALLDELAY

SJMPLOOP

第四章

1.试根据P1口和P3口的结构特性,指出它们作为输入口或第二功能输入/输出的条件。

P1口作为输入口时,相应的口锁存器必须先置“1”,使输出场效应管T截止,CPU读P1时才能准确读取外部电路的输入信息。

同理,P3口作为第二功能I/O口时,相应的口锁存器也必须先置“1”。

2.MCS-51中无ROM型单片机,在应用中P0口和P2口能否直接作为输入/输出口连接开关、指示灯之类的外围设备?

3.什么是堆栈?

堆栈的作用有哪些?

作用:

(1)子程序调用和中断服务时CPU自动将当前PC值压栈保存,返回时自动将PC值弹出堆栈。

(2)保护现场/恢复现场

(3)数据传输

4.MCS-51的T0、T1的定时器和计数器的方式差别是什么?

试举例说明这两种方式的用途。

MCS-51的T0、T1的定时器和计数器本质上都是计数器,定时器方式是对单片机内部的机器周期数进行计数,计数器方式是对T0、T1引脚上输入的外部脉冲(方波)信号进行计数。

定时器方式用来产生定时信号,可用于串行通信,也可以通过口输出脉冲和方波信号;

计数器方式可以用来检测外部信号的频率和脉宽。

5.晶振为12MHz,用T0产生1ms的定时,可以选择哪几种方式?

分别写出定时器的方式字和计数初值。

如需要1s的定时,应如何实现?

由于定时器工作在方式2和方式3下时的最大定时时间只有0.256ms,因此要想获得1ms的定时时间,定时器必须工作在方式0或方式1。

机器周期T=12×

1/12×

10-6s=1μs,计数值T计数=1ms/1μm=1000。

1、采用方式0,定时器的方式字TMOD=00H,定时器的计数初值为TC=M-T/T计数=213-1*103/1=7192=1C18H,TH0应装#1CH;

TL0应装#18H。

2、采用方式1,定时器的方式字TMOD=01H,定时器的计数初值为TC=M-T/T计数=216-1*103/1=64536=FC18H,TH0应装#0FCH;

如需要1s的定时,可以采用查询相应溢出标志位,结合软件计数100循环,即可实现1s的定时。

6.晶振为12MHz,如何用T0来测试20Hz~1000Hz之间的方波信号(设高低电平宽度相同)的周期?

又如何测试频率为0.5MHz左右的脉冲频率?

1、使用定时器方式,利用方波的边沿触发定时器的开始与结束,比如使用上升沿来启动定时器计数,机器周期T为1μs,下降沿停止计数。

依据计数值N计算周期,周期=2N*T。

2、T0工作在计数器方式,待测试的脉冲信号引入T0引脚计数,同时T1工作在定时器方式,定时1ms,1ms定时结束时取T0计数值,脉冲频率=1000*T0计数值。

7.若晶振为11.0592MHz,串行口工作于方式1、波特率为4800bit/s,分别写出用T1、T2作为波特率发生器的方式字和计数初值。

T1作为波特率发生器。

由:

波特率=2SMOD*振荡器频率/[32*12*(256-X)]

设SMOD=0,可得,4800=20*11059200/32/12/(256-X),可得的计数初值X=250=0FAH,将X值装入TH1中,TMOD=20H。

MOVTMOD,#20H;

T1方式2

MOVTH1,#0FAH

T2作为波特率发生器,需对T2CON(置“1”TCLK、RCLK)、TH2、TL2、RCAP2H、RCAP2L初始化编程,再置“1”TR2,具体略。

8.串行口方式0能否外接多个74LS164?

若不可以,说明原因;

若可以,画出逻辑框图并说明数据输出方法。

串口工作方式0时,可以外接多个74LS164。

此时TXD用于发送同步脉冲接74LS164的CLK端,RXD用于发送数据接第一片74LS164的数据输入端DSA和DSB,74LS164的/CR和Vcc端接+5V,Vss端接地,后一片74LS164的数据输入端DSA和DSB接前一片74LS164的Q7。

只要将数据载入SUBF之后,时钟脉冲和数据就会自动出现在单片机的I/O端口,程序不需要对I/O口再进行干预。

出现在74LS164的数据低位在右,高位在左。

将数据多次载入SUBF,就可以在多个74LS164的输出端得到稳定的数据。

逻辑框图略,可参考教材的例4-8.

9.MCS-51的中断处理程序能否存储在64KB程序存储器的任意区域?

若可以,如何实现?

可以。

因为每个中断源的中断入口地址处均预留了8个单元的空间,8个单元足够存放一条跳转指令,使程序转向64KB程序存储区的任意区域。

在相应的中断入口使用JMP指令进行跳转就可以实现。

10.在一个8031系统中,晶振为12MHz,一个外部中断请求信号是一个宽度为500ms的负脉冲,则应该采用哪种中断触发方式,如何实现?

应该采用边沿触发方式,采用SETBIT0或SETBIT1即可。

若采用电平触发方式,由于外部中断请求信号长期存在,可能会引起重复中断。

11.若外部中断请求信号是一个低电平有效的信号,是否一定要选择电平触发方式?

因为采用边沿触发,能自动锁存中断信号,是一种可靠的中断管理方式。

第五章

1.若晶振为6MHz,试编写一个2ms延时子程序。

晶振为6MHz,机器周期T为2μs,应计满1000个T。

MOVR7,#10

DLY0:

MOVR6,#49

DLY1:

DJNZR6,DLY1;

2T

DJNZR7,DLY0;

RET

2.试编制一个子程序,对串行口初始化,使串行口以方式1,波特率1200bit/s(晶振为11.059MHz)发送字符串“MCS-51”。

ORG0000H

AJMPMAIN

ORG0100H

MAIN:

MOVTMOD,#20H

MOVTL1,#0E8H

MOVTH1,#0E8H

SETBTR1

MOVSCON,#42H

MOVR4,#0

MOVDPTR,#TAB

FS1:

MOVA,R4

MOVCA,@A+DPTR

CJNER4,#6,FS2

SJMPFSJS

FS2:

JBCTI,FS3

SJMPFS2

FS3:

MOVSBUF,A

INCR4

SJMPFS1

FSJS:

SJMP$

TAB:

‘M’,‘C’,‘S’,‘-’,‘5’,‘1’

END

3.晶振为11.059MHz,串行口工作与方式3,波特率为2400bit/s,第9位数据为奇校验位。

编制一个程序,对串行口初始化,并用查询方式接受串行口上输入的10个字符存入内部RAM中30H开始的区域。

RECS:

MOVSCON,#0D0H;

串行口方式3允许接收

MOVTMOD,#20H;

T1方式2定时

MOVTL1,#0F4H;

写入T1时间常数

MOVTH1,#0F4H

SETBTR1;

启动T1

MOVR0,#30H;

设数据指针

MOVR7,#10;

接收数据长度

WAIT:

JBCRI,NEXT;

等待串行口接收

SJMPWAIT

NEXT:

MOVA,SBUF;

取一个接收字符

JNBP,COMP;

奇偶校验

JNBRB8,ERR;

P≠RB8,数据出错

SJMPRIGHT;

P=RB8,数据正确

COMP:

JBRB8,ERR

RIGHT:

MOV@R0,A;

保存一个字符

INCR0;

修改指针

DJNZR7,WAIT;

全部字符接收完?

CLRF0;

F0=0,接收数据全部正确

ERR:

SETBF0;

F0=1,接收数据出错

RET

4.写一个子程序,其功能是将(R0)指出的两个RAM单元中的数转化为ASCII字符,并用查询方式从串行口上发送出去。

设串行口以方式1工作,波特率为1200bit/s,晶振为11.059MHz。

ORG0000H

MOVR4,#2

MOVA,@R0

ANLA,#0FH

MOVCA,A+DPTR

INCR0

DJNZR4,FS1

DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,41H,43H,44H,45H,46H

END

5.试编写一个子程序将字符串“MCS-51Microcomputer”装入外部RAM8000H开始的显示缓冲区。

AJMP0030H

MIAN:

MOVDPTR,#8000H

MOVR1,#0

MOVR0,#20

MOVA,R1

ADDA,#6

MOVCA,@A+PC

MOVX@DPTR,A

INCDPTR

INCR1

DJNZR0,LOOP

SJMP$

DB‘MCS-51Microcomputer’

6.试设计一个n字节的无符号十进制数加法子程序,其功能为将(R0)和(R1)指出的内部RAM中两个n字节压缩BCD码无符号十进制数相加,结果存放于被加数单元中。

子程序入口时,R0,R1分别指向被加数和加数

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

当前位置:首页 > PPT模板 > 其它模板

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

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