单片机作业题答案Word文件下载.docx
《单片机作业题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机作业题答案Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
P:
奇偶标志位
OV:
补码运算溢出标志位
RS1,RS0:
通用工作寄存器组选择位
4.什么是堆栈?
堆栈指针SP初值是什么?
8051单片机堆栈最大容量是多少?
堆栈都是一种数据按序排列的数据结构,只能在一端(称为栈顶(top))对数据进行插入和删除,即所谓的“先进先出、后进后出”,将数据进栈时,栈顶会自动地向地址递增方向变化,最后进栈的那个数所在的地址即为栈顶。
堆栈指针SP初值为07H;
8051单片机堆栈最大容量是128B。
5.P0~P3口各有什么功能?
什么是对I/O的“读、修改、写”操作?
P0:
可扩展做数据总线/低8位地址总线
P1:
一般用作通用I/O口,接按键或发光二极管
P2:
可用作通用I/O口,主要用于扩展地址线高8位
P3:
可用作通用I/O口,主要用于第二功能
I/O口用作输出,直接采用指令MOVP1,A实现;
I/O口用作输入,先对I/O口写1,即指令MOVP1,#0FFH,再输入数据:
MOVA,P1;
“读、修改、写”操作:
单片机的一些逻辑操作指令具有数据修改功能,它首先将端口上数据读入,经过运算、修改后再重新写入锁存器,然后从该端口输出。
6.单片机复位方式有几种?
复位后寄存器、片内RAM状态各是什么?
两种复位方式:
上电复位和手动复位,都是高电平复位。
复位后I/O口都是高电平,堆栈指针指向07H,内部RAM保持不变。
7.如何改变当前工作寄存器组?
在程序状态字PSW中,通过修改RS1和RS0的组合。
8.什么是时钟周期、机器周期、指令周期?
它们之间关系如何?
时钟周期:
即单片机时钟电路中晶振的振荡周期,f=12MHz,时钟周期为1/f;
机器周期:
CPU完成一个基本指令所需时间,为12个时钟周期,即1个机器周期=12X(1/f);
指令周期:
执行一条指令所需要的时间,由机器周期表示。
一般为1个、2个、4个机器周期。
第三次作业:
三、编程与问答题
2.要访问特殊功能寄存器和外部数据存储器应分别采用哪种寻址方式?
访问特殊功能寄存器可采用直接寻址方式和位寻址方式,不能使用间接寻址;
访问外部数据存储器应采用寄存器间接寻址方式MOVXA,@DPTR。
4.基址+变址寄存器间接寻址方式有什么特点?
主要应用与什么场合?
采用DPTR和PC作基址寄存器其寻址范围有何不同?
基址+变址寄存器间接寻址方式指令形式为“@A+DPTR”或“@A+PC”,表示以数据指针DPTR或程序计数器PC的内容为基地址(16位),以累加器A中的内容为地址偏移量(8位),二者之和即为操作数所在的程序存储器的物理地址。
这种寻址方式只适用于访问程序存储器。
采用DPTR作基址寄存器,该查表指令的当前地址与(常数表格)目标地址无关,表格大小和位置可在64KB程序存储器中任意安排,一个表格可被多个程序块共享。
采用PC作基址寄存器,CPU在执行该指令时,PC执行加1操作,指向下一条指令,由于PC值改变,所以计算时要注意。
使用该指令查表时,表格只能存放在指令后面的256B范围内,因A的取值范围为00H-FFH。
5.请写出能完成每一种操作的指令序列
①将R0的内容传送到R1
MOVA,R0
MOVR1,A
②.将内部RAM20H单元的内容传送到R7
MOVR7,20H
③.将外部RAM1000H单元的内容传送到内部RAM30H单元
MOVDPTR,#1000H
MOVXA,@DPTR
MOV30H,A
④.将外部RAM1000H单元的内容传送到R1
MOVDPTR,#1000H
MOVR1,A
增:
将内部RAM30H单元的内容传送到外部RAM1000H单元
MOVDPTR#1000H
MOVXA,@DRTR
MOV30H,A
将外部ROM1000H单元的内容传送到内部RAM30H单元
MOVA,#00H
MOVCA,@A+DPTR
MOV30H,A
6.阅读下面的程序。
要求:
说明程序的功能;
写出涉及的寄存器及片内RAM单元的最后结果。
该程序是将内部RAM40H中的内容与41H的内容相加,和放在43H,42H中。
指令执行后:
A的内容为01H,42H的内容为5AH,43H的内容为01H。
第四次作业:
一填空题
1.指令
2.111;
49条单;
45条双;
17条三
3.7
4.操作数;
A;
B;
AB
5.操作数;
地址;
R0;
R1;
DPTR;
6.直接;
7.DPTR;
PC;
程序存储器
8.DPTR;
SP;
MOVX
9.直接;
立即
10.80H
11.68H
12.68H
13.62H;
68H;
36H
14.41H;
39H;
88H
15.BFH;
0;
0
16.2EH;
1;
17.26H;
1
18.90H;
06H;
1
19.16H;
05H;
20.06H;
09H
21.00H;
96H
二选择题
1.4
2.3
3.4
4.2
补充题:
简单分析指令70A0H:
AJMP0500H的机器码和目标地址
0500H=0000010100000000B
当前地址PC=PC+2=0A0H+2=70A2H
目标地址PC=0111010100000000(高5位由PC的高5位组成,低11位由addr11=0100H的低11位组成)7500H
机器码1010000100000000
第五次作业:
8、写出16位数相加程序,设被加数存放在内RAM20H,21H单元,加数存放在22H,23H单元,并将结果存放在后续单元24H、25H中(要求低位数存放在低地址单元中)。
ORG1000H
CLRC
MOVA,20H
ADDA,22H
MOV24H,A
MOVA,21H
ADDCA,23H
MOV25H,A
END
9、试编写程序:
采用“与”运算,判断内RAM20H单元的8位二进制数是正数还是负数。
解:
根据30H中的值编写程序判断20H单元中数的两种情况,在30H中存放‘0’代表正数,存放‘1’代表负数。
ORG1000H
MOVA,#80
ANLA,20H
JZNEXT0
MOV30H,#1
SJMPNEXT1
NEXT0:
MOV30H,#0
NEXT1:
SJMP$
END
11、编写程序,将内RAM从20H开始存放的16个数传送到从18H开始的单元中。
ORG1000H
MOVR0,#20H
MOVR1,#18H
MOVR2,#16
loop:
MOVA,@R0
MOV@R1,A
INCR0
INCR1
DJNZR2,loop
13、编写程序,将片外RAM从2000H开始存放的8个数传送到片内RAM从30H开始的单元中。
MOVDPTR,#2000H
MOVR1,#30H
MOVR2,#8
MOVXA,@DPTR
INCDPTR
第六次作业:
一、填空
1.共享
2.外部
3.PC;
外部中断0矢量地址
4.外部中断0
5.电平;
边沿
二、选择
1.
(2)2.(3)3.(4)4.
(1)5.(3)6.(4)7.
(2)8.
(2)
三、补充题
1.8051单片机提供几个中断源?
有几个中断优先级?
各中断标志是如何产生的又如何清除这些中断标志?
各中断源所对应的中断入口地址是多少?
有5个中断源:
两个外部中断(
、
),两个定时器中断(
),一个串口中断;
有两个中断优先级;
外部中断标志是IE0,IE1;
定时器中断标志是TF0,TF1;
串口中断标志是TI,RI;
外中断和定时器中断硬件置位,硬件清零,软件不用管,串口中断必须使用软件清零;
中断源中断入口地址
0003H
000BH
0013H
001BH
串行端口0023H
2.试分析以下几个中断优先级的排列顺序(级别由高到低)是否有可能实现?
若能,应如何设置中断源的中断优先级别?
若不能,试述理由。
1)T0、T1、/INT0、/INT1、串行口;
2)串行口、/INT0、T0、/INT1、T1;
3)/INT0、T1、/INT1、T0、串行口;
4)/INT0、/INT1、串行口、T0、T1;
5)串行口、T0、/INT0、/INT1、T1;
6)/INT0、/INT1、T0、串行口、T1;
答案:
(1)可以,MOVIP,#00001010B
(2)可以,MOVIP,#00010000B
(3)不能
(4)可以,MOVIP,#00010101B
(5)不能
(6)不能
3.编写一段对中断系统初始化的程序,使之允许INT0,INT1,T0,串行口中断,且使T0中断为高优先级中断。
MOVIE,#10010111B
MOVIP,#00000010B