西华大学单片机复习题集答案更全.docx
《西华大学单片机复习题集答案更全.docx》由会员分享,可在线阅读,更多相关《西华大学单片机复习题集答案更全.docx(48页珍藏版)》请在冰豆网上搜索。
西华大学单片机复习题集答案更全
西华大学---单片机复习题集--答案更全
西华大学单片机习题
一.填空
1.在MCS-51单片机中,若采用6MHz晶振,则1个机器周期为2us。
2.若A中的内容为63H,则标志位P的值为0。
3.MCS-51单片机复位后,R4对应的存储单元的地址为04H,若RS1=1,RS0=0,R4对应的存储单元地址又为14H。
4.使用8031时,需将
接低电平。
5.MCS-51单片机程序存储器的寻址范围为64KB,数据存储器的寻址范围为0000H~FFFFH。
6.11根地址线可以寻址2^11(2KB)个存储单元,16KB存储单元需要14根地址线。
7.写出下列每条指令源操作数的寻址方式:
MOVA,R0寄存器寻址;MOVA,@R0寄存器间接寻址,
MOVXA,@DPTR基址寄存器间接
(C)。
(A)自动进行的(B)通过传送指令进行的
(C)通过加1指令进行的(D)通过减1指令进行的
4.以下有关PC和DPTR的描述中错误的是(C)。
(A)DPTR是可以访问的而PC是不能访问的
(B)它们都是16位的寄存器(C)它们都有自动加1功能
(D)DPTR可以分为两个8位的寄存器使用,但PC不能
5.PC的值是(C)。
(A)当前正在执行指令前一条指令的地址
(B)当前正在执行指令的地址
(C)当前正在执行指令后一条指令的地址
(D)控制器中指令寄存器的地址
6.假定堆栈指针的值为39H,在进行了一条子程序调用指令后,SP的值为(C)。
(A)40H(B)3AH
(C)3BH(D)41H
7.在MCS-51单片机中,下列关于地址线的说法正确的是(C)。
(A)具有独立的专用的地址线(B)由P0口和P1口的口线作地址线
(C)由P0口和P2口的口线作地址线(D)由P1口和P2口的口线作地址线
8.MCS-51单片机在寄存器间接寻址方式中,寄存器中存放的是(B)。
(A)操作数(B)操作数地址
(C)转移地址(D)地址偏移量
9.对程序存储器的读操作,只能使用(D)。
(A)MOV指令(B)PUSH指令
(C)MOVX指令(D)MOVC指令
10.下列算术运算指令后可以进行十进制调整的是(C)。
(A)加法和减法(B)乘法和除法
(C)只有加法(D)只有减法
11.下列有关MCS-51单片机中断优先级控制的叙述中,错误的是(D)。
(A)低优先级不能中断高优先级,但高优先级能中断低优先级
(B)同级中断不能嵌套
(C)同级中断请求按请求的先后顺序执行
(D)多个同级的中断请求同时申请,将形成阻塞,系统无法相应
12.在MCS-51单片机中,需要外加电路实现中断撤除的是(D)。
(A)定时中断(B)脉冲触发方式的外部中断
(C)串行中断(D)电平触发方式的外部中断
13.CPU进行中断查询,查询的是(B)。
(A)中断请求信号(B)中断标志位
(C)中断允许控制位(D)外中断触发方式控制位
14.在MCS-51单片机的下列寄存器中,与定时器/计数器控制无关的是(C)。
(A)TCON(B)TMOD(C)SCON(D)IE
15.MCS-51单片机定时器/计数器在工作方式0下,其计数范围是(A)。
(A)1~8192(B)0~8191(C)0~8192(D)1~65536
三.简答题
1.简述MCS-51单片机P0~P3口的功能。
答:
P0:
该端口为漏极开路的8位双向口,它为外部低8位地址线和8位数据线复用端口,驱动能力为8个LSTTL负载。
P1:
它是一个内部带上拉电阻的8位准双向口I/O口,P1的驱动能力为4个LSTTL负载。
P2:
它是一个内部带上拉电阻的8位准双向口I/O口,P2的驱动能力也为4个LSTTL负载。
在访问外部存储器是作为8位地址线。
P3:
为内部带上拉电阻的8位准双向I/O口,P3口除了作为一般的I/O口使用之外,每一个引脚都具有第二功能。
2.MCS-51单片机的
、
引脚分别输入压力超限及温度超限中断请求信号,定时器/计数器0作定时检测的定时时钟,现要求中断优先权排队的顺序为:
压力超限→温度超限→定时检测,请确定IE、IP的值。
答:
D7
D6
D5
D4
D3
D2
D1
D0
EA
-
-
ES
ET1
EX1
ET0
EX0
1
0
0
0
0
1
1
1
D7
D6
D5
D4
D3
D2
D1
D0
-
-
-
PS
PX1
PX1
PT0
PX0
0
0
0
0
0
1
0
1
(1)中断控制寄存器各位定义:
D7:
CPU中断允许位EA,应设为1
D6:
未定义,可为随意量,取为0
D5:
定时器/计数器2中断允许位ET2,可取0
D4:
串行口中断允许位ES,可取0
D3:
定时器/计数器1中断允许位ET1,应取0
D2:
外部中断1中断允许位EX1,应取1
D1:
定时器/计数器0中断允许位ET0,应取1
D0:
外部中断0中断允许位EX0,应取1
故IE=87H
(2)由硬件确定的同一优先级中断源的优先权排队顺序如下:
由题意,根据IP各位的定义:
D7:
未定义,可为随意量,取为0
D6:
未定义,可为随意量,取为0
D5:
定时器/计数器2优先权选择位PT2,可取0
D4:
串行口优先权选择位PS,可取0
D3:
定时器/计数器1优先权选择位PT1,应取0
D2:
外部中断1优先权选择位PX1,应取1,应接温度超限信号
D1:
定时器/计数器0优先权选择位PT0,由于其优先级最低,所以应取0
D0:
外部中断0优先权选择位PX0,应取1,应接压力超限信号。
故IP=05H
综上:
IE=87H;IP=05H
3.常用的I/O端口编址有哪两种方式?
它们各有什么特点?
MCS-51单片机采用的是何种编址方式?
答:
一.独立编址方式:
独立编址方式就是I/O地址空间和存储器地址空间分开编址。
独立编址的优点是I/O地址空间和存储器地址空间相互独立,界限分明。
但是,却需要设置一套专门的读写I/O的指令和控制信号。
二.统一编址方式:
这种编址方式是把I/O端口的寄存器与数据存储器单元同等对待,统一进行编址。
统一编址的优点是不需要专门的I/O指令,直接使用访问数据存储器的指令进行I/O操作,简单、方便且功能强大。
MCS-51单片机使用的是I/O和外部数据存储器RAM统一编址的方式。
4.简述数码管动态显示的工作原理。
答:
静态显示方式时,各位的共阴极或共阳极连接在一起并接地,每位的断码线分别与一个8位的I/O口锁存器输出相连。
如果送往各个LED数码管所显示字符的段码一经确定,则相应I/O锁存器锁存的段码输出将维持不变,直到送人另一个字符的段码为止。
动态显示方式是指无论在任何时刻只有一个LED数码管处于显示状态,即单片机采用’扫描’方式控制各个数码管轮流显示。
5.指出下列指令中的错误指令:
MOVA,P1MULA,BMOVA,@R2
MOVR1,R2SUBBA,@R0MOVXA,@A+PC
CJNER7,#77H,$INCDPTRDECDPTR
PUSHACCPUSHDPTRPOPR0
XCHDA,R3XCHA,R3MOVCA,@A+DPTR
答:
错误的指令如下:
MOVA,P1(p1不是操作数)
MULA,BAB中应无“,”
MOVA,@R2MOVA,@Ri其中i=0或1
MOVR1,R2不能从寄存器把数据在送到寄存器中去
DECDPTRDEC不能操作DPTR
PUSHACCPUSH只有PUSHdirect指令
PUSHDPTRPUSH只有PUSHdirect指令
POPR0POP只有PUSHdirect指令
XCHDA,R3XCHD只有XCHDA,@Ri指令
1.8051单片机的指令系统有何特点?
答:
8051的指令系统由111条指令组成。
如果按字节数分类,有49条单字节指令46条双字节指令和16条三字节指令,以单字节指令为主;如果按照指令执行时间分类,有64条单周期指令、45条双周期指令和2条四周期指令,以单周期指令为主。
8051的指令系统具有以下特点:
(1)存储效率高、执行速度快,可以进行直接地址到直接地址的数据传送,能把一个并行I/O口中的内容传送到内部RAM单元中而不必经过累加器A或工作寄存器Rn。
这样可以大大提高传送速度和缓解累加器A的瓶颈效应。
(2)用变址寻址方式访问程序存储器中的表格,将程序存储器单元中的固定常数或表格字节内容传送到累加器A中。
这为编成翻译算法提供了方便。
(3)在算术运算指令中设有乘法和除法指令
(4)指令系统中一些对I/O口进行操作的指令具有“读——修改——写”的功能。
这一功能指:
在执行读锁存器的指令时,CPU首先完成将锁存器的值通过缓冲器BUF2度入内部,进行修改、改变,然后重新写到锁存器中去。
这种类型指令包含所有的逻辑操作和位操作指令。
(5)8051单片机内部有一个布尔处理器,对为地址空间具有丰富的位操作指令。
布尔操作类指令有17条,包括布尔传送指令、布尔状态控制指令、布尔逻辑操作指令、布尔条件转移指令。
2.8051单片机指令系统按功能可分为几类?
具有几种寻址方式?
它们的寻址范围如何?
答:
MCS-51单片机指令系统按功能可分为5类:
(1)数据传送指令
(2)算术运算指令
(3)逻辑运算和移位指令
(4)控制转移指令
(5)位操作指令
MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表:
寻址方式
使用的变量
寻址范围
立即寻址
程序存储器
直接寻址
内部RAM低128个字节;
特殊功能寄存器SFR
寄存器寻址
R0~R7;A、B、DPTR、C
寄存器间接寻址
@R0、@R1、SP
内部RAM、堆栈指针SP
@R0、@R1、@DPTR
外部RAM
变址寻址
@A+PC、@A+DPTR
程序存储器
相对寻址
PC+偏移量
程序存储器
位寻址
内部RAM低128B位寻址区
可位寻址的特殊功能寄存器位
3.访问特殊功能寄存器和外部数据存储器应采用哪种寻址方式?
答:
访问特殊功能寄存器,应采用直接寻址、位寻址方式。
访问外部数据存储器,应采用寄存器间接寻址方式。
在0~255B范围内,可用寄存器R0、R1间接寻址:
MOVXA,@R0或MOVXA,@R1
MOVX@R0,A或MOVX@R1,A
在0~64KB范围内,可用16位寄存器DPTR间接寻址:
MOVXA,@DPTR
MOVX@DPTR,A
4.“DAA”指令的作用是什么?
怎样使用?
答:
这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。
在计算机中,遇到十进制调整指令时,中间结果的修正是由ALU硬件中的十进制修正电路自动进行的。
用户不必考虑何时该加“6”,使用时只需在上述加法指令后面紧跟一条“DAA”指令即可。
5.片内RAM20H~2FH单元中的128个位地址与直接地址00H~7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作?
答:
虽然内部RAM位寻址区的位地址范围00H~7FH与低128个单元的单元地址范围00H~7FH形式完全相同,但是在应用中可以通过指令的类型区分单元地址和位地址。
位寻址的操作只适用于下列位指令,而直接寻址操作对这些指令是无效的。
MOVC,bit
MOVbit,C
CLRbit
SETBbit
CPLbit
ANLC,bit
ANLC,/bit
JBbit,rel
JNBbit,rel
6.8051单片机指令系统中有长跳转LJMP,长调用LCALL指令,为何还没有设置了绝对跳转AJMP,绝对调用ACALL指令?
在实际使用是应怎样考虑?
答:
在实际应用中,可从寻址范围和指令长度两个方面来选择长跳转指令LJMP和短跳转指令AJMP、长调用指令LCALL和短调用指令ACALL。
长跳转LJMP在64KB范围内转移,而短跳转AJMP只能在2KB空间转移。
长调用LCALL调用位于64KB程序空间的子程序,而短调用ACALL调用位于2KB程序空间范围的子程序。
AJMP、ACALL指令代码长度为2个字节;LJMP、LCALL指令代码长度为3个字节。
7.SJMP,AJMP和LJMP指令在功能上有何不同?
答:
指令的转移范围不同。
SJMP是256B范围内的相对转移指令,AJMP是2KB范围内的无条件短跳转指令,LJMP是64KB范围内的无条件长跳转指令。
8.MOVCA,@DPTR与MOVXA,@DPTR指令有何不同?
答:
指令的转移范围不同。
SJMP是256B范围内的相对转移指令,AJMP是2KB范围内的无条件短跳转指令,LJMP是64KB范围内的无条件长跳转指令。
9.在“MOVCA,@A+DPTR”和“MOVCA,@A+PC”中,分别使用了DPTR和PC作基址,请问这两个基址代表什么地址?
使用中有何不同?
答:
使用@A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。
使用@A+PC基址变址寻址时,PC仍是下条指令首地址,而A则是从下条指令首地址到常数表格中的被访问字节的偏移量。
10.设片内RAM中的(40H)=50H,写出执行下列程序段后寄存器A和R0,以及片内RAM中50H和51H单元的内容为何值?
MOVA,40H
MOVR0,A
MOVA,#00
MOV@R0,A
MOVA,#30H
MOV51H,A
MOV52H,#70H
答:
结果为:
(A)=30H(R0)=50H(50H)=00H(51H)=30H
11.设堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。
执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?
答:
结果为:
(61H)=24H(62H)=10H(30H)=00H
(31H)=0FFHDPTR=2410H SP=60H
12.在8051的片内RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。
分析下面各条指令,说明源操作数的寻址方式,分析按顺序执行各条指令后的结果。
MOVA,40H
MOVR0,A
MOVP1,#0F0H
MOV@R0,20H
MOV50H,R0
MOVA,@R0
MOVP2,P1
答:
指令源操作数的寻址方式执行指令后的结果
MOVA,40H直接寻址(A)=50H
MOVR0,A寄存器寻址(R0)=50H
MOVP1,#80H立即寻址(P1)=80H
MOV@R0,20H寄存器间接寻址(50H)=30H
MOVDPTR,#2000H立即寻址(DPTR)=2000H
MOV40H,30H直接寻址(40H)=40H
MOVR0,30H直接寻址(R0)=40H
MOVD0H,R0直接寻址(D0H)=40H
MOV10H,#10H立即寻址(10H)=10H
MOVA,@R0寄存器间接寻址(A)=50H
MOVP2,P1寄存器寻址(P2)=80H
13.完成以下的数据传送过程。
(1)R1的内容传送到R0。
(2)片外RAM20H单元的内容送R0。
(3)片外RAM20H单元的内容送片内RAM20H
(4)片外RAM1000H单元的内容送片内RAM20H
(5)片外RAM20H单元的内容送R0。
(6)片外RAM2000H单元的内容送片内RAM20H
(7)片外RAM20H单元的内容送片外RAM20H
答:
(1)R1的内容传送到R0;
MOVA,R1
MOVR0,A
(2)片外RAM20H单元内容送R0;
MOVDPTR,#0020H
MOVXA,@DPTR
MOVR0,A
(3)片外RAM20H单元的内容送片内RAM20H单元;
MOVDPTR,#0020H
MOVXA,@DPTR
MOV20H,A
(4)片外RAM1000H单元的内容送片内RAM20H单元;
MOVDPTR,#1000H
MOVXA,@DPTR
MOV20H,A
(5)ROM2000H单元的内容送R0单元;
MOVA,#00H
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOVR0H,A
(6)ROM2000H单元的内容送片内RAM20H单元;
MOVA,#00H
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOV20H,A
(7)ROM2000H单元的内容送片外RAM20H单元。
MOVA,#00H
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOVDPTR,#0020H
MOVX@DPTR,A
14.设有两个4位BCD码,分别存放在片内RAM的23H,22H单元和33H,32H单元中,求它们的和,并送入43H,42H单元中去。
(以上均为低位字节,高位在高字节)。
答:
ORG0000H
LJMPSTART
ORG0030H
START:
MOVA,22H
ADDA,32H
DAA
MOV42H,A
MOVA,23H
ADDCA,33H
DAA
MOV43H,A
SJMP$
END
15.编程将片内RAM的40H~60H单元中内容送到片外RAM以3000H开始的单元中。
答:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVR7,#20H
MOVR1,#40H
MOVDPTR,#3000H
LOOP:
MOVA,@R1
MOVX@DPTR,A
INCR1
INCDPTR
DJNZR7,LOOP
SJMP$
END
16.编程计算片内RAM区30H~37H的8个单元中数的算术平均值,结果存在3AH单元中。
答:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVR0,#30H
MOVR1,#00H
MOVR2,#00H
MOVR3,#07H
LP2:
MOVA,@R0
ADDA,R2
MOVR2,A
JNCLP1
INCR1
LP1:
INCR0
DJNZR3,LP2
MOVR3,#03H
LP3:
CLRC
MOVA,R1
RRCA
MOVR1,A
MOVA,R2
RRCA
MOVR2,A
DJNZR3,LP3
MOV3AH,R2
SJMP$
END
17.编写计算下式的程序,设乘积的结果均小于255,A,B值分别存放在片外RAM的2001H和2002H单元中,结果存于2000H单元中。
(A+B*(A+B)+10若(A+B)*(A+B)〈10
Y=(A+B)*(A+B)若(A+B)*(A+B)=10
(A+B)*(A+B)-10若(A+B)*(A+B)〉10
答:
ORG0000H
LJMPSTART
ORG0030H
START:
MOVDPTR,#2001H
MOVXA,@DPTR
MOV30H,A
MOVDPTR,#2002H
MOVXA,@DPTR
ADDA,30H
MOVB,A
MULAB
MOVR1,A
CJNEA,#10,NET1
MOVDPTR,#2000H
MOVX@DPTR,A
SJMPNET3
NET1:
JNCNET2
CLRC
MOVA,R1
ADDA,#10
MOVDPTR,#2000H
MOVX@DPTR,A
SJMPNET3
NET2:
MOVA,R1
SUBBA,#10
MOVDPTR,#2000H
MOVX@DPTR,A
NET3:
SJMP$
END
19.设有100个有符号数,连续存放在片外RAM以2200H为首地址的存储区中,试片成统计其中正数|、负数、零的个数。
答:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVR2,#100
MOVR3,#00H
MOVR4,#00H
MOVR5,#00H
MOVDPTR,#2000H
LOOP:
MOVXA,@DPTR
CJNEA,#00H,NET1
INCR3
INCDPTR
DJNZR2,LOOP
SJMPNET3
NET1:
JCNET2
INCR4
INCDPTR
DJNZR2,LOOP
SJMPNET3
NET2:
INCR5
INCDPTR
DJNZR2,LOOP
NET3:
SJMP$
END
22.试编一查表程序,从首地址为2000H、长度为9FH的数据块中找出第一个ASCII码A,将其地址送到20A0H和20A1H单元中。
答:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
LCALLSUBONE
AJMP$
;SUBONEusedptr,a,30h,31h
SUBONE:
MOVDPTR,#2000H
LOOP:
MOVXA,@DPTR
XRLA,#41H
JNZTT
MOVA,30H
MOVDPTR,#20A0H
MOVX@DPTR,A
MOVDPTR,#20A1H
MOVA,31H
MOVX@DPTR,A
RET
TT:
INCDPTR
MOV30H,DPH
MOV31H,DPL
MOVA,31H
CJNEA,@00H,LOOP
RET
END
四.阅读程序
1.下列程序段经汇编后,从2000H开始的各有关程序存储器单元的内容是什么?
ORG2000H
TAB:
EQU2010H
DB10H,10
DW2100H
ORG2050H