单片机习题及答案 联系客服

发布时间 : 星期日 文章单片机习题及答案更新完毕开始阅读

两个16位定时器/计数器; 5个中断源,两个中断优先级; 内部时钟发生器。

2 EA/VPP引脚有何功用?8031的引脚应如何处理?为什么? 答:EA/VPP是双功能引脚,功能如下:

EA接高电平时,在低4KB程序地址空间(0000H~0FFFH),CPU执行片内程序存储器的指令,当程序地址超出低4KB空间(1000H~FFFFH)时,CPU将自动执行片外程序存储器的指令。

EA接低电平时,CPU只能执行外部程序存储器的指令。8031单片机内部无ROM,必须外接程序存储器。因此,8031的EA引脚必须接低电平。

在对8751单片机内部的 EPROM编程时,此引脚VPP外接+12V电压,用于固化EPROM程序。

8051单片机存储器的组织结构是怎样的?

答:8051存储器包括程序存储器和数据存储器,从逻辑结构上看,可以分为三个不同的空间:

64KB的程序存储器地址空间:0000H~FFFFH,其中0000H~0FFFH为片内4KB的ROM地址空间,1000H~FFFFH为外部ROM地址空间;

256B的内部数据存储器地址空间,00H~FFH,分为两大部分,其中00H~7FH(共128B单元)为内部静态RAM的地址空间,80H~FFH为特殊功能寄存器的地址空间,21个特殊功能寄存器离散地分布在这个区域;

64KB的外部数据存储器地址空间:0000H~FFFFH,包括扩展I/O地址空间。 4.片内数据存储器分为哪几个性质和用途不同的区域?

答:8051内部128B的数据RAM区,包括有工作寄存器组区、可直接位寻址区和数据缓冲区。各区域的特性如下:

00H~1FH为工作寄存器组区,共分4组,每组占用8个RAM字节单元,每个单元作为一个工作寄存器,每组的8个单元分别定义为8个工作寄存器R0~R7。当前工作寄存器组的选择是由程序状态字PSW的RS1、RS0两位来确定。如果实际应用中并不需要使用工作寄存器或不需要使用4组工作寄存器,不使用的工作寄存器组的区域仍然可作为一般数据缓冲区使用,用直接寻址或用Ri的寄存器间接寻址来访问。

20H~2FH为可位寻址区域,这16个字节的每一位都有一个地址,编址为00H~7FH。 当然,位寻址区也可以用作字节寻址的一般数据缓冲区使用。 (3)30H~7FH为堆栈、数据缓冲区。

5 单片机有哪几个特殊功能寄存器?各在单片机的哪些功能部件中?

答:8051单片机内部有21个特殊功能寄存器,在物理上是分散在片内各功能部件中,在数学上把它们组织在内部数据存储器地址空间80H~FFH中,以便能使用统一的直接寻址方式来访问。这些特殊功能寄存器颁在以下各个功能部件中:

CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH两个8位寄存器组成); 中断系统:IP、IE;

定时器/计数器:TMOD、TCOM、TL0、TH0、TL1、TH1; 并行I/O口:P0、P1、P2、P3; 串行口:SCON、SBUF、PCON。

6 PC是什么寄存器?是否属于特殊功能寄存器?它有什么作用? 答:PC是16位程序计数器(Program Counter),它不属于特殊功能寄存器范畴,程序员不

以像访问特殊功能寄存器那样来访问PC。PC是专门用于在CPU取指令期间寻址程序存储器。PC总是保存着下一条要执行的指令的16位地址。通常程序是顺序执行的,在一般情况下,当取出一个指令(更确切地说为一个指令字节)字节后,PC自动加1。如果在执行转移指令、子程序调用/返回指令或中断时,要把转向的地址赋给PC。

7 DPTR是什么寄存器?它由哪些特殊功能寄存器组成?它的主要作用是什么?

答:DPTR是16位数据指针寄存器,它由两个8位特殊功能寄存器DPL(数据指针低8位)和DPH(数据指针高8位)组成,DPTR用于保存16位地址,作间址寄存器用,可寻址外部数据存储器,也可寻址程序存储器。 第三章 3-1选择题

1、MOVX A,@DPTR指令中源操作数的寻址方式是(B)

寄存器寻址 (B)寄存器间接寻址 (C)直接寻址 (D)立即寻址 ORG 0003H LJMP 2000H ORG 000BH

LJMP 3000H 当CPU响应外部中断0后,PC的值是(B) 0003H (B)2000H (C)000BH (D)3000H

执行PUSH ACC指令,MCS-51完成的操作是(A) SP+1 SP (ACC) (SP) (B)(ACC) (SP)SP-1 SP (C)SP-1 SP (ACC) (SP) (D)(ACC) (SP)SP+1 SP

LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D) 2000H (B)2001H (C)2002H (D)2003H

5、51执行完MOV A,#08H后,PSW的一位被置位(D) (A)(A)C (B)F0 (C)OV (D)P

6、下面条指令将MCS-51的工作寄存器置成3区(B) (A)MOV PSW,#13H (B)MOV PSW,#18H

SETB PSW.4 CLR PSW.3 (d) SETB PSW.3 CLR PSW.4

7、执行MOVX A,@DPTR指令时,MCS-51产生的控制信号是(C) /PSEN (B)ALE (C)/RD (D)/WR 8、MOV C,#00H的寻址方式是(A)

位寻址 (B)直接寻址 (C)立即寻址 (D)寄存器寻址 9、ORG 0000H AJMP 0040H ORG 0040H

MOV SP,#00H当执行完左边的程序后,PC的值是(C) 0040H (B)0041H (C)0042H (D)0043H 10、对程序存储器的读操作,只能使用(D)

MOV指令 (B)PUSH指令 (C)MOVX指令(D)MOVC指令 3-2判断题。

MCS-51的相对转移指令最大负跳距是127B。(错)128B 当MCS-51上电复位时,堆栈指针SP=00H。(SP=07H)( 错 )

调用子程序指令(如:CALL)及返回指令(如:RET)与堆栈有关但与PC无关。(错)子序的转返与PC也有关(PC入栈与出栈) MOV @R1,#80H (对)

5、INC DPTR (对)

6、CLR R0 (错)指令系统中没有。 7、MOV @R1,#80H (对) 8、ANL R1,#0FH (错) 9、ADDC A,C (错) 10、XOR P1,#31H (对) 3-3简答题

1 简述MCS-51汇编语言指令格式。 答:MCS-51汇编语言格式如下:

[标号:]操作码助记符[操作数1] [操作数2] [操作数3][注释]标号是用户定义的符号,其值代表这条指令的地址。操作码助记符是指令系统规定的代表特定指令功能的英文缩写符。每条指令都有操作码记符。指令的操作数最多有3个,也有无操作数的指令。注释字段是用户对程序的说明,便于对程序的阅读和理解。 简答

2 MCS-51指令系统主要有哪几种寻址方式?试举例说明。 答:MCS-51指令操作数主要有以下7种寻址方式: 寻址方式 举例

立即寻址 MOV A,#16 直接寻址 MOV 20H,P1 寄存器寻址 MOV A,R0

寄存器间接寻址 MOVX A, @DPTR 变址寻址 MOVC A, @A+DPRT 相对寻址 SJMP LOOP 位寻址 ANL C,70H

3对访问内部RAM和外部RAM,各应采用哪些寻址方式?

答:对内部RAM的寻址方式有直接寻址、寄存器间接寻址和可对位寻址的位寻址。对外部RAM的寻址方式只能用寄存器R0/R1(8位地址)或DPTR(16位地址)间接寻址。 4设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何? MOV R0,#30H ;R0=30H MOV A,@R0 ;A=5AH MOV R1,A ;R1=5AH MOV B,R1 ;B=5AH

MOV @R1,P1 ;(5AH)=7FH MOV A,P1 ;A=7FH

MOV 40H,#20H ;(40H)=20H MOV 30H,40H ;(30H)=20H

解:每一条指令执行后的结果如注释字段所标。最后结果为:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。 5 SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。

前者提供了以SJMP的下一条指令的起始地址为中心的256字节范围的转移(-128~+127),后者的转移目标地址必须在与AJMP的下一条指令的第一字节相同的2KB区的程序储存器中。短转移方便了可重定位编码。SJMP方便了PC可重定位编码,但转移范围小。而ASJMP转移范围大,但存在跳区的限制,AJMP指令只能位于2KB区的最后2个字节处时,才可

跳到下一个区去。因此用AJMP指令来代替SJMP指令是有条件的,也就是目标地址必须与它下面的指令存放地址在同一个2KB区域内。 3-4编程题

1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。 解:STRAT:MOV R0,#30H MOV R7,#0FH

MOV DPTR,#3000H LOOP: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,LOOP RET

2 片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256 ). 解 ADDIO:MOV R0,30H MOV R7,#9 MOV A,@R0 LOOP: INC R0 ADD A,@R0 DJNZ R7,LOOP MOV 30H,A RET

3 编一个程序,将累加器中的一个字符从串行接口发送出去.

解 SOUT:MOV SCON,#40H ;设置串行接口为工作方式 MOV TMOD,#20H ;定时器T1工作于模式2 MOV TL1,#0E8H; ;设置波特率为1200b/s MOV TH1,#0E8H SETB TR1 MOV SBUF,A JNB T1,$ CLB T1 RET

4 用查表法编一子程序,将R3中的BCD码转换成ASCII码. 解 MAIN: MOV A,R3 ;待转换的数送A MOV DPTR,#TAR ;表首地址送DPTR MOVC A,@A+DPTR ;查ASCII码表 MOV R3,A ;查表结果送R3 RET

TAR DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H