《单片微型机原理和接口教程》周思跃习题解答Word下载.docx
- 文档编号:19927856
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:47
- 大小:50.79KB
《单片微型机原理和接口教程》周思跃习题解答Word下载.docx
《《单片微型机原理和接口教程》周思跃习题解答Word下载.docx》由会员分享,可在线阅读,更多相关《《单片微型机原理和接口教程》周思跃习题解答Word下载.docx(47页珍藏版)》请在冰豆网上搜索。
X=-
1-7 已知下列补码[X]补和[Y]补,分别求[X+Y]补、[X-Y]补。
并判断运算结果是否出现溢出。
[X]补=10011001,[Y]补=00101100;
[-Y]补=,[X+Y]补=[X]补+[Y]补=不溢出;
[X-Y]补=[X]补+[-Y]补=[X]补-[Y]补=溢出;
[X]补=11111111,[Y]补=10000000;
[-Y]9位补=010000000, [X+Y]补=[X]补+[Y]补=溢出;
[X-Y]补=[X]补+[-Y]补=[X]补-[Y]补=不溢出;
[X]补=00110111,[Y]补=11100000;
[-Y]补=,[X+Y]补=[X]补+[Y]补=不溢出;
[X-Y]补=[X]补+[-Y]补=[X]补-[Y]补=不溢出;
[X]补=10000111,[Y]补=11000000;
[-Y]补=,[X+Y]补=[X]补+[Y]补=溢出;
[X-Y]补=[X]补+[-Y]补=[X]补-[Y]补=不溢出;
方法提示:
由于补码是按序列排列的,所以可以直接进行加和减,即[X+Y]补=[X]补+[Y]补;
[X-Y]补=[X]补-[Y]补
另补码减法也可用加法实现[X-Y]补=[X]补+[-Y]补。
上题的第2小题,由于[Y]8位补=10000000=28,Y=-28,所以(-Y)=28,已不能用8位补码表示,可以先扩补位9位补码,然后进行运算,或直接用[X-Y]补=[X]补-[Y]补进行计算。
判断结果是否溢出,可按下列方法:
加法时,如果正负数相加(即两数的符号位不同),则结果肯定不溢出;
如果同号数相加,结果与被加数和加数异号的则溢出(即正正相加结果为负或负负相加结果为正时)。
减法时,如果同号数相减(即两数的符号位相同),则结果肯定不溢出;
如果异号数相减,结果与被加数异号的则溢出(即正负相减结果为负或负正相减结果为正时)。
此法比用变形补码直观,加和减都适用。
第二章习题答案
2-1请说明单片机89C52内部有哪些资源。
1个8位CPU、8KB的FLASH程序存储器、256B的SRAM数据存储器、4个8位的并行I/O口(P0,P1,P2,P3)、1个全双工串行口、中断系统(5个中断源、2个中断优先级)、3个16位的定时/计数器(T0,T1,T2)、时钟电路(时钟频率6~24MHZ)。
2-2为什么51系列单片机的存储器系统采用哈佛结构。
哈佛结构指的是指令代码和数据分别存放在程序存储器和数据存储器中,两部分存储器分别采用不同的地址总线系统。
单片机在工作时一般执行固定不变的应用程序代码,而作为嵌入式控制系统的核心,受限于体积要求,单片机系统一般不会带有辅助存储器(例如硬盘等),为了在断电时也能保存用户的应用程序,故需将程序固化在只读存储器中,而单片机工作时程序运行过程中的数据是变化的,所以需要放在随机访问存储器中。
2-351单片机中的工作寄存器分布在存储器的哪个区域?
分布在内部数据存储器的00H~1FH区域。
2-4在51系列单片机中,工作寄存器分几个区?
如何改变工作寄存器区?
分为0、1、2、3四个区。
修改特殊功能寄存器PSW的RS1和RS0位可改变当前工作寄存器区。
2-5特殊功能寄存器和工作寄存器在存放信息方面有和区别?
特殊功能寄存器(SFR)中存放的是一些专用信息,这些信息与下列内容有关:
计算机指令的执行条件及状态标志,定时/计数器的使用控制、中断系统的使用、并行I/O及串行I/O接口的使用。
ﻩ工作寄存器只是用于暂时存放指令执行过程中一般的被操作数据。
2-6特殊功能寄存器的地址空间如何?
特殊功能寄存器(SFR)的地址为8为二进制编码,地址范围为80H~0FFH,但各特殊功能寄存器的地址并非连续分布的。
指令通过直接寻址的方式才能访问到。
2-751单片机中的位寻址区在哪里?
它们的地址空间如何?
51单片机的位寻址区分布在两个地方。
一部分位于内部数据存储器中字节地址为20H~2FH的16个单元中,这部分包括128个位,位地址空间为00H~7FH;
另一部分位于字节地址能被8整除的特殊功能寄存器中,位地址空间为80H~0FFH。
2-8请指出下列位地址所在的内部数据存储器单元的字节地址或SFR名称。
00Hﻩ内部RAM的20H单元;
(20H).0
20H内部RAM的24H单元;
(24H).0
0A0HﻩP2;
P2.0
0B0HP3;
P3.0
64Hﻩ内部RAM的2CH单元;
(2CH).4
E6Hﻩﻩ累加器ACC;
ACC.6。
提示:
1)内部数据存储器内的可寻址位,其位地址(00H~7FH)与所在单元的字节地址(20H~2FH)间的关系如下:
位地址=(字节地址-20H)×
8+DX,DX-该位在字节单元中的位置(D0~D7)
位地址÷
8,商+20H=字节地址,余数=DX
2) SFR中的可位寻址(位地址80H~0FFH)的寄存器,其最低位的位地址与其字节地址相同。
关系如下:
8,商*8=SFR的字节地址,余数=DX,DX-该位在SFR中的位置(D0~D7)
2-9 若某51单片机应用系统将F000H~FFFFH地址空间分配给它外部的I/O接口,那么该单片机应用系统最多给外部数据存储器分配多少单元?
地址空间如何?
51单片机的外部I/O接口和外部数据存储器是统一编制的,占用同一个地址空间,地址空间的容量为64KB,地址范围为0000H~FFFFH。
据题意,系统已将F000H~FFFFH地址空间分配给它外部的I/O接口,则只剩下0000H~EFFFH可分配给外部数据存储器,容量为60KB。
2-10在图2-9中的电容C,如果它取值太小,对复位电路有何影响?
51单片机上电复位,需要在RST引脚上保持10ms以上的高电平。
如果C太小,则其充电时间变短,上电后,RST引脚上高电平保持的时间太短,则单片机内部复位将不能完全完成,有些寄存器内容将变得不确定。
2-11上电复位和人工按钮复位后对内部数据存储器具有什么不同的影响?
上电复位后,内部数据存储器中的内容为不确定的状态。
人工按钮复位后,内部数据存储器中的内容不变(因为没有断电)。
2-12 51应用系统中,为何要对堆栈指针SP重新设置?
复位后(SP)=07H,则堆栈是从08H开始存放数据的。
而内部数据存储器中00H~1FH单元为工作寄存器区,而20H~2FH单元为位寻址区,在实际的应用系统中,这些区域都可能使用到。
故一般将堆栈设置在地址30H以后的单元中,所以需要对堆栈指针SP重新设置。
2-1351单片机中的I/O接口中,那个接口在作为准双向口时需要外接电阻?
若对某一接口进行读引脚的操作,必须事先对该接口做什么操作?
P0口需外接上拉电阻(因为P0是集电极开路结构)。
若需对某个接口读引脚(即读取外部输入信号的状态),需要对该接口的口锁存器写入1(例如:
若需要读取P1.0、P1.1、P1.2、P1.3的引脚状态时,需要先执行MOV P1,#0FH。
这也是为什么复位后(P0)=(P1)=(P2)=(P3)=0FFH的道理。
)
第三章习题答案
3-1 指令的格式是由哪些部分组成的?
每部分的含义是什么?
指令由操作码和操作数组成。
在形式上操作码和操作数都是二进制代码。
操作码用来表示指令的种类和功能,经由控制器中的指令译码器译码后产生控制信号。
操作数是指令的操作对象,表示被操作数据或数据所在的存储单元地址。
3-2什么是寻址方式?
51系列指令系统有哪些寻址方式?
指令中给出操作数的方式叫做寻址方式。
51系列机给出的寻址方式一般有7中:
立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址(直接寻址的一个特例――地址指向位单元)。
3-3对于内部数据存储器00H~1FH区域的访问有哪些寻址方式?
对于外部数据存储器的访问有哪些寻址方式?
对于特殊功能寄存器的访问有哪些寻址方式?
对于内部数据存储器00H~1FH区域的访问有直接寻址、寄存器寻址、寄存器间接寻址三种方式。
对于外部数据存储器的访问只有寄存器间接寻址一种方式(以DPTR或R0、R1为指针)。
对于特殊功能寄存器的访问只有直接寻址一种方式。
同时对于内部数据存储器80H~0FFH的128个单元的访问只有寄存器间接寻址一种方式(以R0、R1或SP为指针);
借助于两种不同的寻址方式,可以将在地址上重合(80H~0FFH)的SFR和内部RAM高128字节单元的两部分空间加以区分。
3-451系列单片机有哪些标志位?
这些标志位存放在哪里?
51单片机在程序运行时通常需要一下标志位:
Cy,AC,OV,P,RS1,RS0,它们都存放在特殊功能寄存器PSW(程序状态字寄存器)中。
3-5 分析下列各指令的操作数,指出它们的寻址方式。
MOV R4,38Hﻩﻩ;
寄存器寻址,直接寻址
ADD A,@R1;
寄存器寻址,寄存器间接寻址
MOVC A, @A+DPTR;
寄存器寻址,变址寻址(又称基址寄存器加变址寄存器间接寻址)
MOVXA,@DPTR;
寄存器寻址,寄存器间接寻址
DECBﻩﻩﻩﻩ;
直接寻址
SETB24Hﻩﻩﻩ;
位寻址(直接寻址的一种,只是给出的直接地址是位地址)
CJNE A, #100,NEXT;
寄存器寻址,立即寻址,相对寻址
ANL30H,#00Hﻩ;
直接寻址,立即寻址
PUSH P1ﻩ;
寄存器间接寻址(指针为SP,只是在堆栈操作指令中省略了),直接寻址
堆栈操作除了用PUSH和POP指令,完全可以用其它指令来完成,举例如下:
PUSH P1
可用下列程序段完成
INC SP
MOV R0, SP
MOV @R0, P1
POPP1
MOVR0, SP
MOV P1, @R0
DEC SP
上题答案中按操作数先后顺序给出其对应的寻址方式。
3-6下列各指令或指令组执行前有关寄存器和存储器的状态如下表,要求分析各指令或指令组执行后有关寄存器、存储器和标志位的状态。
内部数据存储器和特殊功能寄存器
外部数据存储器
程序存储器
寄存器名
内容
单元地址
程序计数器内容
B
64H
73H
10H
900BH
12H
1206H
35H
(PC)=1200H
ACC
03H
72H
11H
900AH
83H
1205H
34H
PSW
80H
71H
00H
9009H
D1H
1204H
33H
标号及标号值
DPL
05H
70H
9008H
79H
1203H
32H
NEXT1=0800H
DPH
90H
9007H
0CH
1201H
31H
NEXT2=0900H
SP
36H
F8H
9006H
23H
1200H
30H
NEXT3=1280H
R0
00H
35H
2BH
9005H
13H
LOOP=1148H
R1
36H
36H
9004H
4DH
R2
35H
33H
74H
9003H
2EH
R3
B7H
32H
59H
9002H
7FH
R4
03H
9001H
54H
R5
F6H
26H
66H
9000H
38H
R6
E4H
25H
55H
R7
21H
24H
44H
P0
7CH
P2
90H
提示:
在上表中需注意几点:
(PSW)=80H,即Cy=1, AC=0,RS1=RS0=0(故当前工作寄存器区为0区)。
工作寄存器区为0区时,R0~R7指向内部数据存储器的00H~07H,所以当指令中出现直接地址00H~07H中的某个时,其初始条件即为R0~R7中某个对应的寄存器的值。
另,因为(DPH)=90H, (DPL)=05H, 所以(DPTR)=9005H。
标号值实质上是代表标号所在处的指令在程序存储器中的地址,标号往往出现在程序转移指令中,指出转移指令的目标地址。
•MOV R0,#32;
ﻩ(R0)=32=20H
•MOV25H,@R1;
ﻩ(25H)=0F8H
•MOVXA,@DPTR;
ﻩ(A)=ﻩ13HP=1
•MOVX A,@R0;
ﻩﻩ(A)=38HP=1
•MOVCA,@A+PC;
(A)=33HP=0
•MOVA,04H;
(A)=ﻩ03HﻩﻩP=0
•XCHA,34H;
ﻩ(A)=36Hﻩ(34H)= 03H
•XCHD A,@R1;
ﻩ(A)=08Hﻩﻩ(36H)=0F3H
•PUSHDPL;
ﻩ(SP)=72Hﻩ(72H)=05H
•POPDPH;
(DPH)=00H(SP)=70H
•SUBB A,R1;
ﻩ(A)=ﻩ0CCHCy=1ﻩP=0ﻩAC=1ﻩﻩOV=0
•ADD A,R6;
ﻩ(A)=ﻩ0E7HCy=0ﻩﻩP=0ﻩﻩﻩAC=0ﻩOV=0
•ADDCA,36H;
ﻩ(A)=0FCHCy=0P=0ﻩﻩAC=0OV=0
•MUL AB;
ﻩ(A)=ﻩ2CHﻩ(B)=01H
•INCR0;
(R0)=01H
•DECA;
ﻩﻩﻩ(A)=ﻩ02HﻩﻩP=1
•ADD A,#49H;
DAA;
ﻩ(A)=52HﻩCy=0ﻩP=1
•ANLA,R1;
ﻩ(A)=02Hﻩ(R1)=36HP=1
•ORL A,32H;
ﻩ(A)=ﻩ5BHP=1
•ORL26H,#35H;
ﻩ(26H)=77HﻩP=0
•XRL A,@R0;
ﻩ(A)=03HﻩP=0
•XRLA,ACC;
ﻩ(A)=0ﻩP=0
•XRLA,#0FFH;
ﻩ(A)=ﻩ0FCHﻩP=0
•CPL A;
ﻩﻩ(A)=0FCHﻩP=0
•RL A;
ﻩﻩ(A)=06HﻩCy=1
•RRC A;
ﻩﻩ(A)=81HﻩCy=1
•MOVC,(25H).2;
Cy=1
•MOVF0,C;
(PSW)=0A0H
•SETBRS0;
ﻩ(PSW)=88H
•CLRC;
ﻩ(PSW)=0
•ANLC,(24H).0Cy=0
•JZ NEXT1;
ﻩ(PC)=1202H
•JCNEXT2;
ﻩﻩ(PC)=0900H
•CJNEA, 25H,NEXT3;
ﻩ(PC)=1280HﻩCy=1
•DJNZ R7,LOOP;
ﻩ(PC)=1148Hﻩ(R7)=20H
•LCALL 1800H;
ﻩ(PC)=1800Hﻩﻩ(SP)=73H(72H)=03Hﻩ(73H)=12H
•RET;
ﻩﻩ(PC)=0080H(SP)=6FHﻩ
•ANLC,/32H;
ﻩCy=0ﻩﻩﻩ(32H)=1,提示此处32H为位存储器
•STOP:
JBCP0.3,STOP;
ﻩﻩ(PC)=1200Hﻩﻩ(P0)=74H
•JNBP0.4,NEXT1;
ﻩﻩ(PC)=1203H
•分析下列程序段的功能。
•MOV A,R3
MOVR4,A
功能:
将R3中的内容送入R4,即(R3)→R4
•MOVA,R5
CPL A
MOVR5,A
R5中的数据按位取反后送回R5
•MOVA,R4
MOV B, R5
DIV AB
MOVR4, B
MOVR5, A
R4中的数除以R5中的数,结果商送入R5,余数送入R4
•MOVC, P1.1
ANLC,P1.2
ANLC, /P1.3
MOVP1.6, C
功能:
P1.1P1.2→P1.6
•MOV C,0
ORL C, 1
MOV F0,C
MOVC,2
ORL C, 3
ANL C,F0
MOV P1.7,C
((20H).0∨(20H).1)∧ ((20H).2∨(20H).3)→P1.7
•CLRC
MOV A, R4
RLCA
MOVR4, A
MOVA,R3
RLC A
MOVR3, A
R3、R4中的内容左移一位,R4最低位移入0,R4最高位移入R3最低位,R3最高位移出至Cy。
•CLR C
MOV A, R5
RLCA
ADDA, R5
MOV R5,A
•CLR A
MOVR0,A
MOV R7,A
LOOP:
MOV@R0,A
INCR0
DJNZ R7,LOOP
STOP:
SJMPSTOP
将内部数据存储器00H~0FFH 256个单元全部清零。
•PUSHACC
PUSHB
POPACC
POPB
利用堆栈将ACC与B中的内容互换,即(ACC)(B)
•MOV R0,#30H
XCHDA,@R0
SWAP A
INCR0
XCHDA, @R0
SWAPA
MOV 40H,A
将ACC的低四位送入30H单元低四位,ACC的高四位送入31H的低四位,而原先30H单元的低四位送入40H单元的低四位,原31H单元的低四位送入40H单元的高四位。
举例说明如下,设程序段运行前有(ACC)=12H,(30H)=34H,(31H)=56H;
则程序段运行后有(30H)=32H,(31H)=51H,(ACC)=(40H)=64H;
该程序段可用来将单字节BCD转压缩BCD.
3-8 指出下列指令中哪些是合法指令,哪些是非法指令。
MOVP1, R4ﻩﻩ;
合法
MOVR2,R4ﻩﻩ;
非法
CLRR3;
RLC R5ﻩﻩ;
MOV30H, 31Hﻩ;
MOV 00H,P;
ORL40H,R7ﻩ;
PUSHR6;
POPR0ﻩﻩ;
INC DPTRﻩﻩ;
注:
常见的错误还有类似:
MOV R0, C;
ADD30H,31H;
MOVA, @R5;
DEC DPTR等,编程时切记勿错!
3-9 按要求编制下列各程序段。
将内部数据存储器30H和31H单元的内容互换。
法一:
MOVA,30H
XCHA,31H
MOV 30H,A
ﻩﻩ 法二:
XCHA,30H
XCH A,31H
XCH A,30H
比较法一、法二的优缺点,你认为哪个方法更好?
将寄存器R7的内容向右循环移位一次。
XCHA,R7
RR A
XCHA,R7
将寄存器R3的内容乘以4(结果不超出8为二进制数的范围)。
MOV A,R3
MOV B, #4
MULAB
MOVR3,A
ﻩﻩ法二:
XCHA,R3
RLA
RLA
XCHA,R3
将寄存器DPTR的内容减1。
法一:
判断DPL=0否?
如是,DPL减1后,DPH也减1;
否则,DPH不变。
XCH A,DPL
JNZNOB
DEC DPH
NBO:
XCHA,DPL
DECDPL
法二:
(DPH)(DPL)-1→DPH,DPL(即DPTR)
CLRC
XCHA,DPL
SUBBA,#1
XCHA,DPL
XCHA, DPH
SUBBA, #0
XCH A, DPH
法三:
(DPH)(DPL)+0FFFFH→DPTR
XCHA,DPL
ADDA,#0FFH
XCHA,DPL
XCHA,DPH
ADDC A, #0FFH
XCHA, DPH
比较以上各方法,其中法三利用了-1的补码是0FFFFH的原理,将减法改为了加法。
将寄存器R6的内容压入堆栈(设寄存器工作在3区)
PUSH 1EH
将R4,R5寄存器连接起来循环右移一位。
(设R4为高8位,R5为低8位;
执行完后R4R5中的内容右移一位,R4的最低位移入R5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片微型机原理和接口教程 单片 微型机 原理 接口 教程 周思跃 习题 解答