文档库 最新最全的文档下载
当前位置:文档库 › 《单片机原理及接口技术》_梅丽凤_习题解答(课后答案)

《单片机原理及接口技术》_梅丽凤_习题解答(课后答案)

单片机原理及接口技术教材习题全部解答

第1章绪论

1-1解答:

第一台计算机的研制目的是为了计算复杂的数学难题。它的特点是:计算机字长为12位,运算速度为5 000次/s,使用18 800个电子管,1 500个继电器,占地面积为150 m2,重达30 t,其造价为100多万美元。它的诞生,标志着人类文明进入了一个新的历史阶段。

1-2解答:

单片微型计算机简称单片机。一个完整的单片机芯片至少有中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、定时/计数器及I/O接口等部件。

1-3解答:

单片机的发展大致经历了四个阶段:

第一阶段(1970—1974年),为4位单片机阶段;

第二阶段(1974—1978年),为低中档8位单片机阶段;

第三阶段(1978—1983年),为高档8位单片机阶段;

第四阶段(1983年至今),为8位单片机巩固发展阶段及16位单片机、32位单片机推出阶段。

1-4解答:

Intel公司的MCS-48系列、MCS-51系列、MCS-96系列产品;

Motorola公司的6801、6802、6803、6805、68HC11系列产品;

Zilog公司的Z8、Super8系列产品;

Atmel公司的AT89系列产品;

Fairchild公司的F8和3870系列产品;

TI公司的TMS7000系列产品;

NS公司的NS8070系列产品;

NEC公司的μCOM87(μPD7800)系列产品;

National公司的MN6800系列产品;

Hitachi公司的HD6301、HD63L05、HD6305。

1-5解答:

(1)8031/8051/8751三种型号,称为8051子系列。8031片内没有ROM,使用时需在片外接EPROM。8051片内含有4KB的掩模ROM,其中的程序是生产厂家制作芯片时烧制的。8751片内含有4KB的EPROM,用户可以先用紫外线擦除器擦除,然后再利用开发机或编程器写入新的程序。

(2)8032A/8052A/8752A是8031/8051/8751的增强型,称为8052子系列。其中片内ROM和RAM 的容量比8051子系列各增加一倍,另外,增加了一个定时/计数器和一个中断源。

(3)80C31/80C51/87C51BH是8051子系列的CHMOS工艺芯片,80C32/80C52/87C52是8052子系列的CHMOS工艺芯片,两者芯片内的配置和功能兼容。

1-6解答:

8052子系列片内ROM和RAM的容量比8051子系列各增加一倍,另外,增加了一个定时/计数器和一个中断源。

1-7解答:

AT89系列单片机是美国Atmel公司的8位Flash单片机产品。它的最大特点是在片内含有Flash存储器,在系统的开发过程中可以十分容易地进行程序的修改,使开发调试更为方便。AT89系列单片机以8031为内核,是与8051系列单片机兼容的系列。

1-8解答:

高档型单片机有A T89S51、A T89S52、AT89S53和A T89S8252等型号,其中A T89S51有4KB可下载Flash存储器,A T89S52、AT89S8252有8KB可下载Flash存储器,AT89S53有12KB可下载Flash存储器。

第2章 MCS-51系列单片机的结构及原理

2-1解答:

MCS-51单片机由8个部件组成:中央处理器(CPU),片内数据存储器(RAM),片内程序存储器(ROM/EPROM),输入/输出接口(I/O口,分为P0口、P1口、P2口和P3口),可编程串行口,定时/计数器,中断系统及特殊功能寄存器(SFR)。

中央处理器(CPU):单片机的核心部分,它的作用是读入和分析每条指令,根据每条指令的功能要求,控制各个部件执行相应的操作。

片内数据存储器(RAM):存放各项操作的临时数据。

片内程序存储器(ROM/EPROM):存放单片机运行所需的程序。

输入/输出接口(I/O口):单片机与外设相互沟通的桥梁。

可编程串行口:可以实现与其它单片机或PC机之间的数据传送。

定时/计数器:具有可编程功能,可以完成对外部事件的计数,也可以完成定时功能。

中断系统:可以实现分时操作、实时处理、故障处理等功能。

特殊功能寄存器(SFR):反映单片机的运行状态,包含了单片机在运行中的各种状态字和控制字,以及各种初始值。

2-2解答:

EA引脚是片内外程序存储器的选择信号。当EA端保持高电平时,访问内部程序存储器,但在PC (程序计数器)值超过0FFFH(对于8051/8751/80C51)或1FFFH(对于8052)时,将自动转向访问外部程序存储器。当EA端保持低电平时,不管是否有内部程序存储器,则只访问外部程序存储器。

由于8031片内没有程序存储器,所以在使用8031时,EA引脚必须接低电平。

2-3解答:

在MCS-51单片机中,除P3口具有第二功能外,还有3条控制线具有第二功能。

P3口的第二功能:

P3.0—RXD:串行数据接收端

P3.1—TXD:串行数据发送端

INT:外部中断0申请输入端

P3.2—0

INT:外部中断1申请输入端

P3.3—1

P3.4—T0:定时器0计数输入端

P3.5—T1:定时器1计数输入端

P3.6—WR:外部RAM写选通

P3.7—RD:外部RAM读选通

3条控制线的第二功能:

ALE—PROG:片内EPROM编程脉冲。片内具有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

RESET—VPD:备用电源。VCC掉电期间,此引脚可接备用电源,以保持内部RAM数据不丢失。

EA—VPP:片内EPROM编程电源。在对片内具有EPROM的芯片进行编程时,此引脚用于施加21V编程电源。

2-4解答:

MCS-51单片机的内部存储空间分为数据存储器和程序存储器。

内部数据存储器:共256字节单元,包括低128个单元和高128个单元。低128字节又分成3个区域:工作寄存器区(00H~1FH),位寻址区(20H~2FH)和用户RAM区(30H~7FH)。高128字节是供给特殊功能寄存器使用的,因此称之为特殊功能寄存器区。

内部程序存储器:在8031片内无程序存储器,8051片内具有4KB掩模ROM,8751片内具有4KBEPROM。

2-5解答:

MCS-51单片机提供了4组工作寄存器,对于当前工作寄存器组的选择,是通过PSW中的RS1和RS0来进行选择。具体关系如下表:

2-6解答:

内部RAM低128个单元按用途分成3个区域:工作寄存器区(00H~1FH),位寻址区(20H~2FH)和用户RAM区(30H~7FH)。

2-7解答:

DPTR是数据指针寄存器,是一个16位寄存器,用来存放16位存储器的地址,以便对外部数据存储器RAM中的数据进行操作。DPTR由高位字节DPH和低位字节DPL组成。

2-8解答:

所谓堆栈,顾名思义就是一种以“堆”的方式工作的“栈”。堆栈是在内存中专门开辟出来的按照“先进后出,后进先出”的原则进行存取的RAM区域。堆栈的用途是保护现场和断点地址。在8051单片机复位后,堆栈指针SP总是初始化到内部RAM地址07H。从08H开始就是8051的堆栈区,这个位置与工作寄存器组1的位置相同。因此,在实际应用中,通常要根据需要在程序初始化时对SP重新赋值,以改变堆栈的位置。

2-9解答:

程序状态字寄存器PSW是8位寄存器,用于存放程序运行的状态信息。

CY(PSW.7):进位标志位。

AC(PSW.6):辅助进位标志位。

F0(PSW.5)、F1(PSW.1):用户标志位。

RS1(PSW.4)、RS0(PSW.3):工作寄存器组选择位。

OV(PSW.2):溢出标志位。

P(PSW.0):奇偶标志位。

2-10解答:

P0口由一个所存器、两个三态输入缓冲器、场效应管、控制与门、反相器和转换开关组成;作为输出口时,必须外接上拉电阻才能有高电平输出,作为输入口时,必须先向锁存器写“1”;作为普通I/O 口使用或低8位地址/数据总线使用。

P1口内没有转换开关,但有上拉电阻;只用作普通I/O口使用。

P2口比P1口多了一个转换控制开关;作为普通I/O口使用或高8位地址线使用。

P3口比P1口增加了与非门和缓冲器;具有准双向I/O功能和第二功能。

上述4个端口在作为输入口使用时,应注意必须先向端口写“1”。

2-11解答:

指令周期:执行一条指令所需要的时间。

机器周期:CPU完成一个基本操作所需要的时间。

状态:振荡脉冲经过二分频后,得到的单片机的时钟信号。

拍:振荡脉冲的周期。

当晶振频率为12MHz时,一个机器周期为1μs;当晶振频率为8MHz时,一个机器周期为3μs。

2-12解答:

在时钟电路工作后,只要在单片机的RESET引脚上出现24个时钟震荡脉冲(两个机器周期)以上的高电平,单片机就能实现复位。

复位后,CPU和系统都处于一个确定的初始状态,在这种状态下,所有的专用寄存器都被赋予默认值,除SP=07H,P0~P3口为FFH外,其余寄存器均为0。

2-13解答:

8051单片机应用系统的电压检测电路监测到电源下降时,触发外部中断,在中断服务子程序中将外部RAM中的有用数据送入内部RAM保存。(内部RAM由备用电源供电)

80C51单片机应用系统的电压检测电路监测到电源降低时,也出发外部中断,在中断服务子程序中,除了要将外部RAM中有用的数据保存以外,还要将特殊功能寄存器的有用内容保护起来,然后对电源控制寄存器PCON进行设置。

2-14解答:

单片机退出空闲状态有两种方法:中断退出和硬件复位退出。

第3章 MCS-51系列单片机的指令系统

3-1解答:

指令是规定计算机进行某种操作的命令,一台计算机所能执行的指令集合称为该计算机的指令系统。

计算机内部只识别二进制数,因此,能别计算机直接识别、执行的指令时使用二进制编码表示的指令,这种指令别称为机器语言指令。

以助记符表示的指令就是计算机的汇编语言指令。

3-2解答:

[标号:] <操作码> [操作数] [;注释]

3-3解答:

MCS-51系列单片机提供了7种寻址方式:

(1)立即寻址:操作数在指令中直接给出,立即数前面有“#”。

(2)直接寻址:在指令中直接给出操作数地址。对应片内低128个字节单元和特殊功能寄存器。

(3)寄存器寻址:以寄存器的内容作为操作数。对应的寄存器有:R0~R7、A、AB寄存器和数据指针DPTR。

(4)寄存器间接寻址:以寄存器的内容作为RAM地址,该地址中的内容才是操作数。对应片内RAM的低128个单元采用R0、R1作为间址寄存器,片外RAM低256个单元可用R0、R1作为间址寄存器,整个64KB空间可用DPTR作为间址寄存器。

(5)变址寻址:以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成的16位地址作为操作数地址。对应片内、片外的ROM空间。

(6)相对寻址:只在相对转移指令中使用。对应片内、片外的ROM空间。

(7)位寻址:对可寻址的位单独进行操作。对应位寻址区20H~2FH单元的128位和字节地址能被8整除的特殊功能寄存器的相应位。

3-4解答:

直接寻址方式。

3-5解答:

寄存器间接寻址方式。

3-6解答:

立即寻址方式,直接寻址方式,寄存器寻址方式,寄存器间接寻址方式,位寻址方式。

3-7解答:

变址寻址方式

3-8解答:

对于8052单片机内部RAM的高128B,必须采用寄存器间接寻址方式进行访问。

3-9解答:

外部数据传送指令有6条:

MOVX A,@DPTR MOVX @DPTR,A

MOVX A,@Ri MOVX @Ri,A

MOVC A,@A+DPTR MOVC A,@A+PC

(1)MOVX A,@R1 MOVX A,@DPTR

都是访问片外RAM,但二者寻址范围不同。

前1条指令是对片外RAM低256个单元的“读”操作。

后1条指令是对片外RAM64KB空间的“读”操作。

(2)MOVX A,@DPTR MOVX @DPTR,A

访问空间相同,但数据传送方向不同。

前1条指令是对片外RAM64KB空间的“读”操作。

后1条指令是对片外RAM64KB空间的“写”操作。

(3)MOV @R0,A MOVX @R0,A

二者访问的空间不同。

前1条指令是对片内RAM低128个单元的“写”操作。

后1条指令是对片外RAM低256个单元的“写”操作。

二者访问的空间不同,寻址方式不同。

前1条指令是变址寻址方式,对ROM操作。

后1条指令是寄存器间接寻址方式,对片外RAM操作。

3-10解答:

R0←30H,(R0)=30H

A←((R0)),(A)=40H

R1←(A),(R1)=40H

B←((R1)),(B)=10H

(R1)←(P1),((R1))=(40H)=EFH

P2←(P1),(P2)=EFH

10H←20H,(10H)=20H

30H←(10H),(30H)=20H

结果:(R0)=30H,(A)=40H,(R1)=40H,(B)=10H,(40H)=EFH,(P2)=EFH,(10H)=20H,(30H)=20H

3-11解答:

(1)由于在工作寄存器与工作寄存器之间不能直接传送数据,所以需要借助累加器A。

MOV A,R1

MOV R0,A

(2)片外RAM向片内RAM传送数据,不能直接进行,需要借助累加器A。由于片外RAM是60H 单元,地址小于FFH,所以间址寄存器使用Ri即可。

MOV R1,#60H

MOVX A,@R1

MOV R0,A

(3)MOV R1,#60H

MOVX A,@R1

MOV 40H,A

(4)片外数据不能直接送入片外单元,需要先将片外数据读入累加器,然后再送到片外。

MOV DPTR,#1000H

MOVX A,@DPTR

MOV R1,#40H

MOVX @R1,A

(5)ROM中的数据需要使用查表指令才能读出来,所以此题不能使用一般的传送指令从ROM中读数据。

MOV DPTR,#2000H

MOV A,#00H

MOVC A,@A+DPTR

MOV R2,A

(6)MOV DPTR,#2000H

MOV A,#00H

MOVC A,@A+DPTR

(7)MOV DPTR,#2000H

MOV A,#00H

MOVC A,@A+DPTR

MOV DPTR,#0200H

MOVX @DPTR,A

3-12解答:

片外RAM与片内RAM之间的数据传送不能直接进行,需要借助累加器A。数据交换需要使用数据交换指令XCH。

MOV DPTR,#1000H

MOVX A,@DPTR

XCH A,60H

MOVX @DPTR,A

3-13解答:

本题需要采用查表指令。

ORG 0200H

MOV DPTR,#TAB

MOV A,R7

MOVC A,@A+DPTR

ORG 0300H

TAB:DB 0,1,4,9,16,25,36,49,64,81

3-14解答:

(1)结果:(A)←→(R1),(A)=40H,(R1)=5BH,(PSW)=81H

(2)结果:(A)←→(40H),(A)=C3H,(40H)=5BH,(PSW)=80H

(3)结果:(A)←→((R1)),(A)=C3H,((R1))=(40H)=5BH,(PSW)=80H

(4)结果:(A)0~3←→((R1))0~3,(A)=53H,((R1))=(40H)=CBH,(PSW)=80H

(5)结果:(A)0~3←→(A)4~7,(A)=B5H,(PSW)=81H

(6)结果:A←(A)+(R1),(A)=9BH,(PSW)=05H

(7)结果:A←(A)+(40H),(A)=1EH,(PSW)=80H

(8)结果:A←(A)+40H,(A)=9BH,(PSW)=05H

(9)结果:A←(A)+(40H)+CY,(A)=1FH,(PSW)=81H

(10)结果:A←(A)-(40H)-CY,(A)=97H,(PSW)=85H

(11)结果:A←(A)- 40H - CY,(A)=1AH,(PSW)=01H

3-15解答:

(1)该组指令执行后(A)=00H,不影响CY位。

(2)该组指令执行后(A)=00H,影响CY位。

说明:单独执行INC指令,只影响奇偶标志位P,不影响半进位标志位AC和进位位CY位。执行ADD指令后,将影响CY、AC和P位。

3-16解答:

本题涉及的是16位数的减法运算,首先应让低8位相减,然后让高8位带着借位相减。注意:应在低8位相减前将进位位CY清空0。

MOV A,#56H

SUBB A,#78H

MOV R0,A

MOV A,#23H

SUBB A,#45H

MOV R1,A

3-17解答:

A←(A)∧23H,(A)=03H

42H←(42H)∨(A),(42H)=37H

A←(A) ((R0)),(A)=34H

A←(A),(A)=CBH

结果:(A)=CBH

3-18解答:

(1)MOV DPTR,#1000H

MOVX A,@DPTR

CPL A

MOVX @DPTR,A

(2)MOV R0,#60H

MOVX A,@R0

ANL A,#3FH

XRL A,#03H

MOVX @R0,A

3-19解答:

DA A指令的作用是对A中刚进行的两个BCD码的加法结果进行修正,即继续使BCD码加法运算的结果保持为BCD码。使用时,DA A指令只能使用在加法指令后,即ADD指令和ADDC指令。

3-20解答:

MOV DPTR,#1000H

MOVX A,@DPTR

MOV B,#10

MUL AB

MOV 30H,A

MOV 31H,B

MOV DPTR,#2000H

MOVX A,@DPTR

MOV B,#32

MUL AB

ADD A,30H

MOV 30H,A

MOV A,B

ADDC A,31H

3-21解答:

MOV R7,#10

MOV DPTR,#block1

MOV R0,#block2

LOOP:MOVX A,@DPTR

MOV @R0,A

INC DPTR

INC R0

DJNZ R7,LOOP

3-22解答:

MOV A,#01H

LOOP:MOV P0,A

RL A

LCALL DELAY

SJMP LOOP

DELAY:MOV R7,#00H

DELAY1:MOV R6,#00H

DJNZ R6,$

DJNZ R7,DELAY1

RET

3-23解答:

ORL C,11H

MOV 11H,C

MOV C,P1.0

ORL C,10H

ANL C,11H

MOV P1.0,C

3-24解答:

(1)正确。

(2)错误。原因:清零指令只能用于累加器ACC和位操作,而本题中E0H只能是字节地址(位地址的范围是00H~7FH),所以该条指令错误。

(3)错误。原因:ACC是直接字节地址,不能用于清零指令。

(4)正确。ACC.0是一个位,可以应用到清零指令中。

(5)正确。

(6)错误。原因:取反指令只能用于累加器ACC和位操作,而本题中E0H只能是字节地址(位地址的范围是00H~7FH),所以该条指令错误。

(7)错误。原因:ACC是直接字节地址,不能用于取反指令。

(8)正确。ACC.0是一个位,可以应用到取反指令中。

3-25解答:

ANL A,B

MOV F,C

3-26解答:

指令LJMP addr16是长转移指令,指令中提供了16位目的地址,寻址范围是64KB。

指令AJMP addr11是绝对转移指令,指令中11位目的地址,其中a7~a0在第二字节,a10~a8则占据第一字节的高3位,寻址范围是与PC当前值(本指令所在地址+本条指令所占用的字节数2)在同一个2K的区域内。

3-27解答:

(1)MOV P1,#0CAH ;P1←CAH,P1=CAH=11001010B

MOV A,#56H ;A←56H,A=56H=01010110B

JB P1.2,L1 ;若P1.2=1,则转移至L1

JNB ACC.3,L2 ;若ACC.3=0,则转移至L2

L1:…

L2:…

执行完本段程序后将转移至L2,因为P1.2=0,ACC.3=0,所以转至L2。

(2)MOV A,#43H ;A←43H,A=43H=01000011B

JB ACC.2,L1 ;若ACC.2=1,则转移至L1

JBC ACC.6,L2 ;若ACC.6=1,则转移至L2,同时将ACC.6清零

L1:…

L2:…

执行完本段程序后将转移至L2,因为ACC.2=0,ACC.6=1,所以转至L2,并且将ACC.6清零。

3-28解答:

(1)

MOV A,P1

CPL A

ANL A,#0F0H

SWAP A

MOV P1,A

(2):

LOOP:JNB P1.4,L1 ;

JNB P1.5,L2 ;

JNB P1.6,L3 ;

JNB P1.7,L4 ;

LJMP LOOP ;

L1:MOV P1,#01H ;

LJMP LOOP ;

L2:MOV P1,#02H ;

LJMP LOOP ;

L3:MOV P1,#03H ;

L4:MOV P1,#04H ;

LJMP LOOP ;

第4章汇编语言程序设计

4-1解答:

ORG 0100H

MOV A,21H

ADD A,23H

MOV 25H,A

MOV A,20H

ADDC A,22H

MOV 24H,A

RET

4-2解答:

ORG 0200H

MOV A,51H

MOV B,#20

MUL AB

MOV 53H,A

MOV 52H,B

MOV A,50H

MOV B,#3

MUL AB

ADD A,53H

MOV 53H,A

MOV A,B

ADDC A,52H

MOV 52H,A

RET

4-3解答:

题图4-1 习题4-3流程图

ORG 0300H

MOV A,DATA

CJNE A,#20,LOP1

LOP1:JC LOP3

CJNE A,#50,LOP2

LOP2:JC LOP4

MOV B,#1

LJMP LOP5

LOP3:MOV B,#2

LJMP LOP5

LOP4:MOV B,#5

LOP5:MUL AB

MOV FUNC,A

RET

4-4解答:

ORG 0400H

MOV A,mun+1

JNB ACC.7,LOOP

CLR C

MOV A,num

CPL A

MOV num,A

MOV A,#num+1

SUBB A,#00H

CPL A

MOV num+1,A LOOP:RET

4-5解答:

ORG 0500H

MOV DPTR,#JPTAB

MOV A,R2

RL A

JMP @A+DPTR

JPTAB:AJMP KEY0

AJMP KEY1

AJMP KEY2

……

AJMP KEY15

KEY0:…

KEY1:…

KEY2:…

……

KEY15:…

4-6解答:

ORG 0600H

MOV R0,#40H

MOV DPTR,#2000H

MOV R7,#21H LOOP:MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R7,LOOP

RET

4-7解答:

ORG 0700H

MOV DPTR,#DATA

MOV R7,#10

MOVX @DPTR,A

INC DPTR

DJNZ R7,LOOP

RET

4-8解答:

ORG 0800H

MOV DPTR,#3000H

MOV R0,#30H

MOV R7,#7

LOOP:MOVX A,@DPTR

MOV @R0,A

INC DPTR

INC DPTR

INC R0

DJNZ R7,LOOP

RET

4-9解答:

ORG 0900H

MOV DPTR,#1000H

MOV R1,#30H

MOV R7,#31H LOOP:MOVX A,@DPTR

MOV @R1,A

CLR A

MOVX @DPTR,A

INC DPTR

INC R1

DJNZ R7,LOOP

RET

4-10解答:

ORG 0A00H

MOV R1,#DAT1

MOV DPTR,#DAT2

MOV R6,#10H

LOOP1:MOV A,@R1

CJNE A,#0DH,LOOP2

LJMP LOOP3

LOOP2:MOVX @DPTR,A

INC R1

DJNZ R6,LOOP1 LOOP3:RET

4-11解答:

ORG 0B00H

MOV DPTR,#3000H

MOV R7,#100

MOV one,#00H

MOV two,#00H

MOV three,#00H LOP1:MOVX A,@DPTR

JZ LOP2

JNB ACC.7,LOP3

INC three

LJMP LOP4

LOP2:INC two

LJMP LOP4

LOP3:INC one

LOP4:INC DPTR

DJNZ R7,LOP1

RET

4-12解答:

ORG 0C00H

MOV R0,#50H

MOV A,#00H

MOV R7,#10 LOP:ADD A,@R0

INC R0

DJNZ R7,LOP

MOV B,#10

DIV AB

MOV 5AH,A

RET

4-13解答:

ORG 0D00H

MOV R0,#40H

MOV A,@R0

MOV R7,#47 LOOP:INC R0

MOV 30H,@R0

CJNE A,30H,CHK

LOOP1:DJNZ R7,LOOP

MOV MIN,A

RET

4-14解答:

ORG 0E00H

START:MOV R0,#40H

MOV R7,#19

CLR 00H

LOOP:MOV A,@R0

MOV 30H,A

INC R0

MOV 31H,@R0

CLR C

SUBB A,@R0

JNC NEXT

MOV @R0,30H

DEC R0

MOV @R0,31H

INC R0

SETB 00H

NEXT:DJNZ R7,LOOP

JB 00H,START

MOV R0,#40H

MOV DPTR,#2000H

MOV R7,#20

LOP1:MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R7,LOP1

RET

4-15解答:

ORG 0F00H

MOV DPTR,#2000H

MOV R7,#100

LOOP1:MOVX A,@DPTR

CJNE A,#44H,LOOP2

MOV 30H,DPL

MOV 31H,DPH

MOVX @DPTR,A

INC DPTR

MOV A,31H

MOVX @DPTR,A

LJMP LOOP3

LOOP2:INC DPTR

DJNZ R7,LOOP1 LOOP3:RET

4-16解答:

ORG 1000H

MOV R0,#30H

MOV R1,#50H

MOV R7,#20

LOP1:MOV A,@R0

CJNE A,#0AH,LOP2 LOP2:JNC LOP3

ADD A,#30H

LJMP LOP4

LOP3:ADD A,#37H

LOP4:MOV @R1,A

INC R0

INC R1

DJNZ R7,LOP1

RET

4-17解答:

ORG 1100H

MOV R0,#40H

MOV R1,#60H

MOV R7,#N

LOP1:MOV A,@R0

CJNE A,#41H,LOP2 LOP2:JNC LOP3

CLR C

SUBB A,#30H

LJMP LOP4

LOP3:CLR C

SUBB A,#37H

LOP4:MOV @R1,A

INC R0

DJNZ R7,LOP1

RET

4-18解答:

ORG 1200H

MOV DPTR,#2000H

MOV R0,#30H

MOV R7,#5

LOP1:MOVX A,@DPTR

ANL A,#0FH

ADD A,#30H

MOV @R0,A

INC R0

MOVX A,@DPTR

ANL A,#0F0H

SWAP A

ADD A,#30H

MOV @R0,A

INC R0

INC DPTR

DJNZ R7,LOP1

MOV DPTR,#2005H

MOV R0,#30H

MOV R7,#10

LOP2:MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R7,LOP2

RET

4-19解答:

ORG 1300H

MOV DPTR,#2000H

MOV R0,#30H

MOV R7,#10

LOP1:MOVX A,@DPTR

CLR C

SUBB A,#30H

MOV @R0,A

INC DPTR

MOVX A,@DPTR

SUBB A,#30H

SWAP A

ORL A,@R0

MOV @R0,A

INC DPTR

INC R0

DJNZ R7,LOP1

MOV DPTR,#3000H

MOV R0,#30H

MOV R7,#10

LOP2:MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R7,LOP2

RET

4-20解答:

ORG 1400H

MOV A,40H

MOV B,A

MUL AB

MOV 31H,A

MOV A,30H

MOV B,A

MUL AB

CLR C

SUBB A,31H

MOV 30H,A

RET

4-21解答:

ORG 1500H

MOV A,#80H LOOP:MOV P1,A

LCALL DEL

RR A

SJMP LOOP

DEL:MOV R7,#100

DEL1:MOV R6,#198

DJNZ R6,$

DJNZ R7,DEL1

ORG 1600H MOV A ,#55H LOOP : MOV P1,A LCALL DEL RL A SJMP LOOP

DEL : MOV R7,#250 DEL1: MOV R6,#198 DJNZ R6,$ DJNZ R7,DEL1

RET

第5章 定时/计数器

5-1解答:

51系列单片机的内部设有两个定时/计数器。分别有两种工作方式:定时器方式和计数器方式。由TMOD (定时器模式控制寄存器)中的控制位T /C 进行选择。定时器方式的脉冲来自于内部时钟脉冲,每个机器周期是计数器的值增1;计数器方式的脉冲来自于外部输入引脚T0(P3.4)或T1(P3.5)。

5-2解答:

51系列单片机的定时/计数器有四种工作模式。分别由TMOD 中的M1和M0进行选择。特点如下:

5-3解答:

51系列单片机的T0和T1在模式0中,使用了TLX 中低5位与THX 中的8位构成13位计数器,TLX 中的高3位弃之未用。

5-4解答:

对于T1,设置为模式3,将使它停止计数并保持原有的计数值,其作用如同使TR1=0,因此,没有什么实质意义。

对于T0,设置为模式3时,16位计数器被分成两个互相独立的8位计数器TL0和TH0,其中TL0利用了定时/计数器0本身的一些控制位:T /C 、GA TE 、TR0、0INT 和TF0。它既可以按照计数方式工作,也可以按照定时方式工作。而TH0被规定只可用作定时器方式,借用了T1的控制位TR1和TF1。

5-5解答:

(TMOD )=27H=00100111B

此时,T1工作于模式2,定时方式(即波特率发生器方式)。T1工作于模式3,TL0和TH0同为计

相关文档
相关文档 最新文档