整理单片机作业答案.docx
- 文档编号:23163622
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:103
- 大小:113.94KB
整理单片机作业答案.docx
《整理单片机作业答案.docx》由会员分享,可在线阅读,更多相关《整理单片机作业答案.docx(103页珍藏版)》请在冰豆网上搜索。
整理单片机作业答案
2-1.8051单片机芯片内部包含哪些主要逻辑功能部件?
答:
一个8位微处理器(CPU);片内数据存储器RAM;片内程序存储器ROM;四个8位并行I/O口P0~P3;两个定时器/计数器;五个中断源的中断控制系统;一个UART(通用异步接收发送器)的串行I/O口;片内振荡器和时钟产生电路。
2-2、8051存储器分哪几个地址空间?
如何区别不同空间寻址?
答:
⑴片内、外统一编址的64KB程序存储器;⑵片内256B数据存储器;⑶片外64KB数据存储器。
硬件:
引脚接高电平时CPU从片内0000H单元开始取指令,接低电平时CPU直接访问片外EPROM。
软件:
MOV指令访问片内数据存储器,MOVX指令访问片外数据存储器,MOVC指令用于读取程序存储器中的常数。
2-4.简述直接位寻址区的空间分配,片内RAM中包含哪些可位寻址单元?
答:
MCS-51单片机片内RAM中有两个区域可进行位寻址:
(1)片内RAM低128字节的位寻址区,地址为20H~2FH的16个字节单元共128位,每一位都有相应的位地址,可用位寻址方式对其进行置位、复位、内容传送、逻辑运算等操作,128位的位地址定义为00H~7FH。
(2)片内RAM高128字节的存储器区,有21个特殊功能寄存器。
其中字节地址正好能被8整除的字节单元中的每一位都可以按位寻址、操作。
2-6.8051单片机
引脚有何功能?
在使用8031时,
引脚应如何处理?
答:
引脚为外部程序存储器地址允许输入端,其电平的高低决定了系统复位后CPU是从片内程序存储器还是片外扩展存储器的0000H字节单元开始取指令。
(1)当引脚
接成高电平时,CPU首先从片内0000H字节单元开始取指令执行程序,当指令地址寄存器PC中的内容超过0FFFH后,就自动转向片外扩展的EPROM中取指令执行,这时芯片外部的重叠地址为0000H~0FFFH的低4KBEPROM忽略不用。
(2)当引脚
接成低电平时,复位后CPU直接从片外EPROM的0000H字节单元开始取指令执行,这时芯片内部0000H~0FFFH的4KB单元被忽略不用。
在使用8031时,由于其内部没有ROM/EPROM,所以必须使用外部扩展程序存储器,它的
引脚应该接成低电平,CPU直接从片外扩展的EPROM中取指令执行。
2-8.内RAM低128B单元划分为哪三个主要区域?
各区域主要功能是什么?
答:
地址范围为00H~7FH的128字节单元,按功能特点划分为不同的几个区,分述如下。
(1)工作寄存器区地址范围为00H~1FH的32字节存储器单元,分为四个组,每组有8个工作寄存器字节单元,定名为R0、R1、R2、R3、R4、R5、R6和R7。
通过改变程序状态字特殊功能寄存器PSW中RS1,RS0两位的内容,每组工作寄存器均可选作CPU的当前工作寄存器组。
(2)位寻址区地址为20H~2FH的16个字节单元中共128位,每一位都有相应的位地址,可用位寻址方式对其进行置位、复位、内容传送、逻辑运算等操作。
(3)一般数据存储区地址范围为30H~7FH的区域,可用于原始数据及运算结果的存储。
值得注意的是,30H~7FH中一部分字节单元可以开辟出一块遵守“后进先出”或“先进后出”规则的特殊数据区──堆栈。
2-9.单片机系统复位有哪几种方法?
复位后特殊功能寄存器初始状态如何?
答:
使单片机系统复位有两种方法:
上电自动复位和按键手动复位
系统复位的主要功能就是把PC初始化为0000H,使单片机从0000H单元开始执行程序,另外,系统复位还使一些特殊功能寄存器恢复到复位状态。
PC:
0000HACC:
00HPSW:
00H
SP:
07HDPTR:
0000HP0~P3:
FFH
IP:
**000000BIE:
0*000000BTMOD:
00H
TCON:
00HTL0:
00HTH0:
00H
TL1:
00HTH1:
00HSCON:
00H
SBUF:
不定PCON:
0***0000B
2-10.开机复位后,CPU使用那组工作寄存器作为当前工作寄存器?
它们的地址是什么?
答:
开机复位后,由于(RS1=0,RS0=0),CPU使用第0组工作寄存器作为当前工作寄存器,它的地址为00H~07H.
2-11.CPU如何确定和改变当前工作寄存器组?
答:
通过改变程序状态字特殊功能寄存器PSW中RS1,RS0两位的内容,每组工作寄存器均可被选作当前工作寄存器。
RS1RS0当前工作寄存器
00第0组
01第1组
10第2组
11第3组
2-13.位寻址与字节单元地址7CH如何区别?
位地址7CH、具体在片内RAM的什么位置?
答:
8051采用不同的寻址方式和指令分别对位和字节进行不同的操作,如SETB20H指的是20H位单元的内容置为1,而MOV20H,#0FFH指的是内RAM20H字节单元的内容变为FFH。
位地址7CH在内RAM低128字节的2FH字节单元的第四位。
2-14.8051单片机时钟周期与振荡周期之间有什么关系?
答:
8051单片机的时钟周期为振荡周期的两倍。
2-16.什么叫堆栈?
堆栈指针SP的作用是什么?
8051单片机堆栈容量不能超过多少字节?
答:
一般在30H~7FH的地址范围内,有一部分字节单元可开辟出一块遵守“后进先出”或“先进后出”规则的特殊数据区,就叫堆栈。
SP为堆栈指针,它始终存放堆栈顶部字节单元的地址(栈顶指针),数据压栈时,SP首先自动加1,然后数据压入SP内容指示的字节单元中;而数据出栈时,SP内容指示的字节单元中的数据弹出,然后SP自动减1,这样SP始终指向堆栈顶部字节单元的地址。
8051单片机堆栈容量最多不能超过128字节。
初始化后,(SP)=07H,如果CPU使用工作寄存器1组,那么堆栈和工作寄存器将发生冲突,因此常把堆栈移至30~7FH区域之中。
第三章
3-1什么是寻址方式?
MCS-51单片机有哪几种寻址方式?
对8031内部RAM的128~255字节地址的空间寻址要注意什么?
答:
寻址方式是如何找到存放被操作数据的位置(地址)的方法;MCS-51单片机有七种寻址方式:
寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址间接寻址、相对寻址和位寻址;8031内部RAM的128~255字节为特殊功能寄存器区,只允许使用直接寻址方式。
3-6若要完成以下数据传送,如何应用MCS-51指令予以实现?
(1)R1的内容传送到R0:
MOVA,R1
MOVR0,A
(2)外部RAM20H单元的内容送入R0:
MOVP2,#00H;
MOVR1,#20H
MOVXA,@R1
MOVR0,A
(3)外部RAM0020H单元的内容送内部RAM20H单元:
MOVP2,#00H;
MOVR0,#20H
MOVXA,@R0
MOV20H,A
(4)外部RAM1000H单元内容送内部RAM20H单元:
MOVDPTR,#1000H
MOVXA,@DPTR
MOV20H,A
(5)外部ROM2000H单元内容送R0:
MOVA,#00H
MOVDPTR,#2000H
MOVCA,@A+DPTR(MOVCA,@DPTR)
MOVR0,A
(6)外部ROM2000H单元内容送内部RAM20H单元:
MOVA,#00H
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOV20H,A
(7)外部ROM2000H单元内容送外部RAM0020H单元:
MOVA,#00H
MOVR0,#20H
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOVX@R0,A
3-7(R0)=30H;(A)=(30H)=40H;(R1)=40H;(B)=10H;(P1)=0CAH;(40H)=0CAH;(30H)=20H(原来40H);(10H)=20H;
好多:
(R0)=40H;(A)=10H;(R1)=10H;(B)=00H;(P1)=0CAH;;(30H)=(20H);(10H)=(20H);
3-8已知SP=25H,PC=2345H,标号LABEL所在的地址为3456H,问执行长调用指令LCALLLABEL后,堆栈指针和堆栈的内容发生什么变化?
PC值等于什么?
答:
(SP)=27H,(26H)=48H,(27H)=23H;(PC)=3456H
3-9上题中的LCALL指令能否直接换成ACALL指令,为什么?
如果使用ACALL指令,则可调用的地址范围是什么?
答:
不能,因为LABEL所在地址3456H与PC不在同一2KB范围内,即高5位地址不同。
若要使用ACALL指令,可调用的地址范围是2000H~27FFH。
3-10有一个16位二进制数,高8位存于21H单元,低8位存于20H单元。
执行如下程序段,试问:
⑴程序段功能是什么?
⑵能否用MOV代替程序段中的XCH语句而不改变程序的逻辑功能?
写出相应程序段。
⑶两个程序段结果是否相同?
差别在哪里?
CLRC
XCHA,21H
RRCA
XCHA,21H
XCHA,20H
RRCA
XCHA,20H
答:
(1)程序段的功能是将此16位二进制数除2后取整
(2)能用MOV代替程序段中的XCH语句而不改变程序的逻辑功能,如下:
CLRC
MOVA,21H
RRCA
MOV21H,A
MOVA,20H
RRCA
MOV20H,A
两个程序段结果不相同。
原程序执行后A的内容为程序运行前A中内容,即
此程序没有改变A中内容;MOV语句程序中A的内容为原20H单元内容右移一位后的内容。
3-11分析以下程序段运行的结果。
若将DAA指令取消,则结果会有什么不同?
CLRC
MOV20H,#99H
MOVA,20H
ADDA,#01H
DAA
MOV20H,A
答:
结果为(20H)=00H,CY=1。
若取消DAA指令,(20H)=9AH,CY=0。
3-12由于SJMP指令的转移范围是256B,而AJMP指令转移范围是2KB,所以在程序中SJMP指令都可以用AJMP指令来代替。
”请问这种说法是否正确,为什么?
答:
不正确。
AJMP转移的目标地址必须在AJMP后面指令的第一个字节开始的同一2KB范围内,不能改变高5位地址,因此,即使相邻很近的两个地址,只要它的高5位发生改变,就不能跳转。
而SJMP可以通过几次跳转,最终到任意目标地址。
4-1两个4位BCD码数相加求和。
设被加数存于内部RAM的40H、41H单元,加数存于45H、46H单元,要求和数存于50H、51H单元(均前者为低二位,后者为高二位)。
请编制加法程序段。
解:
程序如下:
CLRC
MOVA,40H
ADDA,45H
DAA
MOV50H,A
MOVA,41H
ADDCA,46H
DAA
MOV51H,A
CLRA
ADDCA,#00H
MOV52H,A
好多同学:
MOVA,40H
ADDA,45H
DAA
MOV50H,A
MOVA,41H
ADDA,46H
DAA
MOV51H,A
4-2试编写程序,查找在内部RAM20H-50H单元中出现00H的次数,并将查找的结果存入51H单元。
解:
程序如下:
MOVR0,#20H
MOVR7,#31H
MOV51H,#00H(必需的)
LOOP1:
CJNE@R0,#00H,LOOP
INC51H
LOOP:
INCR0
DJNZR7,LOOP1
HERE:
SJMPHERE
有的同学DJNZ位置放置不同,此时要注意循环的次数
采用其他条件转移指令亦可;采用其他判断方式亦可
4-3晶振频率为12MHz,请用循环转移指令编制延时20ms的延时子程序。
解:
一个机器周期为1us,延时20ms需要机器周期数20000us/1us=20000
延时程序如下:
MOVR5,#T1;1个机器周期
LOOP2:
MOVR4,#T2;T1个机器周期
LOOP1:
NOP;T1*T2个机器周期
NOP;T1*T2个机器周期
DJNZR4,LOOP1;2*T1*T2个机器周期
DJNZR5,LOOP2;2*T1个机器周期
RET;1个机器周期
总计时:
1+3×T1+4×T1×T2+1=20000
则:
T1=202=0CAH,T2=24=18H(答案不唯一,T1与T2的值≤255)
4-4已知两个八位无符号数a、b存放在BUF和BUF+1单元,编写程序计算5a+b,结果可能大于8位,仍放回BUF和BUF+1单元(BUF+1单元为高字节)。
解:
根据题意,编写程序如下:
MOVA,BUF
MOVB,#05H
MULAB
CLRC可以不要
ADDA,BUF+1
MOVBUF,A
MOVA,B
ADDCA,#00H
MOVBUF+1,A
4-5外部数据RAM从2000H到2100H有—个数据块,现要将它们传送到从3000H到3100H的区域,试编写有关程序。
方法1MOVDPTR,#3000H
PUSHDPL
PUSHDPH;压栈保护目标地址
MOVDPTR,#2000H
MOVR2,#01H
MOVR3,#01H;数据长度送R3R2
LOOP:
MOVXA,@DPTR
INCDPTR
MOVR5,DPH
MOVR4,DPL;源地址加1保护
POPDPH
POPDPL;弹出目标地址
MOVX@DPTR,A
INCDPTR
PUSHDPL
PUSHDPH;目标地址加1压栈保护
MOVDPH,R5
MOVDPL,R4;取出源地址
CLRC
MOVA,R2
SUBBA,#01H
MOVR2,A;数据区长度低8位减1
MOVA,R3
SUBBA,#00H
MOVR3,A;数据区长度高8位减借位位
ORLA,R2;(R3)与(R2)相或
JNZLOOP;两者全零时,101H个数传送完毕。
HERE:
SJMPHERE
方法2:
MOVP2,#20H
MOVR0,#00H
MOVR2,#00H
LOOP:
MOVXA,@R0;P2口即高八位地址
SETBP2.4;20H→30H
MOVX@R0,A
CLRP2.4;30H→20H
INCR0
DJNZR2,LOOP
MOVDPTR,#2100H
MOVXA,@DPTR
MOVDPTR,#3100H
MOVX@DPTR,A
另外方法:
DPH分别赋予20H和30H可行;INCDPL可行
另外:
MOVR0,#2000H错误
4-9存放在片内RAM的DAT单元中的自变量X中是一个无符号数,试编写程序求下面函数的函数值并存放到片内RAM的FUNC单元中。
解:
根据题意设计程序如下:
MOVA,DAT
CJNEA,#32H,LOOP
LOOP:
JNCDONE
CJNEA,#14H,LOOP1
LOOP1:
JCLOOP2
RLA
RLA
ADDA,DAT
SJMPDONE
LOOP2:
RLA
DONE:
MOVFUNC,A
HERE:
SJMPHERE
有同学:
通过SUBBA,#14H;
JCLOOP1亦可以
有的同学:
一断子程序中有多个Sjmphere
有同学在多个程序中实现
4-11已知片内RAM以ADDR为起始地址的区域中存放着24个无符号数,试编写程序找出最小值,并存入MIN单元。
解:
根据题意,编写程序如下:
MOVR0,#ADDR;数据区首地址
MOVR7,#18H;数据区长度
MOVA,@R0;读第一个数
DECR7
LOOP:
INCR0
MOV2AH,@R0;读下一个数
CJNEA,2AH,CHK;数值比较
CHK:
JCLOOP1;A值小转移
MOVA,@R0
LOOP1:
DJNZR7,LOOP;继续
MOV2BH,A;极值送2BH单元
HERE:
AJMPHERE;停止
6-2·MCS-51提供了哪几种中断源?
在中断管理上有什么特点?
各中断源中断优先权的高低是如何排列确定的?
答:
MCS-51单片机设立了5个中断源,其中两个为外部中断源,外部中断0即
,外部中断1即
,三个为片内中断源(内部中断源),分别为定时器/计数器T0溢出中断、定时器/计数器T1溢出中断和串行口中断。
由特殊功能寄存器TCON和SCON的相应位表示了各中断源的状态。
提供2个中断优先级,中断处理程序可实现二级中断嵌套。
各中断源可以由中断优先级控制寄存器IP程控为高优先级或低优先级中断。
中断源的排列顺序由中断优先级控制寄存器和内部查询电路共同决定,并且各中断源可以由中断允许控制寄存器IE定义为开放或屏蔽状态。
6-3·MCS-51响应中断的条件是什么?
CPU响应中断时,不同的中断源,其中断入口地址各是多少?
答:
MCS-51响应中断的基本条件有:
1.有中断源发出中断请求。
2.中断总允许位EA=l,即CPU开中断。
3.发出中断请求的中断源所对应的中断允许位为1,即该中断没有被屏蔽。
若上述条件满足,并且不存在任意一种下列情况,则CPU会相应中断:
1、CPU正在执行同级或更高级中断服务程序。
2、当前的指令周期还未结束。
这样可保证指令的完整,防止中断返回后出现错误指令。
3、现行指令为RETI或者是访问IE或IP的指令,该指令以及紧接着的另一条指令还未执行完。
为了保证CPU能正确返回,CPU在执行RETI或访问IE、IP的指令后,至少需要再执行一条指令,才会响应新的中断请求。
若存在上述任何一种情况,则CPU将丢弃中断查询结果,此次中断申请无效,不会再被响应。
若没有上述情况,CPU将在紧接着的下一个机器周期内响应中断。
各中断源及与之对应的矢量地址略。
(入口地址P3.2)?
6-4·MCS-51的外部中断有哪两种触发方式?
它们对触发脉冲或电平有什么要求?
应如何选择和设定?
答:
MCS-51的外部中断有两种触发方式:
边沿触发方式和电平触发方式。
对于边沿触发方式,CPU在每一个机器周期S5P2期间采样外部中断l请求引脚的输入电平。
如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断1请求信号为高电平,接着的下一个机器周期采样到外部中断1请求信号为低电平,出现了下跳沿,则使IEl置1。
直到CPU响应该中断时,才由硬件使IEl清0。
对于电平触发方式,CPU在每一个机器周期S5P2期间采样外部中断1请求引脚的输入电平。
若外部中断l请求信号为低电平,则使IE1置1,若外部中断1请求信号为高电平,则使IEl清0。
可由TCON中对应的IT0(或IT1)位程控为低电平或下降沿有效。
IT0(或IT1)=1时,外部中断0(或1)程控为边沿触发方式。
IT0(或IT1)=0时,外部中断0(或1)程控为电平触发方式。
6-5·MCS-51单片机的中断系统中有几个优先级?
如何设定?
答:
MCS-51单片机的中断系统中有两个中断优先级。
每一个中断请求源均可编程为高优先级中断或低优先级中断,可以实现二级中断嵌套。
MCS-51的中断系统中设置了一个中断优先级寄存器IP,可按位寻址。
IP中的低5位为各中断源优先级的控制位,可用软件来设定。
若某几个控制位为1,则相应的中断源就规定为高级中断;反之,若某几个控制位为0,则相应的中断源就规定为低级中断。
6-6·某MCS-51系统用于定时测试压力、温度,定时用T0来实现,压力超限和温度超限的报警信号分别由
和
输入,中断优先权排列顺序(由高到低)依次为压力超限→温度超限→定时检测,试确定专用寄存器IE和IP的内容,并编写初始化程序。
答:
8051对中断源的开放或屏蔽是由中断允许寄存器IE控制的。
IE内容为:
IE
1
0
0
0
0
1
1
1
即:
IE=87H
按照内部查询的顺序,中断优先权的排列顺序依次为:
→T0→
,也就是说,定时检测的优先权高于温度超限,这与题目要求不符,因此,应该将
和
设定为高优先级,将T0设定为低优先级,所以IP为:
IP
0
0
0
0
1
0
1
即:
IP=05H
初始化程序如下:
ORG0000H
AJMPMAIN
ORG0003H;外中断
中断入口地址
AJMPW1
ORG000BH;外中断T0中断入口地址
AJMPW2
ORG0013H;外中断
中断入口地址
AJMPW3
ORG0050H;主程序
MAIN:
MOVIP,#05H;设置中断优先级
MOVIE,#87H;选择开放中断源
HERE:
SJMPHERE;等待中断
7-2设MCS-51单片机的晶振频率为6MHz,若要求定时值分别为0.1ms,1ms,5ms,定时器T0工作在方式0、方式1和方式2时,其定时器初值各应是多少?
5ms方式0错误较多:
6318H?
另外,
(8192-x)*2=100x=8142=1111111001110=
(8192-x)*2=1000x=7692=1111000001100=
(8192-x)*2=5000x=5692=1011000111100B=0B1H1CH
答:
定时初值如表6-3:
表6-3定时器初值
0.1ms
1ms
5ms
TH0
TL0
TH0
TL0
TH0
TL0
方式0
0FEH
0EH
0F0H
0CH
0B1H
1CH
方式1
0FFH
0CEH
0FEH
0CH
0F6H
3CH
方式2
0CEH
0CEH
无法一次实现定时,可用0.1ms循环10次
无法一次实现定时,可用0.1ms循环50次
有的同学方式2按照216-。
。
。
7-3MCS-51单片机的晶振频率为12MHz,使用单片机的内部定时方式在P1.0引脚产生频率为10KHz的方波信号。
(好多缺乏计算过程)
答:
(1)首先选择工作方式:
由于是方波,所以高、低电平各占一个周期的一半时间,方波频率为10KHz,周期是:
1/(10×103)s=100us,则高、低电平的定时时间都是:
100us/2=50us,可以选择定时器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整理 单片机 作业 答案