单片机原理及应用第二版.docx
- 文档编号:4614805
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:19
- 大小:37.31KB
单片机原理及应用第二版.docx
《单片机原理及应用第二版.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用第二版.docx(19页珍藏版)》请在冰豆网上搜索。
单片机原理及应用第二版
第二章习题参考答案
2-151单片机部包含哪些主要逻辑功能部件?
(1)一个8位微处理器CPU。
(2)256B数据存储器RAM和特殊功能寄存器SFR。
(3)4K程序存储器ROM。
(4)两个定时/计数器,用以对外部事件进行计数,也可用作定时器。
(5)四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出。
(6)一个串行端口,用于数据的串行通信
(7)1个可管理5个中断源、2级优先嵌套的中断管理系统;。
(8)片振荡器及时钟发生器。
2-2MCS-51引脚中有多少I/O总线?
它们和单片机对外的地址总线和数据总线有什么关系?
地址总线和数据总线各是几位?
32条I/O口线,分为4组,每组8条,称为P0~P3口,P0口有8位数据总线和地址总线的低8位,P2口有地址总线的高8位,因此单片机的地址总线位是16位,寻址空间为64KB,数据总线位宽为8位。
同时在P3口还R/W控制信号线。
I/O口线的总数与地址总线和数据总线没有多大联系,只是说地址总线和数据总线需要占用一定的端口。
像AT89C2051单片机,只有15条I/O口线(P3.6没有引出,作为部使用),分为P1口(8位)和P3口(7位),没有所谓的地址总线和数据总线,并且P1口并不完整,因为P1.0和P1.1被电压比较器占用了。
2-351单片机的EA,ALE,PSEN信号各自功能是什么?
EA:
为片外程序存储器选用端,该引脚有效(低电平)时,只选用片外程序存储器,否则单片机上电或复位后选用片程序存储器。
ALE:
地址锁存有效信号输出在访问片外程序存储器期间,ALE以每机器周期两次进行信号输出,其下降沿用于控制锁存P0输出的低8位地址;在不访问片外程序存储器期间,ALE端仍以上述频率(振荡频率fosc的1/6)出现,可作为对外输出的时钟脉冲或用于定时目的.
PSEN:
片外程序存储器读选通信号输出端,低电平有效。
2-451系列单片机有哪些信号需要芯片引脚的第二功能方式提供?
P3.0:
PxD串行口输入端
P3.1:
TxD串行口输出端
P3.2:
INT0外部中断0请求输入端,低电平有效
P3.3:
INT1外部中断1请求输入端,低电平有效
P3.4:
T0定时/计数器0技术脉冲输入端
P3.5:
T1定时/计数器1技术脉冲输入端
P3.6:
WR外部数据存数器写选通信信号输出端,低电平有效
P3.7:
RD外部数据存数器读选通信信号输出端,低电平有效
2-551系列单片机的程序状态字PSW中存放什么信息?
其中的OV标志位在什么情况下被置位?
置位是表示什么意思?
●PSW是一个8位标志寄存器,它保存指令执行结果的特征信息,以供程序查询和判别。
●1)做加法时,最高位,次高位之一有进位则OV被置位
2)做减法时,最高位,次高位之一借位则OV被置位
3)执行乘法指令MULAB,积大于255,OV=1
4)执行除法指令DIVAB,如果B中所放除数为0,OV=1
●0V=1,置位反映运算结果超出了累加器的数值围
2-9片RAM低128单元划分为哪几个区域?
应用中怎么样合理有效的使用?
●工作寄存器区,位寻址区,数据缓冲区
①工作寄存器区用于临时寄存8位信息,分成4组,每组有8个寄存器,每次只用1组,其他各组不工作
②位寻址区(20H~2FH),这16个单元的每一位都赋予了一个位地址,位地址围为00H~7FH,位寻址区的每一位都可能当作软件触发器,由程序直接进行位处理。
③由于工作寄存器区,位寻址区,数据缓冲区统一编址,使用同样的指令访问,因此这三个区的单眼既有自己独特的功能,又可统一调度使用,前两个已未使用的单元也可作为一般的用户RAM单元。
2-1051系列单片机的堆栈与通用微机中的堆栈有何异同?
在程序设计时,为什么要对堆栈指针SP重新赋值?
●堆栈是按先进后出或后进先出的远侧进行读/写的特殊RAM区域
51单片机的堆栈区时不固定的,可设置在部RAM的任意区域
●当数据压入堆栈时,SP的容自动加1,作为本次进栈的指针,然后再存取数据SP的值随着数据的存入而增加,当数据从堆栈弹出之后,SP的值随之减少,复位时,SP的初值为07H,堆栈实际上从08H开始堆放信息,即堆栈初始位置位于工作寄存器区域,所以要重新赋值
2-13什么是时钟周期,机器中期和指令周期?
当晶振荡频率为6MHZ时,一条双周期指令的执行时间是多少?
●时钟周期:
CPU始终脉冲的重复周期(2个振荡周期)
机器周期:
一个机器周期包含6个状态周期
指令周期:
执行一条指令所占用的全部时间
12MHZ时,一条双周期指令周期时间为2us
6MHZ时,一条双周期指令周期时间为1us
2-14定时器/计数器定时与计数的部工作有何异同?
●定时工作模式和技术工作模式的工作原理相同,只是计数脉冲来源有所不同:
处于计数器工作模式时,加法计数器对芯片端子T0(P3.4)或T1(P3.5)上的输入脉冲计数;
处于定时器工作模式时,加法计数器对部机器周期脉冲计数。
2-15定时器/计数器有四种工作方式,它们的定时与计数围各是多少?
使用中怎样选择工作方式?
●工作方式0:
定时围:
1~8192us;计数值围:
1~8192
工作方式1:
定时围:
1~65536us;计数值围:
1~65536
工作方式2:
定时围:
1~256us;计数值围:
1~256
工作方式3:
定时围:
1~256us;计数值围:
1~256
●通过TMOD来选择,低4位用于定时器/计数器0,高4位用于定时器/计数器1
M1,M0:
定时器计数器工作方式选择位
2-16定时器/计数器的门控方式与非门控方式有何不同?
使用中怎么样选择哪种工作方式?
初值应设置为多少(十六进制)?
●GATE:
门控位,用于控制定时器/计数器的启动是否受外部中断请求信号的影响。
GATE=1,则定时器/计数器0的启动受芯片引脚INT0(P3.2)控制,定时器/计数器1的启动受芯片引脚INT1(P3.3)控制
GATE=0,则定时器/计数器的启动与引脚INT0、INT1无关,一般情况下GATE=0
2-1851单片机的五个中断源中哪几个中断源在CPU响应中断后可自动撤除中断请求,哪几个不能撤除中断请求?
CPU不能能撤除中断请求的中断源时,用户应采取什么措施?
●可撤除:
计数器T0`T1的溢出中断
不可撤除:
触发的外部中断;发送接收中断
●1)触发的外部中断:
由于CPU对INTx引脚没有控制作用,也没有相应的中断请求标志位,因此需要外接电路来撤除中断请求信号。
2)串行口的发送/接收中断:
当串行口发送完或接收完一帧信息时,SCON的TI,RI向CPU申请中断,响应中断后,接口应计算呢不能自动将TI或RT清0,用户需采用软件方法将TI或RT清0,来撤除中断请求信号
2-21使单片机复位有几种方式?
复位后单片机的初始状态如何?
●上电复位,按钮复位
●(PC)=0000H:
程序的初始入口地址为0000H
(PSW)=00H:
由于RS1(PSW.4)=0,RS0(PSW.3)=0,复位后单片机选择工作寄存器0组
(SP)=07H:
复位后堆栈早起片RAM的08H单元处建立
TH1、TL0、TH0、TL0:
他们的容为00H,定时器/计数器的初值为0
(TMOD)=00H:
复位后定时器/计数器T0、T1定时器方式0,非门控方式
(TCON)=00H:
复位后定时器/计数器T0、T1停止工作,外部中断0、1为电平触发方式
(T2CON)=00H:
复位后定时器/计数器T2停止工作
(SCON)=00H:
复位后串行口工作在移位寄存器方式,且禁止串行口接收
(IE)=00H:
复位后屏蔽所有中断
(IP)=00H:
复位后所有中断源都直指为低优先级
P0~P3:
锁存器都是全1状态,说明复位后4个并行接口设置为输入口
2-2351单片机串行口有几种工作方式?
这几种工作方式有何不同?
各用于什么场合?
●有4种工作方式:
方式0、方式1、方式2、方式3
工作方式:
方式0移位寄存器方式;方式1、方式2、方式3都是异步通信方式
场合:
方式0不用于通信,而是通过外接移位寄存器芯片实现扩展I/O口的功能;方式1用于双机通信;方式2、3主要用于多机通信,也可用于双机通信
第三章参考答案
3-1何谓寻址方式?
51单片机有哪几种寻址方式?
这几种方式是如何寻址的?
●所谓寻址方式,就是CPU执行那个一条指令时怎样找到该指令所要求的操作数的方式。
●1)立即寻址:
操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分与操作码一起存放在程序存储器中,可以立即得到并执行,例如:
MOV A,#30H指令中30H就是立即数。
这一条指令的功能是执行将立即数30H传送到累加器A中的操作。
2)寄存器寻址:
操作数放在寄存器中,在指令中直接以寄存器的名字来表示操作数的地址。
例如MOVA,R0,即将R0寄存器的容送到累加器A中。
3)寄存器间接寻址方式:
由指令指出某一寄存器的容作为操作数地址的寻址方法,例如:
MOVA,R1,将以工作寄存器R1中的容为地址的片RAM单元的数据传送到A中去。
4)直接寻址:
指令中直接给出操作数所在的存储器地址,以供取数或存数的寻址方式称为直接寻址。
例如:
MOVA,40H指令中的源操作数就是直接寻址,40H为操作数的地址。
该指令的功能是把片RAM地址为40H单元的容送到A中
5)变址寻址:
基地址寄存器加变址寄存器间接寻址
6)相对寻址:
相对寻址是以当前程序计数器PC值加上指令中给出的偏移量rel,而构成实际操作数地址的寻址方法。
它用于访问程序存储器,常出现在相对转移指令中。
7)位寻址:
位寻址是在位操作指令中直接给出位操作数的地址,可以对片RAM中的128位和特殊功能寄存器SFR中的93位进行寻址。
3-2访问片、片外程序存储器有哪几种寻址方式?
●采用基址寄存器加变址寄存器间接寻址方式
MOVCA,A+DPTRMOVCA,A+PC
3-3访问片RAM单元和特殊功能寄存器各有哪几种寻址方式?
●访问片RAM有:
立即寻址,寄存器寻址,寄存器间接寻址,直接寻址
●特殊功能有:
直接寻址
3-4访问片外RAM单元和特殊功能寄存器,各有哪几种寻址方式?
●访问片RAM有:
寄存器间接寻址
●特殊功能有:
直接寻址
3-5若要完成以下的数据传送,应如何用51的指令来完成。
(1)R0的容送到R1中。
MOVA,R1
MOVR0,A
(2)外部RAM的20H单元容送R0,送部RAM的20H单元。
MOVDPTR,#0020H
MOVXA,DPTR
MOVR0,A
(3)外部RAM的2000H单元容送R0,送部RAM的20H单元,送外部RAM的20H单元。
MOVDPTR,#2000H
MOVR0,#20H
MOVXA,DPTR
MOVXR0,A
MOVR0,A
(4)ROM的2000H单元容送R0,送部RAM的20H单元,送外部RAM的20H单元。
MOVA,#00H
MOVDPTR,#2000H
MOVR0,#20H
MOVCA,A+DPTR
MOVR0,A
MOVXR0,A
MOVR0,A
3-6试比较下列每组两条指令的区别
1)MOVA,#24与MOVA,24H
2)MOVA,R0与MOVA,R0
3)MOVA,R0与MOVXA,R0
4)MOVA,R1与MOVXA,DPTR
●1)前者为立即寻址,将立即数24H单元的容送到A中;后者为直接寻址,将24H单元的片RAM容送到A中。
2)前者为直接寻址,将R0单元的容送到A中,后者为寄存器间接寻址,将R0中的容为地址的片RAM单元的数据送到A中。
3)前者为寄存器间接寻址,将R0中的容为地址的片RAM单元的数据送到A;后者为寄存器间接寻址,将R0中的容为地址的片外RAM单元的数据送到A中。
4)用R1做地址指针可寻址片RAM的256个单元,但能访问SFR块,也可8位地址访问片外RAM的低256个地址单元(00~ffH);用DPTR做地址指针,用于访问片外RAM的64KB围(0000~ffffH)(16位)。
3-7已知(A)=7AH,(B)=02H,(R0)=30H,(30H)=A5H,(PSW)=80H,写出以下各条指令执行后A和PSW的容。
(1)XCHA,R0(A)=30H,(PSW)=00H,(R0)=7AH,
(2)XCHA,30H(A)=A5H,(PSW)=00H
(3)XCHA,R0(A)=A5H,(PSW)=00H
(4)XCHDA,R0(A)=75H,(PSW)=01H
(5)SWAPA(A)=A7H,(PSW)=01H
(6)ADDA,R0(A)=AAH,(PSW)=00H
(7)ADDA,30H(A)=1FH,(PSW)=81H
(8)ADDA,#30H(A)=AAH,(PSW)=00H
(9)ADDCA,30H(A)=20H,(PSW)=01H
(10)SUBBA,30H(A)=D5H,(PSW)=85H
(11)SUBBA,#30H(A)=4AH,(PSW)=01H
(12)INCR0(A)=7AH,(PSW)=80H;
(13)MULAB
(14)DIVAB
3-8已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,(SP)=30H,
片RAM(7FH)=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出以下指令执行后目标单元的结果。
1)MOVXDPTR,A
2)MOVXA,R1
3)MOVCA,A+DPTR
4)PUSHACC
●1)(2FFEH)=02H
2)(A)=70H
3)(A)=(02H+2FFCH)=(2FFEH)=64H
4)(31H)=02H
3-9DAA指令有什么作用?
怎样使用?
●这条指令是进行BCD码运算时,跟在ADD或ADDC指令之后,将相加后存放在累加器中的结果进行修正。
修正的条件和方法为:
若(A0~3)>9或(AC)=1,则(A0~3)+06H→(A0~3);
若(A4~7)>9或(CY)=1,则(A4~7)+06H→(A4~7)。
若以上二条同时发生,或高4位虽等于9,但低4位修正后有进位,则应加66H修正。
3-10设(A)=83H,(R0)=17H,(17H)=34H,分析当执行下面的每条指令后目标单元的容,及4条指令组成的程序段执行后A的容是什么?
ANLA,#17H;与
ORL17H,A;或
XRLA,R0;异或
CPLA;取反
ANLA,#17H10000011与00010111=00000011
ORL17H,A00110100或00000011=00110111
XRLA,R000110111异或00000011=00110100
CPLA~A11001000CBH
3-11请写出达到下列要求的逻辑操作的指令,要求不得改变未涉及位的容
1)使累加器A的低位置‘1’
2)清累加器A的高4位
3)使A.2和A.3置‘1’
4)清除A.3、A.4、A.5、A.6
SETBACC.1;
ANLA,#0FH;
ORLA,#00001100B
ANLA,#10000111B
3-12指令LJIMPaddr16与AJMPaddr11的区别是什么?
●LJIMPaddr16是长转移,LCALL的作用就是将addr16直接赋给PC
●AJMPaddr11,在当前PC的2KB围跳转(因为addr11就是2KB),即PC高五位不变,低十一位等于addr11。
3-13试说明指令CJNER1,#7AH,10H的作用。
若本条指令地址为2500H,其转移地址是多少?
当前地址2500H。
执行该指令后PC为2503H,加上10H后,目标地址是2513H。
3-14下面执行后(SP)=42H,(A)=40H,(B)=40H,并解释每条指令的作用。
ORG2000H;起始地址为2000H
MOVSP,#40H;(SP)=40H
MOVA,#30H;(A)=30H
LCALL2500H;调用2500H子程序
ADDA,#10H;(A)<—(A)+10,(A)=40H
MOVB,A;(B)=40H
HERE:
SJMPHERE
ORG2500H;起始地址为2500H
MOVDPTR,#2009H;(DPTR)=2009H
PUSHDPL;(SP)=40H+1=41H
PUSHDPH;(SP)=41H+1=42H
RET;返回
3-15已知P1.7=1,A.0=0,C=1,FIRST=1000H,SECOND=1020H,试写出下列指令的执行结果。
(1)MOV26H,C1
(2)CPLA.01
(3)CLRP1.70
(4)ORLC,/P1.71
(5)FIRST:
JCSECOND
(6)FIRST:
JNBA.0,SECOND
(7)SECOND:
JBCP1.7,FIRST
3-16经汇编后,下列各条语句标号将是什么值?
ORG2000H
TABLE:
DS5
WORD:
DB15,20,25,30(2005H)=15,
FANG:
EQU1000HFANG=1000H
BEGIN:
MOVA,R0
3-17下面程序段经汇编后,从2000H开始的各有关存储器单元的容是什么?
ORG2000H
TAB:
DB10H,20H(2000H)=10H,(2001H)=20H
DW2100H,23H(2002H)=21H,(2003H)=00H,(2004H)=00H,(2005H)=23H
DWTAB(2006H)=20H,(2007H)=00H
DB‘WORK’(2008H)=57H等
3-18设fosc=12MHZ,定时器/计数器0的初始化程序和中断服务程序如下:
MOVTH0,#0DH
MOVTL0,#0D0H
MOVTMOD,#01H
SETBTR0
:
;中断服务程序
ORG000BH
MOVTH0,#0DH
MOVTL0,#0D0H
:
RETI
问:
1)该定时器/计数器工作于什么方式?
2)相应的定时时间或计数值是多少?
3)为什么在中断服务程序中药重置定时器/计数器的初值?
●1)方式1
2)定时时间为:
fosc=12MHZTcy=1us
T=N*Tcy
=(65536-x)*Tcy
定时围:
1~65536
计数值为:
N=216-x=65536-x
计数围为:
1~65536
3)定时器T0的溢出对外无脉冲信号,重置定时器/计数器的初值可以再形成计数脉冲
3-19用位操作指令,实现下列逻辑操作。
(1)P1.7=A.0∧(B.0∨P2.1)∨/P3.2
MOVC,B.0
ORLC,P2.1
ANLC,ACC.7
ORLC,/P3.2
MOVP1.7,C
(2)PSW.5=P1.3∧/A.2∨B.5∧/P1.1
MOVC,P1.3
ANLC,/ACC.2
MOVP1.0,C
MOVC,B.5
ANLC,/P1.1
ORLC,P1.0
MOVPSW.5,C
3-20试编写一段程序,将片RAM的20、21H、22H连续三个单元的容依次存入2FH、
2EH和2DH单元。
MOV2FH,20H
MOV2EH,21H
MOV2DH,22H
3-21试编写程序完成将片外数据存储器地址为1000H~1030H的数据块,全部搬迁到片RAM的30H~60H中,并将源数据块区全部清零。
MOVR1,#30H
MOVR0,#30H
MOVDPTR,#1000H
LOOP:
MOVA,DPTR
MOVXR0,A
INCR0
INCDPTR
DJNZR1,LOOP
3-22设有100个有符号数,连续存放在以2000H为首地址的存储区中,试编程统计其中正数、负数、零的个数。
ZEROEQU20H;零的统计
NEGETIVEEQU21H;负数的统计
POSITIVEEQU22H;正数的统计
COUNTEQU100;比较个数
ORG0000H
LJMPMAIN
ORG0040H
MOVZERO,#0
MOVNEGETIVE,#0
MOVPOSITIVE,#0
MOVR2,#0
MOVDPTR,#2000H
LOOP:
MOVXA,DPTR
CJNEA,#0,NONZERO
INCZERO
AJMPNEXT
NONZERO:
JCNEG
INCPOSITIVE
AJMPNEXT
NEG:
INCNEGETIVE
NEXT:
INCDPTR
INCR2
CJNER2,#COUNT,LOOP
SJMP$
3-23编写一个延时1ms的子程序
TIME1MS:
MOVR6,#2
TIME1:
MOVR7,#248
DJNZR7,$;延时498us
DJNZR6,TIME1;重循环为500us;运行两次为1ms,共1.002ms
RET
3-24试编写一段程序,将片30H~32H和33H~35H中的两个3字节压缩BCD码十进制数相加,将结果以单字节BCD码形式写到外部RAM的1000H~1005H单元。
CLRC
MOVR7,#3
MOVDPTR,#1000H
MOVR0,#30H
MOVR1,#33H
LOOP:
MOVA,R0
ANLA,#0FH
MOVR2,A
MOVA,R1
ANLA,#0FH
ADDCA,R2
DAA
MOVXDPTR,A
INCDPTR
MOVA,R0
SWAPA
ANLA,#0FH
MOVR2,A
MOVA,R1
SWAPA
ANLA,#0FH
ADDCA,R2
DAA
MOVXDPTR,A
INCR0
INCR1
INCDPTR
DJNZR7,LOOP
3-2551单片机从串行口发送缓冲区首址为30H的10个ASCII码字符,最高位用于奇偶校验,采用偶校验方式,要求发送的波特率为2400波特,时钟频率ƒosc=12MHz,试编写串行口发送子程序。
单片机采用12MHz晶振;设串行口工作于方式1;定时器/计数器T1用作波特率发生器,工作于方式2;PCON中的SMOD位为1;发送的波特率要求为2400。
定时器/计数器T1初值计算:
根据公式波特率=2SMOD×溢出率/32有
溢出率=2400×16=38400
溢出周期=1/溢出率=26μ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 第二