单片机习题集(含答案)经典 下载本文

单片机原理及应用习题

第一章 绪论

1-1单项选择

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

(A)ASCII (B)BCD码 (C)余3码 (D)循环码 4、十进制0.625转换成二进制数是( )。

(A)0.101 (B) 0.111 (C)0.110 (D)0.100 5、十六进制数7的ASCII码是( )。

(A) 37 (B) 7 (C) 07 (D) 47 6、十六进制数B的ASCII码是( )。

(A) 38 (B) 42 (C) 11 (D) 1011 7、通常所说的主机是指( )

(A)运算器和控制器 (B)CPU和磁盘存储器 (C)CPU和主存储器 (D)硬件和软件 8、使用单片机实现在线控制的好处不包括( )

(A)精确度高 (B)速度快 (C)成本低 (D)能与数据处理结合 1-2填空

1、计算机中常作的码制有 、 和 。 2、十进制29的二进制表示为 。

3、十进制数-29的8位补码表示为 。 4、 是计算机与外部世界交换信息的载体。 5、十进制数-47用8位二进制补码表示为 。 6、-49D的二进制补码为 。

7、计算机中的数称为 ,它的实际值叫 。

8、单片机的存储器结构形式有普林斯顿结构(又称冯.依诺曼结构)与哈佛结构,MCS-51存储器采用的是 结构。 1-3 问答题

1、何谓单片机?单片机与一般微型计算机相比,具有哪些特点? 2、单片机主要应用在哪些领域?

3、为什么80C51系列单片机能成为8位单片机应用主流? 4、举例说明单片机的主要应用领域。

5、二进制数、十进制数、十六进制数各用什么字母尾缀作为标识符?无标识符时表示什么进制数?

6、试比较MCS-51,MSP430,EM78,PIC,M6800及AVP等系列单片机的特点。

第二章 MCS-51单片机的硬件结构与工作原理

2-1 单项选择

1、要MCS-51系统中,若晶振频率屡6MHz,一个机器周期等于( ) μs A 1 B 2 C 3 D 0.5

2、以下不是构成的控制器部件( ):

A 程序计数器、 B指令寄存器、 C指令译码器、 D存储器 3、以下不是构成单片机的部件( )

A 微处理器(CPU)、B存储器 C接口适配器(I\O接口电路) D 打印机 4、下列不是单片机总线是( )

A 地址总线 B 控制总线 C 数据总线 D 输出总线 5、PSW=18H时,则当前工作寄存器是( )

(A)0组 (B)1组 (C)2组 (D)3组 6、P1口的每一位能驱动( )

(A)2个TTL低电平负载有 (B)4个TTL低电平负载 (C)8个TTL低电平负载有 (D)10个TTL低电平负载

7、MCS-51的中断允许触发器内容为82H,CPU将响应的中断请求是( ) (A) T0, (B)T1 (C)串行接口 (D) INT0 8、外部中断0的中断入口地址为 ( ) (A)0003H (B)000BH (C)0013H (D)001BH 9、内部定时/计数器T0的中断入口地址为 ( ) (A)0003H (B)000BH (C)0013H (D)001BH 10、在中断服务程序中,至少应有一条( )

(A)传送指令(B)转移指令(C)加法指法(D)中断返回指令 11、MCS-51有中断源( )

(A)5个 (B)2个 (C)3个 (D)6个

12、在中断流程中有“关中断”的操作,对于外部中断0,要关中断应复位中断允许寄存器的 ( )

(A)EA位和ET0位 (B)EA位和EX0位 (C)EA位和ES位(D)EA位和ET1位 13、MCS-51的并行I/O口读-改写操作,是针对该口的 ( )

(A)引脚 (B)片选信号 (C)地址线 (D)内部锁存器

14、MCS-51的并行I/O口信息有两种读取方法,一种是读引脚,还有一种是 ( ) (A)读锁存 (B)读数据 (C)读A累加器 (D)读CPU 15、MCS-51的中断源全部编程为同级时,优先级最高的是( ) (A)INT1 (B)TI (C)串行接口 (D)INT0 2-2判断

1、MCS-51是微处理器。( )

2、MCS-51系统可以没有复位电路。( )

3、在MCS-51系统中,一个机器周期总是等于1μs。( ) 4、若不使用MCS-51片内存器引脚EA必须高电平。( )

5、我们所说的计算机实质上是计算机的硬件系统与软件系统的总称。 ( ) 6、MCS-51的相对转移指令最大负跳距是127B。 ( ) 7、MCS-51的程序存储器只是用来存放程序的。 ( ) 8、当MCS-51上电复位时,堆栈指针SP=00H。 ( ) 9、MCS-51是微处理器。( ) 10、PC存放的是当前执行的指令。( )

11、MCS-51的特殊功能寄存器分布在60H~80H地址范围内。( ) 12、MCS-51系统可以没有复位电路。( )

13、MCS-51的5个中断源优先级相同。 ( )

14、MCS-51有5个中断源,优先级由软件填写特殊功能寄存器TCON加以选择。( ) 15、MCS-51外部中断0入口地址为0013H。 ( ) 16、MCS-51外部中断0的入口地址是0003H。 ( ) 17、PC存放的是当前执行的指令。 ( )

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

19、MCS-51有4个并行I\\O口,其中P0~P3是准双向口,所以由输出转输入时必须先向输出锁存器写入\。 ( ) 2-3 填空

1、单片微型机由 、 和 三大部分组成。 2、微处器由 、 和 三部分组成。 3、若不使用MCS-51片内程序存储器,引脚EA必须 。

4、当MCS-51引脚 信号有效时,表示从Po口稳定地送出了低8位地址。 5、MCS-51中凡字节地址能被8整除的特殊功能寄存器,即可字节寻址,又可 寻址。 6、MCS-51有4组工作寄存器,它们的地址范围是 。

7、计算机的系统总线有 、 和 。 8、复位后,单片机的堆栈指针SP的值为 。

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

10、MCS-51有 个中断源,有 个中断优先级,优先级由软件填写特殊功能寄存器 加以选择。

11、外部中断1入口地址为_ 。

12、8031单片机复位后,R4所对应的存储单元的地址为 ,因上电复位时,PSW=

。这时当前的工作寄存器区是 组工作寄存器区。 13、内RAM中,位地址为30H的位,该位所在字节的字节地址为 。 2-4 问答题

1、PC机和单片机都是微型机,两者有什么区别? 2、MCS-51单片机的I/O口有什么特点?

3、MCS-51系列单片机的引脚中有多少根I/O线?它们与单片机对外的地址总线和数据总线之间有什么关系?其地址总线和数据总线各有多少位?对外可寻址的地址空间有多大? 4、控制器的主要组成和作用?

5、MCS-51系列单片机在片内集成了哪些主要逻辑功能部件?各个逻辑部件的主要功能是什么?

6、PC是什么寄存器?是否属于特殊功能寄存器?它有什么作用? 7、什么叫总线?总线可分为哪几种?采用总线结构有什么好处? 8、简述CPU读/写存储器的步骤过程。

9、8051单片机的控制总线信号有哪些?各有何作用?

10、8051单片机的存储器组织采用何种结构?存储器地址空间如何划分?各地址空间的地址范围和容量如何?使用上有何特点?

11、8051单片机有多少个特殊功能寄存器?这些特殊功能寄存器能够完成什么功能?特殊功能寄存器中的哪些寄存器可以进行位寻址? 12、DPTR是什么寄存器?它的作用是什么?

13、8051单片机的PSW寄存器各位标志的意义如何?

14、开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?

15、8051片内数据存储器有多少字节?存储空间地址范围为多少?

16、8051片内RAM低128单元划分为哪三个主要部分?各部分主要功能是什么? 17、8051单片机的片内,片外存储器如何选择?

18、MCS-51单片机的时钟周期 ,机器周期,指令周期是如何定义的?当主频为12MHz的时候,一个机器周期是多长时间?执行一条最长的指令需要多长时间? 19、8051单片机复位后 ,各寄存器的初始状态如何?复位方法有几种? 20、简述MCS51单片机的中断响应过程。

21、8051怎么管理中断?怎样开放和禁止中断?怎么设置优先级? 22、8051在什么条件下可响应中断?

23、MCS-51系列单片机的引脚中有多少根I/O线?它们与单片机对外的地址总线和数据总线之间有什么关系?其地址总线和数据总线各有多少位?对外可寻址的地址空间有多大?

24、什么是中断?51单片机有哪几个中断源?各自对应的中断入口地址是什么?中断入口地址与中断服务子程序入口地址有区别吗?

第三章 MCS-51单片机的指令系统与程序设计

3-1选择题

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

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

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

(A)0003H (B)2000H (C)000BH (D)3000H

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

(A)2000H (B)2001H (C)2002H (D)2003H

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

(A)C (B)F0 (C)OV (D)P

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

(C)SETB PSW.4 CLR PSW.3 (D) SETB PSW.3 CLR PSW.4 6、执行MOVX A,DPTR指令时,MCS-51产生的控制信号是( )

(A)/PSEN (B)ALE (C)/RD (D)/WR 7、MOV C,#00H的寻址方式是( )

(A)位寻址 (B)直接寻址 (C)立即寻址 (D)寄存器寻址 8、ORG 0000H

AJMP 0040H ORG 0040H MOV SP,#00H

当执行完左边的程序后,PC的值是( ) (A)0040H (B)0041H (C)0042H (D)0043H

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

(A)MOV指令 (B)PUSH指令 (C)MOVX指令(D)MOVC指令

10、MCS-51单片机可分为两个优先级别。各中断源的优先级别设定是利用寄存器( ) (A)IE (B)IP (C)TCON (D)SCON

11、在寄存器间接寻址方式中,指定寄存器中存放的是( ) (A)操作数 (B)操作数地址 (C)转移地址 (D)地址偏移量

12、在MCS—51中,需双向传递信号的是( ) (A)地址线 (B)数据线 (C)控制线 (D)电源线 13、下列指令中于进位标志位CY无关的指令有( )

(A)移位指令 (B)位操作指令 (C)十进制调整指令 (D)条件转移指令

14、在程序储存器的读操作,只能使用( )

(A)MOV指令 (B) PUSH指令 (C)MOVX指令 (D)MOVC指令 15、以下运算中对溢出标志OV没有影响或不受OV影响的运算是( ) (A)逻辑运算 (B)符号数加减法运算 (C)乘法运算 (D)除法运算 16、以下指令中,属于单纯读引脚的指令是 ( )

(A)MOV P1,A (B)ORL P1,#0FH (C)MOV C,P1.5 (D)DJNZ P1,SHORT-LABLE 3-2 判断题

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

3、调用子程序指令(如:CALL)及返回指令(如:RET)与堆栈有关但与PC无关。( ) 4、MOV @R1,#80H。 ( ) 5、INC DPTR ( ) 6、DEC DPTR ( ) 7、CLR R0 ( ) 8、ANL R1,#0FH ( ) 9、ADDC A,C ( ) 10、XOR P1,#31H ( ) 11、MOV 28H,@R2 ( ) 12、CLR

R0 ( )

13、CPL R5 ( ) 14、MOV R0,R1 ( ) 15、PUSH 16、PUSH 17、RLC

DPTR ( ) R1 ( ) R0 ( )

18、DJNZ @R1,32H ( )

19、寄存器DPTR可拆开成两个独立的寄存器DPH与DPTL使用。( ) 3-3 填空题

1、JBC bit,rel指令是指对位bit进行判转,并 。

2、指令POP B的源操作数是 ,是 寻址方式,目的操作数是 ,是 寻址方式。

3、已知SP=25H,PC=4345H,(24H)=12H,(25H)=34H,(26H)=56H,当执行RET指令后,SP= ,PC= 。

4、指令是由 和 构成。 5、MCS-51单片机

有 、 、 、 、 、 、 七种寻址方式。

6、MOVC A,@A+DPTR第二操作数采用是 寻址方式

7、JBC bit rel 指令是对位bit进行判断,若bit=1则转移,并对该位 。 8、执行ANL P1,# H后,可对P1口的高四位清零。

9、若执行XRL P1,# B后,可对P1口的高两位取反。 10、堆栈必须遵循“ ”的原则。

3-4 问答题与编程题

1、8051单片机指令系统按功能可分为几类?

2、什么叫寻址方式?具有几种寻址方式?它们的寻址范围如何? 3、堆栈的功能是什么?有什么操作原则?栈顶地址如何指示? 4、什么是汇编?什么是汇编语言?它有什么特点? 5、什么叫指令周期?

6、什么是指令?什么是程序?简述程序在计算机中的执行过程。 7、什么是进位和溢出?

8、“DA A”指令的作用是什么?怎样使用?

9、片内RAM 20H~2FH单元中的128个位地址与直接地址00H~7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作?

10、8051单片机指令系统中有长跳转LJMP,长调用LCALL指令,为何还没有设置了绝对跳转AJMP,绝对调用ACALL指令?在实际使用是应怎样考虑? 11、SJMP,AJMP和LJMP指令在功能上有何不同? 12、MOVC A,@DPTR与MOVX A,@DPTR指令有何不同?

13、在“MOVC A,@A+DPTR”和“MOVC A,@A+PC”中,分别使用了DPTR和PC作基址,请问这两个基址代表什么地址?使用中有何不同?

14、设片内RAM中的(40H)=50H,写出执行下列程序段后寄存器A和R0,以及片内RAM中50H和51H单元的内容为何值?

15、堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?

16、在8051的片内RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。分析下面各条指令,说明源操作数的寻址方式,分析按顺序执行各条指令后的结果。 MOV A,40H MOV R0,A MOV P1,#0F0H MOV @R0,20H MOV 50H,R0 MOV A,@R0 MOV P2,P1

17、完成以下的数据传送过程。 (1)R1的内容传送到R0。

(2)片外RAM 20H单元的内容送R0。 (3)片外RAM 20H单元的内容送片内RAM 20H (4)片外RAM 1000H单元的内容送片内RAM 20H (5)片外RAM 20H单元的内容送R0。

(6)片外RAM 2000H单元的内容送片内RAM 20H (7)片外RAM 20H单元的内容送片外RAM 20H

18、设有两个4位BCD码,分别存放在片内RAM的23H,22H单元和33H,32H单元中,求它们的和,并送入43H,42H单元中去。(以上均为低位字节,高位在高字节)。 19、编程将片内RAM的40H~60H单元中内容送到片外RAM以3000H开始的单元中。 20、已知内部RAM的BLOCK单元开始有一无符号数据块,块长在LEN单元。请编出求数据块中各数累加和并存入SUM单元的程序。

20、编程计算片内RAM区30H~37H的8个单元中数的算术平均值,结果存在3AH单元中。 21、把内部RAM中起始地址为DATA的数据串传送到外部RAM以BUFFER为首地址的区域,直到发现“$“字符的ASCⅡ码为止。同时规定数据串的最大长度为32个字节。

22、设内部RAM的20H和21H单元中有两个带符号数,将其中的大数存放在于22H单元中,编出程序。

23、设有100个有符号数,连续存放在片外RAM以2200H为首地址的存储区中,试片成统计其中正数、负数、零的个数。

24、编程将内部数据存储器20H~24H单元压缩的BCD码转换成ASCⅡ存放在于25H开始的单元。

25、试编一查表程序,从首地址为2000H、长度为9FH的数据块中找出第一个ASCII码A,将其地址送到20A0H和20A1H单元中。

26、片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256 27、用查表法编一子程序,将R3中的BCD码转换成ASCII码。

28、片内RAM40H开始的单元内有10个字节的无符号二进制数,编程找出其中最大值并存于50H单元中.

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

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

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

32、利用89C51的P1口控制8个发光二极管LED。相邻的4个LED为一组,使2组每隔0.5s 交替发亮一次,周而复始。试编写程序。

第四章 MCS-51单片机定时/计数器及其应用

4-1 选择题

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

(A)09H (B)87 H (C)00H (D)80H 2、使用定时器T1时,有几种工作模式( )

(A)1种 (B)2种 (C)3种 D)4种

3、MCS-51中,若fosc=12MHz,则定时器T1本身的最大定时时间可为( )。 (A)256μs (B)8192μs (C)65536μs (D)65536×2μs 4、如果以查询方式进行定时应用,则应用程序中的初始内容应包括 ( ) (A)系统复位、设置工作方式、设置计数初值 (B)设置计数初值、设置中断方式、启动定时

(C)设置工作方式、设置计数初值、打开中断 (D)设置工作方式、设置计数初值、禁止中断

5、下列定时/计数硬件资源中,不是供用户使用的是 ( ) (A)定时/计数器高8位TH (B)定时/计数器低8位TL (C)定时器/计数器控制逻辑

(D)用于定时/计数控制的相关寄存器 4-2 填空题

1、MCS-51的定时/计数器由两个8位专用的寄存器,即 和 来控制。

2、MCS-51的定时/计数器有4种工作方式,其中方式 具有自动重装初值功能。定时器T1不能工作在不能工作方式 。

3、若晶振频率fosc=12MHz,则定时/计数器T0工作在计数方式时,在方式0下的最大计数值为 。在方式0下的最大计数值为 。在方式0下的最大计数值为 。

4、若晶振频率fosc=12MHz,要求定时器T1工作于方式1,定时50ms,由软件启动,允许中断。则方式控制字TMOD应为 。

5、在应用定时/计数器时,溢出标志TFx置位后,若用软件处理溢出信息通常有两种方法,即 法和 法。

6、若要允许外部输入INT0的电平控制定时器T0,则门控位GATE= 。且启动控制位TR0= 。 4-3 问答题与编程题

1、8051单片机内部有几个定时器/计数器?它们是由哪些特殊功能寄存器组成? 2、定时器/计数器的4种工作方式个有何特点?如何选择、设定? 3、使用一个定时器,如何通过软硬结合方法实现较长时间的定时?

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

5、若MCS-51单片机的 =6MHz,请利用定时器To定时中断的方法,使P1.0输出占空比为75%的矩形脉冲。

第五章 MCS-51单片机的串行接口

5-1 判断题

1、MCS-51的串行接口是全双工的。( )

2、要进行多机通信,MCS-51串行接口的工作方式应为方式1。 ( ) 3、MCS-51上电复位时,SBUF=00H。 ( )。

4、用串行口扩并行口时,串行接口工作方式应选为方式1。( ) 5、MCS-51串口多机通信时,可工作在方式2或方式3。 ( ) 6、MCS-51串口多机通信时,允许数据双向传送。 ( )

7、MCS-51串行通信时,数据的奇偶校验位可有可无,视具体情况而定。 ( ) 8、在串行口的四种工作方式种,方式1与方式的波特率是固定值。 ( ) 9、用串行口扩并行口时,RXD脚用于接收数据,TXD脚用于发送数据。 ( )

5-2 选择题

1、控制串行口工作方式的寄存器是( )

(A)TCON (B)PCON (C)SCON (D)TMOD

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

(A)98H (B)84H (C)42 (D)22H

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

(A)方式0 (B)方式1 (C)方式2 (D)方式3

4、以下有关第9数据位的说明中,错误的是( ) (A)第9位数据位的功能可有用户定义

(B)发送数据的第9位数据位内容在SCON寄存器的TB8位中预先准备好 (C)帧发送时使用指令把TB8位的状态送入发送SBUF中 (D)接收到的第9数据位送SCON寄存器的RB8中保存

5、若晶振频率为fosc,波特率为fosc/12的工作方式是( )

(A)方式0 (B)方式1 (C)方式2 (D)方式3

6、串行通信的传送速率单位是波特,而波特的单位是 ( ) (A)字符/秒 (B)位/秒 (C)帧/秒 (D)帧/分 7、串行工作方式1的波特率是( ) (A)固定的,为时钟频率的十二分之一 (B)固定的,为时钟频率的三十二分之一` (C)固定的,为时钟频率的六十四分之一

(D)可变的,通过定时器/计数器1的溢出率设定

8、帧格式有一个起始位、8个数据位和1个停止位的异步串行通信方式是( ) (A)方式0 (B)方式1 (C)方式2 (D)方式3 9、以下有关第9数据位的说明中,错误的是( ) (A)第9数据位的功能可由用户定义

(B)发送数据的第9数据位内容在SCON寄存器的TB8位中预先准备好 (C)帧发送时使用指令把TB8位的状态送入发送SBUF中 (D)接收到的第9数据位送SCON寄存器的RB8中保存 5-3 填空题

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

2、用串行I/O口扩展并行I/O口时,串行I/O口工作方式应选为方式 。 3、在串行通信中,有数据传送方向 、 、 三种方式。 4、MCS-51串行通信工作时,在CPU响应中断后,转入中断入口地址 H单元开始执行中断服务程序。

5、串行口在方式1的接收种设置有数据辨识功能,且只有同时满足条件(1)RI= 。(2)SM2= 或接收到的停止位为1时,所接收到的数据才有效。 6、电源控制寄存器PCON的最高位SMOD= 时,串行口的波特率加倍。 7、若串行口工作在方式1实现点对点通信,则方式字TMOD= H。

8、在方式 中,SCON寄存器的SM2、TB8、RB8均无意义,通常将其设为0。

9、方式2、3主要用于多机通信,当SM2=1时,这时第9位数据为 的标志位。 5-4 问答题

1、何为并行通信、串行通信?其中串行通信的两种基本形式是什么?请叙述各自原理。何为波特率?

2、在串行通信中的数据传送方向有单工、半双工和全双工之分,请叙述各自功能。 3、简述串行接口接收和发送数据的过程?

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

5、利用8051串行口控制8位发光二极管工作,要求发光二极管每1s交替地亮、灭,画出电路图并编写程序。

6、试编写一串行通讯的数据发送程序,发送片内RAM的20H~2FH单元的16字节数据,串行接口方式设定为方式2,采用偶校验方式。设晶振频率为6MHZ。

7、试编写一串行通讯的数据接收发送程序,将接收到的16字节数据送入片内RAM 30H ~3FH单元中。串行接口设定为方式3,波特率为1200bps,晶振频率为6MHZ。

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

9、设fosc=11.0592MHz,试编写一段程序,其功能为对串行口初始化,使之工作于方式1,波特率为1200bps;并用查询串行口状态的方法,读出接收缓冲器的数据并回送到发送缓冲器。

10、设计一个串行退通信的数据发送程序,发送内部RAM 50H~5FH中的数据,串行口设定为方式2,采用偶校验方式。设晶振频率为6MHZ。

单片机原理及应用习题答案

第一章 绪论

1-1单项选择

1、A 2、B 3、C 4、A 5、A 6、A 7、C 8、D

1-2填空

1、原码 、 反码 和 补码 。 2、00011101B 。 3、11100011B 。 4、 输入输出设备。 5、11010001B 。

6、11101101B 。

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

8、单片机的存储器结构形式有普林斯顿结构(又称冯.依诺曼结构)与哈佛结构,MCS-51存储器采用的是 哈佛 结构。

1-3 问答题

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

(1) 单片机的程序存储器和数据存储器是分工的,前者为ROM,后者为RAM; (2) 采用面向控制的指令系统,控制功能强; (3) 多样化的I/O接口,多功能的I/O引脚; (4) 产品系列齐全,功能扩展性强;

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

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

3、答:80C51单片机属于Intel公司MCS-51系列单片机,MCS-51系列单片机最初是HMOS 制造工艺,HMOS工艺的缺点是功耗较大,随着CMOS工艺的发展,Intel公司生产了CHMOS 工艺的80C5l系列芯片,大大降低了功耗,并引入了低功耗管理模式,使低功耗具有可 性。随后,Intel公司将80C51内核使用权以专利互换或出售形式转让给世界许多著名IC 造厂商,如Philips、NEC、Atmel、AMD、Dallas、Siemens、Fujutsu、OKI、华邦、LG等。在

持与80C5l单片机兼容的基础上,这些公司融入了自身的优势,扩展了针对满足不同测控 象要求的外围电路,如满足模拟量输入的A/D、满足伺服驱动的PWM、满足高速输入/输 控制的HSI/HSO、满足串行扩展要求的串行扩展总线12C、保证程序可靠运行的WDT、引 使用方便且价廉的Flash ROM等,开发出上百种功能各异的新品种。这样,80C51单片机 变成了有众多芯片制造厂商支持的大家族,统称为80C51系列单片机。

16位单片机,其性能能肯定优于8位单片机,但80C51系列单片机因其性能价格比高、 发装置多、国内技术人员熟悉、芯片功能够用适用并可广泛选择等特点,再加上众多芯片 造厂商加盟等因素,已成为8位单片机的主流,成了事实上的标准MCU芯片。

4、答:由于单片机有许多优点,因此其应用领域之广,几乎到了无孔不入的地步。单片机应用的主要领域有:

1)智能化家用电器。各种家用电器普遍采用单片机智能化控制代替传统的电子线路控 制,升级换代,提高档次。如洗衣机、空调、电视机、录像机、微波炉、电冰箱、电饭煲以及各种视听设备等。

2)办公自动化设备。现代办公室中使用的大量通信和办公设备多数嵌人了单片机一如打印机、复印机、传真机、绘图仪、考勤机、电话以及通用计算机中的键盘译码、磁盘驱动等。 3)商业营销设备。在商业营销系统中已广泛使用的电子称、收款机、条形码阅读器、 IC卡刷卡机、出租车计价器以及仓储安全监测系统、商场保安系统、空气调节系统、冷冻保险系统等都采用了单片机控制。

4)工业自动化控制。工业自动化控制是最早采用单片机控制的领域之一。如各种测控系统、过程控制、程序控制、机电一体化、PIC等。在化工、建筑、冶金等各种工业领域都要用到单片机控制。

5)智能化仪表。采用单片机的智能化仪表大大提升了仪表的档次,强化了功能。如数据处珲和存储、故障诊断、联网集控等。

6)智能化通信产品,最突出的是手机,当然手机内的芯片属专用型单片机。

7)汽车电子产品。现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信

系统和运行监视器(黑匣子)等都离不开单片机。

8)航空航天系统和国防军事、尖端武器等领域。单片机的应用更是不言而喻。 单片机机应用的意义不仅在于它的广阔范围及所带来的经济效益。更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。以前自动控制中的PID调节,现在可以用单片机实现具有智能化的数字计算控制、模糊控制和自适应控制。这种以软件取代硬件并能提高系统性能的控制技术称为微控制技术。随着单片机应用的推广,微控制技术将不断发展完善。

5、答:二进制数用尾缀B表示,十六进制数用尾缀H表示,十进制数用尾缀D表示,无尾缀标识符时表示十进制数。二进制数和十六进制数则必须加尾缀,否则错。 6、答:MCS-51为主流产品。

MSP430的功能较强。是一种特低功耗的Flash微控制器。主要用于三表及超低功耗场合。

EM78系列单片机采用高速CMOS工艺制造,低功耗设计为低功耗产品,价格较低。具有三个中断源、R-OPTION功能、I/O唤醒功能、多功能I/O口等。具有优越的数据处理性能,采用RISC结构设计。

PIC系列8位单片机是Microship公司的产品。CPU采用RISC结构,运行速度快,价格低适于用量大、档次低、价格敏感的产品。

Motorola是世界上最大的单片机生产厂家之一,品种全、选择余地大、新产品多。其特点是噪声低,抗干扰能力强,比较适合于工控领域及恶劣的环境。 AVR是增强RISC内载Flash的单片机,单片机内部32个寄存器全部与ALU直接连接,突破瓶颈限制,每1MHz可实现1MIPS的处理能力,为高速、低功耗产品。端口有较强的负载能力,可以直接驱动LED。支持ISP、IAP,I/O口驱动能力较强。

第二章 MCS-51单片机的硬件结构与工作原理

2-1 单项选择

1B;2D;3 D;4D;5 D;6B;7A;8 A;9B;10D;11A;12B ;13D;14 A ;15D

2-2判断

1×;2×;3×;4×;5√;6×;7×;8×;9×;10×;11×;12×;13×;14×;15×;16√;17×;18×;19×

2-3 填空

1、CPU 、存储器 、I\\O接口

2、 寄存器 、控制器 、 运算器 3、 接地 。 4、 ALE 5、位 。

6、00H~1FH

7、地址总线 、 控制总线 、 数据总线 。 8、 07H 。 9、 8

10、5 、 2 、 IP 。 11、_ 0013H 。

12、 04H 、 00H 、 0 。 13、 26H 。

2-4 问答题

1、答:PC机和单片机都是微型机,是微型计算机技术发展的两大分支。PC机以满足海量高速数值计算为主,兼顾控制功能。单片机以满足测控对象的测控功能,嵌入式应用为主,

兼顾数据处理能力。

2、解:8051单片机的4个I/O口在结构上是基本相同的,但又各具特点。这四个端口都是8位双向口,每个端口都包括一个锁存器、一个输出驱动器和输入缓冲器。在无片外扩展存储器的系统中,这四个端口的每一位都可以作为双向通用I/O端口使用。在作为一般的通用I/O输入时,都必须先向锁存器写入“1”,使输出驱动场效应管FET截止,以免误读数据。各自特点如下:

(1)P0口为双向8位三态I/O口,它既可作为通用I/O口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口。作为通用I/O口时,输出数据可以得到锁存,不需外接专用锁存器;输入数据可以得到缓冲,增加了数据输入的可靠性。每个引脚可驱动8个TTL负载。

(2)P1口为8位准双向I/O口,内部具有上拉电阻,一般作通用I/O口使用,它的每一位都可以分别定义为输入线或输出线,作为输入时,锁存器必须置1。每个引脚可驱动4个TTL负载。

(3)P2口为8位准双向I/O口,内部具有上拉电阻,可直接连接外部I/O设备。它与地址总线高8位复用,可驱动4个TTL负载。一般作为外部扩展时的高8位地址总线使用。 (4)P3口为8位准双向I/O口,内部具有上拉电阻,它是双功能复用口,每个引脚可驱动4个TTL负载。作为通用I/O口时,功能与P1口相同,常用第二功能。作为第二功能使用时,各位的作用见教材P.13表1.2.5所示。

3、解:80C51单片机有4个I/O端口,每个端口都是8位双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0~P3)、一个输入驱动器和输入缓冲器。通常把4个端口称为P0~P3。在无片外扩展的存储器的系统中,这4个端口的每一位都可以作为双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线。

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

5、答:MCS-51单片机在片内集成了中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、定时器/计数器、并行I/O接口、串行I/O接口和中断系统等几大单元。

CPU是整个单片机的核心部件,由运算器和控制器组成。运算器可以完成算术运算和逻辑运算,其操作顺序在控制器控制下进行。控制器是由程序计数器PC(Program Counter)、指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)、定时控制逻辑和振荡器OSC等电路组成。CPU根据PC中的地址将欲执行指令的指令码从存储器中取出,存放在IR中,ID对IR中的指令码进行译码,定时控制逻辑在OSC配合下对ID译码后的信号进行分时,以产生执行本条指令所需的全部信号。

程序存储器(ROM)用于存储程序、常数、表格等。 数据存储器(RAM)用于存储数据。

8051内部有两个16位可编程序的定时器/计数器T0和T1,均为二进制加1计数器。可用于定时和对外部输入脉冲的计数。

8051的中断系统主要由中断允许控制器IE和中断优先级控制器IP等电路组成。可实现对5个中断源的管理。8051的中断系统主要由中断允许控制器IE和中断优先级控制器IP等电路组成。其中,IE用于控制5个中断源中哪些中断请求被允许向CPU提出,哪些中断源的中断请求被禁止;IP用于控制5个中断源的中断请求的优先权级别。

I/O接口是MCS-51单片机对外部实现控制和信息交换的必经之路,用于信息传送过程中的速度匹配和增加它的负载能力。可分为串行和并行I/O接口。 6、答:PC是16位程序计数器(Program Counter),它不属于特殊功能寄存器范畴,程序员不以像访问特殊功能寄存器那样来访问PC。PC是专门用于在CPU取指令期间寻址程序存储器。PC总是保存着下一条要执行的指令的16位地址。通常程序是顺序执行的,在一般情况下,当取出一个指令(更确切地说为一个指令字节)字节后,PC自动加1。如果在执行转移指令、子程序调用/返回指令或中断时,要把转向的地址赋给PC。 7、答:总线是用于传送信息的公共途径。

总线可以分为数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB

(Control Bus)。总线把微处理器(CPU)、存储器、I/O接口连接在一起。采用总线结构,可以减少信启传输线的根数,提高系统的可靠性,增加系统的灵活性。

8、答:1)存储器的读操作。例如,若要将存储器40H中的内容50H读出,其过程如下:

11 CPU将地址码40H送到地址总线上,经存储器地址译码器选通地址为40H的存储

单元:

②CPU发出“渎”信号,存储器读/写控制开关将数据传输方向拨向“读”; ③存储器将地址为40H的存储单元中的内容50H送到数据总线上; ④CPU将数据总线上的数据50H读人指定的某一寄存器。 对存储单元的读操作,不会破坏其原来的内容。相当于复制。

2)存储器的写操作。例如,若要将数据ABH写入存储器地址为CDH的存储单元中,其过程如下:CPU将地址码CDH送到地址总线上,经存储器地址译码器选通地址为CDH的存储单元;②CPU将数据ABH送到数据总线上;③CPU发出“写”信号,存储器读/写控制开关将数据传送方向拨向“写”;④存储器将数据总线上的数据ABH送人已被选中的地址为CDH的存储单元中。对存储单元的写操作,改变或刷新了其原来的内容,俗称“冲”掉了原来的内容。

9、答:控制线一共有6条:

(1)ALE/PROG:地址锁存允许/编程线,配合P0口引脚的第二功能使用。在访问片外存储器时,8051CPU在P0.7~P0.0引脚上输出片外存储器低8位地址的同时在ALE/PROG上输出一个高电位脉冲,用于把这个片外存储器低8位地址锁存到外部专用地址锁存器,以便空出P0.7~P0.0引脚线去传送随后而来的片外存储器读写数据。在不访问片外存储器时,8051自动在ALE/PROG上输出频率为fosc/6的脉冲序列。该脉冲序列可用作外部时钟源或作为定时脉冲源使用。

(2)EA/Vpp:允许访问片外存储器/编程电源线,可以控制8051使用片内ROM还是使用片外ROM。若EA=0,则允许使用片内ROM;若EA=1则允许使用片外ROM。 (3)PSEN:片外ROM选通线,在执行访问片外ROM的指令MOVC时,8051自动在

PSEN上产生一个负脉冲,用于为片外ROM芯片的选通。其他情况下PSEN线均为高电平

封锁状态。

(4)RST/VPD:复位/备用电源线,可以使8051处于复位工作状态。 10、答:(1)80C51在结构上的特点

80C51采用将程序存储器和数据存储器截然分开,分别寻址的结构,称为Harvard结构。

(2)在物理和逻辑上的地址空间

存储器上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。

在逻辑上有3个存储器地址空间:片内、片外统一的64KB程序存储器地址空间,片内256B数据存储器地址空间,片外64KB的数据存储器地址空间。 (3)访问格式

访问片内RAM采用MOV格式 访问片外RAM采用MOVX格式

11、答:8051有21个特殊功能寄存器(PC除外),它们被离散地分布在内部RAM的80H~FFH地址单元中,共占据了128个存储单元,其中有83位可以位寻址。特殊功能寄存器SFR的分布和功能见教材P.24表2-3。

12、答:数据指针DPTR是16位的专用寄存器,它由两个8位的寄存器DPH(高8位)和DPL(低8位)组成。专门用来寄存片外RAM及扩展I/O口进行数据存取时的地址。编程时,既可以按16位寄存器来使用,也可以按两个8位寄存器来使用(即高位字节寄存器DPH和低位字节寄存器DPL)。

DPTR主要是用来保存16位地址,当对64KB外部数据存储器寻址时,可作为间址寄存器使用。

13、答:程序状态字PSW是8位寄存器,用于存放程序运行的状态信息,PSW中各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。各个标志位的意义如下:

PSW.7(Cy):进位标志位。 PSW.6(AC):辅助进位标志位,又称为半进位标志位。 PSW.5(F0):用户标志位。 PSW.4、PSW.3(RS1和 RS0):寄存器组选择位。 PSW.2(OV):溢出标志位。 PSW.1(空缺位):此位未定义。 PSW.0(P):奇偶校验位

14、答:开机复位后,CPU使用的是第0组工作寄存器。它们的地址是00H-07H。CPU通过对程序状态字PSW中RS1和RS0的设置来确定和改变当前工作寄存器组。 15、答:8051片内数据存储器有256B寻址空间。存储器空间的地址范围为:00H—-FFH

在这个存储器空间又可分为:

基本的数据存储区:00H—-7FH,可划分为工作寄存器、位寻址区、堆栈与数据缓冲区。

16、答:片内RAM低128单元划分及主要功能如下:

(1)工作寄存器组(00H——1FH)

这是一个用寄存器直接寻址的区域,内部数据RAM区的0—31,共32个单元。它是4个通用工作寄存器组,每个组包含8个8位寄存器,编号为R0——R7。

(2)位寻址区(20H——2FH)

16个字节单元,共包含128位,这16个字节单元既可以进行字节寻址,又可以实现位寻址。主要用于位寻址。

(3)堆栈与数据缓冲区(30H——7FH) 用于设置堆栈、存储数据。

17、答:程序存储器通过EA/Vpp引脚选择。若EA=0,则允许使用片内ROM;若EA=1则允许使用片外ROM。 数据存储器通过指令区分:访问片内RAM采用MOV指令,访问片外RAM采用MOVX指令。

18、答:时钟周期又称为振荡周期,由单片机内部振荡电路OSC产生,定义为OSC时钟频率的倒数。时钟周期又称为节拍(用P表示)。时钟周期是时序中的最小单位。一个状态有两个节拍,

机器周期定义为实现特定功能所需的时间。MCS-51的机器周期由12个时钟周期构成。 执行一条指令所需要的时间称为指令周期,指令周期是时序中的最大单位。由于机器执行不同指令所需的时间不同,因此不同指令所包含的机器周期数也不尽相同。MCS-51的指令可能包括1~4个不等的机器周期。 当MCS-51的主频为12MHz时,一个机器周期为1?s。执行一条指令需要的最长时间为4?s。 19、答:8051单片机复位后机器的初始状态,即各寄存器的状态:PC之外,复位操作还对其它一些特殊功能寄存器有影响,它们的复位状态如下: 寄存器 复位时内容 寄存器 复位时内容 PC ACC B

0000H 00H 00H TCON TL0 TH0 0×000000B 00H 00H

PSW SP DPTR P0—P3 00H 07H 0000H TH1 TH1 SCON 00H 00H 00H 不确定 FFH SBUF ××000000B PCON 0×××0000B TMOD 单片机复位方法有:上电自动复位,按键电平复位和外部脉冲三种方式 20、答:

单片机一旦响应中断请求, 就由硬件完成以下功能:

 (1) 根据响应的中断源的中断优先级, 使相应的优先级状态触发器置1;

(2) 执行硬件中断服务子程序调用, 并把当前程序计数器PC的内容压入堆栈,保护断点,寻找中断源; 

(3) 清除相应的中断请求标志位(串行口中断请求标志RI和TI除外); 

(4) 把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC, 从而转入相应的中断服务程序。

(5)中断返回,程序返回断点处继续执行。 21、答:

(1)由中断源提出中断请求,由中断控制允许控制决定是否响应中断,如果允许响应中断,则CPU按设定好的优先级的顺序响应中断。如果是同一优先级的中断,则按单片机内部的自然优先级顺序(外部中断0→定时器0中断→外部中断l→定时器1中断→串行接口中断)响应中断。

CPU响应中断请求后,就立即转入执行中断服务程序。保护断点、寻找中断源、中断处理、中断返回,程序返回断点处继续执行。

(2)由中断允许寄存器IE控制开放和禁止中断。欲开放某一中断,则应先开放总中断允许(EA置1),然后开放相应中断的中断允许(相应位置1);若要要禁止中断,则EA置O即可。

(3)由中断优先级控制寄存器IP控制中断优先级,相应位置1,则设为高级中断,置0则为低级。其中:PS为串行中断优先级,PTl(0)为定时中断1(0)优先级,PXl(0)外部中断1(0)优先级。 22、答:

(1)有中断源发出中断请求。

(2)中断总允许控制位EA=l, CPU开放总中断。

(3)申请中断的中断源的中断允许位为1,即该中断没有被屏蔽。 (4)无同级或更高级中断正在服务。 (5)当前指令周期已经结束。

(6)若现行指令为RETI或访问IE或IP指令时,读指令以及紧接着的另一条指令已执行完毕。

满足以上条件,则CPU响应响应中断元的中断请求。

23、答:80C51单片机有4个I/O端口,每个端口都是8位双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0~P3)、一个输入驱动器和输入缓冲器。通常把4个端口称为P0~P3。在无片外扩展的存储器的系统中,这4个端口的每一位都可以作为双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线

24、答:中断是指CPU暂时中止其正在执行的程序,转去执行请求中断的那个外围设备或事件的服务程序,等处理完后再返回执行原来中止的程序。

MCS-51有5个中断源,其中断源与中断入口地址分别为:

INT0 T0 INT1

0003H 000BH 0013H

T1

001BH

串行口 0023H

中断入口地址与中断服务子程序的入口地址是有区别的,中断入口地址如上,而中断服务子程序的入口地址就是中断服务子程序名称所在的地址即中断服务子程序第一句所在的地址。

第三章 MCS-51单片机的指令系统与程序设计

3-1选择题

1B ;2B;3D;4D ;5B;6C; 7 A;8 C;9D;10B;11B;12B;13D;14D;15A ;16

3-2 判断题

1×;2×;3×;4√;5√;6×;7×;8×;9×;10√;11×;12×;13×;14×;15×16×;17 ×;18×;19√

3-3 填空题

1、 清零

2、 SP 、 寄存器间接寻址 、 B 、 寄存器寻址 3、 23H 、 3412H 4、 操作码 、 操作数 5、 立即数寻址 、 直接寻址 、 寄存器寻址、 寄存器间接寻址、 变址寻址 、 相对寻址、 位寻址 6、 变址 7、 清零 。 8、 0F 9、11000000 10、 后进先出

3-4 问答题与编程题

1、答: MCS-51单片机指令系统按功能可分为5类:

(1)数据传送指令 (2)算术运算指令

(3)逻辑运算和移位指令 (4)控制转移指令

(5)位操作指令

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

MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表:

寻址方式 使用的变量 寻址范围 立即寻址 程序存储器 内部RAM低128个字节; 直接寻址 特殊功能寄存器SFR 寄存器寻址 R0~R7;A、B、DPTR、C @R0、@R1、SP 内部RAM、堆栈指针SP 寄存器间接寻址 @R0、@R1、@DPTR 外部RAM 变址寻址 相对寻址 位寻址

3、答:堆栈是存储器中的特殊群体。在内RAM中专门辟出一个连续存储区,用来暂时存放子程序断口地址、中断断口地址和其他需要保存的数据。

@A+PC、@A+DPTR PC+偏移量 程序存储器 程序存储器 内部RAM低128B位寻址区 可位寻址的特殊功能寄存器位

堆栈操作无论是存入或取出数据,均只能依次存人或依次取出,不能越位,必须遵循“先进后出\、“后进先出”的原则。

堆栈指针SP指出栈顶存储单元的地址。

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

汇编语言:是用助记符替代机器语言中的操作码,用16进制数替代二进制代码。特点是比较直观,易于记忆和检查,可读性较好。但是计算机执行时,必须将汇编语言翻译成机器语言,不同的微处理器有不同的汇编语言。

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

6、答:指令:人为输入计算机,由计算机识别并执行一步步操作的命令的形式称为指令。

程序:一系列指令的有序集合称为程序。 程序在计算机中是按序执行的,CPU通过程序计数器PC控制程序的执行顺序,一般情况下程序是按序执行的,当执行转移、调用、返回等指令时,程序转移到相应的目的地址处执行。CPU根据程序计数器PC中的地址将欲执行指令的指令码从存储器中取出,存放在IR中,ID对IR中的指令码进行译码,定时控制逻辑在OSC配合下对ID译码后的信号进行分时,产生执行本条指令所需的全部信号,完成本条指令的执行。

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

8、答:这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。

在计算机中,遇到十进制调整指令时,中间结果的修正是由ALU硬件中的十进制修正电路自动进行的。用户不必考虑何时该加“6”,使用时只需在上述加法指令后面紧跟一条“DA A”指令即可。

9、答: 虽然内部RAM位寻址区的位地址范围00H~7FH与低128个单元的单元地址范围00H~7FH形式完全相同,但是在应用中可以通过指令的类型区分单元地址和位地址。 位寻址的操作只适用于下列位指令,而直接寻址操作对这些指令是无效的。

MOV C,bit MOV bit,C CLR bit SETB bit CPL bit ANL C,bit ANLC,/bit JB bit,rel JNB bit,rel

10、答: 在实际应用中,可从寻址范围和指令长度两个方面来选择长跳转指令LJMP和短跳转指令AJMP、长调用指令LCALL和短调用指令ACALL。

长跳转LJMP在64KB范围内转移,而短跳转AJMP只能在2KB空间转移。长调用LCALL调用位于64KB程序空间的子程序,而短调用ACALL调用位于2KB程序空间范围的子程序。AJMP、ACALL指令代码长度为2个字节;LJMP、LCALL指令代码长度为3个字节。 11、答: 指令的转移范围不同。

SJMP是256B范围内的相对转移指令,AJMP是2KB范围内的无条件短跳转指令,LJMP是64KB范围内的无条件长跳转指令。 12、答: 指令的转移范围不同。

SJMP是256B范围内的相对转移指令,AJMP是2KB范围内的无条件短跳转指令,LJMP是64KB范围内的无条件长跳转指令。

13、答: 使用@A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。

使用@A+PC基址变址寻址时,PC仍是下条指令首地址,而A则是从下条指令首地址到常数表格中的被访问字节的偏移量。 14、答:结果为:(A)=30H (R0)=50H (50H)=00H (51H)=30H 15、答:结果为: (61H)=24H (62H)=10H (30H)=00H (31H)=0FFH DPTR=2410H SP=60H 16、答: 指令 源操作数的寻址方式 执行指令后的结果

MOV A,40H 直接寻址 (A)=50H MOV R0,A 寄存器寻址 (R0)=50H MOV P1,#80H 立即寻址 (P1)=80H MOV @R0,20H 寄存器间接寻址 MOV DPTR,#2000H 立即寻址 MOV 40H,30H 直接寻址 MOV R0,30H 直接寻址 MOV D0H,R0 直接寻址 MOV 10H,#10H 立即寻址 MOV A,@R0 寄存器间接寻址 MOV P2,P1 寄存器寻址 17、答:(1)R1的内容传送到R0 ; MOV A, R1 MOV R0, A

(2)片外RAM 20H单元内容送R0 ; MOV DPTR, #0020H MOVX A, @DPTR MOV R0, A

(3)片外 RAM 20H单元的内容送片内RAM 20H单元; MOV DPTR, #0020H MOVX A, @DPTR MOV 20H, A

(4)片外RAM 1000H单元的内容送片内 RAM 20H 单元; MOV DPTR, #1000H MOVX A, @DPTR MOV 20H, A (5)ROM 2000H单元的内容送R0单元; MOV A, #00H MOV DPTR, #2000H MOVC A,@A+DPTR MOV R0H, A

(6)ROM 2000H 单元的内容送片内RAM 20H单元; MOV A, #00H MOV DPTR, #2000H MOVC A,@A+DPTR

MOV 20H, A

(7)ROM 2000H单元的内容送片外RAM 20H单元。 MOV A, #00H MOV DPTR, #2000H MOVC A,@A+DPTR MOV DPTR, #0020H MOVX @DPTR, A 18、解: ORG 0000H

LJMP START ORG 0030H START: MOV A,22H

(50H)=30H (DPTR)=2000H (40H)=40H (R0)=40H (D0H)=40H (10H)=10H (A)=50H (P2)=80H

ADD A,32H DA A MOV 42H,A MOV A,23H ADDC A,33H DA A MOV 43H,A SJMP $

END

19、解: ORG 0000H

LJMP MAIN ORG 0030H MAIN: MOV R7,#20H MOV R1,#40H MOV DPTR,#3000H LOOP:MOV A,@R1 MOVX @DPTR,A INC R1 INC DPTR DJNZ R7,LOOP SJMP $

END 20、解:

参考程序: ORG 0200H LEN:DATA 20H SUM:DATA 21H BLOCK: DATA 22H CLR A MOV R2,LEN MOV R1,#BLOCK INC R2 SJMP CHECK LOOP: ADD A,@R1 INC R1 CHECK: DJNZ R2,LOOP MOV SUM,A END 20、解: ORG 0000H

LJMP MAIN ORG 0030H MAIN: MOV R0,#30H MOV R1,#00H MOV R2,#00H MOV R3,#07H LP2: MOV A,@R0 ADD A,R2 MOV R2,A JNC LP1 INC R1 LP1: INC R0 DJNZ R3,LP2 MOV R3,#03H LP3: CLR C MOV A,R1 RRC A

A清零 R2 R1 R2←块长+1 A←A+(R1) R1

;;块长度送;块始址送;;;修改数据块指针;存累加和

MOV R1,A MOV A,R2 RRC A MOV R2,A DJNZ R3,LP3 MOV 3AH,R2 SJMP $

END 21、解:参考程序: ORG 0200H

MOV R0,#DATA ;DATA为数据区起始地址 MOV DPTR,#BUFFER ;BUFFER为数据区起始地址 MOV R1,#20H ;最大数据串长 LOOP: MOV A,@R0 ;取数据 SUBB A,#24H ;判是否为 $ 符 JZ LOOP1 INC DPTR INC R0 MOVX @DPTR,A ;数据传送 DJNZ R1,LOOP ;循环控制

LOOP1: RET ;结束 22、解:

参考程序:先判两数是否同号,在同号中判大小,异号中正数为大。 MOV A,20H XRL A,21H ANL A,#80H ;用于判断符号位 JZ CMP ;A为0,说明符号相同,需要比较转移。 JB 20H.7,BG ;A不为0,两数异号,判20H单元是否为正数 MOV 22H,20H SJMP $ BG: MOV 22H,21H SJMP $ CMP: MOV A,20H ;两数同号,比较大小 CJNE A,21H,GR ;影响进位或借位 GR: JNC AG MOV 22H,21H SJMP $ MOV 22H,20H SJMP $ 23、解: ORG 0000H

LJMP MAIN ORG 0030H MAIN: MOV R2,#100 MOV R3,#00H MOV R4,#00H MOV R5,#00H MOV DPTR,#2000H LOOP: MOVX A,@DPTR CJNE A,#00H,NET1 INC R3 INC DPTR DJNZ R2,LOOP SJMP NET3 NET1: JC NET2

INC R4 INC DPTR DJNZ R2,LOOP SJMP NET3 NET2: INC R5 INC DPTR DJNZ R2,LOOP NET3: SJMP $

END 24、解:

参考程序:注意压缩的BCD码为一个字节占两位BCD码。 ORG 0000H MOV R7,#05H MOV R0,#20H MOV R1,#25H NE: MOV A,@R0 ANL A,#0FH ADD A,#30H MOV @R1,A INC R1 MOV A,@R0 ANL A,#0F0H SWAP A ADD A,#30H MOV @R1,A INC R0 INC R1 DJNZ R7,NE SJMP $ END25、解: ORG 0000H LJMP MAIN ORG 0030H MAIN: LCALL SUBONE AJMP $

;SUBONE use dptr,a,30h,31h SUBONE: MOV DPTR,#2000H LOOP: MOVX A,@DPTR XRL A,#41H JNZ TT MOV A,30H MOV DPTR,#20A0H MOVX @DPTR,A MOV DPTR,#20A1H MOV A,31H MOVX @DPTR,A RET TT: INC DPTR MOV 30H,DPH

MOV 31H,DPL

;R7为转换字节数 ;R0为源操作数地址 ;R1为目的操作数地址 ;先取低位BCD码 ;将BCD码转换成ASCⅡ码 ;取高位BCD码 ;半字节交换 ;将高位BCD码转换成ASCⅡ码

MOV A,31H CJNE A,@00H,LOOP RET END

26、 解 ADDIO: MOV R0,30H

MOV R7,#9 MOV A,@R0 LOOP: INC R0 ADD A,@R0 DJNZ R7,LOOP MOV 30H,A

RET

27、 解: 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 28、 解 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 29、解 P1.0 8013 P1.7 D0 Q0 74LS240 D7 Q7 5V

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

MOV A,#01H ;灯亮初值

SHIFT: LCAIL FLASH ;调闪亮10次子程序 RR A ;右移一位 SJMP SHIFT ;循环 FLASH: MOV R2,#0AH 闪烁10次计数 FLASH1; MOV LCALL MOV LCALL DJNZ RET

30、解: 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

31、解: MOV A,#01H SHIFT: LCALL FLASH

RR A

SJMP SHIFT

FLAH: MOV R2,#0AH FLAH1: MOV P1,A LCALL DELAY MOV P,#00H LCALL DELAY

DJNZ R2,FLASH1

RET

DELAY:……

32、解: ORG 0100H MOV A,#0FH

ABC: MOV P1,A ACALL D05 SWAP A SJMP ABC

P1,A DELAY P1,#00H DELAY R2,FLASH1 ;延时 ;熄灭 ;延时 ;循环

;点亮

D05: MOV R6,250 DY: MOV R7,250 DAY: NOP NOP

DJNZ R6,DAY DJNZ R7,DY RET

END

第四章 MCS-51单片机定时/计数器及其应用

4-1 选择题

1A;2C;3C;4B;5C 4-2 填空题

1、TMOD工作方式寄存器 、 TCON控制寄存器 2、 2 、 3

3、8192 、65536 、 256 4、0001000B(或10H) 。 5、查询、中断 6、 1 、 1 4-3 问答题与编程题 1、答:

80C51单片机片内设有2个定时器/计数器:定时器/计数器T0和定时器/计数器T1,T0由TH0、TL0组成,T1由TH1、TLl组成。T0、T1由特殊功能寄存器TMOD、TCON控制。 2、答:

(1) 工作方式O: 13位定时器/计数器工作方式。

工作方式0由TH0的全部8位和TL0的低5位构成13位加1计数器,此时TL0的高3位未用。在计数过程中,当TL0的低5位溢出时,都会向TH0进位,而全部13位计数器溢出时,则计数器溢出标志位TF0置位。 (2) 工作方式l: 16位的定时器/计数器方式。

工作方式1由TH0作为高8位,TL0为低8位,在计数过程中,当全部16位计数器溢出时,则计数器溢出标志位TF0置位。

(3) 工作方式2: 自动重新装入计数初值的8位定时器/计数器工作方式。

工作方式2的16位定时器/计数器被拆成两个8位寄存器TH0和TL0,CPU在对它们初始化时必须装入相同的定时器/计数器初值。定时器/计数器启动后,TL0按8位加1计数器计数,当TL0计数溢出时,置位TF0的同时又从预置寄存器TH0中重新获得计数初值并启动计数。如此反复。适合于需要重复计数的应用场合,也可以当做串行数据通信的波特率发生器使用。

(4) 工作方式3: 两个8位定时器/计数器(仅适用于T0)。

在工作方式3时,定时器/计数器0被拆成两个独立的8位计数器TL0和TH0。其中,TL0既可以作计数器使用,也可以作为定时器使用,定时器/计数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式1完全相同。TH0只能作为简单的定时器使用,只能借用定时器/计数器1的控制位TR1和TF1,也就是以计数溢出去置位TF1,TR1则负责控制TH0定时的启动和停止。

一般情况下,只有在T1以工作方式2运行(当波特率发生器用)时,才允许T0工作于方式3。

TMOD用于控制定时器/计数器T0和T1的工作方式,M1M0为工作方式选择位。 M1M0=00 方式0,13位定时器/计数器; M1M0=01 方式1,16位定时器/计数器;

M1M0=10 方式2,自动重新装入计数初值的8位定时器/计数器; M1M0=11 方式3,两个8位定时器/计数器(仅适用于T0)。

C/T为定时方式/计数方式选择位。若设定C/T=0,则选择定时器工作方式;若设定

C/T=1,则选择计数器工作方式。一个定时器/计数器同一时刻或者作定时用,或者作计数

用,不能同时既作定时又作计数用。

GATE:门控位。它的状态决定了定时器/计数器启/停控制取决于TR0还是取决于TR0和INT0引脚两个条件的组合。若GATE=0,则只由TCON中的启/停控制位TR0控制定时器/计数器的启/停。此时,只要TR0=1,则接通模拟开关,使计数器进行加法计数,定时器/计数器启动工作。而如果TR0=0,则断开模拟开关,定时器/计数器停止工作。若GATE=1,由外部中断请求信号INT0和TCON中的启/停控制位TR0组合状态控制定时器/计数器的启/停。只有TR0=1,且INT0引脚也是高电平,才能启动定时器/计数器工作,否则,定时器/计数器停止工作。

定时器/计数器的定时器/计数器范围为:

13

工作方式0:13位定时器/计数器方式,因此,最多可以计到2,也就是8 192次。 工作方式1:16位定时器/计数器方式,因此,最多可以计到216,也就是65 536次。 工作方式2和工作方式3:都是8位的定时器/计数器方式,因此,最多可以计到28,也说是256次。

3、答: 设定好定时器的定时时间,采用中断方式用软件设置计数次数,进行溢出次数累计,从而得到较长的时间。 4、解:X=216-t(f/12)

=2-1*10*6*10/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、解:由fosc =6MHz,可以知道机器周期为2us。P1.0输出占空比为75%的矩形脉冲,即

P1.0输出高、低电平之比为3:1。题中仅给定占空比,故可自定义周期。若将定时器To设定工作于8位计数初值,即方式2 (或3)的定时器,则可将Pl.0输出高、低电平的时间定为2us╳192(=384us)和2us╳64(=128us),即定时器To每隔384us和128us交替中断。384us和128us定时器的计数值分别为192和64,计数初值分别为40H和C0H。先使P1.0输出高电平,定时384us。当384us定时时间到后,使P1.0输出低电平,并改变定时128us。128us定时时间到后再使Pl.0输出高电平,并改变定时384us。这样,不断循环。

ORG 0000H AJMP MAIN ORG 000BH

16

-3

6

CPL P1.0 CPL F0 JB F0,GA0 MOV TL0,#0C0H

RETI

GAO: MOV TL0,#40H

RET1

MAIN:MOV TL0,#40H ;定时384us

MOV TMOD,#2

MOV IE,#82H ;允许定时器T0中断

SETB TR0 SETB P1.0

SETB F0 ;高、低电平标志

SJMP $

第五章 MCS-51单片机的串行接口

5-1 判断题

1√;2×;3×;4×;5√;6√;7√;8×;9×

5-2 选择题

1C;2B;3A;4C;5A;6B;7D;8 B;9C

5-3 填空题

1、_SCON 2、0 3、 单工 、半双工 、 全双工 4、 0023 5、 0 、 0 6、 1 7、 20 8、 0

9、 地址/数据

5-4 问答题

1、答: 并行通信:是指数据的各位同时进行传送的通信方式。

串行通信:是指数据一位一位顺序传送的通信方式。

串行通信的两种基本形式:同步通信和异步通信。异步通信所传输的数据帧格式是由1个起始位、1~9个数据位、1~2个停止位组成,依靠起始位和停止位保持同步;同步所传输数据帧格式是由多个字节组成的一个帧,每个帧都有两个(或一个)同步字符作为起始位以触发同步时钟开始发送或接收数据。波特率是指每秒钟传送二进制数码的位数(bit),单位bps(bit per second),bit/s。 2、答:单工方式(Simplex):只允许数据向一个方向传送(A→B)。 半双工方式(Half Duplex):允许数据向两个方向中的一个方向传送,但每次只能一个站发送。全双工方式(Full Duplex):允许数据同时双向传送。

3、答:串行接口的接收和发送是对同一地址(99H)两个物理空间的特殊功能寄存器SBUF进行读或写的。当向SBUF发\写\命令时(执行\,A\指令),即向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完使发送中断标志位TI=1。在满足串行接口接收中断标志位RI(SCON.O)=0的条件下,置允许接收位REN(SCON.4)=1,就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使R1=1。当发读SBUF命令时(执行\,

SBUF\指令),便从接收缓冲器SBUF读取信息通过80C5l内部总线送CPU。 4、 解 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 5、主程序框图如下

程序如下:

串口初始化 FFH送SBUF 设 标 志 调延时程序 标志位取反 标志为1 FF送SBUF 标志为零 标志为零 OOH送SBUF ORG 0040H MOV SCON,#00H MOV SBUF,#0FFH SETB C

MOV 00H,C

AA:ACALL DELAY

CPL 00H MOV C,00H JC BB

MOV SBUF,#00H SJMP CC

BB:MOV SBUF,#0FFH CC:AJMP AA DELAY: MOV R7,#8

D1:MOV R6,#250 D2:MOV R5,#250 D3:DJNZ R5,D3

DJNZ R6,D2

DJNZ R7,D1

RET END 6、解:

采用查询方式编写发送程序如下:

ORG 0000H

LJMP START ORG 0030H

START: MOV

MOV MOV MOV LS: MOV

MOV

SCON,#80H PCON,#80H R0,#20H R7,#16 A,@R0 C,P

;设定方式2发送

;给待发送数据块地址指针R0置初值 ;给数据块长度计数器R7置初值 ;取一字节数据送A

;P随A变,P→TB8 ;启动发送

;查询发送标志,等待一字节发送完

7、解:

MOV TB8,C MOV SBUF,A JNB TI,$

CLR TI ;清TI标志位 DJNZ R7,LS RET

END

程序如下:

ORG 0000H

LJMP START ORG 0100H

MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1

MOV SCON,#0D0H MOV R0,#30H MOV R7,#16 JNB RI,$ CLR RI MOV A,SUBF JN BP,PN JNB RB8,PER LJMP RIG JB RB8,PER MOV @R0,A INC R0 DJNZ R7,LOOP CLR 7F

SJMP $ PER: SETB 7F SJMP $ END

START:

PN: RIG:

;设定T1为模式2定时 ;送时间常数

;启动定时器T1

;串行接口设定为方式3,并允许接收

;查询等待接收

;从串行接口中读取数据

;对该字节进行查错处理若P=RB8无错,否则有错

;若P=1,RB8=0,有错,转出错处理 ;若P=1,RB8=1,无错,转保存数据 ;若P=0,RB8=1,有错,转出错处理

;若P=0,RB8=0,无错,保存接收到的数据

;16字节未接收完,则继续

;正确接收完16位数据,清出错标志位7F

;校验有错,置位7F

8、解:查询方式发送程序如下 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

2smod9、解:BAUD=32(256?x)T?2smod?fosc32?(256?x)?12?1200,SMOD=1 时,X=208=0D0H

SMOD=0 时,X=232=0E8H,采用方式1。 MAIN: MOV SCON,#01010000B MOV TMOD,#00100000B MOV TH1,#0D0H MOV TL1,#0D0H CLR RI MOV PCON,#80H SETB TR1 LOOP: JNB RI,$ MOV A,SBUF CLR RI MOV SBUF,A JNB TI,$ CLR TI SJMP LOOP END

10、解:若采用偶校验,则应当使发送缓冲器SBUF中的数据连同TB8共9位数据合起来看,始终保持为偶数个1。给TB8置0还是置1,应当根据发送缓冲器SBUF中的数据而定。其办法是利用PSW.0 (即奇偶位P,它永远反映A中的数据,若A中有奇数个“1”则P=l;若A中有偶数个“1”则P=0),在数据写人发送缓冲器之前,先将数据的奇偶性P写入TB8,这时的TB8正好是偶校验的含义。 采用查询方式编制的程序如下: MOV SCON, #80H ;设定为方式2发送

MOV PCON, #80H ;波特率固定,选用fosc/32(高达187500Bb) MOV R0, #50H ;给待发送数据块地址指针R0置初值 MOV R7, #16 ;数据块长度计数器R7置初值 LOOP:MOV A, @R0 ;取一字节数据→A MOV C , P ;P随A变,P借助累加位C传给TB8 MOV TB8, C

MOV SBUF, A ;数据→SBUF,启动发送 JNB TI,$ ;查询发送标志,等待一字节数据发送完 CLR TI ;TI标志位清0

INC R0 ;待发送数据块指针加1

DJNZ R7, LOOP ;数据块长度减1,未发送完则返回继续发送下一字节 SJMP $