《单片机原理及应用》黄友锐主编课后习题答案.docx
- 文档编号:4397679
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:43
- 大小:436KB
《单片机原理及应用》黄友锐主编课后习题答案.docx
《《单片机原理及应用》黄友锐主编课后习题答案.docx》由会员分享,可在线阅读,更多相关《《单片机原理及应用》黄友锐主编课后习题答案.docx(43页珍藏版)》请在冰豆网上搜索。
《单片机原理及应用》黄友锐主编课后习题答案
第1章
1-1什么是单片机?
它与一般微型计算机在结构上何区别?
答:
单片微型计算机简称为单片机(SingleChipComputer),又称为微控制器(MCU即Micro-ControllerUnit)。
它是在一块芯片上集成了中央处理器(CPU)、存储器(RAM、ROM)、定时器/计数器、中断控制、各种输入/输出(I/O)接口(如并行I/O口、串行I/O口和A/D转换器)等为一体的器件。
微型计算机的基本结构由CPU(运算器、控制器)、存储器、输入设备和输出设备五大部分组成,各部分通过外部总线连接而成为一体。
单片机的结构是在一块芯片上集成了中央处理器(CPU)、存储器、定时器/计数器、中断控制、各种输入/输出接口(如并行I/O口、串行I/O口和A/D转换器)等,它们通过单片机内部部总线连接而成为一体。
1-2MCS-51系列单片机内部资源配置如何?
试举例说明8051与51兼容的单片机的异同。
答:
MCS-51系列单片机内部资源配置
AT89S53
12KB
FlashROM
256B
3×16
32
1
9/2
SPI,WDT,2个数据指针
W77E58
32KB
FlashROM
256B+
1024B
3×16
36
2
12/2
扩展了4位I/O口,双数据指针,WDT。
1-3新型8位单片机,主要在哪几方面发展了?
使用新型8位单片机能带来什么好处?
1、运算速度大大提高;
2、RAM、ROM容量增大;
3、精简指令集,指令比51少很多;
4、更多的IO口;
5、更多的其他功能,比如自带AD,DA,自带SPI,自带看门狗,自带大容量EEPROM等等;
6、中断的种类更细更多,有20几个中断向量的比比皆是,定时器/计数器的功能,数量都更多。
简化电路,节省成本,降低功耗,提高系统的可靠性。
第2章
2-1MCS-51系列单片机内部有哪些主要的逻辑部件?
答:
一个8位CPU;一个片内振荡器及时钟电路;4K字节ROM程序存储器;128字节RAM数据存储器;两个16位定时器/计数器;可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;32条可编程的I/O线(四个8位并行I/O端口);一个可编程全双工串行口;具有五个中断源、两个优先级嵌套中断结构
2-2MCS-51设有4个8位端口(32条I/O线),实际应用中8位数据信息由哪一个端口传送?
16位地址线怎样形成?
P3口有何功能?
答:
实际应用中8位数据信息由P0口传送。
16位地址线由P0口输出低8位地址A7~A0,P2口输出高8位地址A15~A8。
P3口是一个多用途的端口,也是一个准双向口,作为第一功能使用时,其功能同P1口;当作第二功能使用时,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-3MCS-51的存储器结构与一般的微型计算机有何不同?
程序存储器和数据存储器各有何作用?
答:
MCS-51存储器结构与常见的微型计算机的配置方式不同,它把程序存储器和数据存储器分开,各有自已的寻址系统、控制信号和功能。
程序存储器用来存放程序和始终要保留的常数,如经汇编后所编程序的机器码。
数据存储器通常用来存放程序运行中所需要的常数或变量,例如模/数转换时实时采集的数据等。
2-4MCS-51内部RAM区功能结构如何分配?
4组工作寄存器使用时如何选用?
位寻址区域的字节地址范围是多少?
答:
MCS-51系列单片机内部数据存储器:
00H~7FH单元组成的低128字节地址空间的RAM区,又分为为工作寄存器区(00H~1FH)、位寻址区(20H~2FH)和用户RAM区(30H~7FH)。
80H~FFH(128~255)单元组成的高128字节地址空间的特殊功能寄存器(又称SFR)区。
对于8032、8052、8752的单片机还有80H~FFH单元组成的高128字节地址空间的RAM区。
4组工作寄存区是由程序状态字PSW(特殊功能寄存器,字节地址为0D0H)中的D4、D3位(RS1和RS0)来决定的。
位寻址区域的字节地址范围是20H~2FH(对应的位地址范围是00H~7FH)。
2-5特殊功能寄存器中哪些寄存器可以位寻址?
它们的字节地址是什么?
答:
P0字节地址80H,TCON字节地址88H,P1字节地址90H,SCON字节地址98H,P2字节地址A0H,IE字节地址A8H,P3字节地址B0H,IP字节地址B8H,PSW字节地址D0H,ACC字节地址E0H,B字节地址F0H。
2-6简述程序状态字PSW中各位的含义。
答:
CY(PSW·7)进位标志,AC(PSW·6)辅助进位标志,F0(PSW·5)用户标志位,RS1、RS0(PSW·4、PSW·3)寄存器区选择控制位,OV(PSW·2)溢出标志,P(PSW.0)奇偶标志,每个指令周期都由硬件来置位或清“0”,以表示累加器A中1的位数的奇偶数。
2-7复位后,各内部寄存器的内容是什么?
2-8一个时钟频率为6MHz的单片机应用系统,它的振荡信号周期、时钟周期、机器周期分别是多少?
答:
振荡信号周期=1/6us、时钟周期=1/3us、机器周期=2us。
2-9堆栈有何功能?
堆栈指针的作用是什么?
二者的关系?
为什么在程序设计时,要对SP重新赋值?
答:
堆栈的主要功能:
保护断点和程序现场,保存用户数据。
堆栈指针的作用是:
堆栈指针SP是一个8位特殊功能寄存器,指示出堆栈顶部在内部RAM中的位置。
两者的关系:
堆栈指针SP给定当前的栈顶,SP的初始值越小,堆栈深度就越深。
系统复位后,SP初始化为07H,使得堆栈事实上由08H单元开始。
考虑到08H~1FH单元分属于工作寄存器区1~3,若程序设计中要用到这些区,则最好把SP值改置为1FH或更大的值如60H,SP的初始值越小,堆栈深度就越深,堆栈指针的值可以由软件改变,因此堆栈在内部RAM中的位置比较灵活。
第3章
3-4:
(1)
ORG0000H
AJMPSTART
ORG0100H
START:
MOVA,#21H
ADDA,#45H
ADDA,#78H
SJMP$
END
(2)
ORG0000H
AJMPSTART
ORG0100H
START:
MOVA,#78H
ADDA,#45H
CLRC;
SUBBA,#21H
SUBBA,#09H
SJMP$
END
(3)
ORG0000H
AJMPSTART
ORG0100H
START:
MOVA,#34H
ADDA,#0ABH
MOVR0,A
MOVA,12
ADDCA,#21H
MOVR1,A
SJMP$
END
(3)
ORG0000H
AJMPSTART
ORG0100H
START:
CLRC;
MOVA,#0BCH
SUBBA,#0CDH
MOVR0,A
MOVA,1#2AH
SUBBA,#0FH
MOVR1,A
SJMP$
END
3-5:
请编程实现:
将片内20H存储单元的8位二进制数转换成BCD码,并存放在片外以2000H起始的单元中,2000H单元存放转换后的BCD码的百位,2001H单元存放转换后的BCD码的十位/个位。
ORG0000H
AJMPSTART
ORG0050H
START:
MOVA,20H;A←被除数
MOVB,#100;B←除数100
DIVAB;A÷B,A←商(百位数BCD码),B←余数
MOVX2000H,A;(2000H)←将百位数BCD码
MOVA,B;A←余数作被除数
MOVB,#10;B←除数10
DIVAB ;A÷B,A←商(十位数BCD码),B←余数(个位BCD码)
SWAPA ;十位BCD码调整到A中高4位
ADDA,B ;A中压缩成2位BCD码
MOVX2001H,A ;(2001H)←十位、个位BCD码
SJMP$
END
3-6:
将片内RAM20H,21H,22H,23H(千/百/十/个位)中的十进制的ascii码转换成bcd码,并压缩放于片内30H,31H两个单元,其中31H中放bcd码的十位/个位,30H中放bcd码的千位/百位。
MOVA,#00H;这一句不是必须
MOVR0,#20H
MOVR1,#21H
XCHDA,@R0;A←(20H)
SWAPA;A高4位←(20H)的BCD码数字
XCHDA,@R1;A低4位←(21H)的BCD码数字
MOV30H,A
MOVA,#00H;这一句不是必须
MOVR0,#22H
MOVR1,#23H
XCHDA,@R0;A←(22H)
SWAPA;A高4位←(22H)的BCD码数字
XCHDA,@R1;A低4位←(21H)的BCD码数字
MOV31H,A
3-7:
片内RAM的30H~32H单元中连续存放了6个压缩BCD码,编制程序将它们转换为ASCII码,存入片外3000H开始的连续存储区中
MOVR0,#30H
MOVDPTR,3000H
LOOP:
MOVA,@R0
SWAPA
ANLA,#0FH
ADDA,#30H;30H='0'
MOVX@DPTR,A
INCDPTR
MOVA,@R0
ANLA,#0FH
ADDA,#30H
MOVX@DPTR,A
INCDPTR
INCR0
CJNER0,#33H,LOOP
3-9:
从外部RAM2000H单元开始存放着100个无符号数,编写程序统计出:
(1)最大数;
(2)最小数;(6)大于50,小于50,等于50的个数。
(1)
MOVDPTR,#2000H
MOV30H,#0;先用0当做最大数(求最小数时,用255)
MOVR2,#100
LOOP:
MOVXA,@DPTR
CJNEA,20H,TTT;(A)-(20H)
TTT:
JNCNEXT;不够减转移(求最小数时,用JNCNEXT)
MOV30H,A;够减,这个数是大数,给(20H)
NEXT:
INCDPTR
DJNZR2,LOOP
SJMP$
END
(6)
ORG0600H
MOVDPTR,#2000H
MOVR2,#100;总数
MOVR3,#0;小于50的数的个数
MOVR4,#0;等于50的数的个数
MOVR5,#0;大于50的数的个数
LOOP:
MOVXA,@DPTR
CLRC
SUBBA,#50
JZEQU_50
JNCBIG
INCR3;小于50的个数
JMPNEXT
EQU_50:
INCR4
JMPNEXT
BIG:
INCR5
NEXT:
INCDPTR
DJNZR2,LOOP
MOV30H,R3;小于50的数的个数
MOV31H,R4;等于50的数的个数
MOV32H,R5;大于50的数的个数
SJMP$
3-10MCS-51片外RAM区1000H~1007H单元中存有8个无符号数,编程求其平均值,将结果存于1008H中。
%先加,加的结果可能超出8位,所以存储结果于(30H)和(40H)单元中。
MOVDPTR,#1000H
MOVR7,#08H
MOV30H,#00H
MOV40H,#00H
SS1:
MOVXA,@DPTR
ADDA,30H
MOV30H,A
CLRA
ADDCA,40H
MOV40H,A
INCDPTR
DJNZR7,SS1
MOVR7,#03H;移位3次,等于除以8
SS2:
CLRC
MOVA,40H
RRCA
MOV40H,A
MOVA,30H
RRCA
MOV30H,A
DJNZR7,SS2
MOVX@DPTR,A
3-11下面是以数学公式,X值存于片内20H,Y值存于21H单元中。
Y=X2(X>0)0(X=0)2X(X<0)
MAIN:
MOVA,20H
JZSUL
JBACC.7,NEG
MOVB,A
MULAB
SJMPSUL
NEG:
CLRC
RLCA
SUL:
MOV21H,A
3-12试编写程序,将外部RAM2000H~20FFH数据块,传送到3000H~30FFH区域。
MOVR6,#0FFH
MOVR2,#00H
MOVR3,#20H;暂存2000H地址
MOVR4,#00H
MOVR5,#30H;暂存3000H地址
NEXT:
MOVDPL,R2
MOVDPH,R3
MOVXA,@DPTR
MOVDPL,R4
MOVDPH,R5
MOVX@DPTR,A
INCR2
INCR4
DJNZR6,NEXT
3-13:
振荡频率:
6MHz(机器周期:
2us),
(1)1ms延时
ORG2000H
MOV R7,#125
LOP1:
NOP
NOP
DJNZ R7,LOP1
RET
(2)100ms延时
ORG2000H
MOV R6,#100
LOP2:
MOV R7,#125
LOP1:
NOP
NOP
DJNZ R7,LOP1
DJNZ R6,LOP2
RET
(3)1s延时
ORG2000H
MOVR5,#10
LOP3:
MOV R6,#100
LOP2:
MOV R7,#125
LOP1:
NOP
NOP
DJNZ R7,LOP1
DJNZ R6,LOP2
DJNZ R5,LOP3
RET
3-14:
片内RAM30H有一数(0~15),查表求平方值,存入31H中。
ORG1000H
MAIN:
MOVDPTR,#TAB
MOV30H,#13;NUMB=0~15
MOVA,30H
MOVCA,@A+DPTR
MOV31H,A
SJMP$
TAB:
DB0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,255
第4章
4-4试编程实现,将
设为高优先级中断,且为电平触发方式;T0溢出中断设为低优先级中断,串行口中断为高优先级中断,其余中断源设为禁止状态。
SETBPX0
CLRIT0
CLRPT0
SETBPS
MOVIE,#93H
4-9试用中断技术设计一个秒闪电路,其功能是发光二极管LED每秒闪亮400ms。
主机频率为6MHz。
(仿真见exercise4_9.ms11)
题意可理解为LED每次亮400ms,灭600ms。
设使用定时器T1,定时时间为100ms,用P1.0作输出,设P1.0为高时灯灭。
ORG0000H
AJMPSTART
ORG000BH
AJMPT0INT
ORG0050H
START:
MOVSP,#30H
MOVTMOD,#01H;T0方式1计数,
MOVTH1,#3CH
MOVTL1,#0B0H;定时100ms
MOVR0,#04H
SETBF0;灯亮
(1)、灭(0)的转换标志
MOVIE,#88H
SETBP1.0
SETBTR1
SJMP$
ORG0100H
T0INT:
MOVTH1,#3CH
MOVTL1,#0B0H
DJNZR0,NEXT
JNBF0,TURNON;F0为0转
TURNOFF:
CPLP1.0
CLRF0
MOVR0,#06H
SJMPNEXT
TURNON:
CPLP1.0
SETBF0
MOVR0,#04H
NEXT:
RETI
END
4-1简述中断、中断源、中断源的优先级及中断嵌套的含义。
答:
当CPU正在处理某项事件的时,如果外界或内部发生了紧急情况,要求CPU暂停正在处理的工作转而去处理这个紧急情况,待处理完以后再回到原来被中断的地方,继续执行原来被中断了的程序,这样的过程称为中断。
向CPU提出中断请求的源称为中断源。
当系统有多个中断源时,就可能出现同时有几个中断源申请中断,而CPU在一个时刻只能响应并处理中断优先高的请求。
在实际应用系统中,当CPU正在处理某个中断源,即正在执行中断服务程序时,会出现优先级更高的中断源申请中断。
为了使更紧急的级别高的中断源及时得到服务,需要暂时中断(挂起)当前正在执行的级别较低的中断服务程序,去处理级别更高的中断源,待处理完以后,再返回到被中断了的中断服务程序继续执行,但级别相同或级别低的中断源不能中断级别高的中断服务,这就是所谓的中断嵌套。
4-2MCS-51单片机能提供几个中断源?
几个中断优先级?
各个中断的源的优先级怎样确定?
在同一优先级中各个中断源的优先级怎样确定?
答:
MCS-51单片机能提供五个中断源,两个中断优先级。
中断优先级是由片内的中断优先级寄存器IP(特殊功能寄存器)控制的。
PS:
串行口中断优先级控制位。
PS=1,串行口定义为高优先级中断源;PS=0,串行口定义为低优先级中断源。
PT1:
T1中断优先级控制位。
PT1=1,定时器/计数器1定义为高优先级中断源;PT1=0,定时器/计数器1定义为低优先级中断源。
PX1:
外部中断1中断优先级控制位。
PX1=1,外中断1定义为高优先级中断源;PX1=0,外中断1定义为低优先级中断源。
PT0:
定时器/计数器0(T0)中断优先级控制位,功能同PT1。
PX0:
外部中断0中断优先级控制位,功能同PX1。
在同一优先级中,循环轮流排队。
不分级别高低,所有中断源优先级都一律平等,CPU轮流响应各个中断源的中断请求。
4-3简述MCS-51单片机中断响应过程。
答:
CPU在每个机器周期的S5P2时刻采样中断标志,而在下一个机器周期对采样到的中断进行查询。
如果在前一个机器周期的S5P2有中断标志,则在查询周期内便会查询到并按优先级高低进行中断处理,中断系统将控制程序转入相应的中断服务程序。
4-4MCS-51单片机外部中断有哪两种触发方式?
如何选择?
对外部中断源的触发脉冲或电平有何要求?
答:
MCS-51单片机外部中断有:
负边沿触发方式和电平触发方式。
外部中断1(
)触发方式控制位。
如果IT1为1,则外中断1为负边沿触发方式(CPU在每个机器周期的S5P2采样
脚的输入电平,如果在一个周期中采样到高电平,在下个周期中采样到低电平,则硬件使IE1置1,向CPU请求中断);如果IT1为0,则外中断1为电平触发方式。
采用电平触发时,输入到
的外部中断源必须保持低电平有效,直到该中断被响应。
同时在中断返回前必须使电平变高,否则将会再次产生中断。
4-5在MCS-51单片机的应用系统中,如果有多个外部中断源,怎样进行处理?
答:
当系统有多个中断源时,就可能出现同时有几个中断源申请中断,而CPU在一个时刻只能响应并处理一个中断请求,为此,要进行排队。
排队的方式有:
(1)按优先级排队。
(2)循环轮流排队。
MCS-51单片机优先级比较简单,只有两级,可以通过优先级控制寄存器设置不同的优先级。
当优先级相同时,约定有5个中断源优先级顺序由高到低分别为:
外部中断0、定时器/计数器0溢出、外部中断1、定时器/计数器1溢出、串行口中断。
4-6MCS-51有哪几种扩展外部中断源的方法?
各有什么特点?
答:
1)利用定时器作为外部中断使用
特点:
把MCS-51的两个定时器/计数器(T0和T1)选择为计数器方式,每当P3.4(T0)或P3.5(T1)引脚上发生负跳变时,T0和T1的计数器加1。
可以把P3.4和P3.5引脚作为外部中断请求输入线,而定时器的溢出中断作为外部中断请求标志。
2)采用中断和查询相结合的方法扩充外部中断源
特点:
这种方法是把系统中多个外部中断源经过与门连接到一个外部中断输入端(例如
),并同时还接到一个I/O口,中断请求由硬件电路产生,而中断源的识别由程序查询来处理,查询顺序决定了中断源的优先级。
4-7MCS-51单片机响应外部中断的典型时间是多少?
在哪些情况下,CPU将推迟对外部中断请求的响应?
答:
响应外部中断的典型时间是至少需要3个完整的机器周期。
1、外部中断
和
的电平在每个机器周期的S5P2时被采样并锁存到IE0和IE1中,这个置入到IE0和IE1的状态在下一个机器周期才被其内部的查询电路查询,未产生了一个中断请求。
2、没有满足响应的条件,CPU没有响应中断。
3、没有由硬件生成一条长调用指令转到相应的服务程序入口。
第5章
5-1MCS-51单片机定时/计数器作定时和计数用时,其计数脉冲分别由谁提供?
定时:
计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。
定时时间与时钟频率和定时初值有关。
计数:
外部输入脉冲计数,接相应的外部输入引脚T0(P3.4)或T1(P3.5)
5-2MCS-51单片机内设有几个定时/计数器?
它们是由哪些特殊功能寄存器组成?
答:
MCS-51单片机内部有两个16位可编程的定时器/计数器,即定时器T0和定时器T1。
定时/计数器T0由特殊功能寄存器TH0、TL0(字节地址分别为8CH和8AH)构成,定时/计数器T1由特殊功能寄存器TH1、TL1(字节地址分别为8DH和8BH)构成。
其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时器控制寄存器TCON。
TMOD主要是用于选定定时器的工作方式,TCON主要是用于控制定时器的启动和停止。
5-3定时/计数器作定时器用时,其定时时间与哪些因素有关?
作计数器用时,对外界计数频率有何限制?
答:
定时器/计数器作定时用时,其定时时间与下面因素有关:
晶体振荡器的频率、机器周期、计数器的长度、定时器/计数器初值。
用做"计数器"时,对外部输入端T0、T1上1到0的跳变进行加1计数。
在计数状态下,每个机器周期的S5P2时刻采样外部输入,当第一个机器周期采样为高电平,而在第二个机器周期采样为低电平时,内部计数器加1。
新的计数值在紧接着采样到跳变后的下一机器周期的S3P1出现在计数器中。
由于检测一个1到0的跳变需要2个机器周期,即24个振荡周期,因此外部计数的最快速率为振荡频率的1/24。
外部输入信号的速率向下可以不受限制,但是脉冲宽度必须保证在其电平变化之前能被采样到一次,即至少保持一个完整的机器周期,否则,将会由于采样不到而出现漏计现象。
3-1设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理及应用 单片机 原理 应用 黄友锐 主编 课后 习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)