单片机原理及应用作业参考答案.docx
《单片机原理及应用作业参考答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用作业参考答案.docx(24页珍藏版)》请在冰豆网上搜索。
![单片机原理及应用作业参考答案.docx](https://file1.bdocx.com/fileroot1/2022-10/27/b9ee6202-c317-4f09-9455-c6f0016c1ae0/b9ee6202-c317-4f09-9455-c6f0016c1ae01.gif)
单片机原理及应用作业参考答案
单片机原理及应用作业参考答案
1.2单片机的结构特点表现在哪些主要方面?
答:
(1)在存储器结构上,严格将程序存储器和数据存储器在空间上分开,并使用不同的寻址方式,使用两个不同的地址指针;
(2)在内部有一个全双工的串行接口;
(3)有一个独立进行操作的位处理器。
1.4通用单片机的供应状态主要取决于什么?
供应状态有哪几种?
用户选用单片机的供应状态的原则是什么?
答:
通用单片机的供应状态主要取决于片内ROM的配置状态。
(1)片内ROM的配置状态
掩膜ROM,适合于低成本。
大批量产品的场合
(2)片内EPROM配置状态
可通过高压脉冲写入应用程序到EPROM,适合于开发样机,小批量生产。
(3)片内无ROM配置状态
必须外扩EPROM,价格低,使用灵活,适合于需要外接能在现场进行修改和更新程序存储器的应用场合。
2.3单片机的端有何功用?
8031的端应如何处理,为什么?
答:
端是访问外部程序存储器的控制信号:
当无效时,访问内部ROM,当为有效时,访问外部ROM。
由于8031没有内部ROM,所以端必须接低电平。
2.4MCS-51引脚中有多少I/O线?
它们与单片机对外的地址总线、数据总线和控制总线有什么关系?
地址总线和数据总线各是几位?
答:
MCS-51引脚中有32根I/O线,一般由P0口提供单片机对外的数据总线,同时作为分时复用的地址总线的低8位,由P2口作为地址总线的高8位,控制总线由第二功能的状态下的P3口以及RST、、ALE和提供。
2.58051单片机的内部数据存储器可以分为哪几个不同的区域?
各有什么特点?
答:
数据存储器主要分为两个区域:
00H~7FH是真正的RAM区,80H~FFH专门用作特殊功能寄存器的区域。
其中00H~7FH可分为三个区域:
00H~1FH为四组工作寄存器;20H~2FH为128位位寻址区,30H~7FH为一般RAM区。
2.6单片机对外有几条专用控制线?
其功能是怎样的?
答:
单片机对外的专用控制线有4条,分别是:
(1):
外部取指操作,在访问外部ROM时,信号自动产生;
(2)ALE/:
ALE为地址锁存允许信号,在访问外部ROM或RAM时,用来锁存P0口的低8位地址。
第二功能是对8751的EPROM编程时,编程脉冲输入。
(3)/VPP:
是访问外部程序存储器的控制信号,无效时,访问内部ROM,有效时,访问外部ROM,第二功能VPP为对8751EPROM的21V编程电源输入。
(4)RST/VPD:
RST是复位信号输入端,第二功能VPD是备用电源输入端。
2.8有哪几种方法使单片机复位?
复位后各寄存器、RAM中的状态如何?
答:
单片机的复位方式有两种,上电自动复位和按钮复位。
复位后各寄存器状态为:
PC0000HACC00HPSW00HSP07HDPTR0000H
P0~P3FFHIPXX000000BIE0X000000BTMOD00H
TCON00HTL000HTH000HTL100HTH100H
SCON00HSBUFXXHPCON0XXX0000B
2.9在8051扩展系统中,片外程序存储器和片外数据存储器使用相同的地址编址,是否会在数据总线上出现争总线的现象?
为什么?
答:
不会发生争总线的现象,因为从外部ROM取指令需要用ALE和信号控制读取操作,由P2和P0提供地址;而片外数据存储器的读写除了地址之外还要、控制,所以不会争总线。
2.10如果8051端口P0~P3作为通用I/O口使用,则在输入引脚数据时应注意什么?
答:
8051的P1、P2和作为一般输入I/O口的P以及第一功能的P3口均为准双向口,在输入数据时应先向端口写1,然后方可作为高阻输入。
以使其场效应管T2截止,才不会影响输入电平。
3.2若要完成以下的数据传送,应如何用MCS-51的指令实现?
(1)R1的内容传送到R0
MOVA,R1
MOVR0,A
(2)外部RAM20H单元的内容传送到R0
MOVR0,#20H
MOVXA,@R0
MOVR0,A
(3)外部RAM20H单元的内容传送到内部RAM20H单元
MOVR0,#20H
MOVXA,@R0
MOV20H,A
(4)外部RAM1000H单元内容传送到内部RAM20H单元
MOVDPTR,#1000H
MOVXA,@DPTR
MOV20H,A
(5)ROM2000H单元的内容传送到R0
MOVDPTR,#2000H
CLRA
MOVCA,@A+DPTR
MOVR0,A
(6)ROM2000H单元的内容传送到内部RAM20H单元
MOVDPTR,#2000H
CLRA
MOVCA,@A+DPTR
MOV20H,A
(7)ROM2000H单元的内容传送到外部RAM20H单元
MOVDPTR,#2000H
CLRA
MOVCA,@A+DPTR
MOVR0,#20H
MOVX@R0,A
3.3间接转移指令JMP@A+DPTR有何优点?
为什么它能代替众多的判跳指令?
试举例说明。
答:
该间接转移指令的转移地址由A的内容和数据指针DPTR的内容之和决定,且两者都是无符号数,由DPTR决定多分支转移程序的首地址,由A的不同值实现多分支转移。
因为可以根据A的内容进行分支转移,所以可以替代众多判跳指令。
如:
根据A的内容调用相应的程序,如A为0调用OP0,A为1调用OP1,这里A的值小于128。
MOVDPTR,#OPTAB
RLA
JMP@A+DPTR
…
OPTAB:
ACALLOP0
ACALLOP1
ACALLOP2
…
3.4设内部RAM的30H单元的内容为40H,即(30H)=40H,还知(40H)=10H,(10H)=00H,端口P1=0CAH。
问执行以下指令后,各有关存储器单元、寄存器以及端口的内容(即R0、R1、A、B、P1以及40H、30H、10H单元的内容)。
MOVR0,#30H;(R0)=30H
MOVA,@R0;(A)=(30H)=40H
MOVR1,A;(R1)=40H
MOVB,@R1;(B)=(40H)=10H
MOV@R1,P1;(40H)=0CAH
MOVP2,P1;(P2)=0CAH
MOV10H,#20H;(10H)=20H
MOV30H,10H;(30H)=20H
3.5已知8751单片机的P1口为输出,经驱动电路接有8只发光二极管。
当输出位是1时,发光二极管点亮;输出位是0时发光二极管熄灭。
试分析下述程序的执行过程及发光二极管的发光情况。
LP:
MOVP1,#81H;10000001B
LCALLDELAY
MOVP1,#42H;01000010B
LCALLDELAY
MOVP1,#24H;00100100B
LCALLDELAY
MOVP1,#18H;00011000B
LCALLDELAY
MOVP1,#24H;00100100B
LCALLDELAY
MOVP1,#42H;01000010B
LCALLDELAY
SJMPLP
答:
程序执行MOVP1,#DATA后,根据DATA的每位的值点亮相应的LED,调用延时程序使点亮的LED保持一段时间。
LED发光的情况为:
每次同时点亮两个LED并从两边向中间移动,然后再向两边移动,并一直循环。
3.6在上题中,若系统的晶体振荡器频率为6MHz,求子程序DELAY的延时时间。
DELAY:
MOVR2,#0FAH;2μS
L1:
MOVR3,#0FAH;2μS
L2:
DJNZR3,L2;4μS
DJNZR2,L1;4μS
RET;4μS
0FAH=250D
其中执行250次,执行时间为250×4μS
其中循环250次,该循环执行时间为(2+250×4+4)×250μS
加上和的执行时间,DELAY的延时时间为2+(2+250×4+4)×250+4=251.506ms
延时程序的设计:
首先设计内循环:
MOVR3,#data1;2μs
NOP;2μs
DJNZR3,$;4μs×data1
延时时间t1=2+2+4×data1=4×(data1+1)=1000μs=1ms,则data1=249
若需要大于1ms时间,则先增加一层循环
MOVR2,#data2;2μs
L1:
MOVR3,#data1;2μs
NOP;2μs
DJNZR3,$;4μs×data1
DJNZR2,L2;(4μs+t1)×data2
延时时间为:
2+(4μs+t1)×data2=2+[4μs+4×(data1+1)]×data2=
=2+4×(data1+2)×data2=250ms,这里将data1修正为248,
得
2+4×(248+2)×data2=2+1000×data2=250ms则data2=250
3.7根据图3-3线路,试设计灯亮移位程序,使8只发光二极管每次亮一个,循环右移或左移,一个一个地亮,循环不止。
MOVA,#80H
DIS:
MOVP1,A
ACALLDELAY
RRA
AJMPDIS
3.8设逻辑运算表达式为:
其中变量A,B,C分别为P1.0、P1.4、定时器1溢出标志TF1,D,E,F分别为22H.0、22H.3、外中断方式标志IE1;输出变量为P1.5。
试编写实现上述逻辑功能的程序段。
MOVC,P1.4
ORLC,/TF1;
ANLC,P1.0;
MOVF0,A;用户自定义标志位,暂存数据
MOVC,22H.3
ORLC,/IE1;
ANLC,22H.0;
CPLC;
ORLC,/F0;
MOVP1.5,C
4.1试设计数据块传送程序,将起始地址为0400H的100个连续单元中的内容送到以4000H为首址的区域中去
解:
分析:
地址为16位,且进行数据传送,所以连续单元应为外部的存储器,只能使用外部数据传送指令,由于源和目的地址都为16位,所以要保存DPTR的值,但源低8位和目的低8位相同,可以用一个寄存器保存。
MOVR0,#00
NEXT:
MOVDPH,#04H
MOVDPL,R0
MOVXA,@DPTR
MOVDPH,#40H
MOVX@DPTR,A
INCR0
CJNER0,#100,NEXT
4.2试编写程序,计算片内RAM区40H~47H8个单元中数的算术平均值,结果存放在4AH中。
解:
分析:
8个数总和最大值为FFH×8=7F8H,所以求和时必须用两字节加法,设R7保存和高8位,R6保存低8位,求和后再除以8即得算术平均值,这里需使用16/8除法,但因为除数为23,所以可以直接通过算术右移3位实现除以8,前提存储的数据为无符号数。
MOVR0,#40H
MOVR6,#00H;和低字节清零
MOVR7,#00H;和高字节清零
NEXT:
MOVA,@R0;取出一个字节
INCR0;地址指针下移
ADDA,R6;低字节求和
MOVR6,A