欢迎光临散文网 会员登陆 & 注册

C51单片机习题及答案

2021-01-30 17:40 作者:朝颜晚扶桑  | 我要投稿

第一章

1-1选择

1.计算机中最常用的字符信息编码是(  A  )

A   ASCII      

B  BCD码   

C  余3码     

D  循环码

2.要MCS-51系统中,若晶振频率屡8MHz,一个机器周期等于(A     ) μs

A 1.5     

B  3    

C  1     

D 0.5

3.MCS-51的时钟最高频率是    ( A ).    

A 12MHz   

B 6 MHz     

C 8 MHz     

D  10 MHz

4. 以下不是构成的控制器部件(D   ):

A 程序计数器、  

B指令寄存器、  

C指令译码器、  

D存储器

5. 以下不是构成单片机的部件( D   )

A  微处理器(CPU)、

B存储器   

C接口适配器(I\O接口电路)  

D 打印机

6. 下列不是单片机总线是( D   )

A 地址总线   

B 控制总线   

C 数据总线     

D 输出总线

7.-49D的二进制补码为.(  B   )

A 11101111   

B 11101101      

C 0001000       

D  11101100

8.十进制29的二进制表示为原码( C    )

A 11100010      

B 10101111      

C 00011101      

D 00001111

9. 十进制0.625转换成二进制数是(  A )

A 0.101    

B 0.111   

C 0.110    

D 0.100

10 选出不是计算机中常作的码制是(  D  )

A  原码    

B 反码  

C补码  

D ASCII

1-2填空

1.计算机中常作的码制有原码、反码和补码

2.十进制29的二进制表示为00011101

3.十进制数-29的8位补码表示为.11100011

4.单片微型机CPU、存储器和I\O接口三部分组成.

5.若不使用MCS-51片内存器引脚EA必须接地.

6.输入输出设备是计算机与外部世界交换信息的载体.

7.十进制数-47用8位二进制补码表示为.11010001

8.-49D的二进制补码为.11101101

9.计算机中最常用的字符信息编码是ASCII

10.计算机中的数称为机器数,它的实际值叫真值。

1-3判断

1.我们所说的计算机实质上是计算机的硬件系统与软件系统的总称。     (  √ )

2.MCS-51上电复位时,SBUF=00H。  (  × )。     SBUF不定。

3.使用可编程接口必须处始化。    (  √  )。

4.8155的复位引脚可与89C51的复位引脚直接相连。( √     )

5.MCS-51是微处理器。(   ×  )不是。

6.MCS-51系统可以没有复位电路。( × )不可以。复位是单片机的初始化操作。

7.要MCS-51系统中,一个机器周期等于1.5μs。( ×    )若晶振频率屡8MHz,才可能为1.5μs

8.计算机中常作的码制有原码、反码和补码( √  )

9.若不使用MCS-51片内存器引脚EA必须接地. ( √  )

10.十进制数-29的8位补码表示为.11100010( ×  )

1-4简答

1.何谓单片机?单片机与一般微型计算机相比,具有哪些特点?

答:单片机是在一块集成电路上把CPU、存储器、定时器/计数器及多种形式的I/O接口集成在一起而构成的微型计算机。它与通用微型计算机相比,具有如下特点:

(1) 单片机的程序存储器和数据存储器是分工的,前者为ROM,后者为RAM;

(2) 采用面向控制的指令系统,控制功能强;

(3) 多样化的I/O接口,多功能的I/O引脚;

(4) 产品系列齐全,功能扩展性强;

(5) 功能是通用的,像一般微处理机那样可广泛地应用在各个方面。

2 单片机主要应用在哪些领域?

答:单片机的应用范围很广泛,诸如智能化家用电器、仪器仪表、工业控制、计算机外部设备、智能机器人、电信及导航等方面。

3  在各种系列的单片机中,片内ROM的配置有几种形式?用户应根据什么原则来选用?

答:各种类型的单片机片内程序存储器的配置形式主要有以下几种形式:

(1)  (Msak)ROM型单片机:内部具有工厂 编程的ROM,ROM中的程序只能由单片机制造厂家用 工艺固化,用户不能修改ROM中的程序。例如:MCS—51系列的8051。

 ROM单片机适合于大批量生产的产品。用户可委托芯片生产厂家采用 方法将程序制作在芯片的ROM。

(2) EPROM型单片机:内部具有紫外线可擦除电可编程的只读存储器,用户可以自行将程序写入到芯片内部的EPROM中,也可以将EPROM中的信息全部擦除。擦去信息的芯片还可以再次写入新的程序,允许反复改写。例如:MCS—51系列的8751。

EPROM型单片机使用比较方便,但价格较高,适合于研制产品或结构要求简单的小批量产品。

(3) 无ROM型单片机:内部没有程序存储器,它必须连接程序存储器才能组成完整的应用系统。例如:MCS—51系列的8031。

无ROM型单片机价格低廉,用户可根据程序的大小来选择外接程序存储器的容量。这种单片机扩展灵活,但系统结构较复杂。

(4) E2ROM型单片机:内部具有电可擦除叫可编程的程序存储器,使用更为方便。例如:MCS—51的派生型89C51单片机。

(5) OTP(One Time Programmable)ROM单片机:内部具有一次可编程的程序存储器,用户可以在编程器上将程序写入片内程序存储器中,程序写入后不能再改写。例如:NEC公司的μPD75P308GF—3B9。这种芯片的价格也较低。

4.控制器的组成和作用

答:控制器:由程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器等组成。用来协调指挥计算机系统的操作。

5. 微型计算机组成

答:微型计算机组成由微处理器(CPU)、存储器、接口适配器(I\O接口电路)及输入/输出设备组成。通过系统总线将它们连接起来,以完成某些特定的运算与控制。

6.什么叫寻址方式

答:寻址方式:寻址方式就是寻找指令中操作数或操作数所在地址的方式。也就是如何找到存放操作数的地址,把操作数提取出来的方法。

7. 什么叫堆栈:

答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"后进先出"的结构方式处理的。实质上,堆栈就是一个按照"后进先出"原则组织的一段内存区域。

8.什么是汇编语言?什么叫指令周期?

答:汇编:汇编语言源程序在交付计算机执行之前,需要先翻译成目标程序,这个翻译过程叫汇编。

指令周期:指执行一条指令所占用的全部时间。通常一个指令周期含1~4个机器周期。

9.什么是进位和溢出

答:两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。例如将正数3FH和负数D0H相加,其结果不会超出8位字长的表示范围,所以其结果10FH中的进位是正常进位(也就是模)。但是,若正数3FH与正数70H相加,其结果为AFH,最高位为"1",成了负数的含义,这就不合理了,这种情况称为溢出。

第二章

2-1填空

1..微处器由寄存器、控制器、运算器三部分组成..

2.当MCS-51引脚ALE信号有效时,表示从Po口稳定地送出了低8位地址.

3.MCS-51的堆栈是软件填写堆栈指针临时在_片内数据存储器内开辟的区域.

4.MCS-51中凡字节地址能被_8整除的特殊功能寄存器均能寻址.

5.MCS-51有4组工作寄存器,它们的地址范围是00H~1FH.

6.MCS-51片内20H~2FH范围内的数据存储器,既可以字节寻址又可以位寻址.

7.计算机的系统总线有地址总线、控制总线和数据总线。

8.80C51含4KB ROM。

9.80C51在物理有4个独立的存储空间。

10.一个机器周期等于6个状态周期,振荡脉冲2分频后产生的时钏信号的周期定义为状态 周期。

2-2判断

1.我们所说的计算机实质上是计算机的硬件系统与软件系统的总称。     (  √ )

2.MCS-51的相对转移指令最大负跳距是127B。                       (  × )

3.MCS-51的程序存储器只是用来存放程序的。 ( ×  )  存放程序和表格常数。     

4.MCS-51的时钟最高频率是18MHz.     (  ×  ).    12MHz。

5.使用可编程接口必须处始化。    (  √  )。

6.当MCS-51上电复位时,堆栈指针SP=00H。  (  ×   )。 SP=07H

7.MCS-51外扩I/O口与外RAM是统一编址的。  ( √   )。

8.使用8751且 =1时,仍可外扩64KB的程序存储器。(   ×  )60KB。

9.8155的复位引脚可与89C51的复位引脚直接相连。( √ )

10.MCS-51是微处理器。(   ×  )不是。

11.MCS-51的串行接口是全双工的。(  √   )

12.PC存放的是当前执行的指令。(  ×   )是将要执行的下一条指令的地址。

13.MCS-51的特殊功能寄存器分布在60H~80H地址范围内。(×)80H~FFH。

14.MCS-51系统可以没有复位电路。( × )不可以。复位是单片机的初始化操作。

15.要MCS-51系统中,一个机器周期等于1.5μs。( ×)若晶振频率屡8MHz,才可能为1.5μs

2-3选择

1.要想测理INT0引脚上的一个正脉冲宽度,那么特殊功能寄存器TMOD的内容应为(  B ).

(A)09H      

(B)87 H   

(C)00H      

(D)80H

2.PSW=18H时,则当前工作寄存器是( D  )

(A)0组  

(B)1组  

(C)2组    

(D)3组

3.控制串行口工作方式的寄存器是( C  )

(A)TCON   

(B)PCON  

(C)SCON    

(D)TMOD

4.P1口的每一位能驱动(  B )

(A)2个TTL低电平负载有   

(B)4个TTL低电平负载

(C)8个TTL低电平负载有  

(D)10个TTL低电平负载

5.MCS-51的中断允许触发器内容为83H,CPU将响应的中断请求是(  B   )

(A) T1,      

(B)T0,T1    

(C)T1,串行接口    

(D)  ,T0

2-4问答题

1   8051单片机内部包含哪些主要逻辑功能部件?

答:8051单片机是个完整的单片微型计算机。芯片内部包括下列硬件资源:

(1) 8位CPU;

(2) 4KB的片内程序存储器ROM。可寻址64KB程序存储器和64KB外部数据存储器;

(3) 128B内部 RAM;

(4) 21个 SFR;

(5) 4个8位并行I/O口(共32位I/O线);

(6) 一个全双工的异步串行口;

(7) 两个16位定时器/计数器;

(8) 5个中断源,两个中断优先级;

(9) 内部时钟发生器。

2  EA/VPP引脚有何功用?8031的引脚应如何处理?为什么?

答:EA/VPP是双功能引脚,功能如下:

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

(2) EA接低电平时,CPU只能执行外部程序存储器的指令。

8031单片机内部无ROM,必须外接程序存储器。因此,8031的EA引脚必须接低电平。

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

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

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

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

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

(3) 64KB的外部数据存储器地址空间:0000H~FFFFH,包括扩展I/O地址空间。

4.片内数据存储器分为哪几个性质和用途不同的区域?

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

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

(2) 20H~2FH为可位寻址区域,这16个字节的每一位都有一个地址,编址为00H~7FH。

当然,位寻址区也可以用作字节寻址的一般数据缓冲区使用。

(3)30H~7FH为堆栈、数据缓冲区。

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

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

(1) CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH两个8位寄存器组成);

(2) 中断系统:IP、IE;

(3) 定时器/计数器:TMOD、TCOM、TL0、TH0、TL1、TH1;

(4) 并行I/O口:P0、P1、P2、P3;

(5) 串行口: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)

(A) 寄存器寻址 

(B)寄存器间接寻址 

(C)直接寻址 

(D)立即寻址

1. ORG  0003H

LJMP 2000H

ORG 000BH

LJMP 3000H 当CPU响应外部中断0后,PC的值是(B)

(A) 0003H 

(B)2000H 

(C)000BH 

(D)3000H

2. 执行PUSH  ACC指令,MCS-51完成的操作是(A)

(A) SP+1     SP (ACC)   (SP) 

(B)(ACC)   (SP)SP-1     SP

(C)SP-1    SP (ACC)   (SP) 

(D)(ACC)   (SP)SP+1     SP

4、 LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D)

() 2000H 

(B)2001H 

(C)2002H 

(D)2003H

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

(A)C 

(B)F0 

(C)OV 

(D)P

6、下面条指令将MCS-51的工作寄存器置成3区(B)

(A)MOV  PSW,#13H 

(B)MOV  PSW,#18H

(C) SETB  PSW.4  CLR PSW.3 

 (D) SETB PSW.3  CLR PSW.4

    7、执行MOVX  A,@DPTR指令时,MCS-51产生的控制信号是(C)

(A) /PSEN 

(B)ALE 

(C)/RD 

(D)/WR

    8、MOV C,#00H的寻址方式是(A)

(A) 位寻址 

(B)直接寻址 

(C)立即寻址 

(D)寄存器寻址

9、ORG 0000H

   AJMP 0040H

   ORG 0040H

   MOV SP,#00H当执行完左边的程序后,PC的值是(C)

(A) 0040H 

(B)0041H 

(C)0042H 

(D)0043H

   10、对程序存储器的读操作,只能使用(D)

(A) MOV指令 

(B)PUSH指令 

(C)MOVX指令

(D)MOVC指令

3-2判断题

3. MCS-51的相对转移指令最大负跳距是127B。(错)128B

4. 当MCS-51上电复位时,堆栈指针SP=00H。(SP=07H)(  错  )

5. 调用子程序指令(如:CALL)及返回指令(如:RET)与堆栈有关但与PC无关。(错)子序的转返与PC也有关(PC入栈与出栈)

6. 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编程题

编程将片内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

5 片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中.

   解   START:  MOV    R0,#40H       ;数据块首地址送R0

                 MOV     R7,#09H       ;比较次数送R7

         MOV     A,@R0        ;取数送A

    LOOP:     INC      R0  

                 MOV     30H,@R0      ;取数送30H

                 CJNE     A,30H,NEHT   ;(A)与(30H)相比

      NEXT:     JNC      BIE1          (A)≥(30H)转BIR1

                 MOV     A,30H        ;(A)<(30H),大数送A

   BIE1:      DJNZ     R7,LOOP      ;比较次数减1,不为0,继续比较

         MOV     50H,A         ;比较结束,大数送50H

         RET      

6 编一子程序,从串行接口接受一个字符.

解: START:   MOV     TMOD,#20H    ;定时器T1工作于模式2

               MOV     TH1,#0E8H     ;设置波特率为1 200b/s

               MOV     TL1,#0E8H  

               SETB     TR1            ;启动T1

               MOV      SCON,#50H     ;串行接口工作于方式1,充许接收

      L1:      JNB        RI,L1        ;等待接收数据,末接收到数据,继续等待

               CLR       RI             ;接收到数据,清RI

               MOV      A,SBUF       ;接收到数据送A

               RET

7 利用调子程序的方法,进行两个无符号数相加。请编主程序及子程序。

解  用R0和R1作数据指针,R0指向第一个加数,并兼作“和”的指针,R1指向另一个加数,字节存放到R2中作计数初值。

  主程序:

    JAFA:  MOV    R0,#20H        ;指向加数最低字节

        MOV   R1,#29H         ;指向另一加数最低字节

        MOV   R2,#04H         ;字节数作计数值

        ACALL   JASUB         ;调用加法子程序

        AJMP      $

                RTE

 多字节加法子程序:

JASUB:  CLR    C

JASUB1: MOV    A,@R0    ;取出加数的一个字节(4B无符号数加数)

    ADDC    A,@R1     ;加上另一数的一个字节 

    MOV     @R0,A     ;保存和数

    INC      R0         ;指向加数的高位

    INC      R1         ;指向另一加数的高位

    DJNZ    R2,JASUB1  ;全部加完了吗?

    RET

8 若图数据块是有符号数,求正数个数,编程并注释。

解           ORG     0030H

    START:   MOV     20H,#00H      ;计正数个数计数器

        MOV    DPTR,#0000H   ;

              MOVX   A,@DPTR      ;数据块长度→10H

              MOV     10H,A

              INC       DPTR       ;DPTR指向第一个数的地址

   TWO:    MOVX    A,@DPTR    ;取数→A

              JB        ACC.7,ONE   ;是负数转ONE,准备取下一个数

              INC        20H          ;是正数,正数计数器加1

   ONE:   INC       DPTR        ;地址指针加1

        DJNZ     10H,TW    ;数据块长度减1不等于0,继续寻找

       RET

9 编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。

  本程序的硬件连接如图所示。当P1.0输出高电平时,LED灯亮,否则不亮。

  其程序如下:

                           MOV     A,#01H      ;灯亮初值

                 SHIFT:    LCAIL    FLASH     ;调闪亮10次子程序

                           RR       A            ;右移一位

                           SJMP     SHIFT        ;循环

                 FLASH:    MOV     R2,#0AH     闪烁10次计数

                 FLASH1;   MOV     P1,A         ;点亮

                            LCALL   DELAY       ;延时

                            MOV     P1,#00H       ;熄灭

                            LCALL    DELAY       ;延时

                            DJNZ      R2,FLASH1    ;循环

RET     

第四章

4-1填空

1.MCS-51的Po口作为输出端口时,每位能驱动        8   个SL型TTL负载.

2.MCS-51有       4个并行I\O口,其中P0~P3是准双向口,所以由输出转输入时必须先写入"1"       

3.设计8031系统时,_P0、P2       口不能用作一般I\O口.

4.MCS-51串行接口有4种工作方式,这可在初始化程序中用软件填写特殊功能寄存器__SCON   _加以选择.

5.当使用慢速外设时,最佳的传输方式是    中  断  .

6.当定时器To工作在方式3    时,要占定时器T1的TR1和TF1_两个控制位.

7.MCS-51有 5  个中断源,有2 个中断优先级,优先级由软件填写特殊功能寄存器  IP  加以选择..

8.用串口扩并口时,串行接口工作方式应选为方式   0     .

9.在串行通信中,有数据传送方向单工、半双工、全双工三种方式.

10.外部中断 入口地址为_  0013H   

4-2判断

1.MCS-51的5个中断源优先级相同。           (  × )

2.要进行多机通信,MCS-51串行接口的工作方式应为方式1。   (  × )

3.MCS-51上电复位时,SBUF=00H。  (  × )。   

4.MCS-51有3个中断源,优先级由软件填写特殊功能寄存器IP加以选择.. (  × )

5.用串口扩并口时,串行接口工作方式应选为方式1. (  × )

6.外部中断INTO 入口地址为_0013H(  × )

7.MCS-51外部中断0的入口地址是0003H。   (√   ).

8.TMOD中的GATE=1时,表示由两个信号控制定时器的启停。  ( √   )。

9.使用8751且 =1时,仍可外扩64KB的程序存储器。(   ×  )

10.PC存放的是当前执行的指令。(  ×   )

11.MCS-51的特殊功能寄存器分布在60H~80H地址范围内。(×    )

12.MCS-51有4个并行I\O口,其中P0~P3是准双向口,所以由输出转输入时必须先写入"0"(  ×   )

4-3选择

1.在中断服务程序中,至少应有一条(  D    )

(A)传送指令

(B)转移指令

(C)加法指法

(D)中断返回指令

2.要使MCS-51能够响应定时器T1中断、串行接口中断,它的中断允许寄存器IE的内容应是(   A    )

(A)98H     

(B)84H             

(C)42                   

(D)22H

3.D MCS-51在响应中断时,下列哪种操作不会发生(  D   ).

(A)保护现场   

(B)保护PC      

(C)找到中断入口     

(D)保护PC转入中断入口

4.用MCS-51串行接口扩展并行I\O口时,串行接口工作方式应选择(   C   )

(A)方式0      

(B)方式1   

(C)方式2      

(D)方式3

5.MCS-51有中断源( A )

(A)5个   

(B)2个   

(C)3个   

(D)6个

6.MCS-51响应中断时,下面哪一个条件不是必须的(    )

(A)当前指令执行完毕     

(B)中断是开放的确   

(C)没有同级或高级中断服务须   

(D)必须有RET1指令

7.使用定时器T1时,有几种工作模式( C )

(A)1种   

(B)2种   

(C)3种     

(D)4种

8.计算机在使用中断方式与外界交换信息时,保护现场的工作方式应该是 (  B   )

(A)由CPU自动完成     

(B)在中断响应中完成   

(C)应由中断服务程序完成   

(D)在主程序中完成

9.下面哪一种传送方式适用于处理外部事件(    C     )

(A)DMA    

(B)无条件传递进   

(C)中断       

(D)条件传递

1、2、4章的编程

1. 8225A控制字地址为300FH,请按:A口方式0输入,B口方式1输出,C口高位输出,C口低位输入,确定8225A控制字并编初始化程序.

解:控制字为   10010101=95H

初始化程序:MOV  DPTR ,#300FH

           MOV A, #95H

           MOVX   @DPTR, A

2. 编定一个软件延时1S和1min的子程序.设fosc=6Hz,则一个机器周期1μs。

解:(1)1S=2US*5*100000

5*100000=250*200*10

(2) ORG  1000H

 TIME: MOV R7, #10

 T3:   MOV R6, #200

 T2:   MOV R6, #250

 T1:   DJNZ R5, T1

DJNZ R6, T2

DJNZ R7, T3

RET

  (2)1min=60,调用上面1s子程序60次

          ORG   0030H

          MOV   R0, #60

LOOP: LCALL TIME

     DJNZ     R0, LOOP

     RET

3. 请编制串行通信的数据发送程序,发送片内RAM50H~5FH的16B数据,串行接口设定为方式2,采用偶校验方式。设晶振频率为6MHz。

解:查询方式发送程序如下

   MOV SCON, #8OH

   M OV PCON, #80H

   MOV   R0, #50H

   MOV   R7, #16H

LOOP: MOV   A,@R0

   MOV C, P

   MOV TB8, C

   MOV   SBUF, A

   JNB   T1, $

   CLR   T1

   INC   R0

   DJNZ R7, LOOP

   RET

4.应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。

请(1)计算时间常数X,应用公式X=216-t(f/12)

(2)写出程序清单

解:X=216-t(F/12)

=216-1*10-3*6*106/12

=OFEOCH

ORG   3000H

START: MOV TMOD, #01H

MOV TL0, #OCH

MOV THO, #OFEH

SETB   TR0

LOOP:  JBC TFO, DONE

SJMP LOOP

DONE: MOV TL0, #OCH

MOV THO, #OFEH

CPL P1.0

SJMP LOOP

5.应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为1ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。

请(1)计算时间常数X,应用公式X=216-t(f/12)

(2)写出程序清单

解:解:X=216-t(F/12)

=216-0.5*10-3*6*106/12

=FF06H

ORG   3000H

START: MOV TMOD, #01H

MOV TL0, #06H

MOV THO, #FFH

SETB   TR0

LOOP:  JBC TFO, DONE

SJMP LOOP

DONE: MOV TL0, #06H

MOV THO, #FFH

CPL P1.0

SJMP LOOP

6、 用89C51的P1口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意)。编出汇编语言程序。

解:   ORG   0100H

   ABC: SETB   P1.0

SETB   P1.7

JB      PI.7, $

JNB    P1.7, $

CLR P1.0

MOV R2, #0

  DAY: NOP

NOP

DJNZ R2, DAY

SJMP ABC

7、设计一个4位数码显示电路,并用汇编语言编程使"8"从右到左显示一遍。

解:  ORG  0100H

MOV A, #08H

MOV R2, #01H

MOV DPTR, #TAB

MOVC A,@A+DPTR

MOV P1, A

NEXT: MOV A, R2

MOV   P3, A

ACALL DAY

JB    ACC.4, LPD

RL   A

MOV R2, A

AJMP NEXT

LPD:  RET

TAB:  DB

      END

7. 编制一个循环闪烁的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。

解:         MOV  A,#01H

   SHIFT:   LCALL   FLASH

RR

SJMP SHIFT

  FLAH:    MOV   R2, #0AH

  FLAH1:   MOV P1, A

           LCALL   DELAY

           MOV   P, #00H

           LCALL DELAY

           DJNZ    R2, FLASH1

RET

9.在8051单片机的INTO引脚外接脉冲信号,要求每送来一个脉冲,把30H单元值加1,若30H单元记满则进位31H单元。试利用中断结构,编制一个脉冲计数程序。

解:      ORG  0000H

         AJMP MAIN

        ORG   0003H

        AJMP   SUBG

   MAIN: MOV A, #OOH

         MOV 30H, A

         MOV   31H, A

         MOV   SP, #70H

SETB INT0

SETB   EA

SETB EX0

AJMP $

ORG    0200H

 SUBG: PUSH ACC

INC   30H

MOV A, 30H

JNZ BACK

INC 31H

  BACK: POP

        RET1

10.利用89C51的P1口控制8个发光俄二极管LED。相邻的4个LED为一组,使2组每隔0。5S 交替发亮一次,周尔复始。试编写程序。

解:        ORG  0100H

           MOV   A, #0FH

ABC: MOV   P1, A

     ACALL D05

     SWAP   A

     SJMP   ABC

D05: MOV R6, 250

DY: MOV R7, 250

DAY: NOP

    NOP

    DJNZ   R6, DAY

    DJNZ   R7, DAY

    RET

    END     

11.设计89C51和ADC0809的接口,采集2通道10个数据,存入内部RAM的50H~59H单元,画出电路图,编出:

(1)延时方式;

(2)查询方式;

(3)中断方式中的一种程序。

解:IN2的地址为7FFAH,P1.0查询转换结束信号,查询程序如下:

           ORG   0100H

           MOV R7, #0AH

          MOV R0, #50H

          MOV DPTR, #7FFAH

   NEXT: MOVX @DPTR, A

          JB   P1.0, $

        MOVX A,@DPTR

         MOV @R0, A

         INC R0

          DJNZ NEXT

        SJMP $

第五章

5-1选择题

   1、6264芯片是(B)

(A) EEPROM 

(B)RAM

(C)FLASH  ROM 

(D)EPROM

2、用MCS-51用串行扩展并行I/O口时,串行接口工作方式选择(A)

(A) 方式0 

(B)方式1 

(C)方式2 

(D)方式3

   3、使用8255可以扩展出的I/O口线是(B)

(A) 16根 

(B)24根 

(C)22根 

(D)32根

   4、当8031外出扩程序存储器8KB时,需使用EPROM 2716(C)

(A) 2片 

(B)3片 

(C)4片  

(D)5片

   5、某种存储器芯片是8KB*4/片,那么它的地址线根线是(C)

(A) 11根 

(B)12根 

(C)13根 

(D)14根

   6、MCS-51外扩ROM,RAM和I/O口时,它的数据总线是(A)

(A) P0 

(B)P1 

(C)P2 

(D)P3

  7、当使用快速外部设备时,最好使用的输入/输出方式是(C)

(A)中断 

(B)条件传送 

(C)DMA 

(D)无条件传送

  8、MCS-51的中断源全部编程为同级时,优先级最高的是(D)

(A) INT1 

(B)TI 

(C)串行接口 

(D)INT0

  9、MCS-51的并行I/O口信息有两种读取方法:一种是读引脚,还有一种是(A)

(A)读锁存器具 

(B)读数据库 

(C)读A累加器具 

(D)读CPU

10、MCS-51的并行I/O口读-改-写操作,是针对该口的(D)

(A)引脚  

(B)片选信号 

(C)地址线 

(D)内部锁存器

5-2判断题1、MCS-51外扩I/O口与外RAM是统一编址的。(对)

2、使用8751且EA=1时,仍可外扩64KB的程序存储器。(错)60KB

3、8155的复位引脚可与89C51的复位引脚直接相连。(对)

4、片内RAM与外部设备统一编址时,需要专门的输入/输出指令。(错)统一编址的

特点正是无需专门的输入输出指令。

5、8031片内有程序存储器和数据存储器。(错)无程序存储器

6、EPROM的地址线为11条时,能访问的存储空间有4K。(错)2K.

7、8255A内部有3个8位并行口,即A口,B口,C口。(对)

8、8155芯片内具有256B的静态RAM,2个8位和1个6位的可编程并行I/O口,1个14位定时期等常用部件及地址锁存器。(对)

9、在单片机应用系统中,外部设备与外部数据存储器传送数据时,使用MOV指令。(错)用MOVX指令。

10、为了消除按键的抖动,常用的方法有硬件和软件两种方法。(对)

5-3简答题

1  8031的扩展储存器系统中,为什么P0口要接一个8位锁存器,而P2口却不接?

答:这是因为P0口是扩展储存器系统的多路低8位地址和数据总线,在访问外部存储器时,P0口分时用作输出外部储存器低8位地址和传送数据,为了在整个访问外部存储器期间,对外部存储器存在着有效的低8位地址信号,所以P0口需要外接一个地址锁存器。ALE信号就是用来把P0口输出的地址字节锁存在这个外接的锁存器中,再从锁存器输出外部存储器的低8位地址。而P2口只用作扩展存储器系统的高8位地址线,并在整个访问外部存储器期间不变,所以不必外接地址锁存器。

2  在8031扩展系统中,外部程序存储器和数据存储器共用16位地址线和8位数据线,为什么两个存储空间不会发生冲突?

答:这是因为外部程序存储器和外部数据存储器所使用的控制信号不同。对外部程序存储器的选读通是用PSEN控制线,而对外部数据存储器的读/写控制是用RD和WR读、写控制线,所以不会发生地址冲突。

3   8031单片机需要外接程序存储器,实际上它还有多少条I/O线可以用?当使用外部存储器时,还剩下多少条I/O线可用?

答:8031系统必须外接程序促成器,原则上说,P0和P2口要用作数据和地址总线,所以只有P1和P3口可用作I/O口,共16条I/O线。在使用外部存储器时,除了占用P0和P2口外,还需要用P3口RD(P3.7)和WR(P3.6)两条控制线,所以这种情况下就只剩下14条I/O线可用了。

4  试将8031单片机外接一片2716 EPROM和一片6116 RAM组成一个应用系统,请画出硬件连线图,并指出扩展存储器的地址范围。

答:2716是2K×8位的EPROM,6116是2K×8位的静态RAM,两者都仅需要11根地址线。由于没有规定地址范围,故可按最简单的方式来连接,即省去地址译码器,程序存储器的地址必须从0开始,基本地址为0000H—07FFH。数据存储器的地址为0000H—07FFH。控制线的连接为/PSEN控制EPROM的读出,/RD和/WR控制RAM的读写,两个芯片的片选端都固定接地,连线图如图所示。

5 简述可编程并行接口8255 A的内部结构?

答:8255 A的内部结构由三部分组成:总线接口部分,内部逻辑部分,外部接口部分。

(1) 总线接口部分  其中有数据总线驱动器,读/写控制逻辑

(2) 内部逻辑部分  由A组和B组控制电路。

(3) 外部接口部分  该部分有3个8位并行I/O端口,即A口、B口和C口。

5-4编程题

1  试编程对8155进行初始化,设A口为选通输出,B口为选通输入,C口作为控制联络口,并启动定时器/记数器按方式1工作,工作时间为10ms,定时器计数脉冲频率为单片机的时钟频率24分频,fosc=12MHz

解:算得初值=5000 =1388H

MOV   DPTR,#7F04    ;定时器低八位寄存器地址     DPTR

MOV   A,#88H        ;低8位初值   A

MOVX  @DPTR,A     ; 低8位初值    低8位寄存器

INC     DPTR         ;DPTR指向定时器高8位

MOV    A,#13H        ;高8位初值    A

MOVX   @DPTR,A     ;高8位初值       高8位寄存器

MOV    DPTR,#7F00H  ;8155命令寄存器地址     DPTR

MOV    A,0C5H        ;命令字   A

MOVX   @DPTR,A     ;命令字     命令寄存器

2  设单片机采用8051,未扩展片外ROM,片外RAM采用一片6116,编程将其片内ROM从0100H单元开始的10B得内容依次外接到片外RAM从100H单元开始得10B中去。

解:   MOV    R2,#00H         ;源数据缓冲器地址偏移量00H    A

MOV    R3,#0AH         ;字节长度     R3

MOV    DPTR,#0100H     ;源数据缓冲区首地址     DPTR

MOV    A,R2             ;源地址偏移量     A

MOVC   A,@A+DPTR      ;传送一个数据

MOVX   @DPTR,A

INC      DPTR            ;源地址(目的地址)加1

DJNZ     R3,L1            ;数据全部传送完?没传送完,转L1继续传送

SJMP     $                ;结束

3  8031扩展8255A,将PA口设置成输入方式,PB口设置成输出方式,PC口设置成输出方式,给出初始化程序。

解:    根据题目要求,A口输入,B口输出,二者均采用工作方式0,则控制字为98H。编程如下:

MOV     A,#98H          ;方式控制字     A

MOV     DPTR,#7FFFH    ;选通控制寄存器

MOVX    @TPTR,A        ;方式控制字送入8255A

MOV      DPTR,#7FFCH

MOVX     A,@DPTR       ;读PA口数据

MOV      DPTR,#7FFDH    ;

MOVX     @DPTR,A        ;送PB口数据

4   设计一个2×2行列式键盘电路并编写键盘扫描子程序。

解:  (1)2×2行列式键盘电路如图所示。

(2)键盘扫描子程序:

KEY1:  ACALL    KS1      ;调用判断有无键按下子程序

         JNZ       LK1      ;有键按下,转LK1

         AJMP     KEY1     ;无键按下,返回

LK1:     ACALL   T12MS    ;调延时12ms子程序

         ACALL   KS1       ;查有无键按下

         JNZ      LK2       ;若有,则为键确实按下,转逐列扫描

         AJMP    KEY1      ;无键按下,返回

LK2:       MOV    R4,#00H    ;首列号    R4

           MOV    R2,#FEH    ;首列扫描字    R2

LK4:       MOV    A,R2       ;列扫描字    P1口

           MOV    P1,A        ;使第一列线为0

MOV   A,P1       ;读入行状态

           JB       ACC.0,LONE;第0行无键按下,转查第一行

           MOV    A,#00H   ;第0行有键按下,该行首键号#00H    A

           AJMP    LKP        ;转求键号

LONE:     JB       ACC.1,NEXT ;第一行无键按下,转查下一列

          MOV    A,#02       ;第一行有键按下,该行首键号#02   A

LKP:      ADD    A,R4        ;键号=首行号+列号

          PUSH    ACC        ;键号进栈保护

LK3:      ACALL   KS1        ;等待键释放

          JNZ      LK3        ;未释放,等待

          POP      AC         ;键释放,键号    A

          RET                  ;键扫描结束

NEXT:    INC      R4          ;列号加1,指向下一列

          MOV     A,R2        ;列扫描字    A

          JNB      ACC.1,KND  ;判断2列全扫描完?扫描完,转KND

          RL       A           ;没扫描完,扫描字左移一位,形成下一列扫描字

          MOV     R2,A        ;扫描字     R2

          AJMP     LK4        ;扫描下一列

          AJMP     KEY1       ;全扫描完,返回

          MOV     A,#FCH      ;全扫描字11111100B     A

          MOV     P1,A         ;全扫描字    所有行

          MOV     A,P1         ;读取列值

          CPL      A            ;取正逻辑,高电平表示有键按下

          ANL      A,#0C0H     ;屏蔽低6位,取高2位

          RET                   ;出口状态(A)!=0,有键按下

5  要求将存放在8031单片机内部RAM中30H—33H单元的4字节数据,按十六进制(8位)从做到右显示,试编制程序。

ORG   1000H      ;指向显示缓冲区

MOV   R0,#30H    ;显示字节数

MOV   R2,#04      ;初始显示位置(最高位)

MOV   P1,#08H     ;取1B

  SDLAY:     MOV   A,@R0      ;备份

MOV   B,A         ;截取字节高位

ANL   A,#0F0H      ;装入P1.4—P1.7

ORL   P1,A          ;准备显示右一位

INC   P1            ;取备份

MOV  A,B           ;截取字节低位

SWAP  A            ;

ANL   A,#0F0H

ORL   P1,A          ;装入并显示

INC   P1             ;准备显示下一字节

INC  R0

DJNZ   R2,SDLAY     ;4B未显示完循环

RET                   ;显示完成

END

 START:MOV  DPTR,#7FFFH

              MOV  A,#00

   LOOP :MOVX  @DPTR,A

               INC  A

              MOV  R0,#data            ;data为延时常数

           DJNZ  R0,$               ;延时,改变data可改变锯齿波周期T值

           SJMP LOOP  

例2:产生矩形波

START:     MOV DPTR, #7FFFH

STEP:        MOV A , #dataH        ;置矩形波上限

                 MOVX @DPTR , A       ;D/A转换

                 ACALL DELH             ;调输出“1”时延时

                 MOV A , #00H            ;置矩形波下限

                 MOVX @DPTR, A

                 ACALL DELL              ;调输出“0”时延时

                 SJMP STEP               ;重复执行

例3: 产生三角波

START:     MOV DPTR, #7FFFH

STEP1:      MOV A, #00H

STEP2:      MOVX @DPTR, A

                  INC A

                  CJNE A , #data , STEP2

STEP3:      DEC A

                  MOVX @DPTR , A

                  CJNE A , #01H , STEP3

                  AJMP STEP1


C51单片机习题及答案的评论 (共 条)

分享到微博请遵守国家法律