微控制器原理及应用习题解答Word文件下载.docx
- 文档编号:18362732
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:35
- 大小:421.60KB
微控制器原理及应用习题解答Word文件下载.docx
《微控制器原理及应用习题解答Word文件下载.docx》由会员分享,可在线阅读,更多相关《微控制器原理及应用习题解答Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
各功能是什么?
引脚
第二功能
功能说明
P3.0
RXD
串行数据输入口
P3.1
TXD
串行数据输出口
P3.2
外部中断0输入口
P3.3
外部中断1输入口
P3.4
T0
定时器0外部计数输入口
P3.5
T1
定时器1外部计数输入口
P3.6
外部数据存储器写选通输出口
P3.7
外部数据存储器读选通输出口
2.80C51系列MCU的存储器在结构上有何特点?
在物理上有哪几种空间?
在逻辑上有哪几种空间?
访问片内RAM和片外RAM的指令有何区别?
特点:
80C51系列MCU采用哈佛结构,程序存储器和数据存储器截然分开,各有独立的总线。
在物理上有4个空间:
片内程序存储器,片外程序存储器,片内数据存储器,片外数据存储器。
在逻辑上有3个空间:
片内外统一的64K程序存储器,片内256B(或384B)数据存储器,片外64K数据存储器。
访问片内RAM和片外RAM的指令区别:
访问片内RAM采用MOV格式指令,访问片外RAM采用MOVX格式指令。
3.80C51系列MCU的片内RAM低128字节划分为哪几个部分?
各部分主要功能是什么?
片内低128B单元的划分及其主要功能:
(1)工作寄存器组(00H—1FH)。
这是一个用寄存器直接寻址的区域,内部数据RAM区的00H—1FH,共32个单元。
它是4个通用工作寄存器组,每个组包含8个8位寄存器,编号为R0—R7。
(2)位寻址区(20H—2FH)。
16个字节单元,共包含128位,这16个字节单元既可以进行字节寻址,又可以实现位寻址,主要用于位寻址。
(3)字节寻址区(30H—7FH)
地址为30H—7FH,共80个字节单元,主要用于设置堆栈、缓冲区及存储数据。
4.80C51系列MCU设有几个通用工作寄存器组?
有什么特点?
如何选用?
80C51系列MCU设有4个通用工作寄存器组,其特点为:
采用寄存器直接寻址,指令数量最多,均为单周期指令,执行速度快。
选用方法:
在任何时刻,只能选用一组寄存器使用。
通过软件对PSW中的RS0、RS1位的设置来实现。
当RS1RS0=00时,选用工作寄存器组0;
当RS1RS0=01时,选用工作寄存器组1,以此类推。
5.什么是现场保护?
如何实现工作寄存器组的现场保护?
现场保护是指在进入中断服务程序或子程序之前,先将可能改变的寄存器中的值保存下来,等到退出中断服务程序或子程序之后,再恢复他们的值,以防中断和子程序执行期间改变了原有寄存器的值,使得程序无法继续正常运行。
对于工作寄存器的现场保护,一般在主程序中使用一组工作寄存器,而进入子程序或中断服务程序时,切换到另一组工作寄存器,在返回主程序前,再重新切换回原来的工作寄存器组。
6.堆栈的功能是什么?
堆栈指针(SP)的作用是什么?
在程序设计时,为什么要修改SP的值?
堆栈的功能:
保护断点和保护现场。
SP的作用:
它是一个8位的寄存器,存放当前的堆栈栈顶所指存储单元的地址。
修改SP内的值的原因:
系统复位后(SP)=07H,如不修改SP的值,则压栈内容从08H单元开始存放,其使用的RAM区为工作寄存器区,影响工作寄存器的使用。
7.请写出80C51系列MCU的中断入口地址。
中断源
入口地址
复位或非屏蔽中断
0000H
外部中断0
0003H
定时器/计数器0中断
000BH
外部中断1
0013H
定时器/计数器1中断
001BH
串行中断
0023H
定时器/计数器2中断(仅89C52)
002BH
8.请简述80C51系列MCU的时钟周期(振荡周期)、状态周期、机器周期、指令周期的概念及其关系。
时钟周期(振荡周期):
晶体振荡器输出的脉冲信号周期。
状态周期:
振荡信号经二分频后形成的时钟脉冲信号,用S表示。
一个状态周期的两个振荡周期作为两个节拍分别称为节拍P1和节拍P2。
机器周期:
通常将完成一个基本操作所需要的时间称为机器周期。
80C51系列MCU的一个机器周期包括6个状态周期。
指令周期:
CPU执行一条指令所需要的时间为一个指令周期。
显然,指令不同,对应的指令周期也不一样。
一个指令周期通常含有1~4个机器周期。
9.80C51系列MCU的复位有哪几种方法?
复位后MCU的各寄存器及RAM的初始状态如何?
使单片机复位有以下3种方式:
上电自动复位、按键电平复位(手动复位)、外部脉冲复位。
复位后,各并行I/O口的初始值为0FFH、SP的初始值为07H,其余寄存器(有定义的位)为00H。
RAM内的值为随机数。
第3章80C51系列微控制器的指令系统及程序设计
1.简述80C51系列MCU的寻址方式及所涉及的寻址空间。
80C51系列MCU指令系统的寻址方式共有7种。
(1)立即寻址:
在指令中直接给出操作数。
寻址空间为程序存储器区。
(2)直接寻址:
在指令中直接给出操作数单元的地址。
寻址空间为内部RAM低128B,特殊功能寄存器。
(3)寄存器寻址:
在指令中指定寄存器的内容作为操作数。
寻址空间为工作寄存器R0~R7、寄存器对AB、数据指针DPTR、进位位CY。
(4)寄存器间接寻址:
在指令中要到寄存器的内容所指定的地址去取操作数。
寻址空间为全部RAM。
(5)相对寻址:
在指令中给出的操作数为程序转移的偏移量。
(6)变址寻址:
以DPTR及PC作为基址寄存器,累加器A作为变址寄存器,以两者内容相加形成的16位程序存储器地址作为操作数地址。
(7)位寻址:
对数据位的操作。
寻址空间为内部RAM中的位寻址区和可位寻址的SFR位。
2.变址寻址方式有什么优点?
主要用于什么场合?
优点:
可以方便地访问全部程序存储器区。
用途:
查表和多分支转移(散转)。
3.访问SFR和片外RAM应采用哪种寻址方式?
访问SFR应采用直接寻址、位寻址(部分寄存器,A、AB、DPTR可寄存器寻址);
访问片外RAM应采用寄存器间接寻址。
4.对80C51系列MCU片内数据区地址80H~0FFH的空间寻址时应注意些什么?
注意:
只有80C52(例如89C52)中有这部分地址空间;
在这部分空间,只能采用间接寻址。
5.80C51系列MCU的指令系统具有哪些主要特点?
80C51的指令系统由111条指令组成。
如果按字节数分类,有49条单字节指令、46条双字节指令和16条三字节指令,以单字节指令为主;
如果按指令执行时间分类,有664条单周期指令、45条双周期指令和2条(乘、除)四周期指令,以单周期指令为主。
由此看来,80C51的指令系统具有存储效率高、执行速度快的特点。
除此而外,指令系统还有如下特点:
①可以进行直接地址到直接地址的数据传送,能把一个并行I/O口中的内容传送到内部RAM单元中而不必经过累加器A或工作寄存器Rn。
这样可以大大提高传送速度和缓解累加器A的瓶颈效应。
②用变址寻址方式访问程序存储器中的表格,将程序存储器单元中的固定常数或表格字节内容传送到累加器A中。
这为编程翻译算法提供了方便。
③在算术运算指令中设有乘法(MUL)和除法(DIV)指令。
④指令系统中,一些对I/O口进行操作的指令具有"
读一修改一写"
的功能。
"
指令是指:
在执行读锁存器的指令时,CPU首先完成将锁存器的值通过缓冲器BUF2读人内部,进行修改、改变,然后重新写到锁存器中去。
这一特点是由I/O口的准双向特性所决定的。
这种类型的指令包含所有的口的逻辑操作(ANL、ORL、XRL)和位操作(JBC、CPL、MOV、SETB、CLR等)指令。
⑤80C51单片机内部有一个布尔(位)处理器,对位地址空间具有丰富的位操作指令。
布尔(位)操作类指令共有17条,其中包括布尔传送指令、布尔状态控制指令、布尔(位)逻辑操作指令及布尔(位)条件转移指令。
6.80C51系列MCU有哪些逻辑运算功能?
各有什么用处?
(1)逻辑运算功能
①单操作数逻辑运算指令,其操作对象都是累加器A,包括:
清0、取反、循环左移、带进位循环左移、循环右移、带进位循环右移和半字节互换指令。
②双操作数逻辑运算指令,包括:
逻辑"
与"
(ANL)、逻辑"
或"
(ORL)及逻辑"
异或"
(XOR)三类操作。
③布尔(位)逻辑操作指令,包括:
位逻辑"
(ANL)及位逻辑"
(ORL)两类操作。
(2)逻辑运算的用处
①若是对口的操作,即为"
读一改一写"
。
②逻辑"
运算指令用做清除。
③逻辑"
运算指令用做置位。
④用"
RLCA"
指令将累加器A的内容作乘2运算。
⑤用"
RRCA"
指令将累加器A的内容作除2运算。
7.80C51系列MCU的转移类指令有何独特优点?
无条件转移指令有哪几种?
1)条件转移指令
在条件转移指令中两类指令有独特的优点。
(1)比较转移(CJNE)指令
CJNEA,direct,relA内容与直接寻址单元内容比较,并转移。
CJNEA,#data,relA内容与立即数比较,并转移。
CJNERn,#data,rel寄存器内容与立即数比较,并转移。
CJNE@Ri,#data,rel间址单元内容与立即数比较,并转移。
这4条指令能对所有单元内容进行比较,当不相等时程序作相对转移,并指出其大小,以备作第二次判断。
其功能可从程序转移和数值比较两个方面说明。
①程序转移:
若目的操作数=源操作数,则
程序顺利执行PC←(PC)+3
进位位清0CY←0
若目的操作数﹥源操作数,则
程序转移PC←(PC)+3+rel
若目的操作数﹤源操作数,则
程序转移PC←(PC)+3+rel
进位位清0CY←l
②数值比较:
在80C51的指令系统中没有比较指令,两个数值的比较可利用这4条指令来实现,即可按指令执行后,根据CY的状态来判断数值的大小。
若(CY)=0,则目的操作数﹥源操作数;
若(CY)=1,则目的操作数﹤源操作数。
(2)循环转移(DJNZ)指令
80C51设有功能极强的循环转移指令:
DJNZRn,rel以工作寄存器作控制计数器。
DJNZdirect,rel以直接寻址单元作控制计数器。
这2条基本指令可派生出很多条不同控制计数器的循环转移指令,大大扩充了应用范围和多重循环层次。
2)无条件转移指令
无条件转移指令的功能是程序无条件地转移到各自指定的目标地址去执行,不同的指令形成的目标地址不同。
共有4条:
(1)相对转移(SJMP)指令
SJMPrel
指令的目标地址是由PC(程序计数器)和指令的第二字节带符号的相对地址相加而成的。
指令可转向指令前128B或指令后127B。
(2)短转移(AJMP)指令
AJMPaddr11
指令提供11位地址,目标地址由指令第一字节的高三位a10~a8和指令第二字节的a7~a0所组成。
因此,程序的目标地址必须包含AJMP指令后第一条指令的第一个字节在内的2KB范围内。
(3)长转移(LJMP)指令
LJMPaddrl6
指令提供16位地址,目标地址由指令第二字节和第三字节组成。
因此,程序转向的目标地址可以包含程序存储器的整个64KB空间。
(4)间接转移(JMP)指令
JMP@A+DPTR
指令的目标地址是将累加器A中的8位无符号数与数据指针DPTR的内容相加而得。
相加运算不影响累加器A和数据指针DPTR的原内容。
若相加的结果大于64KB,则从程序存储器的零地址往下延续。
8.80C51系列MCU的短调用和长调用指令本质上有何区别?
这两条指令都是在主程序中调用子程序,两者的区别:
对短调用指令,被调用子程序入口地址必须与调用指令的下一条指令的第一字节在相同的2KB存储区之内。
入口地址与指令在2K内可选用ACALL或LCALL,超出2K范围只能选用LCALL。
9.80C51系列MCU的片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。
分析下面各条指令,说明源操作数的寻址方式,给出按顺序执行各条指令后的结果。
指令源操作数的寻址方式执行指令后的结果
MOVA,40H直接寻址(A)=48H
MOVR0,A寄存器寻址(R0)=48H
MOVP1,#0F0H立即寻址(Pl)=0F0H
MOV@R0,30H直接寻址(48H)=38H
MOVDPTR,#3848H立即寻址(DPTR)=3848H
MOV40H,38H直接寻址(40H)=40H
MOVR0,30H直接寻址(R0)=38H
MOVD0H,R0寄存器寻址(D0H)=38H
MOV18H,#30H立即寻址(18H)=30H
MOVA,@R0寄存器间接寻址(A)=40H
MOVP2,P1直接寻址(P2)=0F0H
10.已知(A)=7AH,(R0)=30H,(30H)=0A5H,(PSW)=80H,请填写下列各条指令的执行结果:
(1)SUBBA,30H;
(A)=0D4H
(2)SUBBA,#30H;
(A)=49H
(3)ADDA,R0;
(A)=0AAH
(4)ADDA,30H;
(A)=1FH
(5)ADDA,#30H;
(6)ADDCA,30H;
(A)=20H
(7)SWAPA;
(A)=0A7H
(8)XCHDA,@R0;
(A)=75H
(9)XCHA,R0;
(A)=30H
(10)XCHA,30H;
(A)=0A5H
(11)XCHA,@R0;
(12)MOVA,@R0;
11.试分析以下程序段的执行结果。
MOVSP,#3AH
MOVA,#20H
MOVB,#30H
PUSHACC
PUSHB
POPACC
POPB
执行结果:
A、B内容交换,即:
(A)=30H,(B)=20H
12.已知(A)=81H,(R0)=17H,(17H)=35H,指出执行完下列程序段后A的内容。
ANLA,#17H
ORL17H,A
XRLA,@R0
CPLA
执行结果:
(A)=0CBH
13.设R0的内容为32H,A的内容为48H,内部RAM的32H单元内容为80H,40H单元内容为08H,指出在执行下列程序段后上述各单元内容的变化。
MOVA,@R0;
(A)=80H
MOV@R0,40H;
(32H)=08H
MOV40H,A;
(40H)=80H
MOVR0,#35H;
(R0)=23H
14.将片外RAM区100CH单元中的内容传送到120CH单元中,请编程实现。
参考程序:
MOVDPTR,#100CH
MOVXA,@DPTR
MOVDPTR,#120CH
MOVX@DPTR,A
15.将片外RAM区40H单元中内容和41H单元中内容相乘,并将结果存放在片外RAM区42H和43H单元中,高位存放在高地址中,请编程实现。
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
MOVP2,#00H;
仿真时需加入(如使用DPTR则不需要)
MOVR0,#40H
MOVXA,@R0
MOVB,A
INCR0
MOVXA,@R0
MULAB
MOVX@R0,A
MOVA,B
SJMP$
END
16.将片外RAM区40H~60H区域的数据块,全部搬移到片内RAM区的相同地址区域,并将原数据区全部填00H,请编程实现。
参考程序
(1):
LJMPSTART
START:
MOVSP,#70H
MOVDPH,#0
MOVDPL,#40H
MOVR0,#40H
LOOP:
MOV@R0,A
MOVA,#00H
MOVX@DPTR,A
INCDPTR
INCR0
CJNER0,#61H,LOOP
JMP$
参考程序
(2):
ADDR_STARTEQU40H
MOVR0,#ADDR_START
MOVR1,#21H
MOVP2,#00H;
仿真时需要
MOV@R0,A
MOVA,#00H
DJNZR1,LOOP
17.计算片内RAM区50H~57H区域的数据的算术平均值,结果存放在58H中,请编程实现。
MOVR0,#50H
MOV58H,#0;
低8位地址
MOV59H,#0;
高8位地址
CLRC
MOVA,@R0
ADDA,58H
MOV58H,A
MOVA,59H
ADDCA,#0
MOV59H,A
CJNER0,#58H,LOOP
MOVR2,#3
ACALLRR_LOOP
JMP$
RR_LOOP:
RRCA
MOVA,58H
DJNZR2,RR_LOOP
RET
END
18.已知16位二进制数放在片内RAM区20H和21H单元,高位存放在高地址中,请编写将其右移一位的程序。
ORG0000H
LJMPMAIN
ORG0030H
MOVSP,#60H
CLRC
MOVA,21H
RRCA
MOV21H,A
MOVA,20H
MOV20H,A
19.请用位操作指令,求下列逻辑方程:
(1)
MOVC,B.0
ORLC,P3.0
ANLC,ACC.0
ORLC,/P3.1
MOVP1.5,C
(2)
MOVC,P1.0
ANLC,/ACC.2
MOVF0,C
MOVC,B.5
ANLC,/P1.5
ORLC,F0
MOVPSW.5,C
20.已知16位二进制数放在R7R6中,请编写对它们进行求补操作的程序,结果存放在R1R0中。
MOVA,R6
INCA
MOVR0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制器 原理 应用 习题 解答
![提示](https://static.bdocx.com/images/bang_tan.gif)