单片机习题参考解答Word格式.docx
- 文档编号:15806571
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:21
- 大小:105.51KB
单片机习题参考解答Word格式.docx
《单片机习题参考解答Word格式.docx》由会员分享,可在线阅读,更多相关《单片机习题参考解答Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
7、MCS-51单片机片内低128字节的RAM中,分了几个基本区域?
说出这些区域的名称。
MCS-51系列单片机片内低128字节的RAM包含:
工作寄存器区(00H:
1FH)、可位寻址区(20H:
2FH)、通用RAM区(30H:
7FH)3个组成部分。
8、片内和片外数据存储器地址重叠的区域是哪些地址?
片内与片外数据存储器空间的低地址部分(000OH~OOFFH)是重叠的,MCS-51单片机有MOV和MOVX两种指令,用以区分片内、片外RAM空间,当使用MOV指令时,访问的是片内区域,当使用MOVX指令时,访问的是片外区域。
9、访问程序存储器的片外空间,是通过什么方式实现的?
程序存储器空间的片内、片外选择通过单片机的引脚
来实现,当
接低电平时,程序存储器空间的64KB全部由片外实现,当
接高电平时,程序存储器空间的前4KB(MCS-52是8KB)由片内实现,对于片内没有的高地址空间部分单元,不管
引脚接的是高电平还是低电平都由片外实现。
片外程序存储器空间和片外数据存储器空间,采用的外部地址总线和数据总线是相同的,不同的是控制总线,程序存储空间的读信号
,而数据存储空间的读信号为。
10、说出程序状态字寄存器(PSW)各位的含义。
PSW的位结构如下表所示。
D7
D6
D5
D4
D3
D2
D1
D0
Cy
AC
F0
RS1
RS0
OV
-
P
其中,各位的含义如下:
✧Cy:
高位进位标志位,当ALU的算术运算过程中有进位或借位时,Cy=1;
否则,Cy=0。
同时,该位还可以用作位累加器,这时一般只用“C”表示。
✧AC:
辅助进位标志,当ALU的算术运算过程中低4位向高4位有进位或借位时,AC=1;
否则,AC=0。
该位常用于BCD码的调整。
✧F0:
用户标志位。
✧RS1、RS0:
选择工作寄存器组位,用于选择内部数据存储器区内4组工作寄存器中的某一组。
具体选择情况见寄存器介绍部分。
✧OV:
溢出标志位,当ALU的算术运算过程中有溢出时,OV=1;
否则,OV=0。
✧P:
奇偶校验标志位,根据累加器ACC中1的个数由硬件置位或清除,当累加器ACC中有奇数个1时P=1;
否则,P=0。
✧PSW.1:
保留位,无定义。
11、在MCS-51单片机的工作时序中,一个机器周期包含几个状态周期、几个振荡周期?
一个机器周期包含6个状态周期、12个振荡周期。
12、单片机复位后,程序计数器PC指向哪个地址?
PC=0000H
第3章
1、写出MCS-51单片机汇编指令的指令格式,并简单举例。
MCS-51单片机的汇编指令格式如下:
[标号:
]操作码[目的操作数][,源操作数][;
注释]
操作码表示该指令所实现的操作功能,一般由2~5个英文字母表示。
例如ORL,ADD,LCALL等。
操作数表示参与操作的数据来源和目的单元。
操作数可以是一个立即数,也可以是一个内存单元或者是一个寄存器单元。
操作码和第一个操作数之间一般用一个或几个空格隔开,而操作数与操作数之间用逗号隔开。
操作数可以有1个,2个,3个或没有。
如果需要对指令进行注释说明的话,在最后一个操作数后加一个分号,分号后面是注释。
如:
MOVA,60H;
(60H)→A
标号由1~8个字母或数字构成,以字母开头以“:
”结尾,标号可有可无,它仅仅代表了该指令所在的地址,便于源程序编写过程中使用该地址。
2、指出下面程序每个语句的寻址方式。
目的操作数原操作数
MOVA,P1寄存器寻址直接寻址
MOVA,#40H寄存器寻址立即寻址
MOV80H,A直接寻址寄存器寻址
MOVA,R5寄存器寻址寄存器寻址
MOV@R0,A寄存器间接寻址寄存器寻址
MOVXA,@DPTR寄存器寻址寄存器间接寻址
MOVCA,@A+DPTR寄存器寻址基址+变址寻址
MOV74H,#80H直接寻址立即寻址
3、写出下面程序被执行后,各数据存储器地址中的内容。
MOV40H,#33H
MOV41H,#44H
MOVA,40H
MOV50H,A
MOVA,41H
MOV51H,A
(40H)=33H,(41H)=44H,(50H)=33H,(51H)=44H
4、设置堆栈指针SP中内容为60H,编写程序,将上题中数据存储器50H、51H的内容压栈后,分别将栈内数据弹出到DPTR寄存器中。
MOV SP,#60H
PUSH50H
PUSH51H
POPDPL
POPDPH
5、访问片内、外数据存储器,都用什么指令?
访问片内数据存储器的数据传送指令用MOV,访问片外数据存储器的数据传送指令用MOVX。
6、下面的指令语句对吗?
为什么?
MOVR0,#0400H;
不对,R0是8位寄存器源操作数超过了8位
MOV100H,A;
不对,片内数据存储器用8位地址访问,目的操作数的地址超过了8位。
MOV@R2,A;
不对,能够用于间接寻址的只能是R0或R1
MOVX@R1,A;
对,R1做为间址寄存器来提供寻址存储器的低8位,高8位由P2提供
7、查表指令MOVCA,@A+DPTR所查的表数据是在程序存储区还是数据存储区?
程序存储区。
9、使用位操作指令完成下列操作。
⑴将P1.1置“1”。
SETB P1.1
⑵将ACC.7置“1”。
SETB ACC.7
10、编写程序,将40H为首的8个单元内容,依次反序送入到60H为首的8个单元中去。
MOVR0,#47H;
40H开始的8字节数据中最后一个单元的地址
MOVR1,#60H
MOVR2,#8
LOOP:
MOVA,@R0
MOV@R1,A
DECR0
INCR1
DJNZR2,LOOP
SJMP$
11、两个四位压缩类型BCD码数,被加数放在30H和31H内存单元中,加数放在32H和33H内存单元中,所求的和放在34H和35H中。
位数排列按高位在低地址,低位在高地址的顺序,编写此加法程序。
MOVPSW,#00H;
取0组工作寄存器
MOVR0,#31H
MOVR1,#33H
SETBRS0;
取1组工作寄存器
MOVR0,#35H
CLRRS0
MOVR2,#02H
CLRC;
清除进位标志,准备进行带进位加
MOVA,@R0
ADDCA,@R1
DAA
MOV@R0,A
DECR0
CLRRS0;
恢复0组工作寄存器
DECR1
DJNZR2,LOOP
SJMP$
13、写出ACALL和LCALL两个调用指令的调用范围,试写出这两条指令执行时,CPU的操作过程。
ACALL的调用范围是包括调用指令下一条指令的第一个字节所在的2KB范围的程序存储器空间。
ACALL调用指令的执行过程是:
PC加2(本指令代码为两个字节)获得下一条指令的地址,并把该断点地址(当前的PC值)入栈,然后将断点地址的高五位与11位目标地址(指令代码第一字节的高3位,以及第二字节的八位)连接构成16位的子程序入口地址,使程序转向子程序。
调用子程序的入口地址和ACALL指令的下一条指令的地址,其高五位必须相同。
因此子程序的入口地址和ACALL指令下一条指令的第一个字节必须在同一个2KB范围的程序存储器空间内。
LCALL调用指令的目标地址以16位给出,允许子程序放在64KB空间的任何地方。
指令的执行过程是把PC加上本指令代码数(三个字节)获得下一条指令的地址,并把该断点地址入栈(断点地址保护),接着将被调子程序的入口地址(16位目标地址)装入PC,然后从该入口地址开始执行子程序。
14、分析下列程序,说出此程序完成什么样的功能。
MOVP1,#0FFH
LOOP:
MOVR7,#03H;
该指令1个机器周期 1
LOOP1:
MOVR6,#0FFH;
该指令1个机器周期 2
DJNZR6,$;
该指令2个机器周期 3
DJNZR7,LOOP1;
该指令2个机器周期 4
CPLP1.0;
该指令1个机器周期 5
JMPLOOP;
该指令2个机器周期 6
END
该程序的功能是从P1.0引脚输出连续方波,方波的周期为(11+(12+23×
255+24)×
3+15+26)×
2个机器周期
15、试编写程序,完成对十个数从大到小的排序(建议用气泡排序法)。
十个源字节数据放在30H为首的内存区域,排序后的目标数据放在50H为首的区域。
如果不破坏30H开始存放的源字节数据,可以把从30H开始的数据先传送到50H开始的数据区,然后对50H开始的数据进行排序。
如果不需考虑30H开始存放的数据使用后的顺序,则可先对30H开始存放的数据进行排序,然后再传送到50H开始的数据区中。
现根据第1种情况进行编程。
MOVR0,#30H
MOVR1,#50H
MOVR2,#10
LOP1:
MOV@R1,A
INCR0
INCR1
DJNZR2,LOP1
MOVR2,#9
LOP4:
MOVR0,#50H
MOVR1,#51H
MOVA,R2
MOVR3,A
LOP3:
CLRC
SUBBA,@R1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 习题 参考 解答