单片微机原理与接口技术答案宋跃版汇总.docx
《单片微机原理与接口技术答案宋跃版汇总.docx》由会员分享,可在线阅读,更多相关《单片微机原理与接口技术答案宋跃版汇总.docx(55页珍藏版)》请在冰豆网上搜索。
单片微机原理与接口技术答案宋跃版汇总
第1章思考题及习题参考答案
1.1写出下列二进制数的原码、反码和补码(设字长为8位)。
(1)001011
(2)100110
(3)-001011(4)-111111
答:
(1)原码:
00001011反码:
00001011补码:
00001011
(2)原码:
00100110反码:
00100110补码:
00100110
(3)原码:
10001011反码:
11110100补码:
11110101
(4)原码:
10111111反码:
11000000补码:
11000001
1.2已知X和Y,试计算下列各题的[X+Y]补和[X-Y]补(设字长为8位)。
(1)X=1011Y=0011
(2)X=1011Y=0111
(3)X=1000Y=1100
答:
(1)X补码=00001011Y补码=00000011[–Y]补码=11111101
[X+Y]补=00001110[X-Y]补=00001000
(2)X补码=00001011Y补码=00000111[–Y]补码=11111001
[X+Y]补=00010010[X-Y]补=00000100
(3)X补码=00001000Y补码=00001100[–Y]补码=11110100
[X+Y]补=00010100[X-Y]补=11111100
1.3微型计算机由那几部分构成?
答:
微型计算机由微处理器、存储器和I/O接口电路构成。
各部分通过地址总线(AB)、数据总线(DB)和控制总线(CB)相连。
1.48086的寻址范围有多大?
其物理地址是如何形成?
答:
8086有20根地址总线,它可以直接寻址的存储器单元数为1M字节,其地址区域为00000H—FFFFFH。
物理地址是由段地址与偏移地址共同决定的,物理地址=段地址×16+偏移地址其中段地址通常来自于段寄存器CS,物理地址来自于IP。
1.5什么叫单片机?
它有何特点?
答:
单片机就是在一块硅片上集成了CPU、RAM、ROM、定时器/计数器和多种I/O口(如并行、串行及A/D变换器等)的一个完整的数字处理系统。
单片机主要特点有:
品种多样,型号繁多;存储容量大;频率高,速度快;控制功能强,集成度高;功耗低;配套应用软件多。
第2章思考题及习题参考答案:
2.1.说明ROM、EPROM、EEPROM和FLASH之间的主要区别
解:
ROM为只读存储器,在一般情况下只能读出所存信息,而不能重新写入。
信息的写入是通过工厂的制造环节或采用特殊的编程方法进行的,一旦写入,就能长期保存。
EPROM芯片一般允许用户多次编程和擦除。
擦除时,通过向芯片窗口照射紫外光的方法来进行。
EEPROM,也称E2PROM。
该类芯片允许用户多次编程和擦除。
擦除时,可采用加电方法在线进行。
FLASH是一种新型的大容量、速度快、电可擦除可编程只读存储器。
2.2.EPROM、PROM、动态RAM、静态RAM等存储器中,哪几类是可以随时读写的?
解:
动态RAM、静态RAM这几类是可以随时读写的。
2.3某ROM芯片中有12根地址输入端和8个数据输出端,该芯片的存储容量是多少位?
解:
芯片的存储容量是4K*8位。
2.4.说明动态RAM和静态RAM的主要区别,使用时应如何选用?
解:
静态(static)RAM,即SRAM。
它以触发器为基本存储单元,所以只要不掉电,其所存信息就不会丢失。
该类芯片的集成度不如动态RAM,功耗也比动态RAM高,但它的速度比动态RAM快,也不需要刷新电路。
在构成小容量的存储系统时一般选用SRAM。
在微型计算机中普遍用SRAM构成高速缓冲存储器。
动态(Dynamic)RAM,即DRAM。
一般用MOS型半导体存储器件构成,最简单的存储形式以单个M0S管为基本单元,以极间的分布电容是否持有电荷作为信息的存储手段,其结构简单,集成度高。
但是,如果不及时进行刷新,极间电容中的电荷会在很短时间内自然泄漏,致使信息丢失。
所以,必须为它配备专门的刷新电路。
动态RAM芯片的集成度高、价格低廉,所以多用在存储容量较大的系统中。
目前,微型计算机中的主存几乎都是使用动态RAM。
2.5.说明NORFLASH与NANDFLASH的主要区别,使用时应如何选用?
解:
NORFlash具有以下特点:
(1)程序和数据可存放在同一芯片上,拥有独立的数据总线和地址总线,能快速随机读取,允许系统直接从Flash中读取代码执行,而无需先将代码下载至RAM中再执行;
(2)可以单字节或单字编程,但不能单字节擦除,必须以块为单位或对整片执行擦除操作,在对存储器进行重新编程之前需要对块或整片进行预编程和擦除操作。
但是NORFlash的擦除和编程速度较慢,块尺寸又较大,因此擦除和编程操作所花费的时间很长,在纯数据存储和文件存储的应用中,NOR技术显得力不从心。
NANDFlash具有以下特点:
(1)以页为单位进行读和编程操作,1页为256或512B(字节);以块为单位进行擦除操作,1块为4K、8K或16KB。
具有快编程和快擦除的功能,其块擦除时间是2ms;而NOR技术的块擦除时间达到几百ms。
(2)数据、地址采用同一总线,实现串行读取。
随机读取速度慢且不能按字节随机编程。
(3)芯片尺寸小,引脚少,是位成本(bitcost)最低的固态存储器,将很快突破每兆字节1美元的价格限制。
(4)芯片包含有失效块,其数目最大可达到3~35块(取决于存储器密度)。
失效块不会影响有效块的性能,但设计者需要将失效块在地址映射表中屏蔽起来。
NORFlash具有可靠性高、随机读取速度快的优势,在擦除和编程操作较少而直接执行代码的场合,尤其是纯代码存储的应用中广泛使用,如PC的BIOS固件、移动电话、硬盘驱动器的控制存储器等。
NANDFlash结构的闪速存储器适合于纯数据存储和文件存储,主要作为SmartMedia卡、CompactFlash卡、PCMCIAATA卡、固态盘的存储介质,并正成为闪速磁盘技术的核心。
2.6.现有2K×8位的RAM芯片若干片,若用线选法组成存储器,有效的寻址范围最大是多少KB?
若用3-8译码器来产生片选信号,则有效的寻址范围最大又是多少?
若要将寻址范围扩展到64KB,应选用什么样的译码器来产生片选信号?
解:
以8086为例,8086有20条地址线,用11条地址线寻址一片2K×8位的RAM,余下的9条地址线做线选法的线,故可以并联9个芯片,故寻址最大范围是20KB,若用3-8译码器来产生片选信号,9条地址线可以控制3个3-8译码器这样就可以控制24个芯片最大范围是50KB.若要将寻址范围扩展到64KB可选用4-16地址译码器来产生片选信号。
2.7.什么是地址重叠区?
它对存储器扩展有什么影响?
解:
基本地址和前面全译码连接的地址范围是相同的,但两者还是有区别的。
区别在于全译码连接时各芯片的地址是唯一的,而部分译码连接时各芯片地址不是唯一的,也就是可以由若干个地址都选中同一芯片的同一单元,既所谓的地址重叠区。
由于存在的地址重叠,影响了地址区的有效使用,也限制了存储器的扩展。
因此,在选用部分译码时,也要尽可能多选一些高位地址线来作为译码器的输入。
2.8如图2-22若用1K×8位片子来扩展3K×8位RAM,试核算各片的地址范围为多少?
解:
A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0地址
G1ABC
1010000000000000片1:
A000H
·
·
·
1010001111111111片1:
A3FFH
A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0地址
G1ABC
1011000000000000片2:
B000H
·
·
·
1011001111111111片2:
B3FFH
A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0地址
G1ABC
1011010000000000片3:
B400H
·
·
·
1011011111111111片3:
B7FFH
所以各片地址范围为:
片1:
A000H-A3FFH,
片2:
B000H-B3FFH,
片3:
B400H-B7FFH
2.9.现有8K×8位RAM多片,1片3-8译码器,要构成容量为16K×8位的存储器,请用线译码、部分译码、全译码3种方式分别设计,画出连接图,并指出寻址范围。
解:
线译码法:
寻址范围:
2000H~5FFFH
部分译码寻址范围:
0000H~3FFFH
全译码:
寻址范围:
0000H~FFFFH
2.10.如何检查扩展的RAM工作是否正常?
试编一个简单的RAM检查程序,要求此程序能记录有多少个RAM单元工作有错?
且能记录出错的单元地址。
解:
TEST_CONSTEQU5AH
TEST_RAMEQU03H
ORG0000H
LJMPINITIAL
ORG0050H
INITIAL:
MOVR0,#253
MOVR1,#3H
TEST_ALL_RAM:
MOVR2,#0FFH
TEST_ONE_RAM:
MOVA,R2
MOV@R1,A
CLRA
MOVA,@R1
CJNEA,2H,ERROR_DISPLAY
DJNZR2,TEST_ONE_RAM
INCR1
DJNZR0,TEST_ALL_RAM
OK_DISPLAY:
MOVP1,#11111110B
WAIT1:
SJMPWAIT1
ERROR_DISPLAY:
MOVA,R1
MOVP1,A
WAIT2:
SJMPWAIT2
END
第3章思考题及习题参考答案
3.1.80C51单片机的P0~P3口在通用I/O口时操作要注意哪些?
P0~P3口不做通用I/O口时是什么功能?
在使用上有何特点?
P0~P3驱动能力如何?
答:
(1)作为通用I/O口时,P0~P3都是准双向口,输入引脚信息时都必须先向其锁存器写“1”,作为输出口时P0口需结上拉电阻。
(2)P0可以作为地址/数据总线;P2口可以作为地址线的高8位;P3口是双功能口,每条口线还具有不同的第二功能。
(3)P0口的驱动能力为8个TTL负载,而其它口仅可驱动4个TTL负载。
3.2、MCS-51单片机运行出错或程序进入死循环,如何摆脱困境?
答:
通过复位电路复位
3.3、单片机的复位(RST)操作有几种方法,复位功能的主要作用是什么?
答:
单片机的复位操作方式有:
1、上电复位;2、手动复位。
复位功能的主要作用是:
复位时,PC初始化为0000H,使MCS-51单片机从0000H开始执行程
3.4、简述程序状态寄存器PSW寄存器中各位的含义。
答:
程序状态字寄存器PSW,8位。
其各位的意义为:
CY:
进位、借位标志。
有进位、借位时CY=1,否则CY=0;
AC:
辅助进位、借位标志(高半字节与低半字节间的进位或借位);
F0:
用户标志位,由用户自己定义;
RS1、RS0:
当前工作寄存器组选择位,共有四组:
00、01、10、11;
OV:
溢出标志位。
有溢出时OV=1,否则OV=0;
P:
奇偶标志位。
存于累加器ACC中的运算结果有奇数个1时P=1,否则P=0.
3.5、80C51单片机的当前工作寄存器组如何选择?
答:
由特殊功能寄存器中的程序状态寄存器PSW的RS1、RS0来决定,当RS1、RS0为00时,选择0组;为01时,选择1组;为10时选择2组,为11时选择3组。
3.6.80C51单片机的控制总线信号有哪些?
各信号的作用如何?
答:
80C51单片机的控制总线信号有以下4个,各信号的作用为:
RST/VPD:
复位信号输入引脚/备用电源输入引脚;
ALE/PROG:
地址锁存允许信号输出引脚/编程脉冲输入引脚;
EA/Vpp:
内外存储器选择引脚/片内EPROM(或FlashROM)编程电压输入引脚;
PSEN:
外部程序存储器选通信号输出引脚。
3.7、8051单片机中EA引脚的作用是什么?
答:
访问内部或外部程序存储器的选择端当EA接高电平的时候程序从内部ROM开始执行,当EA为低电平的时候,从外部ROM开始执行
3.8、程序计数器PC的作用是什么?
答:
程序计数器PC是一个16位的计数器,他总是存放着下一个要取的指令的16位存储单元地址。
用来存放下一条指令的地址用来存放下一条指令的地址的。
当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。
与此同时,PC中的地址或自动加1或由转移指针给出下一条指今的地址。
此后经过分析指令,执行指令。
完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令
3.9、堆栈有哪些功能?
堆栈指示器(SP)的作用是什么?
在程序设计时,为什么要对SP重新赋值?
答:
堆栈在中端过程中用来保护现场数据,复位后SP=7H,而堆栈一般设置在通用ROM区(30H-7FH),在系统初始化时候要从新设置。
3.10、内部RAM低128单元划分为哪3个主要部分?
说明各部分的使用特点。
答:
80C51内部128B的数据RAM区,包括有工作寄存器组区、可直接位寻址区和数据缓冲区。
各区域的特性如下:
(1)00H~1FH为工作寄存器组区,共分4组,每组占用8个RAM字节单元,每个单元作为一个工作寄存器,每组的8个单元分别定义为8个工作寄存器R0~R7。
当前工作寄存器组的选择是由程序状态字PSW的RS1、RS0两位来确定。
如果实际应用中并不需要使用工作寄存器或不需要使用4组工作寄存器,不使用的工作寄存器组的区域仍然可作为一般数据缓冲区使用,用直接寻址或用Ri的寄存器间接寻址来访问。
(2)20H~2FH为可位寻址区域,这16个字节的每一位都有一个地址,编址为00H~7FH。
当然,位寻址区也可以用作字节寻址的一般数据缓冲区使用。
(3)30H~7FH为堆栈、数据缓冲区。
3.11、简述MCS-51单片机存储区的划分。
答:
MCS-51单片机的存储器从物理结构上分为:
片内和片外数据存储器,片内和片外程序存储器。
2)从逻辑上分别可划分为:
片内统一寻址的64K程序存储器空间(0000H---FFFFH);64KB的片外数据存储器空间(0000H---FFFFH);256B的片内数据存储器空间(00H---FFH)。
12、MCS-51基本型单片机的中断入口地址各为多少。
答:
外部中断0中断入口地址0003H
定时/计数器0中断入口地址000BH
外部中断1中断入口地址0013H
定时/计数器1中断入口地址001BH
串行接口中断入口地址0023H
3.13、什么是指令周期、机器周期和时钟周期?
答:
指令周期:
指令的执行时间;机器周期:
CPU完成一个最简单的指令所需要的时间;时钟周期:
晶振信号周期就是时钟周期。
3.14、已知一MCS51单片机系统使用6MHZ的外部晶体振荡器,计算:
该单片机系统的状态周期与机器周期各为多少?
解:
由于晶振为6MHz,所以机器周期为2us,因为一个机器周期由6个状态周期组成,所以状态周期1/3us
3.15、8031单片机需要外接程序存储器,实际上它还有多少条I/O线可以用?
当使用外部存储器时,还剩下多少条I/O线可用?
答:
8031系统必须外接程序促成器,原则上说,P0和P2口要用作数据和地址总线,所以只有P1和P3口可用作I/O口,共16条I/O线。
在使用外部存储器时,除了占用P0和P2口外,还需要用P3口RD(P3.7)和WR(P3.6)两条控制线,所以这种情况下就只剩下14条I/O线可用了。
第4章思考题及习题参考答案
4.1.寻址方式是什么?
答:
寻址方式是寻找操作数或操作数地址的方式。
2.89C51指令系统有哪几种寻址方式?
答:
89C51的寻址方式有七种。
即:
寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。
3、访问特殊功能寄存器SFR可以采用哪些寻址方式?
答:
直接寻址和位寻址方式。
4、访问RAM单元可以采用哪些寻址方式?
访问外部RAM单元有哪些指令?
答:
直接寻址、寄存器间接寻址和位寻址方式。
访问外部RAM单元的指令有4条:
MOVXA,@DPTR
MOVXA,@Ri
MOVX@DPTR,A
MOVX@Ri,A
5、访问外部程序存储器可以采用哪些寻址方式?
访问外部程序存储器有哪些指令?
答:
立即寻址、变址寻址和相对寻址方式。
访问外部程序存储器的指令有2条
MOVCA,@A+DPTR
MOVCA,@A+PC
6、试写出完成以下每种操作的指令序列。
(1)将R0的内容传送到片内RAM20H;
(2)将R1的内容传送到R0;
(3)内部RAM单元10H的内容传送到外部RAM单元1000H;
(4)外部RAM单元1000H的内容传送到R5;
(5)外部ROM单元1000H的内容传送到R5;
(6)外部RAM单元2000H的内容传送到外部RAM单元2001H。
答:
(1)MOV20H,R0
(2)MOVA,R1
MOVR0,A
(3)MOVA,10H
MOVDPTR,#1000H
MOVX@DPTR,A
(4)MOVDPTR,#1000H
MOVXA,@A+DPTR
MOVR5,A
(5)MOVDPTR,#1000H
MOVA,#00H
MOVCA,@A+DPTR
MOVR5,A
(6)MOVDPTR,#2000H
MOVXA,@DPTR
INCDPTR
MOVX@DPTR,A
7.设内部RAM(30H)=60H,(60H)=10H,(10H)=20H,(R1)=22H,(P1)=0AH,分析以下程序执行后(30H)=?
(60H)=?
(10H)=?
(A)=?
(B)=?
(P2)=?
每条指令的机器码为多少?
MOVR0,#30H
MOVA,@R0
MOVR1,A
MOVB,@R1
MOV@R1,P1
MOVP2,P1
MOV10H,#90H
答:
MOVR0,#30H;(R0)=30H,7830
MOVA,@R0;(A)=60H,E6
MOVR1,A;(R1)=60H,F9
MOVB,@R1;(B)=10H,87F0
MOV@R1,P1;(60H)=0AH,A790
MOVP2,P1;(P2)=0AH,8590A0
MOV10H,#90H;(10H)=90H,751090
(30H)=60H,(60H)=0AH,(10H)=90H,(A)=60H,(B)=10H,(P2)=0AH
8.设外部RAM(2030H)=0FH,分析以下指令执行后(DPTR)=?
(30H)=?
(2030H)=?
(A)=?
每条指令的机器码为多少?
MOVDPTR,#2030H
MOVXA,@DPTR
MOV30H,A
MOVA,#3FH
MOVX@DPTR,A
答:
MOVDPTR,#2030H;(DPTR)=2030H,902030
MOVXA,@DPTR;(A)=0FH,E0
MOV30H,A;(30H)=0FH,F530
MOVA,#3FH;(A)=3FH,743F
MOVX@DPTR,A;(2030H)=3FH,F0
执行结果为:
(DPTR)=2030H,(30H)=0FH,(2030H)=3FH,(A)=3FH。
9、编写指令实现下列位操作。
(1)使累加器的最高2位清零;
(2)屏蔽(清零)20H的高4位;
(3)将E0H的低4位取反,高4位不变;
(4)将P0的低2位置1。
(5)将10H的内容取补后存放到20H
答:
(1)CLRACC.7
CLRACC.6
(2)ANL20H,#0FH
(3)XRLE0H,#0FH
(4)ORLP0,#03H
(5)XRL10H,#0FFH
INC10H
MOV20H,10H
10.在外部程序存储器中,从1020H单元开始依次存放0~9的平方值:
0、1、4、9、…、81,要求依据累加器A中的值(0~9)来查找所对应的平方值,试设计程序实现。
答:
MOVDPTR,#1020H
MOVCA,@A+DPTR
11.设(R0)=20H,(20H)=40H,(A)=58H,则:
执行XCHA,@R0后(A)=?
(20H)=?
若执行XCHDA,@R0后(A)=?
(20H)=?
答:
执行XCHA,@R0后(A)=40H,(20H)=58H
若执行XCHDA,@R0后(A)=50H,(20H)=48H
12、试编写程序序列,完成两个16位数的减法:
(30H)(31H)-(10H)(11H)→(30H)(31H)。
答:
CLRC
MOVA,31H
SUBBA,11H
MOV31H,A
MOVA,30H
SUBBA,10H
MOV30H,A
13、试编写程序,将R0中的低4位数与R1中的高4位数合并成一个8位数,并将其存放在R0中。
答:
MOVA,R0
ANLA,#0FH
MOVB,A
MOVA,R1
ANLA,#0F0H
ORLA,B
MOVR0,A
14.设计双字节无符号数加法程序实现(R0R1)+(R2R3)→(R4R5),R0、R2、R4存放16位数的高字节,R1、R3、R5存放低字节,假设其和不超过16位。
答:
MOVA,R1
ADDA,R3
MOVR5,A
MOVA,R0
ADDCA,R2
MOVR4,A
15.设计双字节无符号数相减程序实现(R0R1)-(R2R3)→(R4R5)。
R0、R2、R4存放16位数的高字节,R1、R3、R5存放低字节,
答:
MOVA,R1
CLRC
SUBBA,R3
MOVR5,A
MOVA,R0
SUBBA,R2
MOVR4,A
17.设2个BCD码数存在外部RAM的2000H和内部RAM的20H。
设计程序实现2个BCD码相加,其结果的十位和个位送到外部RAM的2000H单元,结果的百位值送F0位。
答:
MOVDPTR,#2000H
MOVXA,@DPTR
ADDA,20H