兰交大单片机作业答案.docx
《兰交大单片机作业答案.docx》由会员分享,可在线阅读,更多相关《兰交大单片机作业答案.docx(11页珍藏版)》请在冰豆网上搜索。
兰交大单片机作业答案
第一章
1.什么是单片机?
它与一般微型计算机在结构上何区别?
答:
单片机是把CPU、RAM和ROM存储器、并行/串行输入输出接口、定时器/计数器、振荡器等五大部分全部集成在一块芯片里,只要在配置几个小元件,例如电阻、电容等即可构成一个完整的微型计算机。
而一般的微型计算机那几个主要部分分别由不同的芯片组成,把它们组装在电路板上即可构成一般的微型计算机。
2.80C51与8051的区别和联系。
答:
8051与80C51的区别:
80C51单片机是在8051的基础上发展起来的,也就是说在单片机的发展过程中是先有8051,然后才有80C51的.8051单片机与80C51单片机从外形看是完全一样的,其指令系统、引脚信号、总线等完全一致(完全兼容),也就是说在8051下开发的软件完全可以在80C51上应用,反过来,在89C51下开发的软件也可以在8051上应用.这两种单片机是完全可移植的.8051与80C51单片机的主要差别就在于芯片的制造工艺上.80C51的制造工艺是在8051基础上进行了改进.8051系列单片机采用的是HMOS工艺:
高速度、高密度;80C51系列单片机采用的是CHMOS工艺:
高速度、高密度、低功耗;也就是说80C51单片机是一种低功耗单片机.
第二章
1.MCS-51单片机内部包含哪些主要功能部件?
它们的作用是什么?
答:
(1)一个8bit CPU是微处理器的核心,是运算和逻辑计算的中心。
(2)片内震荡器及时钟电路:
提供标准时钟信号,所有动作都依据此进行。
(3)4K ROM程序存贮器:
存贮程序及常用表格。
(4)128B RAM 数据存贮器:
存贮一些中间变量和常数等。
(5)两个16bit定时器/计数器:
完全硬件定时器
(6)32根可编程I/O口线:
标准8位双向(4个)I/O接口,每一条I/O线都能独立地作输入或输出。
(7)一个可编程全双工串行口。
(8)五个中断源。
2、什么是指令?
什么是程序?
答:
指令是规定计算机执行某种操作的命令。
程序是根据任务要求有序编排指令的集合。
3、如何认识89S51/52存储器空间在物理结构上可以划分为4个空间,而在逻辑上又可以划分为3个空间?
答:
89S51/52存储器空间在物理结构上设有4个存储器空间:
片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。
在逻辑上有3个存储器地址空间:
片内、片外统一的64KB程序存储器地址空间,片内256B数据存储器地址空间,片外64KB的数据存储器地址空间。
4、开机复位后,CPU使用的是哪组工作寄存器?
他们的地址是多少?
CPU如何确定和改变当前工作寄存器组?
答:
开机复位后,CPU使用的是第0组工作寄存器,地址为00H~07H,CPU通过改变状态字寄存器PSW中的RS0和RS1来确定工作寄存器组。
5、什么是堆栈?
堆栈有何作用?
在程序设计时,有时为什么要对堆栈指针SP重新赋值?
如果CPU在操作中要使用两组工作寄存器,SP应该多大?
答:
堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。
堆栈指针SP复位后指向07H单元,00H~1FH为工作寄存器区,20H~2FH为位寻址区,这些单元有其他功能,因此在程序设计时,需要对SP重新赋值。
如果CPU在操作中要使用两组工作寄存器,SP应该至少设置为0FH。
6、89S51/52的时钟周期、机器周期、指令周期是如何分配的?
当振荡频率为8MHz时,一个单片机周期为多少微秒?
答:
时钟周期为时钟脉冲频率的倒数,他是单片机中最基本的、最小的时间单位。
机器周期是指完成一个基本操作所需要的时间,一个机器周期由12个时钟周期组成。
指令周期是执行一条指令所需要的时间,由若干个机器周期组成。
若fosc=8MHz,则一个机器周期=1/8×12μs=1.5μs
7、89S51/52扩展系统中,片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲突?
答:
访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间。
8、程序状态字寄存器PSW的作用是什么?
常用状态标志有哪些位?
作用是什么?
答:
程序状态字PSW是8位寄存器,用于存放程序运行的状态信息,PSW中各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。
各个标志位的意义如下:
PSW.7(Cy):
进位标志位。
PSW.6(AC):
辅助进位标志位,又称为半进位标志位。
PSW.5(F0):
用户标志位。
PSW.4、PSW.3(RS1和 RS0):
寄存器组选择位。
PSW.2(OV):
溢出标志位。
PSW.1(空缺位):
此位未定义。
PSW.0(P):
奇偶校验位。
9、位地址7CH和字节地址7CH有何区别?
位地址7CH具体在内存中什么位置?
答:
字节地址7CH是片内数据存储器中的一个地址单元,该地址单元中可以存放8位二进制数,位地址7CH是内部数据存储器中位寻址区中的一位,该地址单元中可以存放1位二进制数。
位地址7CH具体在片内数据存储器字节地址为2FH中的第4位(2FH.4)。
10、89S51/52中4个I/O端口的作用是什么?
89S51/52的片外三总线是如何分配的?
答:
I/O端口是单片机与外界联系的重要通道,实现与外部设备的信息的传输。
总线分配:
片外数据总线(8根)通过P0口输出,片外地址总线(16根)通过P0口(低8位)和P2口(高8位)输出,片外控制总线(PSEN ,ALE , RD ,WR ,EA)主要通过P3口。
11、89S51/52中4个I/O端口在结构上有何异同?
89S51/52单片机的4个I/O口在结构上是基本相同的,但又各具特点。
这四个端口都是8位双向口,每个端口都包括一个锁存器、一个输出驱动器和输入缓冲器。
在无片外扩展存储器的系统中,这四个端口的每一位都可以作为双向通用I/O端口使用。
在作为一般的通用I/O输入时,都必须先向锁存器写入“1”,使输出驱动场效应管FET截止,以免误读数据。
各自特点如下:
(1)P0口为双向8位三态I/O口,它既可作为通用I/O口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口。
作为通用I/O口时,输出数据可以得到锁存,不需外接专用锁存器;输入数据可以得到缓冲,增加了数据输入的可靠性。
每个引脚可驱动8个TTL负载。
(2)P1口为8位准双向I/O口,内部具有上拉电阻,一般作通用I/O口使用,它的每一位都可以分别定义为输入线或输出线,作为输入时,锁存器必须置1。
每个引脚可驱动4个TTL负载。
(3)P2口为8位准双向I/O口,内部具有上拉电阻,可直接连接外部I/O设备。
它与地址总线高8位复用,可驱动4个TTL负载。
一般作为外部扩展时的高8位地址总线使用。
(4)P3口为8位准双向I/O口,内部具有上拉电阻,它是双功能复用口,每个引脚可驱动4个TTL负载。
作为通用I/O口时,功能与P1口相同,常用第二功能。
12、复位的作用是什么?
有几种复位方法?
复位后单片机的状态如何?
答:
复位是单片机的初始化操作。
单片机在RST引脚产生两个机器周期(即24个时钟周期)以上的高电平即可实现复位。
主要的复位方法有上电自动复位和按键手动复位两种。
按键手动复位又分:
按键电平复位和按键脉冲复位。
第三章
1.分析下面指令是否正确,并说明理由。
MOVR3,R7
MOVB,@R2
DEC DPTR
MOV20H.8,F0
PUSH DPTR
CPL 36H
MOVPC,#0800H
解:
MOVR3,R7错,两个操作数不能同时为寄存器;
MOVB,@R2对;
DECDPTR错,只存在数据指针DPTR加1指令,不存在数据指针DPTR减1指令,可用指令“DECDPL”实现;
MOV20H.8,F0错,位传送指令必须用C;
PUSHDPTR错,不能作为操作数;
CPL36H错,不存在;
MOVPC,#0800H错,PC不能访问。
#0800H
2.分析下面各组指令,区分它们的不同之处。
MOVA,30H 与 MOVA,#30H
MOVA,R0 与 MOVA,@R0
MOVA,@R1 与 MOVX A,@R1
MOVX A,@R0 与 MOVX A,@DPTR
MOVX A,@DPTR 与 MOVC A,@A+DPTR
解:
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;
3.在MCS-51单片机的片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。
请说明下面各是什么指令和寻址方式,以及每条指令执行后目的操作数的结果。
MOVA,40H ;
MOVR0,A ;
MOVP1,#0FH ;
MOV@R0,30H ;
MOVDPTR,#1234H ;
MOV40H,30H ;
MOVR0,38H ;
MOVP0,R0 ;
MOV28H,#30H ;
MOVA,@R0 ;
解:
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。
4.已知(A)=23H,(R1)=65H,(DPTR)=1FECH,片内RAM(65H)=70H,ROM(205CH)=64H。
试分析下列各条指令执行后目标操作数的内容。
MOVA,@R1 ;(A)=
MOVX @DPTR,A ;(1FECH)=
MOVC A,@A+DPTR ;(A)=
解:
MOVA,@R1;(A)=70H;
MOVX@DPTR,A;(1FECH)=70H;
MOVCA,@A+DPTR;(A)=64H;
XCHDA,@R1;(A)=65H。
5.已知(A)=76H,(R1)=76H,(B)=4,CY=1,片内RAM(76H)=0D0H,(80H)=6CH。
试分析下列各条指令执行后目标操作数的内容和相应标志位的值。
ADD A,@R1 ;(A)= ,CY=
SUBB A,#75H ;(A)= ,CY=
MUL AB ;(A)= ,(B)=
DIV AB ;(A)= (B)=
ANL 76H,#76H ;(76H)=
ORL A,#0FH ;(A)=
XRL 80H,A ;(80H)=
解:
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。
6.已知(A)=83H,(R0)=17H,(17H)=34H,试分析当执行完下面程序段后累加器A、R0、17H单元的内容。
ANL A,#17H ;(A)=
ORL 17H,A ;(17H)=
XRL A,@R0 ;(A)=
CPL A ;(A)=
解:
ANLA,#17H;(A)=03H;
ORL17H,A;(17H)=37H;
XRLA,@R0;(A)=34H;
CPLA;(A)=0CBH。
7.阅读下面程序段,说明该段程序的功能。
MOVR0,#40H
MOVR7,#10
CLR A
LOOP:
MOV@R0,A
INC A
INC R0
DJNZ R7,LOOP
SJMP $
解:
把0,1,2,3……数列送到以40H开始的10个单元中。
8阅读下面程序段,说明该段程序的功能。
MOVR0,#40H
MOVA,R0
INC R0
ADD A,@R0
MOV43H,A
CLR A
ADDC A,#0
MOV42H,A
SJMP $
解:
40H加41H单元的数,结果送42H:
43H。
9.阅读下面程序段,说明该段程序的功能。
MOVA,30H
MOVB,#5
MUL AB
ADD A,31H
MOV33H,A
CLR A
ADDC A,B
MOV32H,A
SJMP $
解:
功能:
(30H)×5+(31H)→(32H:
33H)。
10.编写程序,查找片内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:
11.编写程序,把片外RAM从2000H开始存放的16字节数据,传送到片内从30H开始的单元中。
MOVDPTR,#2000H
MOVR0,#30H
MOVR1,#0
NEXT:
MOVXA,@DPTR
MOV@R0,A
INCDPTR
INCR0
INCR1
CINER1,#16H,NEXT