单片机复习资料.docx
- 文档编号:29343443
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:25
- 大小:209.10KB
单片机复习资料.docx
《单片机复习资料.docx》由会员分享,可在线阅读,更多相关《单片机复习资料.docx(25页珍藏版)》请在冰豆网上搜索。
单片机复习资料
单片机复习资料
1、P15-1:
除了单片机这一名称之外,单片机还可以称为微控制器和嵌入式控制器
2、P40-1:
AT89S51单片机内集成了哪些功能部件?
答:
AT89S51单片机的片内都集成了如下功能部件:
(1)1个微处理器(CPU);
(2)128个数据存储器(RAM)单元;(3)4KFlash程序存储器;(4)4个8位可编程并行I/O口(P0口、P1口、P2口、P3口);(5)1个全双工串行口;(6)2个16位定时器/计数器;(7)1个看门狗定时器;(8)一个中断系统,5个中断源,2个优先级;(9)25个特殊功能寄存器(SFR),(10)1个看门狗定时器。
3、P40-2:
说明AT89S51单片机的
引脚接成高电平与低电平的区别。
答:
当
脚为高电平时,单片机读片内程序存储器(4K字节Flash)中的内容,但在PC值超过0FFFH(即超出4K字节地址范围)时,将自动转向读外部程序存储器内的程序;当
脚为低电平时,单片机只对外部程序存储器的地址为0000H~FFFFH中的内容进行读操作,单片机不理会片内的4K字节的Flash程序存储器。
4、P40-3:
在AT89S51单片机中,如果采用6MH晶振,一个机器周期为2µs。
5、P40-4:
AT89S51的机器周期等于12个时钟振荡周期。
6、P41-5:
64K程序存储器空间中有5个单元地址对应AT89S51单片机对应于5个中断源的中断入口地址,请写出这单元的入口地址及对应的中断源。
答:
64K程序存储器空间中有5个特殊单元分别对应于5个中断源的中断服务程序入口地址,见下表:
表5个中断源的中断入口地址
入口地址
中断源
0003H
外部中断0(
)
000BH
定时器0(T0)
0013H
外部中断1(
)
001BH
定时器1(T1)
0023H
串行口
7、P41-8:
若A中的内容为63H,那么,P标志位的值为0。
8、P41-9:
判断下列说法是否正确。
(1)使用AT89S51且
=1时,仍可外扩64KB的程序存储器。
(×)
(2)区分片外程序存储器和片外数据存储的最可靠的方法是看其位于地址范围的低端
还是高端。
(×)
(3)在AT89S51中,为使准双向的I/O口工作在输入方式,必须事先预置为1。
(√)
(4)PC可以看成是程序存储器的地址指针。
(√)
9、P41-11:
判断以下有关PC和DPTR的结论是否正确。
(1)指令可以访问寄存器DPTR,而PC不能用指令访问(√)。
(2)它们都是161位寄存器(√)。
(3)在单片机运行时,它们都具有自动加1功能(×)。
(4)DPTR可以2个8位寄存器使用,但PC不能。
(√)
10、P41-13:
判断下列说法是否正确。
(1)AT89S51中特殊功能寄存器(SFR)就是片内RAM中的一部分.(√)
(2)片内RAM的位寻址区,只能供位寻址用,而不能进行字节寻址。
(×)
(3)AT89S51共有21个特殊功能寄存器,它们的位都是可以用软件设置的,因此可以进行位寻址。
(×)
(4)SP称之为堆栈指针,堆栈是单片机内部的一个特殊区域,与RAM无关。
(×)
11、P41-14:
在程序运行中,PC值是(3)
(1)当前正在执行指令的前一条指令的地址。
(2)当前正在执行指令的地址。
(3)当前正在执行指令的下一条指令的地址。
(4)控制器中指令寄存器的地址。
12、P41-15:
通过堆栈操作实现子程序调用时,首先要把PC的内容入栈,以进行断点保护。
调用子程序返回指令时,再进行出栈保护,把保护的断点关回到PC。
13、P41-16:
AT89S51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为AT89S51的PC是16位的,因此寻址的范围为64K。
15、P41-18:
当单片机运行出错或程序限入死循环时,如何摆脱困境?
答:
按下复位按钮。
16、P41-19:
判断下列说法是否正确?
(1)PC是一个不可地址的特殊功能寄存器。
(√)
(2)单片机的主频越高,其运算速度越快。
(√)
(3)在AT89S51单片机中,一个机器周期等于1
s.(×)
(4)特殊功能寄存器SP内存放的是栈顶首地址单元的内容。
(×)
17、P66-1:
判断以下指令的正误。
(1)MOV28H,@R2;(×)
(2)DECDPTR;(×)
(3)INCDPTR;(√)(4)CLRR0;(×)
(5)CPLR5;(×)(6)MOVR0,R1;(×)
(7)PUSHDPTR;(×)(8)MOVF0,C;(√)
(9)MOVF0,ACC.3;(×)(10)MOVXA,@R1;(√)
(11)MOVC30H;(√)(12)RLCR0(×)
18、P66-2判断下列说法是否正确。
(1)立即数寻址方式是被操作的数据本身就在指令中,而不是它的地址在指令中。
(√)
(2)指令周期就是执行一条指令的时间。
(√)
(3)指令中直接给出的操作数称为直接寻址。
(×)
(4)内部寄存器Rn(n=0~7)可作为间接寻址寄存器。
(×)
19、P66-3在基址加变址寻址方式中,以(A)作为变址寄存器,以(PC)或(DPTR)
作为基址寄存器。
20、P66-6假定累加器中的内容为30H,执行指令:
1000H:
MOVCA,@A+PC
后,把程序存储器(1031H)单元的内容送入累加器中。
21、P66-7在AT89S51中,PC和DPTR都用于提供地址,但PC是为访问(程序)
存储器提供地址,而DPTR是为访问(数据)存储器提供地址。
22、P67-11写出完成如下要求的指令,但不能改变未涉及位的内容。
(1)把ACC.3,ACC.4ACC.5和ACC.6清0。
(2)把累力器A的中间4位清0。
(3)把ACC.2和ACC.3置1。
答:
(A)ANLA,#87H
(B)ANLA,#0C3H
(C)ORLA,#0CH
23、P67-12假定(A)=83H,(R0)=17H,(17H)=34H,执行下列指令后(A)=0CBH。
ANLA,#17H
ORL17H,A
XRLA,@R0
CPLA
24、P67-13假设(A)=55H,(R3)=0AAH,在执行指令:
“ANLA,R3”后,
(A)=00H,(R3)=0AAH。
25、P67-14如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,
则执行下列指令后,(DPH)=3CH,(DPL)=5FH,(SP)=50H
POPDPH,
POPDPL
POPSP
26、P67-15:
假定(SP)=60H,(A)=30H,(B)=70H,执行下列指令后,SP的内容为
62H,61H单元的内容为30H,62H单元的内容为70H
PUSHACC
PUSHB
27、P67-17:
对程序存储器的读写操作,只能使用D
(1)MOV指令
(2)PUSH指令(3)MOVX指令(4)MOVC指令
28、P67-18:
以下指令中,属于单纯读引脚的指令是C
(A)MOVP1,A(B)ORLP1,#0FH
(C)MOVC,P1.5(D)ANLP1,#0FH
29、P85-5:
试编写一个程序,将内部RAM中45H单元的高4位清0,低4位置1。
MOVA,45H
ANLA,#0FH
ORLA,#0FH
30、P100-4下列说法正确的是D。
(1)各中断源发出的中断请求信号,都会标记在AT89S51的IE寄存器中。
(2)各中断源发出的中断请求信号,都会标记在AT89S51的TMOD寄存器中。
(3)各中断源发出的中断请求信号,都会标记在AT89S51的IP寄存器中。
(4)各中断源发出的中断请求信号,都会标记在AT89S51的TCON和SCON寄存器中。
31、P100-5:
AT89S51单片机响应外部中断请求的典型时间是多少?
在哪些情况下,CPU将推迟对外部中断请求的响应?
答:
在一个单一中断的系统里,AT89S51单片机对外部中断请求的响应时间总是在
3~8个机器周期之间。
在下述三种情况下,AT89S51将推迟对外部中断请求的响应:
(1)AT89S51正在处理同级或更高优先级的中断。
(2)所查询的机器周期不是当前正在执行指令的最后一个机器周期。
(3)正在执行的指令是RETI或是访问IE或IP的指令。
如果存在上述三种情况之一,AT89S51将丢弃中断查询结果,将推迟对外部中断请求的响应。
32、P100-6:
中断查询确认后,在下列各种AT89S51单片机情况下,能立即进行
响应的是D
(1)当前正在进行高优先中断处理。
(2)当前正在执行RETI指令。
(3)当前指令是DIV指令。
(4)当前指令是:
MOVA,R3
33、P100-8:
编写外部中断1为跳沿触发的中断初始化程序。
答:
SETBIT1
SETBEX1
SETBEA
34、P100-9:
在AT89S51的中断请求源中,需要外加电路实现中断撤消的是A
(1)电平方式的外部中断请求。
(2)跳沿方式的外部中断请求。
(3)外部串行中断。
(4)定时中断。
35、P100-11:
下列说法正确的是(A)、(C)、(D)
(A)同一级别的中断请求按时间的先后顺序响应。
(B)同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。
(C)低优先级中断请求不能中断高优先级中断请求,但高优先级中断请求能中断低优先级中断请求。
(D)同级中断不能嵌套。
36、117-2:
如果采用的晶振频率为3MH,定时器/计数器工作在0、1、2下,其最大定时
时间为多少?
答:
因为机器周期:
所以定时器/计数器工作方式0下,其最大定时时间为
同样可以求得方式1下的最大定时时间为:
方式2下的最大定时时间为1024ms。
37、P117-3:
定时器/计数器用作定时器模式时,其计数脉冲由谁提供?
定时时间与哪
些因素有关?
答:
定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。
定时时间与时钟频率和定时初值有关。
38、P117-4:
定时器/计数器用作计数器模式时,对外界计数频率有何限制?
答:
由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
39、P117-5:
采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作模式。
定时1ms后,又转为计数工作模式,如此循环不止。
假定AT89S51单片机的晶振频率为6MH,使用方式1实现,要求编写出程序。
答:
定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。
除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。
参考程序如下:
ORG0000H
LJMPMAIN
ORG000BH
LJMPIT0P
MAIN:
MOVTMOD,#06H;定时器/计数器T0为计数方式2
MOVTL0,#156;计数100个脉冲的初值赋值
MOVTH0,#156
SETBGATE;打开计数门
SETBTR0;启动T0,开始计数
SETBET0;允许T0中断
SETBEA;CPU开中断
CLRF0;设置下一轮为定时方式的标志位
WAIT:
AJMPWAIT
IT0P:
CLREA;CPU关中断
JBF0,COUNT;F0=1,转计数方式设置
MOVTMOD,#00H;定时器/计数器T0为定时方式0
MOVTH0,#0FEH;定时1ms初值赋值
MOVTL0,#0CH
SETBEA
RETI
COUNT:
MOVTMOD,#06H
MOVTL0,#156
SETBEA
RETI
40、P117-6:
定时器/计数器的工作方式2有什么特点?
适用于哪些场合?
答:
定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,比如波特率的产生。
41、P117-7:
编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400us,占空比为10:
1的矩形脉冲。
答:
根据题意,从P1.0输出的矩形脉冲的高低电平的时间为10:
1,则高低电平的时间分别为363.63μs和36.37μs。
如果系统采用6MHz晶振的话,Tcy=2μs,因此高低电平输出取整,则约为364μs和36μs。
参考程序如下:
ORG0000H
LJMPMAIN
ORG000BH
LJMPIT0P
MAIN:
MOVTMOD,#02H;定时器/计数器T0为定时方式2
MOVTL0,#4AH;定时364μs初值赋值
SETBTR0;启动T0,开始计数
SETBET0;允许T0中断
SETBEA;CPU开中断
SETBP1.0
WAIT:
AJMPWAIT
IT0P:
CLREA
CLRP1.0;关中断
MOVR0,#9
DLY:
DJNZR0,DLY;延时36μs
MOVTL0,#4AH;定时364μs初值赋值
SETBP1.0
SETBEA
RETI
42、P117-8:
一个定时器定时的时间有限,如何利用两个定时器的串行定时来实现较长时间的定时?
答:
方法1,在第一个定时器的中断程序里关闭本定时器的中断程序,设置和打开另一个定时器;在另一个定时器的中断程序中关闭本定时中断,设置和打开另一个定时器。
这种方式的定时时间为两个定时器定时时间的和。
方法2,一个作为定时器,在定时中断后产生一个外部计数脉冲(比如由P1.0接
产生),另一个定时器工作在计数方式。
这样两个定时器的定时时间为一个定时器的定时时间乘以另一个定时器的计数值。
43、P140-1:
帧格式为一起始位,8个数据位和一个停止位的异步串行通信方式是1
44、P140-2:
在串行通信中,收发双方对波特率的设定应该是相等的的。
45、P140-3:
下列选项中,(答:
A.对;B.对;C.错;D.对;E.对)是正确的。
A、串行口通信的第9数据位的功能可由用户定义。
B、发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的。
C、串行通信帧发送时,指令把TB8位的状态送入发送SBUF中。
D、串行通信接收到的第9位数据送SCON寄存器的RB8中保存。
E、串行口方式1的波特率是可变的,能过定时器/计数器T1的溢出率设定。
46、P140-4:
通过串行口发送或接收数据时,在程序中应使用3。
1、MOVC指令2、MOVX指令3、MOV指令4、XCHD指令
47、P140-5:
串行口工作方式1的波特率是C
A、固定的,为fosc/32B、固定的,为fosc/16
C、可变的,通过定时器/计数器T1的溢出率设定D、固定的,为fosc/64
48、P140-7:
AT89S51单片机的串行口有几种工作方式,有几种帧格式?
各种工作方式的波特率如何确定?
答:
串行口有4种工作方式:
方式0、方式1、方式2、方式3;有3种帧格式,方式2和3具有相同的帧格式;方式0的发送和接收都以fosc/12为固定波特率,
方式1的波特率=2SMOD/32×定时器T1的溢出率
方式2的波特率=2SMOD/64×fosc
方式3的波特率=2SMOD/32×定时器T1的溢出率
49、P140-9:
为什么定时器/计数器T1用作串行口波特率发生器时,常采用方式2?
若已知时钟频率、串行口通信的波特率,如何计算装入T1的波特率?
答:
因为定时器/计数器在方式2下,初值可以自动重装,这样在做串口波特率发生器设置时,就避免了执行重装参数的指令所带来的时间误差。
设定时器T1方式2的初值为X,计算初值X可采用如下公式:
波特率=
50、P140-10:
若晶体振荡器为11.0592MH,串行口工作方式1,波特率为4800bit/s,写出用T1作为波特率发生器的方式控制字和计数初值。
答:
经计算,计数初值为FAH,初始化程序如下:
ANLTMOD,#0F0H;屏蔽高4位
ORLTMOD,#20H;控制字
MOVTH1,#0FAH;写入计数初值
MOVTL1,#0FAH
MOVSCON,#40H
51、P140-14:
为什么AT89S51单片机串行口方式0帧格式没有起始位(0)和停止位
(1)?
答:
串行口的方式0为同步移位寄存器输入输出方式,常用于外接移位寄存器,以扩展并行I/O口,一般不用于两个MCS-51之间的串行通信。
该方式以fosc/12的固定波特率从低为位到高位发送或接受数据。
52、P21:
写出下面特殊功能寄存器PSW名称及各位功以名称:
答:
PSW叫程序状态寄存器,其各位功能名称如下:
(1)Cy:
进位标志位。
(2)Ac:
辅助进位标志位。
(3)F0:
用户设定标志位。
(4)RS1和RS0:
4组工作寄存器区选择控制位
(5)OV:
溢出标志位。
(6)D1:
保留位,未用。
(7)P:
奇偶标志位。
53、右图是一个单片机及外围电
路图。
采用4个按钮开关分别
控制4只发光二极管,按下某
个开关,相应发光二极管发光,
如果同时按下4个开关,4只
发光二极管都发光,松开开关,
发光二极管熄灭。
请分别用汇
编语言和C语言编出程序。
解:
(1)汇编程序如下:
MAIN:
MOVP3,#0FFH
LOOP:
MOVP1,P3
LJMPLOOP
END
(2)C语言程序如下:
#include
voidmain(void)
{
P3=oxFF;
While
(1)
{
P1=P3;
}
}
54:
参考下面电路图,编出程序让8个灯中的一个灯成流水灯,停留时间自定,流水方向左右均可。
程序如下
ORG0000H;设置下条指令地址
MAIN:
MOVP1,#0FEH;设P1口初值
MOVSP,#60H;设堆栈底
DELY:
LCALLDEL0;调用子程序
MOVA,P1;P1送A
RLA;左循环一位
MOVP1,A;返回P1口
LJMPDELY;返回调用循环
DEL0:
MOVR7,#0C8H;子程序入口延时
DEL1:
MOVR6,#0C8H;设置循环值
DEL2:
MOVR5,#0C8H;设置循环值
DEL3:
DJNZR6,DEL3;自循环
DEL4:
DJNZR5,DEL4;自循环
DJNZR7;DEL1;总循环
RET;子程序返回
END;程序结束
55、设计一个将36H从串口送入位移寄存器的电路及一段程序。
解:
位移寄存器为74LS164。
根据74LS164的特点和单片机的工作特点,应选择串口方式0工作方式,并设计电路和程序如下:
MOVSCON,#00H;设置SCON为方式0工作
CLRP1.0;将P1.0置0,即对74LS164清0
NOP;空操作,让P1.0延长1机器周器清0
NOP;空操作,让P1.0再延长1机器周器清0
SETBP1.0;将P1.0置1,即结束对74LS164清0
MOVSBUF,#36H;将36H装入通信口缓冲器发送.
JNBTI,$;进入等待.只有RXD发送8位数据完
;毕,TI才会置1,执行下一条指令.
CLRTI;将TI清0.数据发送完毕标志TI必须
;清0,以便发送下一帧数据.
串口方式0数据发送电路
56、
程序如下:
CLRP1.0;让P.0为低电平,则D7~D0数据就会存入
;74LS165中.
NOP;空操作,让数据存入74LS165中延长.
NOP;空操作,让数据存入74LS165中再延长.
SETBP1.0;让P.0为高电平,结束数据就会存入74LS165
MOVSCON,#10H;将10H(00010000)送SCON中,让REN位
;为1,设置串行通信为方式0,并启动数据接收.
JNBRI,$;等待数据接收完成,RI才会为1,执行下条指令.
CLRRI;RI清0,为下一帧接收作准备.
MOVA,SBUF;将SBUF中数据取走.
55、根据下面电路图,请编制LED灯从0显示到9的程序.可选用汇编和C语言写出.
Ω
330Ω
LED数码显示电路(共阴接法)
ORG0000HMAIN:
MOVB,#0AH;查表数值入BMOVR3,#00H;R3清0CLRA;A清0MOVSP,#60H;设置栈底MOVDPTR,#TAB;表首址入DPTRCYPC:
MOVCA,@A+DPTR;查表MOVP2,A;查表值送P2口LCALLDEH0;调用延时子程序INCR3;R3自增1MOVA,R3;R3送ADJNZB,CYPC;B减1不为0转CYPCLJMPMAIN;转MAINDEH0:
MOVR7,#0FFH;设R7值,延时子程序入口。
DEH1:
MOVR6,#0FFH;设R6值DEH2:
MOVR5,#0FFH;设R5值DEH3:
DJNZR6,DEH3;自减DEH4:
DJNZR5,DEH4;自减DJNZR7,DEH1;总循环RET;返回主程序TAB:
DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FHEND
C语言程序:
#include
//以下是定义一个数据表格
unsignedcharcodeTAB[10]=
{//定义表格一定要使用code,这样在ROM存储区中
0x3F,//表格第1步数据0b00111111
0x06,//表格第2步数据0b00000110
0x5B,//表格第3步数据0b01011011
0x4F,//表格第4步数据0b01001111
0x66,//表格第5步数据0b01100110
0x6D,//表格第6步数据0b01101101
0x7D,//表格第7步数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 复习资料
![提示](https://static.bdocx.com/images/bang_tan.gif)