单片机复习题带答案版Word文件下载.docx
《单片机复习题带答案版Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机复习题带答案版Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
方法二、MOVR0,B
MOVB,A
MOVA,R0
方法三、PUSHACC
PUSHB
POPACC
POPB
28、何谓堆栈?
为什么要设置堆栈?
栈区是怎么样确定的?
数据进栈、出栈有何种规律?
出栈用什么指令?
进栈用什么指令?
进栈、出栈时堆栈指针将怎样变化?
29、基址寄存器加变址寄存器间接寻址指令中使用PC与DPTR有何区别?
30、区分下列指令的不同功能:
MOVA,#24H与MOVA,24H
31、分析8051单片机数据传送指令中MOV、MOVC、MOVX的作用。
32、JMP、AJMP、SJMP指令有何区别?
33、用于外部数据传送的指令有哪几条?
有何区别?
34、MCS-51单片机扩展系统中,为什么P0口要接一个8位的锁存器,而P2口却不接?
35、单片机系统中的定时和计数功能有何区别?
分别适用于什么场合?
简述其工作原理。
36、说明MCS-51汇编语言源程序的基本格式。
37、请举例说明MCS-51汇编语言中伪指令的作用。
38、简述/PSEN控制信号线的作用。
39、基址寄存器加变址寄存器间接寻址指令包括哪两种?
请列举说明。
40、A/D转换接口中采样保持电路的作用是什么?
省略采样保持电路的前提条件是什么?
41、单片机用于外界过程控制中,为何要进行A/D、D/A转换?
42、MCS-51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据冲突,为什么?
43、在既有片内程序存储器、又扩展片外程序存储器的情况下,两部分存储器的编址如何进行?
44、用线选法和译码扩展存储器各有什么特点?
45、简述MCS-51单片机扩展时/WE、/RD控制信号线的作用。
46、请说明动态扫描和静态扫描显示方式的特点。
47、区分下列指令的不同功能:
MOVA,R0与MOVA,@R0。
48、访问位地址2BH和字节地址2BH的区别是什么?
49、简述中断系统初始化步骤
1、置位相应中断源的中断允许
2、设定所有终端源的中断优先级
3、若为外部中断,则应规定低电平还是负边沿的中断触发方式
50、简述键盘的工作原理。
二、程序题
1、设被加数和加数分别在以ADR1和ADR2为初址的片内数据存储器中,自低字节起,由低字节依次存放;
他们的字节数为L;
请编程将他们加得的和放在原存放被加数的单元中。
MOVR0,#ADR1
MOVR1,#ADR2
MOVR2,L
LOOP:
MOVA,@R0
ADDCA,@R1
MOV@R0,A
INCR0
INCR1
DJNZR2,LOOP
DONE:
2、设被减数和减数分别在以ADR1和ADR2为初址的片内数据存储器中,自低字节起,由低字节依次存放;
被减数够减,即最稿高字节想减时不至借位;
请编程将他们减得的差放在原存放被减数的单元中
MOVR0,#ADR1
MOVR1,#ADR2
MOVR2,#L
CLRC
LOOP:
MOVA,@R0
SUBBA,@R1
MOV@R0,A
INCR0
INCR1
DJNZLOOP
3、将ROM中自2000H单元起的100个数,按序移至片外RAM自2080H单元起的内存区间去MOVDPTR,#2000H
MOVR1,#64H
MOVR2,#0
MOVA,R2
MOVCA,@A+DPTR
MOVR3,A
MOVA,#8OH
ADDA,R2
MOVDPL,A
MOVA,R3
MOVX@DPTR,A
INCR2
MOVDPL,#0
DJNZR1,LOOP
DONE:
4、编写程序将片外数据存储器地址为1000H~102FH的数据块,全部搬迁到片内RAM30H~5FH中,并将原数据块区域全部清零。
MOVDPTR,#1000H
MOVR0,#30H
MOVR1,#30H
LOOP:
MOVXA,@DPTR
MOV@R1,A
CLRA
MOVX@DPTR,A
INCDPTR
INCR1
DJNZR0,LOOP
5、设有100个有符号数,连续存放在以2000H为首址的片外数据存储器中,试编程统计其中正数、负数和零的个数,统计的个数分别放在R0、R1、R2中。
CLRA
MOVR0,A
MOVR1,A
MOVR2,A
MOVDPTR,#2000H
MOVR3,#100
JZZERO
JBA.7,NEG
INCR0
SJMPLL
ZERO:
INCR2
SJMPLL
NEG:
LL:
INCDPTR
DJNZR3,LOOP
6、将片内RAM60H~69H单元中的10个数相加,和的低8位存入7EH,高8位存入7FH。
MOV7FH,#00H
MOVR1,#09H
MOVR0,#60H
MOVA,@R0
ADDA,@R0
JNCLP1
INC7FH
LP1:
DJNZR1,LOOP
MOV7EH,A
…
7、将寄存器A中的十六进制数(该数为0—F)转换为ASCII码,转换后的数仍然放在寄存器A中。
MOVR2,A
ADDA,#0F6H
MOVA,R2
JNCAD30
ADDA,#07H
AD30:
ADDA,#30H
8、编写程序,统计自P1口输入的数字串中的正数、负数及零的个数,统计的个数分别存放在R0、R1、R2三个工作寄存器中。
ENTER:
MOVA,P1
JBP1.7,NEG
SJMPENTER
SJMPENTER
9、编写程序,将外部数据存储器中的5000H—50FFH单元全部清零
MOVDPTR#5000H
MOVR0,#00H
CLRA
MOVX@DPTR,A
INCDPTR
DJNZR0,LOOP
HERE:
:
SJMPHERE(RET,SJMP$等)
10、分析下列程序的功能
PUSHACC
PUSHB
POPACC
POPB
是通过累加器ACC与寄存器B数据交换
11、如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:
POPDPH;
POPDPL;
POPSP;
则:
(DPH)=___3CH___;
(DPL)=_____5FH_____;
(SP)=_____50H_____;
12、如果(DPTR)=5678H,(SP)=42H,(3FH)=12H,(40H)=34H,(41H)=50H,(42H)=80H,则执行下列指令后:
POPDPH
POPDPL
RET
(PCH)=__34H__;
(PCL)=___12H____;
(DPH)=__80H__;
(DPL)=___50H__;
13、分析以下程序的功能。
程序执行后片内RAM42H、43H单元和进位标志位C
中内容为多少?
MOVR0,#40H
MOVA,@R0
INCR0
ADDA,@R0
MOV@R0,A
CLRA
ADDCA,#0
MOV@R0,A
14、阅读并分析以下程序片段的功能。
MOVR0,#40H
MOVR1,#10H
CLRC
MOVA,@R0
INCR0
SUBBA,@R0
JNCNEXT
DECR0
XCHA,@R0
INCR0
MOV@R0,A
NEXT:
DJNZR1,LOOP
15、试编写程序段,将片内RAM的20H-2FH共16个连续单元清零。
16、分析下列程序段的功能。
MOV30H,#0
MOV31H,#0
MOV32H,#0
MOVDPTR,2000H
MOVR1,#100
L4:
MOVXA,@DPTR
INCDPTR
CJNEA,#0,L1
INC32H
SJMPL2
L1:
JCL3
INC30H
L3:
INC31H
L2:
DJNZR1,L4
SJMP$
17、读程序:
已知:
在8051单片机的片内RAM中,(30H)=25H,(31H)=1DH
MOVR0,#30H
MOVA,@R0
SWAPA
INCR0
XCHDA,@R0;
交换低半字节
MOV30H,A
执行该程序后,片内RAM30H单元内的数据是___,31H单元内的数据是___。
(30H)=5DH,(31H)=12H
18、已知:
片内RAM(30H)=98H,(31H)=AFH
MOVR0,#31H
MOVA,@R0
DECR0
SUBBA,@R0
MOVB,#10
DIVAB
MOV@R0,A
INCR0
MOV@R0,B
执行该程序后,片内RAM30H内的数据是(),31H内的数据是()
01H07H
19、已知:
片内RAM(30H)=12H(31H)=34H,片外RAM(30H)=56H,(31H)=78H
MOVR1,#30H
MOVX,A,@R1
MOV@R1,A
INCR1
MOVXA,@R1
56H78H
20、设MCS-51晶振为12Mz,设计一个软件延时程序,延时时间为10ms。
21、已知:
MOVA,@R1
MOVX@R1,A
执行该程序后,片内RAM30H内的数据是(),片外31H内的数据是()
56H34H
22、编写程序将片外数据存储器地址为1000H~102FH的数据块,全部搬迁到片内RAM30H~5FH中,并将原数据块区域全部清零。
START:
23、设ROM、片内RAM、片外RAM各有关单元的内容示如下图,问复位执行下列程序段后(A)=?
0000AJMP030H
ORG0030H
0030MOVR0,#32H
MOVR1,A
MOVXA,@R1
MOVCA,@A+DPTR
24、在外部ROM/EPROM中,从2000H单元开始依次存放0~5的平方值:
0、1、4、9、…25,要求依据累加器中的值(0~5)来查找所对应的平方值,分析下述程序的结果
MOVDPTR,#2000H
MOVA,#05H
MOVCA,@A+DPTR
执行结果:
(DPTR)=2000H,(A)=25
25、把外部RAM单元中从8000H开始的30个字节数据传送到8100H开始的单元中,编程实现
MOVA,R4
JZA,EXIT
MOVXA,@DPTR
INCDPTR
PUSHDPH
PUSHDPL
MOVDPH,R3
MOVDPL,R2
MOV@DPTR,A
INCDPTR
MOVR2,DPL
MOVR3,DPH
POPDPL
POPDPH
DJNZR4,#00H,LOOP
EXIT:
RET
26、编写程序,把外部RAMl000H-10FFH区域内的数据逐个搬到从2000H开始的区域。
MOVDPL,#00H
MOVDPH,#10H
MOVXA,@DPTR
MOVDPH,#20H
INCDPL
MOVA,DPL
CJNEA,#0FFH,LOOP
…
END
27、阅读下列程序,并要求:
(l)说明程序的功能。
(2)写出涉及的寄存器及片内RAM单元的最后结果
MOVR0,#40H
ADDA,@R0
MOV@R0,A
CLRA
ADDCA,#0
说明:
片内RAM(40H)=98H,(41H)=AFH。
R032H;
A31H;
R131H;
A33H;
A30H
28、编写程序生成1000us的等宽脉冲方波。
机器晶振为6Mhz,使用T1以方式1工作,由P1.0输出。
MOVTH1,#0FFH
MOVTL1,#06H
MOVTMOD,#10H
SETBEA
SETBET1
SETBTR1
HERE:
SJMPHERE
INIT:
CPLP1.0
RETI
29、分析下面程序的执行结果
MOVSP,#2FH
MOVA,#30H
MOVB,#31H
PUSHA
POPA
POPB
30、将片外3500H单元中的内容压入堆栈,弹出到片内40H单元。
MOVDPTR,#3500H;
MOVA,@DPTR
MOV20H,A
MOVSP,#30H
PUSH20H
POP40H
31、已知当前PC值是2010H,请用两种方法将程序存储器20F0H中的常数送入累加器A中,写出各自程序段。
方法
(1):
MOVA,#0E0H
MOVCA,@A+PC
方法
(2):
MOVDPTR,#20F0H
MOVA,#0
MOVCA,@A+DPTR
三、综合题
1、在8031芯片外扩展32KBEPROM(27256)和32KBRAM(62256)个一片来组成较完整的单片机系统
(1)画出8031与存储器直接完整的连接图(请标明个连线的信号名称)
(2)指出连接后个存储芯片的地址范围
(3)将外面数据存储器单元8000H-9FFFH中的数据拷贝到同一芯片内的C000H-DFFFH,编写程序并加以注释(特别要说明程序中所用个寄存器的用途)。
27256的地址范围是0000H-7FFFH,62256的地址范围是8000H-FFFFH,程序入下:
MOVDPTR,#8000H
LOOP:
MOVXA,@DPTR
ORLDPH,#40H
MOVX@DPRT,A
POPDPH
INCDPRT
MOVA,DPH
CJNEA,#0A0H,LOOP
SJMP$
2、试将8031单片机外接一片EPROM2764和一片8255组成一个应用系统。
要求画出扩展系统的电路连接图,比国内指出程序存储器和8255端口的地址范围。
2764是8KB的EPROM,8255是有三个8位并行I/O口的可编程接口芯片。
一种简单的扩展系统硬件连接图如图所示。
2764程序存储器地址范围为:
0000H-1FFFH。
8255的A口地址为7CH,B口地址为7DH,C口地址为7EH,控制寄存器地址为7FH。
3、请设计一个由单片机控制的大会发言限时器,例如限时15分钟。
具体要求是:
当发言者开始讲话时,主持人手动按下“开始”键,15分钟后由微机控制系统发出提示信号(提示信号可以自行设定),假定单片机晶振频率选用6MHz,另可提供1Hz稳频脉冲源。
请画出电路示意图,并用中断方式完成本题的程序设计。
可利用内部定时器对片外的1s脉冲源计数900次,从而达到15分钟定时。
用查询方式等待手动“开始”信号,有信号来,则计数器开始工作。
当计数900次满时,发出中断请求信号,此时让指示灯亮(可安排P1.0引角控制灯的亮/灭)。
硬件电路示意图如图所示:
控制程序如下:
AJMPSTART
ORG0BH
CLRTR0;
停止计数/计时
CLREA;
关中断
SETBP1.0;
指示灯亮
RETI
START:
CLRP1.0;
指示灯灭
MOVTMOD,#05H;
选用T0计数,方式1
MOVTH0,#0FCH;
计数900次
MOVTL0,#7CH
SETBP1.0;
为输入先预置“1”
JNBP1.7,$;
等待“开始”按钮的下降烟到来
JBP1.7,$
SETBTR0;
开始计数
SETBEA;
T0开中断
SETBET0
SJMP$
4、某微机系统用2片2764芯片组成的R0M存储器系统如下图,请回答:
(1)图中采用的译码法与线选法相比有什么特点?
(2)写出芯片2764
(1)、2764
(2)的地址范围。
(3)与2764
端相连的是8031的哪一个控制信号。
(4)图中存储器的总容量(以K为单位)。
(5)系统中74LS373与74LS138芯片各自的功能是什么?
(1)译码法占用I/O引脚少,可扩展更多的片外存储器,但要多用硬件;
线选法少用硬件,接线简单,但是I/O口可能不够用。
随着单片机容量的增大,线选法优点更趋突出,缺点已不明显。
(2)2764
(1):
4000H~5FFFH,2764
(2):
6000H~7FFFH。
(3)与2764
端相连的是8031的信号
(4)16K
(5)74LS373,地址锁存器,用以将P0口复用的地址/数据信号分离;
74LS138,3-8译码器,提供扩展存储器片选信号。
5、根据下图所示的单缓冲方式D/A转换接口电路,试编写两个程序,分别使用DAC0832输出负向锯齿波和15个正向阶梯波。
(1)DAC0832的片选信号只用到地址线A0,且两级缓冲同时有效,都由单片机的WR信号控制。
这时控制动作就变的十分简单,任何时候,只要将A0置0并附加片外的xie动作即可启动DAC工作。
(2)由于DAC转换速度快于一条指令的执行速度,所以不必考虑等待转换完毕的时间。
输入负向锯齿波的程序为:
MOVR0,#FE;
设定能让A0=0的DAC地址
MOVA,#FFH;
从最高数字量开始转换
MOVX@R0,A;
让A0=0,且WR有效,送出数字量,启动DAC工作
DECA;
让数字量递减,形成负向波形
LCALLDELAY
SJMPLOOP;
循环徍复,产生一系列的负向锯齿波
DELAY:
……
RET
15个正向阶梯形波,即将00H-FFH分16等级,以形成15个台阶。
此时数字递增幅度要加大为每次16,对应程序为:
MO