单片机课后习题Word格式文档下载.docx
《单片机课后习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机课后习题Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。
内部一般都集成一个全双工的串行接口
6)
单片机有很强的外部扩展能力
12.
指明单片机的主要应用领域。
单机应用:
工业自动化控制;
智能仪器仪表;
计算机外部设备
和智能接口;
家用电器
多机应用:
功能弥散系统、并行多机处理系统和局部网络系统。
第二章
MCS-51单片机由哪几个部分组成?
MCS-51单片机主要由以下部分组成的:
时钟电路、中央处理器(CPU)、存储器系统(RAM和ROM)、定时/计数器、并行接口、串行接口、中断系统及一些特殊功能寄存器(SFR)。
MCS-51的标志寄存器有多少位,各位的含义是什么?
MCS-51的标志寄存器PSW有8位;
DD
6543210
c
0
S1
R
so
V
含义如下:
C(PSW.7):
进位或借位标志位。
AC(PSW.6):
辅助进位或借位可标志位。
F0(PSW.5):
用户标志位。
是系统预留给用户自己定义的标志位。
RS1、RS0(PSW.4、PSW.3):
寄存器组选择位。
可用软件置位或清零,用于从四组工作寄存器中选定当前的工作寄存器组。
OV(PSW.2):
溢出标志位。
在加法或减法运算时,如运算的结果超出8位二进制数的范围,则OV置1,标志溢出,否则OV清零。
P(PSW.0):
奇偶标志位。
用于记录指令执行后累加器A中1的个数的奇偶性。
若累加器A中1的个数为奇数,则P置位,若累加器A中1的个数为偶数,则P清零。
其中PSW.1未定义,可供用户使用。
3.
在8051的存储器结构中,内部数据存储器可分为几个区域?
各有什么特点?
片内数据存储器按功能可以分成以下几个部分:
工作寄存器组区、位寻址区、一般RAM区和特殊功能寄存器区,其中还包含堆栈区。
工作寄存器组区,00H~1FH单元,可用R0~R7等8个寄存器访问;
位寻址区,20H~2FH单元,可按位方式访问;
一般RAM区,30H~7FH单元;
堆栈区,可从08到7F单元;
特殊功能寄存器区位于80H~FFH单元。
4.
什么是堆栈?
说明MCS-51单片机的堆栈处理过程。
堆栈是按先入后出、后入先出的原则进行管理的一段存储区域。
CS-51单片机的堆栈是向上生长型的,存入数据是从地址低端向高端延伸,取出数据是从地址高端向低端延伸。
入栈和出栈数据是以字节为单位的。
入栈时,SP指针的内容先自动加1,然后再把数据存入到SP指针指向的单元;
出栈时,先把SP指针指向单元的数据取出,然后再把SP指针的内容自动减1。
5.
简述内部ROM的工作寄存器组情况,系统默认是第几组?
51单片机有4组工作寄存器,每组8个,用寄存器R0~R7表示,标志寄存器PSW的RS1、RS03两位用于从四组工作寄存器中选定当前的工作寄存器组,默认是第0组。
6.
51单片机的程序存储器64KB空间在使用时有那几个特殊地址?
51单片机程序存储器的64KB存储空间使用时有7个特殊的地址,第一个是0000H,它是系统的复位地址,51单片机复位后PC的值为0000H,复位后从0000H单元开始执行程序,由于后面几个地址的原因,用户程序一般不直接从0000H单元开始存放,而是放于后面,通过在0000H单元放一条绝对转移指令转到后面的用户程序。
后面6个为6个中断源的入口地址,51单片机中断响应后,系统会自动的转移到相应中断入口地址去执行程序。
7.
简述什么是51单片机的特殊功能寄存器?
特殊功能寄存器(SFR)也称为专用寄存器,专门用于控制、管理片内算术逻辑部件、并行I/O接口、串行口、定时/计数器、中断系统等功能模块的工作。
用户在编程时可以给其设定值,但不能移作他用。
SFR分布在80H~0FFH的地址空间,与片内随机存储块统一编址。
除PC外,51子系列有18个特殊功能寄存器,其中3个为双字节,共占用21个字节;
52子系列有21个特殊寄存器,其中5个为双字节,共占用26个字节。
8.
MCS-51单片机有多少根I/O线?
它们和单片机的外部总线有什么关系?
MCS-51单片机有32根I/O线,由P0口经地址锁存器提供低8位(A7~A0),P2口提供高8位(A15~A8)而形成。
数据总线宽度为8位,由P0口直接提供。
控制总线由第二功能状态下的P3口和4根独立的控制线RST、EA、ALE和PSEN组成。
9.
简述PSEN、EA、RST和ALE引脚的功能。
ALE:
地址锁存信号输出端。
ALE在每个机器周期内输出两个脉冲。
下降沿用于控制锁存P0输出的低8位地址。
PSEN:
片外程序存储器读选通信号输出端,低电平有效。
在从外部程序存储器读取指令或常数期间,该信号有效。
RST:
复位信号。
当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机回复到初始状态。
EA:
片外程序存储器选用端。
该引脚为低电平时,选用片外程序存储器,高电平或悬空时选用片内程序存储器。
什么是机器周期?
什么是指令周期?
MCS有效。
-51单片机的一个机器周期包括多少个时钟周期?
机器周期:
机器周期是单片机的基本操作周期,每个机器周期包含S1、S2、、S66个状态,每个状态包含两拍P1和P2,每一拍为一个时钟周期(振荡周期)。
因此,一个机器周期包含12个时钟周期。
复位的作用是什么?
51单片机复位有几种方式?
复位使单片机回复到初始状态。
在时钟电路工作以后,当外部电路使得RST端出现两个机器周期(24个时钟周期)以上的高电平,系统内部复位。
复位有两种
方式:
上电复位和按钮复位,
时钟周期的频率为6MHz,机器周期和ALE信号的频率为多少?
2MHZ
第三章
1.在MCS-51单片机中,寻址方式有几种?
其中对片内RAM可以用哪几种寻址方式?
对片外RAM可以用哪几种寻址方式?
寻址方式可分为数的寻址和指令寻址,数的寻址有:
常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。
片内RAM寻址有:
寄存器寻址、直接寻址方式和寄存器间接寻址方式。
片外RAM寻址有:
寄存器间接寻址方式。
2.在对片外RAM单元寻址中,用Ri间接寻址与用DPTR间接寻址有什么区别?
片外数据存储器寻址中,用Ri间接寻址只能访问低端的256字节单元,而用DPTR作指针间接访问可访问整个64K字节。
3.在位处理中,位地址的表示方式有哪几种?
1.直接位地址(00H~0FFH)。
例如:
20H
2.字节地址带位号。
20H.3表示20H单元的3位。
3.特殊功能寄存器名带位号。
P0.1表示P0口的1位。
4.位符号地址。
TR0是定时/计数器T0的启动位
。
4.写出完成下列操作的指令。
(1)R0的内容送到R1中。
MOV
A,R0
R1,A
(2)片内RAM的20H单元内容送到片内RAM的40H单元中。
40H,20H
(3)片内RAM的30H单元内容送到片外RAM的50H单元中。
A,30H
R0,#50H
MOVX
@R0,A
(4)片内RAM的50H单元内容送到片外RAM的3000H单元中。
A,50H
DPTR,#3000H
@DPTR,A
(5)片外RAM的2000H单元内容送到片外RAM的20H单元中。
DPTR,#2000H
A,@DPTR
20H,A
(6)片外RAM的1000H单元内容送到片外RAM的4000H单元中。
DPTR,#1000H
DPTR,#4000H
(7)ROM的1000H单元内容送到片内RAM的50H单元中。
A,#0
MOVC
A,@A+DPTR
(8)ROM的1000H单元内容送到片外RAM的1000H单元中。
5.区分下列指令有什么不同?
(1)MOV
A,20H和MOV
A,#20H
前者源操作数是直接寻址,后者源操作数立即寻址。
(2)MOV
A,@R1和MOVX
A,@R1
前者源操作数是访问片内数据存储器,后者源操作数访问片外数据存储器低256字节。
(3)MOV
A,R1和MOV
前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。
(4)MOVX
前者源操作数是访问片外数据存储器低256字节,后者源操作数访问片外数据存储器整个64K字节。
(5)MOVX
A,@DPTR和MOVC
A,@A+DPTR
前者源操作数是访问片外数据存储器,后者源操作数访问程序数据存储器。
6.设片内RAM的(20H)=40H,(40H)=10H,(10H)=50H,(P1)=0CAH。
分析下列指令执行后片内RAM的20H、40H、10H单元以及P1、P2中的内容。
R0,#20H
A,@R0
;
A=40H
R1=40H
A=10H
@R0,P1
(40H)=0CAH
P2,P1
P2=0CAH
10H,A
(10H)=10H
20H,10H
(20H)=10H
结果:
(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0CAH
7.已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片内RAM(7FH)=70H,
片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出以下各条指令执行后目标单元的内容。
结果:
累加器A等于70H
(2)MOVX
片外RAM(2FFCH)单元等于02H
(3)MOVC
累加器A等于64H
(4)XCHD
累加器A等于00H,片内RAM(7FH)
单元等于72H
8.已知:
(A)=78H,(R1)=78H,(B)=04H,CY=1,片内RAM(78H)=0DDH,(80H)=6CH,试分别写出下列指令执行后目标单元的结果和相应标志位的值。
(1)ADD
累加器A等于55H,CY等于1
(2)SUBB
A,#77H
累加器A等于00H,CY等于0
(3)MUL
AB
累加器A等于E0H,B寄存器等于01H,CY等于1,OV等于0
(4)DIV
累加器A等于1EH,B寄存器等于00H,CY、OV等于0
(5)ANL
78H,#78H
片内RAM(78H)单元等于58H
(6)ORL
A,#0FH
累加器A等于7FH
(7)XRL
80H,A
片内RAM(80H)等于14H
9.设(A)=83H,(R0)=17H,(17H)=34H,分析当执行完下面指令段后累加器A、R0、17H单元的内容。
ANL
A,#17H
A=03H
ORL
17H,A
(17H)=37H
XRL
A=34H
CPL
A
A=CBH
A=CBH,(R0)=17H,(17H)=37H
10.写出完成下列要求的指令。
(1)累加器A的低2位清零,其余位不变。
A,#11111100B
(2)累加器A的高2位置“1”,其余位不变。
A,#11000000B
(3)累加器的高4位取反,其余位不变。
A,#11110000B
(4)累加器第0位、2位、4位、6位取反,其余位不变。
A,#01010101B
11.说明LJMP指令与AJMP指令的区别?
LJMP指令后面提供的是16位目标地址,所以可以转移到64KB程序存储器的任意位置,缺点是:
执行时间长,字节数多。
AJMP指令后带的是11位直接地址,执行时,先将程序指针PC的值加2(该指令长度为2字节),然后把指令中的11位地址addr11送给程序指针PC的低11位,而程序指针的高5位不变,只能在当前2K范围内转移。
12.设当前指令CJNE
A,#12H,10H的地址是0FFEH,若累加器A的值为10H,则该指令执行后的PC值为多少?
若累加器A的值为12H呢?
指令执行后的PC值为1011H,若累加器A的值为12H,则指令执行后的PC值为1001H。
13.用位处理指令实现P1.4=P1.0(P1.1P1.2)/P1.3的逻辑功能。
程序:
C,P1.1
C,P1.2
C,P1.0
C,/P1.3
P1.4,C
14.下列程序段汇编后,从1000H单元开始的单元内容是什么?
ORG
1000H
TAB:
DB
12H,34H
DS
3
DW
5567H,87H
(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00H
15.试编一段程序,将片内RAM的20H、21H、22H单元的内容依次存入片外RAM的20H、21H、22H中。
R2,#03H
LOOP:
INC
R0
DJNZ
R2,LOOP
SJMP
$
16.编程实现将片外RAM的2000H~2030H单元的内容,全部搬到片内RAM的20H单元开始位置,并将源位置清零。
MOVR2,#30H
A,#00
DPTR
17.编程将片外RAM的1000H单元开始的100个字节数据相加,结果放于R7R6中。
R2,#100
R7,#00
R6,#00
ADD
A,R6
R6,A
A,R7
ADDC
R7,A
18.编程实现R4R3R2,结果放于R7R6R5中。
0100H
MUL1:
A,R2
B,R3
MUL
R2R3,结果的低字节直接存入积的R5
R5,A
结果的高字节存入R6中暂存起来
R6,B
MUL2:
B,R4
R2R4,结果的低字节与R6相加后,再存入R6中
A,R6
A,B
结果的高字节加上进位位后存入R7中
$
19.编程实现把片内RAM的20H单元的0位、1位,21H单元的2位、3位,22H单元的4位、5位,23H单元的6位、7位,按原位置关系拼装在一起放于R2中。
C,20H.0
A.0,C
C,20H.1
A.1,C
C,21H.2
A.2,C
C,21H.3
A.3,C
C,22H.4
A.4,C
C,22H.5
A.5,C
C,23H.6
A.6,C
C,23H.7
A.7,C
R2,A
20.用查表的方法实现一位十六进制数转换成ASCII。
(设一位十六进制数放在R2中,轮换的ASCII也放于R2中)
C16STASC:
DPTR,#TAB
RET
30H,31H,32H,33H,34H,35H,36H,37H
38H,391H,41H,42H,43H,44H,45H,46H
21.编程统计从片外RAM2000H开始的100个单元中“0”的个数放于R2中。
R3,#100
R2,#00
JNZ
NEXT
R2
NEXT:
R3,LOOP
第四章
C51特有的数据类型有哪些?
C51特有的数据类型有特殊功能寄存器型和位类型。
C51中的存储器类型有几种,它们分别表示的存储器区域是什么?
C51中的存储器类型有6种,分别如下:
data:
直接寻址的片内RAM低128B,访问速度快
bdata:
片内RAM的可位寻址区(20H~2FH),允许字节和位混合访问
idata:
间接寻址访问的片内RAM,允许访问全部片内RAM
pdata:
用Ri间接访问的片外RAM低256B
xdata:
用DPTR间接访问的片外RAM,允许访问全部64KB片外RAM
code:
程序存储器ROM
64KB空间
在C51中,bit位与sbit位有什么区别?
bit位类型符用于定义一般的位变量。
存储器类型只能是bdata、data、idata,只能是片内RAM的可位寻址区,严格来说只能是bdata。
sbit位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时需指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。
位变量和特殊功能寄存器变量有什么作用?
特殊功能寄存器变量是C51中特有的一种变量。
通过特殊功能寄存器变量可访问MCS-51系列单片机的特殊功能寄存器。
访问时需通过sfr或sfr16类型说明符进行定义,定义时需指明它们所对应的特殊功能寄存器的地址。
位变量也是C51中的一种特有变量。
通过位变量可访问MCS-51系列单片机的可位寻址位。
使用时需用位类型符进行定义。
位类型符有两个:
bit和sbit。
可以定义两种位变量。
在C51中,通过绝对地址来访问的存储器有几种?
通过绝对地址来访问存储器有三种方法:
使用C51运行库中预定义宏。
通过指针访问。
使用C51扩展关键字_at_
什么是存储模式,存储模式和存储器类型有什么关系?
C51中有三种存储模式:
SMALL模式、COMPACT模式和LARGE模式。
不同的存储模式对变量默认的存储器类型不一样。
(1)
SMALL模式。
SMALL模式称为小编译模式,在SMALL模式下,编译时变量被默认在片内RAM中,存储器类型为data。
(2)
COMPACT模式。
COMPACT模式称为紧凑编译模式,在COMPACT模式下,编译时变量被默认在片外RAM的低256B空间,存储器类型为pdata。
(3)
LARGE模式。
LARGE模式称为大编译模式,在LARGE模式下,编译时变量被默认在片外RAM的64B空间,存储器类型为xdata。
在程序中变量存储模式的指定通过#pragma预处理命令来实现。
如果没有指定,则系统都隐含为SMALL模式。
在C51中,修饰符using
n有什么作用?
using
n修饰符,用于指定本函数内部使用的工作寄存器组,其中n的取值为0~3,表示寄存器组号。
在C51中,中断函数与一般函数有什么不同?
中断函数在定义时后面带interrupt
m修饰符,m的取值为0~31,对应的中断情况如下:
0——外部中断0,1——定时/计数器T0,2——外部中断1,3——定时/计数器T1,4——串行口中断,5——定时/计数器T2,其他值预留。
编写MCS-51中断函数需要注意如下几点。
中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。
中断函数没有返回值。
在任何情况下都不能直接调用中断函数
(4)
如果在中断函数中调用了其他函数,则被调用函数所使用的寄存器必须与中断函数相同,否则会产生不正确的结果。
(5)
C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容。
(6)
C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。
该向量包含一个到中断函数入口地址的绝对跳转。
(7)
中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明。
防止其他程序调用。
按给定的存储类型和数据类型,写出下列变量的说明形式。
在data区定义字符变量val1。
c