单片机答案1.docx
《单片机答案1.docx》由会员分享,可在线阅读,更多相关《单片机答案1.docx(16页珍藏版)》请在冰豆网上搜索。
单片机答案1
第1章习题答案
1.什么是单片机?
答:
将中央处理器(CentralProcessingUnit,CPU)、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等微型计算机的主要部件集成在一块芯片上,使其具有计算机的基本功能,就叫做单片微型计算机(SingleChipMicroComputer,SCMC),简称单片机。
由于单片机的指令功能是按照工业控制的要求设计,所以单片机又称为微控制器(MicroControllerUnit,MCU)。
第2章习题答案
2.MCS-51单片机的
引脚有何功能?
信号为何种电平?
答:
为片外程序存储器选择输入端。
该引脚为低电平时,使用片外程序存储器,为高电平时,使用片内程序存储器。
3.MCS-51单片机的ALE引脚有何功能?
信号波形是什么?
答:
ALE为地址锁存信号,每个机器周期输出两个正脉冲。
在访问片外存储器时,下降沿用于控制外接的地址锁存器锁存从P0口输出的低8位地址。
在没有接外部存储器时,可以将该引脚的输出作为时钟信号使用。
4.MCS-51单片机的存储器分为哪几个空间?
如何区分不同空间的寻址?
答:
MCS-51单片机有4个存储空间,它们是片内程序存储器和数据存储器,在片外可以扩展的程序存储器和数据存储器。
这4个存储空间可以分成三类:
片内数据存储空间(256B的RAM和128B的特殊功能寄存器)、片外数据存储空间(64KB)、片内和片外统一编址的程序存储空间(64KB)。
不同的存储空间,它们有各自的寻址方式和访问指令。
片内数据存储空间用MOV指令访问。
片外数据存储空间用MOVX指令访问。
片内和片外统一编址的程序存储空间用MOVC指令访问。
5.简述MCS-51单片机片内RAM的空间分配。
内部RAM低128字节分为哪几个主要部分?
各部分主要功能是什么?
答:
片内数据存储器按照寻址方式,可以分为三个部分:
低128字节数据区,高128字节数据区间,特殊功能寄存器区。
低128字节数据区分为三个区域:
工作寄存器区,位寻找区和通用数据区。
工作寄存器区4组工作寄存器;位寻找区既可以做位操作,也可以字节操作;通用数据区用于堆栈和存放程序运行时的数据和中间结果。
6.简述MCS-51单片机布尔处理器存储空间分配,片内RAM包含哪些可以位寻址的单元。
位地址7DH与字节地址7DH如何区别?
位地址7DH具体在片内RAM中的什么位置?
答:
低128字节数据区的位寻找区和高128字节数据区的某些可位寻址的特殊功能寄存器。
位地址7DH与字节地址7DH可通过不同的指令来区别,位地址7DH用位寻址指令来访问,字节地址7DH用字节寻址指令来访问,位地址7DH在低128字节数据区的位寻找区的2FH字节。
7.MCS-51单片机的程序状态寄存器PSW的作用是什么?
常用标志有哪些位?
作用是什么?
答:
PSW是一个8位寄存器,用于设定CPU的状态和指示指令执行后的状态。
CY(PSW.7):
进位标志。
在执行加减运算指令时,如果运算结果的最高位(D7)发生了进位或借位,则CY由硬件自动置1。
AC(PSW.6):
半进位标志位,也称为辅助标志位。
在执行加减运算指令时,如果运算结果的低半字节(D3)发生了向高半字节进位或借位,则AC由硬件自动置1。
F0、F1(PSW.5和PSW.1):
用户标志位。
用户可以根据需要对F0、F1赋予一定的含义,由用户置1和清0,作为软件标志。
RS1、RS0(PSW.4和PSW.3):
工作寄存器组选择控制位。
通过对这两位设定,可以从4个工作寄存器组中选择一组作为当前工作寄存器。
OV(PSW.2):
溢出标志位,有两种情况影响该位。
一是执行加减运算时,如果D7或D6任一位,并且只一位发生了进位或借位,则OV自动置1,
P(PSW.0):
奇偶标志位。
每条指令执行完后,该位都会指示当前累加器A中1的个数。
如果A中有奇数个1,则P自动置1。
8.MCS-51单片机复位后,CPU使用哪组工作寄存器?
它们的地址是什么?
用户如何改变当前工作寄存器组?
答:
MCS-51单片机复位后,CPU使用0组工作寄存器。
它们的地址是08H~0FH。
通过程序状态字PSW中的RS1、RS0标志位改变当前工作寄存器组。
9.什么叫堆栈?
堆栈指针SP的作用是什么?
答:
堆栈是在RAM专门开辟的一个特殊用途的存储区。
堆栈是按照“先进后出”(即先进入堆栈的数据后移出堆栈)的原则存取数据。
堆栈指针SP是一个8位寄存器,其值为栈顶的地址,即指向栈顶,SP为访问堆栈的间址寄存器。
10.PC与DPTR各有哪些特点?
有何异同?
答:
PC与DPTR都是16位的寄存器。
PC由两个8位的计数器PCH和PCL组成。
PC实际是程序的字节地址计数器,它的内容是将要执行的下一条指令的地址,具有自加1功能。
改变PC的内容就可以改变程序执行的方向。
DPTR的高字节寄存器用DPH表示,低字节寄存器用DPL表示。
DPTR既可以作为一个16位寄存器使用,也可以作为两个独立的8位寄存器使用。
DPTR主要用于存放16位地址,以便对64KB的片外RAM和64KB的程序存储空间作间接访问。
11.测试哪个引脚,可以快捷地判断单片机是否正在工作?
答:
若要检查单片机是否工作,可以使用示波器查看ALE引脚是否有脉冲信号输出。
12.读端口锁存器和“读引脚”有何不同?
各使用哪些指令?
答:
一种是读取锁存器原来的输出值,另一种情况是打开端口的缓冲器读取引脚上的信号,读端口锁存器,用MOVA,Pi指令。
“读引脚”,要先用MOVPi,#0FFH对相应端口写FFH,使输出场效应管T截止,才能够正确输入,再用MOVA,Pi指令。
13.MCS-51单片机的P0~P3口结构有何不同?
用作通用I/O口输入数据时应注意什么?
答:
P2口是一个双功能口,一是通用I/O口,二是以总线方式访问外部存储器时作为高8位地址口。
其端口某一位的结构如图2-11所示,对比图2-10知,与P1口的结构类似,驱动部分基本上与P1口相同,但比P1口多了一个多路切换开关MUX和反相器3。
P3口是一个多功能口,其某一位的结构见图2-12。
与P1口的结构相比不难看出,P3口与P1口的差别在于多了“与非门”3和缓冲器4。
正是这两个部分,使得P3口除了具有P1口的准双向I/O口的功能之外,还可以使用各引脚所具有的第2功能。
P0多了一路总线输出(地址/数据)、总线输出控制电路(反相器3和与门4)、两路输出切换开关MUX及开关控制C,并且把上拉电阻换成了场效应管T1,以增加总线的驱动能力。
用作通用I/O口输入数据时应注意要先用MOVPi,#0FFH对相应端口写FFH,使输出场效应管T截止,才能够正确输入。
14.P0口用作通用I/O口输出数据时应注意什么?
答:
P0口与其它端口不同,它的输出级无上拉电阻。
当把它用作通用I/O口时,输出级是开漏电路,故用其输出去驱动NMOS输入时外接上拉电阻,这时每一位输出可以驱动4个LS型TTL负载。
用作输入时,应先向端口锁存器写1。
15.什么叫时钟周期?
什么叫机器周期?
什么叫指令周期?
时钟周期、机器周期与振荡周期之间有什么关系?
答:
时钟周期即振荡周期:
为晶振的振荡周期,是最小的时序单位。
状态周期:
是振荡频率2分频后的时钟周期。
显然,一个状态周期包含2个振荡周期。
机器周期(MC):
1个机器周期由6个状态周期、即12个振荡周期组成,是量度指令执行时间的单位。
指令周期:
是执行一条指令所需要的时间。
一个指令周期由1~4个机器周期组成。
16.MCS-51单片机常用的复位电路有哪些?
复位后机器的初始状态如何?
答:
复位电路有两种方式:
上电自动复位电路和手动复位电路。
复位后,程序计数器PC变为0000H,使单片机从程序存储器地址0000H单元开始执行。
除P0~P3为FFH;SP为07H;SBUF为不确定。
大部分特殊功能寄存器清零。
17.MCS-51单片机有几种低功耗工作方式?
如何实现,又如何退出?
答:
MCS-51单片机有空闲和掉电两种低功耗工作方式。
当CPU执行完置IDL=1的指令后,系统就进入空闲方式。
进入空闲方式之后,有两种方法可以退出。
一种是任何中断请求被响应都可以由硬件将IDL位清0而结束空闲方式。
另一种退出空闲方式的方法是硬件复位。
当CPU执行完置PD=1的指令后,系统就进入掉电工作方式。
对于一般的单片机来说,退出掉电方式的唯一方法是由硬件复位。
第3章习题答案
1.简述MCS-51汇编指令格式。
答:
MCS-51汇编语言指令由四部分组成,其一般格式如下:
[标号:
]操作码[操作数][;注释]
格式中的方括号意为可以没有相应部分,可以没有标号、操作数和注释,至少要有操作码。
其操作数部分最多可以是两项:
[第1操作数][,第2操作数]
2.何谓寻址方式?
MCS-51单片机有哪些寻址方式,是怎样操作的?
各种寻址方式的寻址空间和范围是什么?
答:
MCS-51单片机有7种寻址方式:
立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、位寻址和指令寻址。
可以分为两类:
操作数寻址和指令寻址。
立即数寻址的寻址空间和范围是:
在程序存储空间,随指令读入MOVA,#46H
直接寻址的寻址空间和范围是:
片内RAM中,低128字节和SFRMOVA,46H
寄存器寻址的寻址空间和范围是:
使用R0~R7、A、B、C、DPTRMOVA,R2
寄存器间接寻址的寻址空间和范围是:
片内RAM:
使用@Ri,SP;范围为256B,不含SFR,片外RAM:
使用@Ri,@DPTR;范围为64KBMOVA,@R0MOVXA,@DPTR
变址寻址的寻址空间和范围是:
使用@A+PC,@A+DPTR;在程序存储器中;
范围分别为PC之后256B之内和64KB全空间MOVCA,@A+DPTR
位寻址的寻址空间和范围是:
使用位地址;在位寻址空间;RAM的20H~2FH和SFRSETB36H
指令绝对寻址的寻址空间和范围是:
操作数是目标地址;在程序存储空间;
范围为2KB或64KB全空间AJMPFIRSTLJMPSECON
指令相对寻址的寻址空间和范围是:
操作数是相对地址;在程序存储空间;范围﹣128~127SJMPLOOP
3.访问片内RAM低128字节使用哪些寻址方式?
访问片内RAM高128字节使用什么寻址方式?
访问SFR使用什么寻址方式?
答:
访问片内RAM低128字节使用直接寻址,寄存器间接寻址,位寻址;访问片内RAM高128字节使用寄存器间接寻址;访问SFR使用直接寻址,位寻址。
4.访问片外RAM使用什么寻址方式?
答:
访问片外RAM使用寄存器间接寻址
5.访问程序存储器使用什么寻址方式?
指令跳转使用什么寻址方式?
答:
访问程序存储器使用指令绝对寻址,指令相对寻址。
指令跳转使用指令绝对寻址,指令相对寻址。
6.分析下面指令是否正确,并说明理由。
MOVR3,R7错,两个操作数不能同时为工作寄存器
MOVB,@R2对
DECDPTR错,不存在
MOV20H.8,F0错,位传送指令必须用C
PUSHDPTR
CPL36H错,不存在
MOVPC,#0800H错,PC不能访问
7.分析下面各组指令,区分它们的不同之处。
MOVA,30H与MOVA,#30H
前者表示:
(30H)→A后者表示:
30H→A
MOVA,R0与MOVA,@R0
前者表示:
(R0)→A后者表示:
((R0))→A
MOVA,@R1与MOVXA,@R1
前者表示:
在片内数据存储器((R1))→A
后者表示:
在片外数据存储器((R1))→A
MOVXA,@R0与MOVXA,@DPTR
前者R0表示8位地址后者DPTR表示16位地址
MOVXA,@DPTR与MOVCA,@A+DPTR
前者表示:
((DPTR))→A后者表示:
((DPTR)+(A))→A
8.在MCS-51单片机的片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。
请说明下面各是什么指令和寻址方式,以及每条指令执行后目的操作数的结果。
MOVA,40H;数据传送,直接寻址,(A)=48H
MOVR0,A;数据传送,寄存器寻址,(R0)=48H
MOVP1,#0FH;数据传送,立即数寻址,(P1)=0FH
MOV@R0,30H;数据传送,直接寻址,(48H)=38H
MOVDPTR,#1234H;数据传送,立即数寻址,(DPTR)=1234H
MOV40H,30H;数据传送,直接寻址,(40H)=38H
MOVR0,38H;数据传送,直接寻址,(R0)=40H
MOVP0,R0;数据传送,直接寻址,(P0)=40H
MOV28H,#30H;数据传送,立即数寻址,(28H)=30H
MOVA,@R0;数据传送,寄存器间接寻址,(A)=38H
9.已知(A)=23H,(R1)=65H,(DPTR)=1FECH,片内RAM(65H)=70H,ROM(205CH)=64H。
试分析下列各条指令执行后目标操作数的内容。
MOVA,@R1;(A)=70H
MOVX@DPTR,A;(1FECH)=70H
MOVCA,@A+DPTR;(A)=64H
XCHDA,@R1;(A)=65H
10.已知(A)=76H,(R1)=76H,(B)=4,CY=1,片内RAM(76H)=0D0H,(80H)=6CH。
试分析下列各条指令执行后目标操作数的内容和相应标志位的值。
ADDA,@R1;(A)=46H,CY=1
SUBBA,#75H;(A)=0D0H,CY=1
MULAB;(A)=40H,(B)=03H
DIVAB;(A)=15H,(B)=01H
ANL76H,#76H;(76H)=50H
ORLA,#0FH;(A)=1FH
XRL80H,A;(80H)=73H
11.已知(A)=83H,(R0)=17H,(17H)=34H,试分析当执行完下面程序段后累加器A、R0、17H单元的内容。
ANLA,#17H;(A)=03H
ORL17H,A;(17H)=37H
XRLA,@R0;(A)=34H
CPLA;(A)=0CBH
12.阅读下面程序段,说明该段程序的功能。
MOVR0,#40H
MOVR7,#10
CLRA
LOOP:
MOV@R0,A
INCA
INCR0
DJNZR7,LOOP
SJMP$
答:
把0,1,2,3……数列送到40H开始的10个单元中。
13.阅读下面程序段,说明该段程序的功能。
MOVR0,#40H
MOVA,R0
INCR0
ADDA,@R0
MOV43H,A
CLRA
ADDCA,#0
MOV42H,A
SJMP$
答:
40H加41H单元的数,结果送42H:
43H
14.阅读下面程序段,说明该段程序的功能。
MOVA,30H
MOVB,#5
MULAB
ADDA,31H
MOV33H,A
CLRA
ADDCA,B
MOV32H,A
SJMP$
答:
(30H)×5+(31H)→(32H:
33H)
15.编写程序,用位处理指令实现“P1.4=P1.0∨(P1.1∧P1.2)∨P1.3”的逻辑功能。
MOVC,P1.1
ANLC,P1.2
ORLC,P1.0
ORLC,P1.3
MOVP1.3,C
16.编写程序,若累加器A的内容分别满足下列条件,则程序转到LABLE存储单元。
设A中存放的的无符号数。
(1)A≥10;
(2)A>10;(3)A≤10。
(1)
CJNEA,#10,NEXT
LJMPLABLE
NEXT:
JNCLABLE
(2)
CJNEA,#10,NEXT
LJMPNEXT2
NEXT:
JNCLABLE
NEXT2:
(3)
CJNEA,#10,NEXT
LJMPLABLE
NEXT:
JCLABLE
17.编写程序,查找片内RAM的30H~50H单元中是否有55H这一数据,若有,则51H单元置为FFH;若未找到,则将51H单元清0。
MOVR0,29H
NEXT:
INCR0
CJNER0,#51H,NEXT2
MOV51H,#0FFH
AJMPOVER
NEXT2:
CJNE@R0,#55H,NEXT
MOV51H,#0
OVER:
18.编写程序,查找片内RAM的30H~50H单元中出现0的次数,并将查找的结果存入51H单元。
MOVR0,30H
MOV51H,#0
NEXT:
CJNE@R0,#00H,NEXT2
INC51H
NEXT2:
INCR0
CJNER0,#51H,NEXT
19.在片外RAM中有一个数据块,存有若干字符、数字,首地址为SOURCE要求将该数据块传送到片内RAM以DIST开始的区域,直到遇到字符“$”时结束($也要传送,它的ASCII码为24H)。
MOVDPTR,#SOURCE
MOVR0,#DIST
NEXT:
MOVXA,@DPTR
MOV@R0,A
INCDPTR
INCR0
CINEA,#24H,NEXT
20.片内RAM的30H和31H单元中存放着一个16位的二进制数,高位在前,低位在后。
编写程序对其求补,并存回原处。
CLRC
MOVA,#0
SUBBA,31H
MOV31H,A
MOVA,#0
SUBBA,30H
MOV30H,A
21.片内RAM中有两个4字节压缩的BCD码形式存放的十进制数,一个存放在30H~33H单元中,另一个存放在40H~43H单元中。
编写程序将它们相加,结果的BCD码存放在30H~33H中。
CLRC
MOVR0,#30H
MOVR1,#40H
MOVR2,#4
NEXT:
MOVA,@R0
ADDCA,@R1
MOV@R0,A
INCR0
INCR1
DJNZR2,NEXT
22.编写程序,把片外RAM从2000H开始存放的16字节数据,传送到片内从30H开始的单元中。
MOVDPTR,#2000H
MOVR0,#30H
MOVR1,#0
NEXT:
MOVXA,@DPTR
MOV@R0,A
INCDPTR
INCR0
INCR1
CINER1,#16H,NEXT
第5章习题答案
1.什么是中断和中断系统?
计算机采用中断系统带来了哪些优越性?
答:
当CPU当CPU正在处理某事件的时候,外部或者内部发生的某一事件请求CPU迅速去处理,于是CPU暂时中止当前的工作,转去处理所发生的事件。
中断服务处理完该事件后,再返回到原来被中止的地方继续原来的工作,这样的过程称为中断。
1.CPU与外设同步工作
2.实时处理
3.故障处理
2.MCS-51共有几个中断源?
各中断标志是如何产生的,又如何清零的?
CPU响应中断时,中断入口地址各是多少?
答:
MCS-51共有5个中断源。
各中断标志是通过中断请求产生的,通过指令或硬件清零的。
CPU响应中断时,中断入口地址各是03H,0BH,13H,1BH,23H。
3.编写一段对中断系统那个初始化的程序,使之允许INT0、INT1、T1、串行口中断,且使串行口中断为高优先级。
EX0=1;
EX1=1;
ET1=1;
ES=1;
EA=1;
PS=1;
4.什么是中断优先级?
什么是中断嵌套?
处理中断优先级的原则是?
答:
中断响应的优先次序是中断优先级。
当一个中断处理的过程中又响应了更高优先级的中断是中断嵌套。
处理中断优先级的原则是先高级中断,后低级中断。
同级的按自然优先级排序。
5.MCS-51在什么情况下可以响应中断?
中断响应的过程是?
答:
响应中断的条件
(1)中断源有中断请求;
(2)中断总允许位EA=1;
(3)请求中断的中断源的中断允许位为1;
在满足以上条件的基础上,若有下列任何一种情况存在,中断响应都会受到阻断。
(1)CPU正在执行一个同级或高优先级的中断服务程序。
(2)正在执行的指令尚未执行完。
(3)正在执行中断返回指令RETI或者对专用寄存器IE、IP进行读/写的指令。
CPU在执行完上述指令之后,要再执行一条指令,才能响应中断请求。
中断请求被响应后,有内部长调用(LCALL)将程序转向对应的中断矢量地址,执行执行中断服务程序。
6.中断响应过程中,为什么通常要保护现场?
如何保护和哪些信息要进行保护?
答:
因为中断服务程序会用到寄存器和存储器的数据会被覆盖,而中断是要返回的,所以通常要保护现场。
方法是把要保护的内容压入到堆栈。
7.MCS-51的ROM中,应如何安排程序区?
答:
程序区从00H到32H的存储区依次存放主程序入口和各中断服务程序的入口。
8.外部中断触发方式有几种?
它们的特点是什么?
答:
外部中断触发方式有2种。
它们的特点是低电平触发方式,边沿触发方式,上一个机器周期检测为高电平,接下来的下一个机器周期为低电平。
9.中断系统的初始化一般包括哪些内容?
答:
开相应中断允许,开总中断允许,设置中断优先级。
10.中断响应的时间是否使确定不变的?
为什么?
在实际以用中应如何考虑这一因素?
答:
中断响应的时间不是确定不变的。
因为中断发生的位置是不确定的。
在实际应用中对实时性要求高的场合要考虑这一因素,合理安排程序。
11.在中断请求有效并开中断的状况下,能否保证立即响应中断?
有什么条件?
答:
在中断请求有效并开中断的状况下,不能保证立即响应中断。
如果要立即响应中断必须是当前指令的最后周期,没有同级或更高级中断发生,下一条指令不是RETI或者对专用寄存器IE、IP进行读/写的指令。
12.中断服务程序与普通子程序有什么根本的区别?
答:
中断服务程序是随机发生的,结束后要返回断点。
普通子程序是安排好的,没有断点。
13.为什么要用RETI指令结束中断服务程序?
RETI指令的功能是什么?
为什么不用RET指令作为中断服务程序的返回指令?
答:
中断服务程序返回指令RETI,除了具有“RET”指令的功能外,还将开放中断逻辑的作用。
14.哪些中断源的中断请求标志位是由硬件自动复位的?
哪些中断的中断请求标志必须通过软件编程进行复位?
答:
外部中断和定时器中断是由硬件自动复位的。
串行口中断的中断请求标志必须通过软件编程进行复位。
第6章习题答案
1.MCS-51单片机内部有几个定时器/计数器,有几种工作方式?
答:
89C52内部有3个定时器/计数器,定时器0有4种工作方式,定时器1有3种工作方式,定时器2有4种工作方式。
2.定时器/计时器用作定时器用时,其定时时间和哪些因素有关?
作计数器时,对外界计数频率有何限制?
答:
定时器的定时时间和单片机的振荡频率和定时初值有关。
做计数器时候,其外界计数频率最大不能超过Fosc/12。
3.MCS-51单片机的定时器/计数器的定时和计数两种功能各有什么特点?
答:
定时是对时钟脉冲进行计数。
计数是对外部计数脉冲进行计数。
4.MCS-51单片机的T0、T1定时器/计数器四种工作方式各有什么特点?
答:
方式0:
13位计数模式。
方式1:
16位