单片机原理与应用基于Proteus和KeilC课后答案复习题解答doc.docx
- 文档编号:26082086
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:62
- 大小:34.79KB
单片机原理与应用基于Proteus和KeilC课后答案复习题解答doc.docx
《单片机原理与应用基于Proteus和KeilC课后答案复习题解答doc.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用基于Proteus和KeilC课后答案复习题解答doc.docx(62页珍藏版)》请在冰豆网上搜索。
单片机原理与应用基于Proteus和KeilC课后答案复习题解答doc
第2章MCS-51单片机结构及原理习题
1.MSC-51单片机部由哪些功能部件组成,各有什么功能?
答:
以80C51单片机为例,其部功能部件有:
控制器:
是对取自程序存储器中的指令进行译码,在规定的时刻发出各种操作所需的控制信号,完成指令所规定的功能;
运算器:
根据控制器发来的信号,执行算术逻辑运算操作;
存储器:
包括程序存储和数据存储器;
定时器计数器:
2个16位定时器/计数器,可对机器周期计数,也可对外部输入脉冲计数;中断系统:
可响应三个部中断源和两个外部中断源的中断请求;输入输出接口:
4个8位并行口和一个全双工串行口;
2.MSC-51单片机外部引脚的名称是什么?
各有什么功能?
答:
(1)电源及晶振引脚
VCC(40脚):
+5V电源引脚
VSS(20脚):
接地引脚
XTAL1(19脚);外接晶振引脚(置放大器输入端)
XTAL2(18脚):
外接晶振引脚(置放大器输出端)
(2)控制引脚
RST/VPD(9)为复位/备用电源引脚
ALE/PROG(30)为地址锁存使能输出/编程脉冲输入
PSEN(29):
输出访问片外程序存储器读选通信号
EA/VPP(31):
外部ROM允许访问/编程电源输入
(3)并行I/O口引脚
P0.0~P0.7(39~32脚)——P0口;
P1.0~P1.7(1~8脚)——P1口;
P2.0~P2.7(21~28脚)——P2口;
P3.0~P3.7(10~17脚)——P3口。
3.51系列单片机的封装有哪些类型?
请说明每一种封装引脚之间的距离。
答:
51系列单片机的封装有
:
40
引脚双列直插封装(DIP——dualin-line
package),引脚之间的距离是100mil(2.54mm)
;
44
引脚方形扁平封装(QFP——quadflatpackage
)方式,引脚之间的距离是
2.54mm;
44
引脚带引线的塑料芯片载体
PLCC(PlasticLeadedChipCarrier)
。
4.什么是复位?
单片机复位电路有哪几种,工作原理分别是什么?
答:
复位——使单片机恢复原始默认状态的操作。
单片机复位电路有:
上电复位电路,由电阻和电容构成,通过上电时,电容相当于短路而使
复位引脚在晶振有效的情况下保持2个机器周期的高电平;按钮开关复位电路,由两个电阻
的分压构成,通过手工按下按钮,使复位引脚在晶振有效的情况下保持平。
2个机器周期的高电
5.通常的微机系统存储器结构有哪几种?
MCS-51单片机存储器属于哪一类?
CS-51可寻址多大空间?
答:
通常的微机系统存储器结构有两种结构,即哈佛结构和诺依曼结构(也叫普林斯顿结构),
MCS-51单片机存储器属于,MCS-51可寻址空间是两个64KB,即64KB的程序存储空间和64KB
的数据存储空间。
6.片RAM中低128个单元划分为哪三个主要部分?
各部分的主要功能是什么?
答:
片RAM中低128个单元划分为三个部分:
①工作寄存器区(00H-1FH),四组,每组8个,可作用工作寄存器切换使用;②可位寻址区(20H-2FH),16B,位地址为00H-7FH,用作为按位寻址的空间;③用户RAM区(30H-7FH),80B,用作普通RAM单元或堆栈。
7.程序状态字寄存器PSW各位的定义是什么?
答:
程序状态字寄存器PSW各位的定义如下:
PSW.7:
进/借位标志CY,加法有进位时置1,减法有借位时置1;
PSW.6:
辅助进位标志AC,加法运算低四位向高上四位有进位时置1;
PSW.5、PSW.1:
用户标志位
F0和用户标志位
F1,
保存用户的位数据;
PSW.4、PSW.3:
工作寄存器选择控制位
RS1和
RS0,00至
11分别选择四组工作之一作为当
前工作寄存器
PSW.2:
溢出标志位
OV,有符号数加、减运算结果有溢出或乘除上结果异常
(乘法运算结果
大于
255即乘积在
BA中,或除法运算除数为
0)时置
1
PSW.0:
奇偶标志位
P,累加器
A中
1的个数为奇数时置
1。
8.什么是时钟周期?
什么是机器周期?
什么是指令周期?
当振荡频率为
12MHz时,一个机
器周期为多少微秒?
答:
时钟周期又叫振荡周期或拍,用P表示,是MCS-51单片机中最小的时间单位,在一个
时钟周期,CPU完成一个最基本的动作。
机器周期:
由12个时钟周期构成,完成一个基本操作
指令周期:
是执行一条指令所需的时间,根据指令的复杂性,可由1~4个机器周期构成。
当振荡频率为12MHz时,一个机器周期为1微秒。
9.P0、P1、P2和
P3口的结构和功能分别是什么?
答:
P0口的每一位由
1个锁存器
、2个三态缓冲器
、1个输出控制电路(非门
X、与门、
电子开关
MUX、输出驱动电路构成,其功能既可以作为通用
I/O
口实现输入
/输出功能,也
可作片机地址的低8位和数据外部展功能。
在用作入出口,需外接上
拉阻。
P1口的每一位由
1个存器、1个效管器V和2个三冲器构成,其作用是
用作入出口
P2口的每一位由
1个存器、2个三冲器、1
个出控制元、1个出元构成,
其功能是用作入出口,或地址的高
8位。
P3口的每一位由
1个存器、2个三冲器、1
个第二功能控制元
、1个出元
构成,其作用是用作入出口或第二功能。
10.80C51片机引脚ALE的作用是什么?
当80C51不外接存器,ALE上的出的脉冲
率是多少?
答:
80C51片机引脚ALE的作用是外部存址存P0口出的低8位地址,当80C51不外接存器,ALE上的出的脉冲率是fosc/6。
第3章片机的言与程序
1.MCS-51片机有哪几种址方式?
适用于什么地址空?
答:
MCS-51片机有7种址方式:
直接址、寄存器址、寄存器接址、立即址、
址址、位址、相址。
直接址方式:
操作数的地址由指令直接出,适用于片RAM的所有地址空;如
MOV
A,68H
MOV
A,PSW
寄存器址方式:
指令出的是寄存器的,操作数在指定的寄存器中,适用于片
00H至
1FH的
32个字,用
R0,⋯,R7
表示,通
PSW的
RS1和
RS0号确定
32
个字中的其中
8个,有累加器
A,以及乘除法指令中的
A和
B寄存器,位址方式中的
布累加器
C;
MOV
A,R1
MUL
AB
INC
DPTR
寄存器接址方式:
指令出的是寄存器的,操作数地址在指定的寄存器中,
适
用于片RAM的全部空,其中52系列中的80H至FFH只能用寄存器接址;如MOV
A,R0
MOVA,R1
MOVXA,DPTR
立即址方式:
操作数本身在指令中直接,出适用于用8位立即数片RAM所有地址元
,也可用16位立即数DPTR;如
MOVA,#0E2H
MOVDPTR,#2000H
址址方式:
以DPTR或PC作基地址寄存器,以累加器A作址寄存器,将基址寄存
器与变址寄存器的容相加形成操作数的实际地址的一种寻址方式,变址寻址方式适用于程序
存储器ROM,仅有三条指令如下:
MOVC
A,A+DPTR
MOVC
A,A+PC
JMP
A+DPTR
位寻址方式:
指令中直接给出操作数所在单元的位地址,适用于片
RAM中地址
20H至
2FH
中的
16个字节中的
128个位地址空间和
80H至
FFH中地址中可以被
8整除的所有
SFR中的
每个位地址空间;如
MOVC,7FH
MOVF0,C
MOVC,ACC.7
相对寻址方式:
为相对转移指令而设,指令中直接给出转移的相对偏移量,其转移目标在当前指令-128至+127字节围的地址空间。
如
SJMPSTART
HERE:
SJMPHERE;等效于:
SJMP$
2.MCS-51单片机的PSW程序状态字中无ZERO(零)标志位,怎样判断某部数据单元的容是否
为零?
答:
MCS-51单片机的PSW程序状态字中无ZERO(零)标志位,判断某部数据单元的容是否为零是能通过取数到A累加器,再判断A中的每一位是否为零来确定其值是否为零。
3.编程将部RAM的20H--30H单元容清零。
解:
设一个片RAM指针R0,先指向首地址20H,通过累加器A清零,然后采用间接寻址方式
依次将A中的零值传送到指针所指的片
RAM单元,每传送一个字节,地址指针加
1,直到达
到地址为
30H或达到计数器规定的
17个字节为止。
程序1:
MOV
R0,#20H;设地址指针初值
CLR
A
;累加器清0
CONT:
MOV
R0,A
;置0指针所指单元
INC
R0
;地址指针加1
CJNE
R0,#31H,CONT
;指针未超过终点则继续
SJMP
$
;暂停
程序2:
MOV
R0,#20H;设地址指针初值
CLR
A
;累加器清0
MOV
R7,#17
;计数器赋初值,从
20H到30H共17个字节
CONT:
MOV
R0,A
;置0指针所指单元
INC
R0
;地址指针加1
DJNZ
R7,CONT
;计数器减
1,非
0,则继续
SJMP
$
;暂停
4.编程查找部RAM的32H~41H单元中是否有0AAH这个数据,若有这一数据,则将
50H单
元置为0FFH,否则将50H单元清零。
解:
设一个片RAM指针R0,先指向首地址32H,比较R0与#0AAH,若相等,则退出循环,给
50H单元赋0FFH,若不相等,则R0加1为继续比较下一个字节做准备,
直到达到地址为41H
或达到计数器规定的
16个字节为止还没找到,则给
50H单元赋00H
程序1:
MOV
R0,#32H
;设地址指针初值
CONT:
CJNE
R0,#0AAH,NEXT;比较查找值与指针所指单元的值,不相等转移
MOV
A,#0FFH
;相等,则准备好要赋的标志值
0FFH
SJMP
DOWN
;转存到保存结果处
NEXT:
INC
R0
;修改地址指针
CJNE
R0,#42H,CONT
;若指针未越过终点,则继续
MOV
A,#00H
;查找失败,则将
00H存入结果标志单元
DOWN:
MOV
50H,A
;将比较结果标志存入
50H单元
SJMP
$
;暂停
END
程序2:
MOV
R7,#16
;计数器赋初值,从
20H到30H共16个字节
MOV
R0,#32H
;设地址指针初值
CONT:
CJNE
R0,#0AAH,NEXT
;比较查找值与指针所指单元的值,不相等转移
MOV
A,#0FFH
;相等,则准备好要赋的标志值
0FFH
SJMP
DOWN
;转存到保存结果处
NEXT:
INC
R0
;修改地址指针
DJNZ
R7,CONT
;计数器减1,非0,则继续
MOV
A,#00H
;查找失败,则将
00H存入结果标志单元
DOWN:
MOV
50H,A
;将比较结果标志存入
50H单元
SJMP
$
;暂停
END
5.查找20H~4FH单元中出现
00H的次数,并将查找结果存入
50H单元。
解:
从
20H到4FH共48个字节
MOV
R7,#48
;字节计数器赋初值
MOV
R0,#20H
;设地址指针初值
CONT:
CJNE
R0,#00H,NEXT
;比较查找值与指针所指单元的值,不相等转移
INC
R6
;相等,0的个数计数器加
1
NEXT:
INC
R0
;修改地址指针
DJNZ
R7,CONT
;计数器减1,非0,则继续
MOV
50H,R6
;保存O的个数计数值到50H单元
SJMP
$
;暂停
END
END
6.已知A=83H,R0=17H,(17H)=34H,写出下列程序段执行之后的
A中的容。
ANLA,#17H
ORL17H,A
XRLA,R0
CPLA
END
答:
ANL
A,#17H
;A=03H
ORL
17H,A
;(17H)=00110100
∨00000011=00110111
XRL
A,R0
;A=00000011
∨00110111=00110100
CPL
A
;A=11001011
7.已知单片机的晶振频率为12MHz,分别设计延时为0.1s、1s的子程序。
答:
已知单片机的晶振频率为12MHz,则机器周期为1us,延时子程序是通过执行指令序列
中机器周期数来达到,如果要0.1s,即100ms,也就是100000us,所以需要机器周期数达
到100000。
要延时达到
1S,可通过对延时为
0.1秒的子程序调用
10次来实现。
DELAY100MS:
MOVR6,#200
;1
个机器周期
D1:
MOVR7,#250
;1
个机器周期
D2:
NOP;1
个机器周期
DJNZR7,D2
;2
个机器周期,
3*251=753
DJNZR6,D1
;2
个机器周期,
(1+753+2)*132=99792
RET
;2
个机器周期,
1+99792+2=99795,约
100ms
DELAY1S:
MOV
R7,#10
;计数10次
1
LOOP:
ACALL
DELAY100MS;延时100ms子程序
99795+2
DJNZ
R7,LOOP;未达到10次则继续10*(2+99795+2)
RET
;返回2+10*(2+99795+2)=997992
8.部RAM从20H单元开始处有一数据块,以
ODH为结束标志,试统计该数据块的长度,将
该数据块送到外部数据存储器
7E01H开始的单元,并将长度存入
7E00H单元。
解:
从
20H的指针用R0,从外部RAM7E01开始的指针用DPTR,计数器用R7
MOV
R7,#0
;字节计数器赋初值
MOV
R0,#20H
;设片RAM地址指针初值
MOV
DPTR,#7E01H;设片外RAM地址指针初值
CONT:
MOV
A,R0
;取片RAM中的一个字节
MOVX
DPTR,A
;存入片外RAM指针所指单元
INC
R7
;长度计数器加1
INC
R0
;片RAM地址指针加1
INC
DPTR
;片外RAM地址指针加1
CJNE
A,#0DH,CONT;未达到结束标志
MOV
A,R7
;取块计数长度值
MOVX
DPTR,A
;保存
SJMP
$
;暂停
END
9.部RAM从DATA开始的区域中存放着10个单字节十进制数,求其累加和,并将结果存入
SUM和SUM+1单元。
解:
R7计数,R6保存累加和高8位,R0用作地址指针
ORG
0000H
LJMP
MAIN
ORG
100H
SUM
EQU
30H
DATAA
EQU
40H
MAIN:
MOV
R7,#10
;字节计数器赋初值
MOV
R0,#DATAA
;设片RAM地址指针初值
CLR
A
;累加器清0
MOV
R6,A
;累加结果的高8位
CONT:
ADD
A,R0
;加RAM中的一个字节到
ACC
DA
A
JNC
NEXT
;若无进位则不用管高
8位
INC
R6
;有进位,高8位加1
NEXT:
INC
R0
;片RAM地址指针加1
DJNZ
R7,CONT
;未完继续
MOV
SUM,A
;保存低8位
MOV
SUM+1,R6
;保存高8位
SJMP
$
;暂停
END
10.部RAM从DATA1和DATA2单元开始处存放着两个等长的数据块,数据块的长度在
LEN
单元中。
请编程检查这两个数据块是否相等,若相等,将
0FFH写入RESULT单元,否则将0
写入RESULT单元。
解:
从DATA1开始的指针用
R0,从DATA2开始的指针用
R1,计数器用R7
LEN
EQU
10
DATA1
EQU
30H
DATA2
EQU
40H
RESULTEQU
50H
MOV
R7,#LEN
;字节计数器赋初值
MOV
R0,#DATA1
;设片RAM地址指针初值
MOV
R1,#DATA2
;设片外RAM地址指针初值
CONT:
MOV
A,R0
;取片RAMR0所指的的一个字节
MOV
7FH,R1
;将R1所指单元容取到片RAM地址7FH中
CJNE
A,7FH,NOEQ
;比较,不相等则结束
INC
R0
;DATA1RAM地址指针加1
INC
R1
;DATA2RAM地址指针加1
DJNZ
R7,CONT
;未完,继续
MOV
A,#0FFH
;相等,准备写入FFH
SJMP
DOWN
;转写入结果处
NOEQ:
MOV
A,#0
;不相等,准备写入00H
DOWN:
MOV
RESULT,A
;保存比较结果标志
SJMP
$
;暂停
END
11.编制程序,将部
RAM中M1、M2、M3和M4单元中的无符号数
xl、x2、x3和x4相加,并
把和存入RO和R1(R0中为高8位)中。
解:
M1
EQU
30H
M2
EQU
40H
M3
EQU
45H
M4
EQU
4FH
MOV
A,M1
;取第一个数
ADD
A,M2
;与第二个数相加
JNC
NEXT1
;如果无进位,则转移至第三个相加
MOV
R0,#1
;有进位,高8位置1
NEXT1:
ADD
A,M3
;与第三个数相加
JNC
NEXT2
;没有进位,则转至第四个数相加
INC
R0
;有进位,高8位加1
NEXT2:
ADD
A,M4
;与第四个数相加
JNC
NEXT3
;没有进位,则转至结束
INC
R0
;有进位,高8位再加1
NEXT3:
MOV
R1,A
;低8位保存到R1
SJMP
$
;暂停
END
第4章单片机的C51语言习题
1.C语言的优点是什么?
C程序的主要结构特点是什么?
答:
C语言是一种高级语言,学习比低级容易,不需要具体组织、分配存储器资源和处理端
口数据,可以直接驱动单片机的所有资源。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 基于 Proteus KeilC 课后 答案 复习题 解答 doc