• 321.50 KB
  • 2022-04-22 11:32:34 发布

单片机原理及应用课后习题答案__张兰红

  • 0页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'http://www.wkfxw.com文库分享网单片机原理及应用张兰红9第1章微型计算机的基本概念1.1微型计算机由哪几部分组成?每一部分各起何作用?解:微型计算机由微处理器芯片、存储器芯片、输入/输出接口电路芯片与总线组成。微处理器是微型计算机的核心,它通常包括3个基本部分:①算术逻辑部件ALU(ArithmeticLogicUnit),对传送到微处理器的数据进行算术运算或逻辑运算的电路,如执行加法、减法运算,逻辑与、逻辑或运算等。②工作寄存器组,用来存放操作数及运算的中间结果等。③控制部件,包括时钟电路和控制电路,时钟电路产生时钟脉冲,用于计算机各部分电路的同步定时;控制电路产生完成各种操作所需的控制信号。存储器是微型计算机的重要组成部分,计算机有了存储器才具备记忆功能。I/O接口是沟通CPU与外部设备的不可缺少的重要部件。外部设备种类繁多,其运行速度、数据形式、电平等各不相同,常常与CPU不一致,所以要用I/O接口作桥梁,起到信息转换与协调的作用。总线是在微型计算机各芯片之间或芯片内部各部件之间传输信息的一组公共通信线。1.2什么是CPU?什么是主机?解:由于运算器、控制器是计算机处理信息的关键部件,所以常将它们合称为中央处理单元CPU(CentralProcessingUnit,简称CPU)。通常把运算器、控制器、存储器这三部分称为计算机的主机。1.3何谓计算机系统?何谓单板机?何谓单片机?解:计算机与外围设备、电源、系统软件一起构成应用系统,称为计算机系统。在一块印刷电路板上,集成了中央处理单元CPU、只读存储器ROM、随机存取存储器RAM、I/O接口、定时器/计数器、中断系统等功能部件,构成一台完整的微型计算机,称为单板机。在一块半导体芯片上,集成了中央处理单元CPU、只读存储器ROM、随机存取存储器RAM、I/O接口、定时器/计数器、中断系统等功能部件,构成一台完整的微型计算机,称为单片机。1.4为什么要采用总线结构?芯片为什么要通过缓冲器才能挂在总线上?解:微型计算机采用总线结构后,芯片之间不需单独走线,大大减少了连接线的数量。挂在总线上的芯片不能同时发送信息,否则多个信息同时出现在总线上将发生冲突而造成出错。如果有几块芯片需要输出信息,就必须分时传送,为了实现这个要求,挂在总线上的各芯片必须通过缓冲器与总线相连。 http://www.wkfxw.com文库分享网1.5何谓程序计数器?程序计数器中存放的是什么内容?它对计算机的工作起什么作用?在什么情况下,程序的执行顺序发生转移?此时程序计数器的内容是怎么样的?解:程序计数器PC是管理程序执行次序的特殊功能寄存器。程序计数器PC中存放的是下一条要执行的指令的地址。它管理程序执行的次序。在执行转移指令的情况下,程序的执行顺序发生转移。此时程序计数器直接接受内部总线送来的数据,并用该数据取代原有的内容。1.6评价存储器有哪些重要的指标?为什么说存储器性能已成为计算机性能提高的关键?10解:存储器的重要指标是容量和存取速度。容量越大,则记忆的信息越多,计算机的功能就越强。存储器的存取速度比CPU的运算速度要低,所以存储器的工作速度是影响计算机工作速度的主要因素。1.7综述存储器的种类、特点、用途和优缺点?(主要针对内存)解:按结构与使用功能分,内存储器可分为随机存取存储器RAM和只读存储器ROM两类。随机存取存储器RAM又称读写存储器,它的数据读取、存入时间都很短,因此,计算机运行时,既可以从RAM中读数据,又可以将数据写入RAM。但掉电后RAM中存放的信息将丢失。RAM适宜存放原始数据、中间结果及最后的运算结果,因此又被称作数据存储器。只读存储器ROM读出一个数据的时间为数百纳秒,有时也可改写,但写入一个数据的时间长达数十ms,因此在计算机运行时只能执行读操作。掉电后ROM中存放的数据不会丢失。ROM适宜存放程序、常数、表格等,因此又称为程序存储器。只读存储器又可以分为下列四类:①掩膜ROM:在半导体工厂生产时,已经用掩膜技术将程序做入芯片,用户只能读出其内容而不能改写。掩膜ROM只能应用于有固定程序且批量很大的产品中。②可编程只读存储器PROM:用户可将程序写入PROM,仅程序一经写入就不能改写。③可擦除可编程只读存储器EPROM:用户可将程序写入EPROM芯片。如果要改写程序,先用紫外灯照射芯片,擦去原先的程序,然后写入新程序。与PROM芯片一样,写入的速度很慢,且要用到高压,所以必须用特定的EPROM编程器写入信息。在计算机运行时只能执行读操作。④电擦除可编程只读存储器EEPROM:这是近年发展起来的一种只读存储器。由于采用电擦除方式,而且擦除、写入、读出的电源都用十5V,故能在应用系统中在线改写。但目前写入时间较长,约需10ms左右,读出时间约为几百ns。1.8何谓堆栈?为什么要设置堆栈?栈区是怎样确定的?数据进栈、出栈按照何种规律?进栈用什么指令?出栈用什么指令?进栈、出栈时栈指针如何变化?通常栈底所指是什么内容?解:微型计算机中的堆栈是读写存储器RAM中的一个特殊的区域,是一组按照“先进后出”的方式工作的、用于暂存信息的存储单元。设置堆栈的目的是便于保护断点地址与现场信息。 http://www.wkfxw.com文库分享网用堆栈指针指示堆栈所在的位置。数据进栈、出栈“按先进后出”的原则工作。进栈用PUSH指令,出栈用POP指令。进栈时指针向地址增加的方向变化,出栈时指针向地址减小的方向变化。栈底是最先进栈的信息所在的单元。1.9请解释下列名词:(1)字长,字,字节,BCD码,ASCII码。(2)指令,指令地址,指令系统,程序。解:(1)一台计算机一次所能处理的二进制代码的位数称为该计算机的字长。16位二进制数称为一个字。8位二进制数称为一个字节。二进制编码的十进制数,简称二十进制数,又称BCD码(BinaryCodedDecimal)。11ASCII码是美国标准信息交换代码(AmericanStandardCodeforInformationInterchange)的缩写。(2)指令:控制计算机进行各种操作的命令称为指令。指令地址:指令所在存储单元的地址。指令系统:一台计算机所具有的所有指令的结合,称为该计算机的指令系统。程序:一系列指令的有序集合称为程序。1.10计算机中常用的计数制有哪些?解:二进制、十进制(BCD)、十六进制。1.11什么是机器码?什么是真值?解:把符号数值化的数称为机器数或机器码,原来的数值叫做机器数的真值。1.12完成下列数制的转换。(1)10100110B=()D=()H(2)0.11B=()D(3)253.25=()B=()H(4)10ll011.101B=()H=()BCD解:(1)166,A6(2)0.75(3)11111101.01,FD.4(4)5B.A,10010001.0110001001011.138位和16位二进制数的原码、补码和反码可表示的数的范围分别是多少?解:8位二进制数原码(127~+127)、16位二进制数原码(32767~+32767)8位二进制数补码(128~+127)、16位二进制数补码(32768~+32767)8位二进制数反码(127~+127)、16位二进制数反码(32767~+ http://www.wkfxw.com文库分享网32767)1.14写出下列真值对应的原码和补码的形式。(1)X=111001lB(2)X=71D(3)X=+1001001B解:(1)原码:11110011B补码:10001101B(2)原码:11000111B补码:10111001B(3)原码:01001001B补码:01001001B1.15写出符号数10110101B的反码和补码。解:11001010B,11001011B1.16已知X和Y的真值,求[X十Y]的补码(1)X=1110111BY=+l011010B(2)X=56DY=21D12解;(1)11100011B(2)00100011B1.17己知X=1101001B,Y=1010110B.用补码求XY的值。解:11101101B1.18请写出下列字符的ASCII码。4A3=!解:34H,41H,33H,3DH,21H1.19若给字符4和9的ASCII码加奇校验,应是多少?解:34H,B9H1.20上题中若加偶校验,结果如何?解:B4H,39H1.21计算下列表达式。(1)(4EH十10110101B)×(0.0101)BCD=()D(2)4EH(24/08H十‘B’/2)=()B解:(1)129.5D(2)101010B13第2章MCS51单片机的硬件结构2.1请结合课本中MCS51系列单片机的结构图,阐明其大致组成。解:按功能部件分,51子系列单片机由CPU、数据存储器RAM、程序存储器ROM http://www.wkfxw.com文库分享网、特殊功能寄存器、4个并行I/O口、1个串行口、定时器/计数器、中断系统等八个功能部件组成。CPU由累加器A、暂存器1、2、ALU、PSW等组成数据存储器由RAM地址寄存器、RAM单元等组成。程序存储器指EPROM或ROM。SFR指P0、P1、P2、P3锁存器、B、DPTR等。2.2综述MCS51系列单片机各引脚的作用,并进行分类。解:(1)主电源引脚Vcc:接+5V电源正端。Vss::接+5V电源地端。(2)外接晶体引脚XTAL1:片内反相放大器输入端XTAL2:片内反相放大器输出端(3)输入/输出引脚P0.0P0.7:P0口的8个引脚。在不接片外存储器与不扩展I/O接口时,作为准双向输入/输出接口(在输入时需要附加条件的双向输入输出口,称为准双向I/O口)。在接有片外存储器或扩展I/O接口时,P0口分时复用为低8位地址总线和双向数据总线。P1.0P1.7:P1口的8个引脚。可作为准双向I/O接口使用。对于52子系列,P1.0与P1.1还有第二种功能:P1.0可用作定时器/计数器2的计数脉冲输入端T2;P1.1可用作定时器/计数器2的外部控制端T2EX。P2.0P2.7;P2口的8个引脚。一般可作为准双向I/O接口;在接有片外存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用为高8位地址总线。P3.0P3.7;P3口的8个引脚。①一般可作为准双向I/O接口;②P3口的第二功能如表21所示。表21引脚第二功能P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7RXD(串行输入口) http://www.wkfxw.com文库分享网RXD(串行输出口)INT0(外部中断0请求输入端)INT1(外部中断1请求输入端)T0(定时器/计数器0计数脉冲输入端)T1(定时器/计数器1计数脉冲输入端)WR(片外数据存储器写选通信号输出端)RD(片外数据存储器读选通信号输出端)142.3EA引脚的作用是什么?在下列四种情况下,EA引脚各应该接何种电平?(1)只有片内ROM。(2)只有片外ROM。(3)有片内ROM和片外ROM。(4)有片内ROM和片外ROM,片外ROM所存为调试程序。解:EA/VDD:片外程序存储器选用端。(1)EA=1。(2)EA=0。(3)若片外ROM和片内ROM编址不重叠,则EA=1。(4)若片外ROM和片内ROM编址重叠,则访问片内ROM时EA=1,访问片外ROM时EA=0。2.4MCS51系列单片机的引脚中有多少根I/O线?它们与单片机对外的地址总线和数据总线之间有什么关系?其地址总线和数据总线各有多少位?对外可寻址的地址空间有多大?解:MCS51系列单片机有4个I/O端口,每个端口都是8位双向口,共占32根引脚。在无片外扩展的存储器的系统中,这4个端口的每一位都可以作为双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线,P3口作为控制线使用。地址和数据线分别是16位和8位,对外可寻址的地址空间是64KB。2.5程序计数器的符号是什么?MCS51系列单片机的程序计数器有几位?它的位置在哪里?解:程序计数器的符号是PC,MCS51系列单片机的程序计数器有16位,为一个专用寄存器。在CPU内部。2.6何谓程序状态字?它的符号是什么?它的位置在哪里?它各位的含义是什么?为1、为0各代表什么?各在何种场合有用?解:程序状态字是一个8位寄存器,它包含了程序运行的状态信息,它的符号是PSW。它的位置在CPU中。各位含义如下:D7D6D5D4D3D2D1D0CACF0RS1RS0O2P(1)进位标志位C(PSW.7):作用:在执行某些算术操作类、逻辑操作类指令时,可被硬件或软件置位或清零。例如8位加法运算时,如果运算结果的最高位D7有进位,则C=1,否则C=0; http://www.wkfxw.com文库分享网又如8位减法运算时,如果运算结果的最高位D7有借位,则C=1,否则C=0。(2)辅助进位标志Ac(PSW.6):作用:8位加法运算时,如果低半字节的最高位D3有进位,则Ac=1,否则Ac=0;8位减法运算时,如果D3有借位,则Ac=1,否则Ac=0。Ac在作BCD码运算而进行二—十进制调整时有用。(3)软件标志F0(PSW.5)作用:是用户定义的一个状态标志。可通过软件对它置位、或清零。编程时,也常测试其是否建起而进行程序分支。15(4)工作寄存器组选择位RS1、RS0(PSW.4、PSW.3):作用:用软件置位或清零,以确定四组工作寄存器中的哪一组工作,它们与各组的对应关系为RS1RS0000组(地址从0007H)011组(地址从080FH)102组(地址从1017H)113组(地址从181FH)(5)溢出标志OV(PSW.2):作用:当执行算术运算时,由硬件置位或清零,以指示溢出状态。各种算术指令对该位的影响情况在指令系统中详细介绍。(6)奇偶标志P(PSW.0):每执行一条指令,单片机都能根据A中1的个数的奇偶自动令P置位或清零:奇为1,偶为0。此标志对串行通信的数据传输非常有用,通过奇偶校验可检验传输的可靠性。2.7MCS51系列单片机的内存由哪几部分组成?其编址与访问的规律是怎样的?解:MCS51系列单片机内存由程序存储器与数据存储器两个独立的空间。程序存储器的编址自0000H开始,最大可至FFFFH。MCS51单片机有3种不同的芯片:片内有掩膜只读存储器的(如8051、8052)、片内有EPROM的(如8751)和片内没有只读存储器的(如8031、8032),而ROM的寻址范围为64KB,所以片内程序存储器的容量远小于该数,可见如扩展片外存储器,其裕量是很大的。ROM编址规律:程序存储器的编址规律为:先片内、后片外,片内、片外连续,二者一般不作重叠。根据PC的内容进行访问。片内RAM从00H开始编址,片外RAM从0000H开始,部分地址重叠(实际并不完全一样),若只需扩展少量片外RAM,容量不超过256个单元,则也可以按照8位二进制编址,从00H http://www.wkfxw.com文库分享网开始,到FFH结束。由于访问片内外RAM所用的指令不一样,不会引起混淆。2.8MCS51系列单片机片内RAM有多少单元?有哪些用途?这些用途各占用哪些单元?堆栈的栈区设在哪里?解:51子系列片内RAM有128B单元,52子系列片内RAM有256B单元。单片机片内RAM可分为:工作寄存器区,位寻址区,数据缓冲区三个区域。(1)工作寄存器区:00H1FH单元为工作寄存器区。供用户编程时使用,临时寄存8位信息。分为四组:07R~R,但同时只能有一组参与程序程序的运行,用RS1,RS0两位的状态来选择参与运行的工作寄存器组。(2)位寻地址:20H2FH,对该区的每一位,都有一个位地址,共有128个位地址。(3)数据缓冲区:30H7FH(52子系列为30H~FFH),作为普通的RAM单元使用。(4)堆栈栈区一般设在2FH以上的单元。2.9MCS51系列单片机在片内集成了哪些主要逻辑功能部件?各个逻辑部件的主要功能是什么?解:MCS51单片机在片内集成了中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、定时器/计数器、并行I/O接口、串行I/O接口和中断系统等几大单元。CPU是整个单片机的核心部件,由运算器和控制器组成。运算器可以完成算术运算和逻辑运算,16其操作顺序在控制器控制下进行。控制器是由程序计数器PC(ProgramCounter)、指令寄存器IR(InstructionRegister)、指令译码器ID(InstructionDecoder)、定时控制逻辑和振荡器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 http://www.wkfxw.com文库分享网提出,哪些中断源的中断请求被禁止;IP用于控制5个中断源的中断请求的优先权级别。I/O接口是MCS51单片机对外部实现控制和信息交换的必经之路,用于信息传送过程中的速度匹配和增加它的负载能力。可分为串行和并行I/O接口。2.108051单片机的控制总线信号有哪些?各有何作用?解:独立的控制线一共有4条:(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处于复位工作状态。2.11何谓特殊功能寄存器?8031有哪些特殊功能寄存器?试按其用途相关联的硬件功能单元(如CPU、并行I/O口、串行I/O口、定时器/计数器、中断控制等)进行分类。解:特殊功能寄存器也称专用寄存器。专用于控制、管理片内算术逻辑部件,并行I/O口,串行I/O口,定时器/计数器,中断系统等功能模块的工作,用户在编程时可以置数设定,但不能移作它用。除PC外,8031有18个专用寄存器,其中3个为双字节寄存器,共占用21个字节,按其用途相关联的硬件功能单元可分:P0口,堆栈指针、数据指针低字节,数据指针高字节,定时器/计数器/计数器0高、低字节,定时器/计数器1高、低字节,P1口,电源控制、串行控制;串行数据缓冲器,P2口,中断允许控制,P3口,中断允许优先级控制,程序状态字,累加器,B寄存器共18个专用寄存器。2.12何谓时钟周期、指令周期、机器周期?针对MCS51系列单片机,如采用12MHZ晶振,它们的频率和周期各是什么?解:振荡器输出的振荡脉冲经二分频成为内部时钟信号,用作单片机内部各功能部件按序协调工作的控制信号,其周期称时钟周期。 http://www.wkfxw.com文库分享网机器周期:6个时钟周期构成一个机器周期。17指令周期:CPU执行一条指令的时间。针对MCS51系列单片机,采用12MHZ晶振,则振荡周期为0.167us,时钟周期为0.333us,频率为6MHZ,机器周期为1us,频率为1MHZ,指令周期为1us到4us,频率为1MHZ到0.25MHz。2.13综述P0、P1、P2、P3口各有哪几种功能。解:这4个接口可以并行输入或输出8位数据;也可按位使用,即每一根输入/输出线都能独立地用作输入或输出。四个8位并行口的功能各不相同:P0口是三态双向口,通常称为数据总线口,因为只有该口能直接用于对外部数据总线的读写操作,P0口还用于输出外部数据存储器的低8位地址。由于是分时输出,故应在外部加地址锁存器将地址数据锁存,地址锁存信号用ALE。P1口是专门供用户使用的I/O接口,是准双向接口。P2口是供系统扩展时作高8位地址线用,如果没有系统扩展,例如使用8051/8751单片机不扩展外部存储器时,P2口也可以作为用户I/O线使用。P2口也是准双向口。P3口是双功能口,该口的每一位均可以独立地定义为第一I/O功能或第二I/O口功能。P3口的第二功能如表21所示。2.14在读回端口数据时,为什么应读锁存器内容,而不宜读引脚电平?解:假如通过三态门从引脚上读回数据,有时会发生错误。例如用一根口线去驱动一个晶体管的基极,在向此口线输出l时,锁存器Q=1,但晶体管导通后,引脚上的电平已拉到低电平(0.7V),从引脚读回数据会错读为0。2.15阐明“准双向口”这一名称所以要加用“准”字的理由。解:在执行输入操作时,如果锁存器原来寄存的数据Q=0。那么由于Q=1将使V1导通,引脚被始终箝拉在低电平上,不可能输入高电平。为此,用作输入前,必须先用输出指令置Q=1,使V1截止。正因为如此P1口称为准双向接口。2.168031单片机与开关及LED发光二极管接口电路如2.16题图所示。用8031单片机P1口的P1.3P1.0作为数据输入口,联接开关K3K0,P1.7P1.4作为输出口,联接发光二极管LED3LED0;编程使开关K3K0的状态由P1.3P1.0 http://www.wkfxw.com文库分享网输入,再由P1.7P1.4输出,通过发光二极管显示出来,要求开关合上时,二极管亮,开关断开时,二极管不亮。+5VEAP1.5P1.68031P1.7LED1LED2LED3P1.4+5VP1.0P1.1P1.2LED0P1.3K1K2K3K02.16题图解:ORG2200HMOVA,#FFH;P1口为输入,先送118MOVP1,A;P1口低4位输出1LOOP:MOVA,P1;口状态输入SWAPA;开关状态到高4位ORLA,#0FH;低4位为1,为下一次输入做准备MOVP1,A;开关状态输出AJMPLOOP;循环2.17电路如2.17题图所示,用8031P1口的P1.0、P1.1作为变量X、W的输入端,用P1.2作为电路输出端,并用LED来显示输出,P1.3端传送状态消息。当检测到P1.3为低电平时,CPU开始运算D=(XÙW)Ù(XÚW),并把结果送P1.2输出显示,然后重新开始检测P1.3状态信息,试编写完成上述要求的程序。EA+5VXWP1.0 http://www.wkfxw.com文库分享网P1.18031P1.3YP1.22.17题图解:参考程序如下:ORG0000HLJMPMAINORG0100HMAIN:MOVP1,#08HLOOP:MOVC,P1.3JCLOOPMOVP1,#03HMOVC,P1.0ANLC,P1.1CPLCMOV00H,CMOVC,P1.0ORLC,P1.1ANLC,00HMOVP1.2,CSJMPMAINEND2.18第2.18题图示电路中,X1、X2、X3是三个故障源,当系统无故障时,X1、X2、X3均为低电19平,对应的三个显示灯全灭;当某部分出现故障时,其对应的输入端由低电平变为高电平,从而引起51单片机中断,中断服务程序的任务是判定故障,并点亮对应的发光二极管,发光二极管LED1~LED3对应三个输入端X1~X3。试编程。+5VEAP1.3P1.48031P1.5INT0+X1X2X3LED1LED2 http://www.wkfxw.com文库分享网LED3P1.0P1.1P1.22.18题图解:参考程序如下:ORG0000HLJMPMAINORG0003HLJMPINT0SERORG0100HMAIN:MOVP1,#0FFHSETBIT0SETBEX0SETBEALOOP:AJMPLOOPINT0SER:JNBP1.0,L1CLRP1.3L1:JNBP1.1,L2CLRP1.4L2:JNBP1.2,L3CLRP1.5L3:RETEND2.19设某单片机应用系统的P1口连接如第2.19题图所示,要求根据K0的合断情况决定D1、D0的点亮。如果K0合上,D0点亮,如果K0断开,D1点亮。试编程实现之。解:ORG0000HLJMPMAINORG0100HMAIN:MOVP1,#0C0HLOOP:JBP1.7,ELSECLRP1.020AJMPLOOPELSE:CLRP1.1AJMPLOOPEND+5V+5VEAK0D0 http://www.wkfxw.com文库分享网D1P1.7P1.1P1.08031第2.19题图2.20设某单片机应用系统的P1口连接如第2.20题图所示,问:+5V+5VEAK0K1D0D1P1.7P1.6P1.1P1.08031第2.20题图(1)执行第一条指令后,哪些指示灯会亮?(2)第二条指令的用处?(3)执行下列指令到最后,(A)=?要求写出分析过程。MOVP1,#0EHORLP1,#C0HMOVA,P1ANLA,#C0H解:1.D1会亮。2.为P1.7、P1.6的输入做准备。3.A的内容为80H。2.21MCS51怎样实现上电复位与操作复位?并请综述各专用寄存器复位后的状态。解:与其他计算机一样,MCS51单片机系统有上电复位和操作复位两种方法。所谓上电复位,是21指计算机上电瞬间,要在RST引脚上出现宽度大于10ms的正脉冲,使计算机进入复位状态。操作复位指用户按下“复位”按钮使计算进入复位状态。复位是靠外部电路实现的。2.21题图是上电复位及按钮复位的一种实用电路。上电时+5V电源立即对单片机芯片供电,同时经R对C3充电。C3上电压建立的过程就是负脉冲的宽度,经倒相后,RST上出现正脉冲使单片机实现了上电复位。按钮按下时RST上同样出现 http://www.wkfxw.com文库分享网高电平,实现了操作复位。在应用系统中,有些外围芯片也需要复位,如果这些芯片复位端的复位电平与单片机一致,则可以与单片机复位脚相连。因此,非门在这里不仅起到了倒相作用,还增大了驱动能力。电容C1、C2起滤波作用,防止干扰窜入复位端产生误动作。10KW1C2C3CCCV100pF10μF10μF2.21题图复位电路各专用寄存器复位后的状态如下表所示:22第3章MCS51系列单片机的指令系统3.1MCS51系列单片机的寻址方式有哪几种?请列表分析各种寻址方式的访问对象与寻址范围。解:①立即寻址、②寄存器寻址、③寄存器间接寻址、④直接寻址、⑤基址寄存器加变址寄存器间接寻址、⑥相对寻址、⑦位寻址。寻址方式访问对象寻址范围立即寻址立即数————寄存器寻址工作寄存器R0~R7,累加器A、寄存器B,数据指针DPTR,位处理器C00H~1FH,E0H,F0H、82H、83H寄存器间接寻址RAM单元内部RAM及外部扩展的64KRAM直接寻址ROM和RAM内部RAM00H7FH,SFR80HFFH,ROM64KB变址寻址ROMROM0000HFFFFH相对寻址ROMROM0000HFFFFH位寻址位寻址区内RAM20H2FH中的可寻址位,SFR中的可寻址位3.2要访问片内RAM,可有哪几种寻址方式?解:对于51系列,要访问片内RAM,有间接寻址、直接寻址、位寻址。52子系列访问片内低128 http://www.wkfxw.com文库分享网个字节有直接寻址、位寻址、间接寻址,高128字节有间接寻址。3.3要访问片外RAM,可有哪几种寻址方式?解:访问片外RAM有寄存器间接寻址方式。3.4要访问ROM,可有哪几种寻址方式?解:要访问ROM有直接寻址、变址寻址、相对寻址3.5试分别对51子系列和52子系列,说明MOVA,direct指令与MOVA,@Rj指令的访问范围。解:MOVA,direct指令中direct对于51子系列的访问范围为内RAM中的低128B单元,从00H到7FH,访问SFR的范围是从80H到FFH;52子系列的访问范围与51子系列的访问范围相同。MOVA,@Rj指令对于51子系列的访问范围为内RAM的128B单元,从00H到7FH,对于52子系列的访问范围为片内RAM从00H到FFH。3.6传送指令中有哪几小类是访问RAM的?哪几个类是访问ROM的,CPU访问ROM多不多?什么时候需要访问ROM?解:访问RAM的有:以累加器A为一方的传送指令,不以累加器为一方的传送指令,用立即数置数的指令,访问片外RAM的传送指令,进栈出栈指令,交换指令。访问ROM的有:基址寄存器加变址寄存器间址指令23因为ROM是只读存储器,用作程序存储器,已事先存入各种程序,常数、表格等,CPU访问ROM不多,当执行程序,程序转移以及用户访问时需要访问ROM。3.7区分下列指令的不同功能:⑴MOVA,#24H与MOVA,24H⑵MOVA,R0与MOVA,@R0⑶MOVA,@R0与MOVXA,@R0解:⑴前者是将立即数24H送入A中,后者是将24H单元的内容送入A中.(2)前者将R0中的内容送入A中,后者是将以R0中的内容为地址所在单元的内容送入A中.(3)前者是将片内RAM以R0中的内容为地址所在单元的内容送入A中,后者是将片外RAM的以R0中的内容为地址所在单元的内容送入A中.3.8设片内RAM30H单元的内容为40H,设片内RAM40H单元的内容为10H,片内RAM10H单元的内容为00H,(P1)=0CAH,请写出下列指令执行后的结果。MOVR0,#30HMOVA,@R0MOVR1,AMOVB,@R1MOV@R0,P1MOVP3,P1MOV10H,#20HMOV30H,10H解:MOVR0,#30H;R0←30H http://www.wkfxw.com文库分享网MOVA,@R0;A←40HMOVR1,A;R1←40HMOVB,@R1;B←10HMOV@R0,P1;30H←0CAHMOVP3,P1;P3←0CAHMOV10H,#20H;10H←20HMOV30H,10H;30H←20H3.9已知:(A)=35H,(R0)=6FH,(P1)=(90H)=FCH,(SP)=C0H,试写出下列指令的执行结果。(1)MOVR6,A(2)MOV@R0,A(3)MOVA,#90H(4)MOVA,90H(5)MOV80H,#81H(6)MOVX@R0,A(7)PUSHA(8)SWAPA(9)XCHA,R024解:(1)MOVR6,A;(R6)=35H(2)MOV@R0,A;(6FH)=35H(3)MOVA,#90H;(A)=90H(4)MOVA,90H;(A)=FCH(5)MOV80H,#81H;(80H)=81H(6)MOV@R0,A;(6FH)=35H(7)PUSHA;(SP)=C1H,(C1H)=35H(8)SWAPA;(A)=53H(9)XCHA,R0;(A)=6FH,(R0)=35H3.10已知:(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片内RAM(7FH)=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出下列指令的执行结果。(1)MOVA,@R1(2)MOVX@DPTR,A(3)MOVCA,@A+DPTR(4)XCHDA,@R1解:(1)(A)=70H(2)片外RAM(2FFCH)=02H(3)(A)=64H(4)(A)=00H片内RAM(7FH)=72H3.11已知:(A)=78H,(R1)=78H,(B)=04H,C=1,片内RAM(78H)=DDH,片内RAM(80H)=6CH,试分别写出下列指令的执行结果(如涉及标志位,也要写出)。(1)ADDA,@R1(2)ADDCA,78H(3)SUBBA,#77H(4)INCR1(5)DEC78H(6)MULAB http://www.wkfxw.com文库分享网(7)DIVAB(8)ANL78H,#78H(9)ORLA,#OFH(10)XRL80H,A解:(1)(A)=55H(PSW)=11×××1×0(2)(A)=56H(PSW)=11×××1×0(3)(A)=00H(PSW)=00×××0×025(4)(R1)=79H(5)(78H)=DCH(6)(BA)=01E0H,C=1OV=1(7)(B)=00H,(A)=1EH(8)(78H)=58H(9)(A)=7FH(10)(80H)=14H3.12请对下列各组数分别计算“与”、“或”、“异或”的结果:(1)10011010B和00001111B(2)11010011B和01011010B(3)11001100B和00110011B(4)10101010B和11111111B解:(1)结果分别为00001010B10011111B10010101B(2)结果分别为01010010B11011011B10001001B(3)结果分别为00000000B11111111B11111111B(4)结果分别为10101010B11111111B01010101B3.13为达到下列要求,请说明应采用何种逻辑操作,采用什么操作数,要求不得改变各未涉及位的内容。(1)使累加器的最低位置1(2)清除累加器的高四位(3)使A.2和A.3置1。(4)清除A.3、A.4、A.5、A.6解:(1)逻辑或操作操作数:00000001B(2)逻辑与操作操作数:00001111B(3)逻辑或操作操作数:00001100B(4)逻辑与操作操作数:10000111B3.14写出下列各条指令的机器码,并逐条写出依次执行每一条指令后的结果和PSW的内容:(1)CLRA(2)MOVA,#9BH(3)MOVB,#0AFH26(4)ADDA,B解:(1)机器码E4H;(A)=0(2)机器码749BH;(A)=9BH(3)机器码75F0AFH;(A)=AFH http://www.wkfxw.com文库分享网(4)机器码25F0H;(A)=4AH;(PSW)=11XXX1X1B3.15要选用工作寄存器3组,请采用三种不同的指令实现之。解:(1)SETBPSW.4SETBPSW.3(2)ORLPSW,#18H(3)MOVPSW,#18H3.16列举三种能使累加器A内容清零的指令,并比较其优缺、点。解:(1)ANLA,#00H(2)MOVA,#00H(3)CLRA3.17回答问题:(1)算术操作类指令对标志位的影响。(2)逻辑操作类指令对字节内容的修改。解:(1)算术操作指令的执行将影响特殊功能寄存器中状态寄存器PSW的3个标志位:C:(PSW.7)进位标志;Ac:(PSW.6)辅助进位标志;OV:(PSW.2)辅助进位标志3个标志除特别指出外,指令服从以下规则:①操作结果在最高位有进位输出(加法时)或借位输入(减法时),C=1;否则;C=0。②操作结果的低4位有进位输出(加法时)或有向高4位的借位(减法时),Ac=1;否则;Ac=0。③溢出标志OV满足逻辑关系式OV=C6⊕C7;C6为加法时,累加器A的D6位向D7产生的进位,或减法时累加器A的D6位向D7产生的借位,有进位或借位时,C6=1;C7为加法时,累加器A的D7位向更高位产生的进位,或减法时累加器A的D7位向更高位产生的借位,有进位或借位时,C7=1;OV标志位常用于加减指令对带符号数做补码加、减运算时,(OV)=1表示加、减运算的结果超出了A所能表示的带符号数的范围(128~127)。(2)①若要对内部的某几位清零,而其它位保持不变,可以选用ANLdirect,#data指令,在需27要清零的位上对应的data的相应位清零。②若要对内部的某几位置1可以选用ORLdirect,#data指令,在需要置1的位上对应的data的相应位置1。③若要对内部的某几位求反可以选用XRLdirect,#data指令,在需要求反的位上对应的data的相应位置1。若要对内部RAM某单元求反可以选用XRLdirect,#0FFH。3.18要将片内RAM0FH单元的内容传送去专用寄存器B,对0FH单元的寻址可有三种方法:(1)R寻址;(2)R间址;(3)Direct寻址; http://www.wkfxw.com文库分享网请分别编写出相应程序,比较其字节数、机器周期数和优缺点。解:(1)MOVR0,0FHMOVB,R0(2)MOV@R0,0FHMOVB,@R0(3)MOVB,0FH(1)占四个字节数,四个机器周期数;(2)占四个字节数,四个机器周期数;(3)占三个字节数,三个机器周期数;所以第三种方法最好。3.19设(R0)=7EH,(DPTR)=10FEH,片内RAM7EH单元的内容为0FFH;7F单元的内容为38H,试为下列程序的每条指令注释其执行结果。INC@R0INCR0INC@R0INCDPTRINCDPTRINCDPTR解:INC@R0;将7EH单元的内容加1,即7EH←00HINCR0;R0←7FHINC@R0;7FH←39HINCDPTR;DPTR←10FFHINCDPTR;DPTR←1100HINCDPTR;DPTR←1101H283.20试编程:引用“与”运算,判断某8位二进制数是奇数还是偶数解:设该8位二进制数放在累加器A中,如果是奇数,将F0标志置1,如果是偶数,将F0标志清0。ORG2000HSTART:MOVR0,AANLA,#01HJZLOOPMOVA,R0SETBPSW.5SJMPHERELOOP:MOVA,R0CLRPSW.5HERE:SJMPHERE3.21试编程:引用“或”运算,使任意8位二进制数的符号位必为“1”。解:ORG2000HSTART:ORLA,#80H3.22请思考:引用“异或”运算,怎样可使一带符号数的符号位改变、数据位不变:怎样可使该数必 http://www.wkfxw.com文库分享网然变“0”。解:将该数与80H相异或,就可以改变其符号位,而数值位保持不变。将该数与其本身相异或,就可以使该数必然为0。3.23要选择工作寄存器组,可有几种编程办法?解:可以采用如下三种办法:(1)SETBPSW.4SETBPSW.3(2)ORLPSW,#18H(3)MOVPSW,#18H3.24设ROM、片内RAM、片外RAM各有关单元的内容示如下图,问执行下列程序段后(A)=?0000AJMP030HORG0030H0030MOVR0,#32H29MOVA,@R0MOVR1,AMOVXA,@R1MOVCA,@A+DPTR30H33H32H31H30H31H32H33H片内RAM30H33H32H31H32H30H33H31H片外RAM0030H0033H0032H0031H30H33H31H http://www.wkfxw.com文库分享网32HROM解:(A)=30H3.25若在片内RAM30H单元中有二位压缩的BCD码95H,问执行下列程序后,片内RAM30H单元的内容是什么?31H、32H的内容又是什么?并写出BCD码十进制调整的过程。MOVR0,#30HMOVA,@R0ANLA,#0FHMOVR3,AMOVA,@R0SWAPAANLA,#0FHADDA,R3DAAMOV@R0,AMOVR3,AINCR0ANLA,#0FHMOV@R0,AINCR0MOVA,R3ANLA,#0F0HSWAPAMOV@R0,ARET解:(30H)=14H;(31H)=04H;(32H)=01H;30第4章MCS51汇编语言程序设计4.1请解释下列名词:机器码助记符操作码操作数源程序目标程序汇编程序汇编语言汇编语言程序汇编指令汇编机器汇编人工汇编解:机器码二进制代码形式的指令操作码用指令的英文缩写表示,便于辨识指令的功能,也便于记忆,称为助记符。操作数是参与该指令操作的操作数或操作数所在的地点(寻址方式),有时,用一个表达式来表示一个操作数,例如#TAB十1。源程序汇编语言程序与高级语言程序目标程序二进制代码形式的程序汇编程序机器汇编时用到的软件汇编语言用缩写的英文单词表示操作码,用字母、数字表示操作数的语言 http://www.wkfxw.com文库分享网汇编语言程序用汇编指令书写的程序汇编指令用缩写的英文单词表示操作码,用字母、数字表示操作数的指令汇编将汇编语言源程序翻译成目标程序的过程机器汇编由机器完成汇编工作人工汇编由编程人员手工完成汇编工作。4.2经过汇编后,下列各条语句的标号将是什么数值?ORG2000HTABLE:DS10WORD:DB15,20,25,30FANG:EQU1000HBEGIN:MOVA,R0解:TABLE=2000H;WORD=200AH;FANG=1000H;BEGIN=200EH4.3下列程序段经过汇编后,从2000H开始的各有关存储单元的内容将是什么?ORG2000HTAB:DS5DB10H,10DW2100HORG2050H31DWTABDB“WORK”解:从2000H到2004H单元内容为预留的(2005H)=10H;(2006H)=0AH(2007H)=00H;(2008H)=21H(2050H)=00H;(2051H)=20H(2052H)=57H;(2053H)=4FH(2054H)=52H;(2055H)=4BH4.4下列程序段经过汇编后,从1000H开始的各有关存储单元的内容将是什么?ORG1000HTAB1:EQU1234HTAB2:EQU3000HDB“START”DWTAB1,TAB2解:(1000H)=53H;(1001H)=54H(1003H)=52H;(1004H)=54H(1005H)=34H;(1006H)=12H(1007H)=00H;(1008H)=30H4.5有程序如下:CLRCCLRRS1CLRRS0MOVA,#38HMOVR0,AMOV29H,R0 http://www.wkfxw.com文库分享网SETBRS0MOVR1,AMOV26H,AMOV28H,C要求:(1)区分哪些是位操作指令?哪些是字节操作指令32(2)写出程序执行后,片内RAM有关单元的内容。(3)译成机器码。(4)按汇编语言程序的标准格式书写,要求有各条指令的存放地址和必要的注释。解:(1)位操作指令为CLR、SETB指令,再加上MOV28H,C(2)(C)=0;(RS1)=0;(RS0)=1;(A)=38H;(R0)=38H;(29H)=38H;(R1)=38H;(26H)=38H;(28H)=0(3)、(4)略。4.6试编程:将两个四位二进制数并存与一个字节。解:设两个四位二进制数分别存放于R0和R1的低半字节,合并后的结果存于R2中。ORG2000HSTART:MOVA,R1SWAPAORLA,R0MOVR2,ASJMP$4.7试编程:有两个双字节压缩的BCD码数相加,设这两待加数分别按先低后高原则存放在30H、31H和40H、41H单元,和要求放回30H、31H单元。解:ORG0050HSTART:MOVR0,#30HMOVA,@R0ADDA,40HDAAMOV@R0,AINCR0MOVA,@R0ADDCA,41HDAAMOV@R0,ASJMP$ENDSTART4.8试编程:将累加器A内容低四位送片外RAM7AH单元,高4位送片外RAM7BH单元,7AH、337BH单元的高4位均清零。解:ORG0050HSTART:MOV7CH,AANL7AH,#0FH http://www.wkfxw.com文库分享网MOV7AH,AMOVA,7CHANLA,#0F0HSWAPAMOV7BH,ASJMP$ENDSTART4.9试编程:将片内RAM50H、51H单元二个无符号数中较小的数存与60H单元。解:ORG2000HHSTART:CLRCMOVA,50HSUBBA,51HJCLESSMOV60H,51HSJMPELSELESS:MOV60H,50HELSE:4.10试编程:将片内RAM60H~69H单元中的十个数相加,和的低8位存入7EH,高8位存入7FH。解:ORG2000HSTART:MOV7FH,#00HMOVR1,#09HMOVR0,#60HMOVA,@R0INCR0LOOP:ADDA,@R0JNCLP1INC7FH34LP1:INCR0DJNZR1,LOOPMOV7EH,ADONE:4.11试编程:统计从片内RAM60H单元起所存60个数中“0”的个数,并存入工作寄存器R7。解:按照题意看,本题所用单片机是52子系列机型,符合题意要求的程序为:ORG2000HHSTART:MOVR7,#00HMOVR1,#60MOVR0,#60HLOOP:MOVA,@R0JNZNPLSINCR7 http://www.wkfxw.com文库分享网NPLS:INCR0DJNZR1,LOOPDONE:4.12试编程:将ROM中自2000H单元起的100个数,按序移至片外RAM自2080H单元起的内存区间去。解:ORG2000HSTART:MOVDPTR,#2000HMOVR1,#64HMOVR2,#0LOOP:MOVA,R2MOVCA,@A+DPTRMOVR3,AMOVA,#80HADDA,R2MOVDPL,AMOVA,R3MOVX@DPTR,AINCR2MOVDPL,#035DJNZR1,LOOPDONE:4.13试编程:将ROM中以TAB为初址的32个单元的内容依次传送到片外RAM以00H为初址的区域去(规定用查表指令)。解:ORG2000HHSTART:MOVDPTR,#TABMOVR0,#00HMOVR2,#20HLOOP:CLRAMOVCA,@A+DPTRMOVX@R0,AINCDPTRINCR0DJNZR2,LOOPDONE:SJMPDONE4.14阅读下列程序,(1)说明该程序的功能。(2)填出所缺的机器码。(3)试修改程序,使片内RAM的内容达到右下图所示的结果。7AMOVR2,#0AHMOVR0,#50HE4CLRA http://www.wkfxw.com文库分享网E6LOOP:MOV@R0,A08INCR0DADJNZR2,LOOPDONE:解:(1)将片内RAM自50H单元起的10个单元清零。(2)7A0A7850E4F63608DAFC(3)在MOV@R0,A指令后添一条INCA指令。4.15阅读下列程序,并要求:(1)说明程序的功能。(2)写出涉及的寄存器及片内RAM单元的最后结果。MOVR0,#40HMOVA,@R0INCR0ADDA,@R0INCR0MOV@R0,ACLRAADDCA,#0INCR0MOV@R0,A已知(40H)=98H,(41H)=AFH。解:(1)(43H)、(42H)←(40H)+(41H)(2)A的内容为01H,R0的内容为43H;C=1。片内RAM42H单元的内容为47H,43H单元的内容为01H。4.16阅读下列程序,并要求:(1)说明程序的功能。(2)写出涉及的寄存器及片内RAM单元的最后结果。MOVA,61HMOVB,#02HMULABADDA,62HMOV63H,ACLRAADDCA,BMOV64H,A已知(61H)=F2H,(62H)=CCH37解:(1)将片内RAM61H单元的内容左移一位与62H的内容相加,将结果的高8位存入 http://www.wkfxw.com文库分享网64H、低8位存入63H。(2)A的内容为02H,63H的内容为B0H;64H的内容为02H。4.17已知(R3)=FBH,(R4)=64H,阅读下列程序,并要求:(1)说明程序的功能。(2)写出涉及的寄存器及片内RAM单元的最后结果。CLRCMOVA,R3RRCAMOVR3,AMOVA,R4RRCAMOVR4,A解:(1)程序功能:实现16位数带进位位循环右移一位。(2)(R3)=7DH,(R4)=B2H,C=0。4.18阅读下列程序,并要求:(1)说明程序的功能。(2)写出涉及的寄存器及片内RAM单元的最后结果。ORG1000HABS:MOVR0,#38HMOVR1,#48HMOVR2,#06HLOOP:MOVA,@R0JNBA.7,NEXTCPLASETBA.7INCANEXT:MOV@R1,AINCR0INCR1DJNZR2,LOOPDONE:38解:(1)片内RAM自38H单元起6个单元的内容分别取补后,依次存放到片外RAM自48H单元起的6个单元的内容不变;(2)片内RAM自38H单元起6个单元的内容不变;片外RAM自48H单元起6个单元的内容依次为:(48H)=48H,(49H)=8EH,(4AH)=FFH,(4BH)=D8H,(4CH)=00H,(4DH)=BCH。39第5章MCS51的中断系统 http://www.wkfxw.com文库分享网5.1请列举MCS51系列单片机的中断源和中断申请方法。解:51子系列有五个中断源:(1)外部中断0、1输入/输出设备的中断请求,掉电、设备故障的中断请求等都可以作为外部中断源,从引脚INT0或INT1输入。外部中断请求INT0、INT1有两种触发方式:电平触发及跳变触发,由TCON的IT0位及IT1位选择。IT0(IT1)=0时INT0或INT1为电平触发方式,当引脚INT0或INT1上出现低电平时就向CPU申请中断,CPU响应中断后要采取措施撤消中断请求信号,使INT0或INT1恢复高电平。IT0(IT1)=1时为跳变触发方式,当INT0或INT1引脚上出现负跳变时,该负跳变经边沿检测器使IE0(TCON.1)或IE1(TCON.3)置1,向CPU申请中断。CPU响应中断后由硬件自动清除IE0、IE1。CPU在每个机器周期采样INT0、INT1,为了保证检测到负跳变,引脚上的高电平与低电平至少应各自保持1个机器周期。(2).定时器/计数器0、1溢出中断定时器/计数器计数溢出时,由硬件分别置TF0=1或TF1=1,向CPU申请中断。CPU响应中断后,由硬件自动清除TF0或TF1。(3).串行接口中断串行接口的中断请求由发送或接收所引起。串行接口发送了一帧信息,便由硬件置TI=1、向CPU申请中断。串行接口接收了一帧信息,便由硬件置RI=1,向CPU申请中断。CPU响应中断后必须用软件清除TI和RI。52子系列有6个中断源:增加了定时器/计数器2中断请求。5.2MCS51单片机响应外部中断的典型时间是多少?在哪些情况下,CPU将推迟对外部中断请求的响应?解:响应外部中断的典型时间是38个机器周期当遇到下列三种情况之一时,CPU将推迟对外部中断请求的响应:(1)CPU正在处理同级的或更高优先级的中断。(2)所查询的机器周期不是所当前正在执行指令的最后一个机器周期。(3)正在执行的指令是RETI或是访问IE或IP的指令。5.3中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?解:指令RETI与指令RET的差别是:RETI指令执行完毕,把响应中断时所置“1”的优先级状态触发器清“0”,而RET指令则没有这个动作,其它过程的都是相同的。40第6章MCS51 http://www.wkfxw.com文库分享网的定时器/计数器6.1请归纳MCS51系列单片机的定时器/计数器共有哪些用途,并说明其具体用法。解:定时器/计数器是MCS51单片机的重要功能模块之一。在检测﹑控制及智能仪器等应用中,常用定时器作实时时钟,实现定时检测、定时控制。还可用定时器产生毫秒宽的脉冲,驱动步进电动机一类的电气机械。计数器主要用于外部事件的计数。具体用法略。6.2综述定时器/计数器0、1四种工作方式的工作特征与用法。解:定时器/计数器0、1有四种工作方式,工作特征与用法为:方式0;13位定时器/计数器,方式1;16位定时器/计数器,方式2;具有自动重装初值的8位定时器/计数器,方式3;定时器/计数器0分为两个8位定时器/计数器,定时器/计数器1在此方式下无意义。6.38051单片机内部有几个定时器/计数器?它们是由哪些特殊功能寄存器组成?解:8051单片机片内设有2个定时器/计数器:定时器/计数器T0和定时器/计数器T1,T0由TH0、TL0组成,T1由TH1、TLl组成。T0、T1由特殊功能寄存器TMOD、TCON控制。6.4定时器/计数器的4种工作方式如何设定?解:用M1、M0两位的状态来设定。6.5说明MCS51系列单片机定时器/计数器0、1的结构与工作原理。解:结构:定时器/计数器0、1由加法计数器、TMOD寄存器、TCON寄存器等组成。定时器/计数器的核心是16位加法计数器,用特殊功能寄存器TH0(8CH)、TL0(8AH)及THl(8DH)、TLl(8BH)表示。TH0、TL0是定时器/计数器0加法计数器的高8位和低8位,THl、TLl是定时器/计数器1加法计数器的高8位和低8位。工作原理:作计数器用时,加法计数器对芯片引脚T0(P3.4)或T1(P3.5)上输入的脉冲计数。每输入一个脉冲,加法计数器增加1。加法计数溢出时可向CPU发出中断请求信号。作定时器用时,加法计数器对内部机器周期脉冲Tcy计数。由于机器周期是定值,所以对Tcy的计数也就是定时,如Tcy=1us,计数值100,相当于定时100us。加法计数器的初值可以由程序设定,设置的初值不同,计数值或定时时间就不同。在定时器/计数器的工作过程中,加法计数器的内容可用程序读回CPU。TMOD用来选择定时器/计数器0、1的工作方式,低4位用于定时器/计数器0,高4位用于定时器/计数器1。其值可用程序决定。TCON高4位用于控制定时器0、1的运行,低4位用于控制外部中断,与定时器/计数器无关。6.6定时器/计数器0已预置为FFFFH,并选定用方式1的计数器方式,问此时定时器/计数器0的 http://www.wkfxw.com文库分享网实际用途将是什么?解:因为此时定时器/计数器并不用于定时或计数,只要随机外来一个脉冲即可以溢出,向CPU申请中断,故这一内部中断源实际上已经成为外部中断源使用。6.7定时器/计数器0如用于下列定时,晶振为12MHz,试为定时器/计数器0编制初始化程序:(1)50ms;(2)25ms。解:(1)由于Tcy=1us,故有T=(65536x)Tcy=(65536x)×1us=50ms得X=15536=3CB0H41即TH0=3CH,TL0=B0HORG2000HSTART:MOVTH0,#3CHMOVTL0,#B0HMOVTMOD,#01HSETBTR0(2)由于Tcy=1us,故有T=(65536x)Tcy=(65536x)×1us=25ms得X=40536=9E58H即TH0=9EH,TL0=58HORG2000HSTART:MOVTH0,#9EHMOVTL0,#58HMOVTMOD,#01HSETBTR06.8定时器/计数器0已预置初值为156,且选定用方式2的计数器方式,现在T0引脚上输入周期为1ms脉冲,问:(1)此时定时器/计数器0的实际用途是什么?(2)在什么情况下,定时器/计数器0溢出?解:(1)实际用作定时器,但采用外部时钟脉冲(2)满100ms定时器/计数器0将溢出。6.9设fosc=12MHz,定时器/计数器0的初始化程序中断服务程序如下:;主程序MOVTH0,#0DHMOVTL0,#0D0HMOVTMOD,#01HSETBTR0;中断服务程序 http://www.wkfxw.com文库分享网000BMOVTH0,#0DHMOVTL0,#0D0HRETI问:(1)该定时器/计数器工作于什么方式?(2)相应的定时时间或计数值是多少?(3)为什么在中断服务程序中要重置定时器/计数器的初值?解:(1)工作于方式1,定时器方式(2)定时时间为(655360DD0H)×1us=62000us=62ms;42(3)说明该单片机应用系统需要定时器/计数器0反复定时工作,所以必须对定时器/计数器重复置初值,以供再次投入定时计时。6.10使用一个定时器,如何通过软硬结合方法实现较长时间的定时?解:设定好定时器的定时时间,采用中断方式用软件设置计数次数,进行溢出次数累计,从而得到较长的时间。6.11请编写两段程序,分别用指令延时法和定时器定时10ms,设晶振为12MHz。解:指令延时法:计算过程见课本P122例317,注释部分为每条指令的机器周期数。DELAYl:MOVR1,#65H;1DL2:MOVR2,#18H;1DLl:NOP;1NOP;1DJNZR2,DL1;2DJNZR1,DL2;2RET;2选用T0方式1定时10ms,初值计算:fosc=12MHz,机器周期为1μs。X=21610×103/1=6553610000=55536=D8F0H,即有TH0=D8H,TL0=F0H。程序为:MOVTMOD,#01HMOVTH0,#0D8HMOVTL0,#0F0HSETBTR0SJMP$6.12设晶振为12MHz,请编写两段程序,分别用指令延时法和定时器实现30ms延时。解:指令延时法:计算过程见课本P122例317,注释部分为每条指令的机器周期数。DELAYl:MOVR3,#03HDL3:MOVR1,#65H;1DL2:MOVR2,#18H;1DLl:NOP;1NOP;1 http://www.wkfxw.com文库分享网DJNZR2,DL1;2DJNZR1,DL2;2DJNZR3,DL3;2RET;2选用T0方式1定时30ms,初值计算:fosc=12MHz,机器周期为1μs。X=21630×103/1=6553630000=35536=8AD0H,即有TH0=8AH,TL0=D0H。程序为:MOVTMOD,#01HMOVTH0,#8AHMOVTL0,#0D0H43SETBTR0SJMP$6.13某单片机系统:fosc=12MHz,定时器/计数器0用于20ms定时,定时器/计数器1用于100次计数,定时器/计数器0和定时器/计数器1均要求重复工作。问:(1)外部计数脉冲应从何引脚输入?(2)试编能达到上述要求的程序。解:(1)外部脉冲从T1(P3.5)引脚输入。(2)本题100=0064H,定时器/计数器1选择为方式1,初值X=65536100=65436=FF9CH定时器/计数器0选择为方式1,初值X=6553620000=45536=4E20H,所以定时器/计数器预置以B1E0H。设定时器/计数器串接使用,以得到20ms*100=2s的定时,满足每隔2s,做某种动作的需要。程序为:ORG2000HSTART:…….……MOVTMOD,#51HREPEAT:MOVTH1,#FFHMOVTL1,#9CHMOVTH0,#B1HMOVTL0,#E0HCLRP3.5MOVIE,#88HSETBTR1SETBTR0LOOP:…………JNBTF0,$CLRTF0JBCF0,ELSE http://www.wkfxw.com文库分享网SETBP3.5MOVTH0,#B1HMOVTL0,#E0HCLRP3.544SJMPLOOP…………ELSE:…………AJMPREPEATORG001BHSETBF0RETI6.14阅读下列程序,设fosc=12MHz,请回答:(1)该程序每隔多少时间执行一次检测程序?是怎样安排达到的?(2)定时器/计数器0及定时器/计数器1各在什么情况下溢出?列出您的计算。(3)为程序作出注释。0000HLJMP0030H;主程序ORG0030HSTART:CLRT1MOVTMOD,#51HMOVIE,#8AHMOVTH0,#0D8HMOVTL0,#0F0HMOVTH1,#0E8HMOVTL1,#90HSETBTR0SETBTR1;中断服务程序ORG000BHLJMP0080HORG0080HT0OV:SETBT1MOVTH0,#0DBHMOVTL0,#0F0HCLRT145RETIORG001BHLJMP0090HORG0090HT1OV:MOVTH1,#0E8H http://www.wkfxw.com文库分享网MOVTL1,#90H……;此起为检测程序RETI解:(1)该程序每隔1分钟执行一次检测程序。(2)T/C0定时时间=(65536D8F0H)*1us=10000us,所以T/C0在10ms定时时间到时溢出。T/C1计数值=65536E890H=6000,所以T/C1在计数到6000次时溢出。(3)略。46第7章MCS51的串行口7.1MCS51系列单片机串行口有哪几种工作方式?请说明各种工作方式的功能、应用场合与相应的波特率。解:串行口有4种工作方式。方式0并不用于通信,而是通过外接移位寄存器芯片实现扩展并行I/O接口的功能。该方式又称移位寄存器方式。方式1、方式2、方式3都是异步通信方式。方式1是8位异步通信接口,一帧信息由10位组成。方式1用于双机串行通信。方式2、方式3都是9位异步通信接口、一帧信息中包括9位数据,1位起始位,1位停止位。方式2、方式3的区别在于波持率不同,方式2、方式3主要用于多机通信,也可用于双机通信。7.2何谓波特率?综述MCS51系列单片机有哪些功能部件可作为波特率发生器、以及相应的波特率计算公式。解:在一帧信息中,每一位的传送时间(位宽)是固定的,用位传送时间Td表示。Td的倒数称为波特率(Baudrate),波特率表示每秒传送的位数。在8031/8051/8751单片机中,工作方式1、工作方式3的波特率取决于定时器/计数器1的溢出速率及SMOD,并由下式决定波特率=2SMOD×定时器/计数器1溢出速率/327.3何谓串行通信、单工、半双工、全双工、发送、接受、异步通信、同步通信、起始位、停止位、空闲位、一帧信息、同步字符、双机通信、多机通信。解:一条信息的各位数据被逐位顺序传送的通信方式称为串行通信。信息只能单方向传送称为单工;信息能双向传送但不能同时双向传送称为半双工;能够同时双向传送则称为全双工。通信技术中,输出又称为发送(Transmitting),输入又称为接收(Receiving)。 http://www.wkfxw.com文库分享网异步通信用起始位“0”表示字符的开始,然后从低位到高位逐位传送数据,最后用停止位“1”表示字符结束。同步通信中,每一数据块开头时发送一个或两个同步字符,使发送与接收双方取得同步。数据块的各个字符间取消了起始位和停止位,所以通信速度得以提高。—个字符又称一帧信息。一帧信息包括1位起始位、8(9)位数据位和1位停止位,数据位增加到9位。双机通信:一台主机对一台从机的通信方式。多机通信:一台主机对多台从机的通信方式。47第8章MCS51系列单片机扩展存储器的设计8.1MCS51系列单片机对外有几组总线?哪几组?请说明每组总线的组成。解:单片机对外呈三总线形式。由P2、P0组成16位地址总线;由P0分时复用为数据总线;由ALE、PSEN、RST、EA与P3口中的INT1、INT0、、T0、T1、WR、RD共10个引脚组成控制总线。8.28031最小系统包含哪些芯片,试画出它的实用电路草图。解:8031本身、片外程序存储器与地址锁存器组成了一个真正可用的、未曾扩展的最小系统。8031ALEP0.0P0.7EAPSENOE74LS373Q1Q8A0A7A8A12D0D7OE2764(1)CEP2.0P2.4P2.5GD1D888 http://www.wkfxw.com文库分享网8855803l的最小系统草图8.3请阐明8031最小系统必须用地址锁存器的理由(联系时序讲)解:8.3题图最小系统的工作时序51系列单片机在设计时为最小系统规定了8.3题图所示的工作时序。自图可见P2口用于送出PCH信息,P0口用于送出PCL信息和输入指令;在每个机器周期中,ALE脉冲两次有效,它的频率为2MHz;PSEN脉冲也是两次有效。ALE第一次有效发生在S1P2和S2P1期间,而当S2状态周期、它处下降沿时P0口上低8位地址信息PCL被锁存到地址锁存器;然后在S4状态周期、PSEN处上升沿时将指令读入单片机。ALE第二次有效发生在S4P2和S5P1期间,在S5状态周期、ALE处下48降沿时P0口上新的PCL值又被锁存到地址锁存器,以待下一机器周期的S1状态周期、PSEN处上升沿时读入新的PC值所指地址中的指令。这样,在每个机器周期的S1状态周期已取有该机器周期要执行的指令信息,而在S1P2期间将开始执行。8.48031单片机用及片外ROM和片外RAM时,有哪些引脚送出地址信息?请综述在各种不同情况下,访问片外ROM和片外RAM的方法(地址线的接法)。解:由P0口和P2口送出地址信息。不同容量的片外ROM和片外RAM所需要的地址线的根数是不一样的,根据容量大小决定所要连接的P2口的地址线的跟数。8.5某系统片外RAM的片选电路如下图所示:RAM共7路,有2K×8位和1K×8位两种芯片,其片选信号都是低电平有效。请为各路RAM芯片注明它的容量和地址范围。A15A14A13A12A110>=1 http://www.wkfxw.com文库分享网000>=1000>=1000>=100A102AG2BG1GCBA0Y1Y2Y4Y5Y第一路片选端第二路片选端第三路片选端第四路片选端第五路片选端 http://www.wkfxw.com文库分享网第六路片选端第七路片选端74LS1388.5题图解:第一块芯片的地址为8000H87FFH;第二块芯片的地址为8800H8FFFH;第三块芯片的地址为9000H97FFH;第四块芯片的地址为A000HA3FFH;第五块芯片的地址为A400HA7FFH;第六块芯片的地址为A800HABFFH;第七块芯片的地址为AC00HAFFFH;8.6何谓地址重叠?设用3~8译码器74LS138解决8片1K×8位存储器芯片的片选问题,试结合8.6题图所示的两种接法阐明地址重叠的概念。解:存储空间的地址不是唯一的,称为地址重叠。498.6题图本题左图不存在地址重叠的问题,译码器各输出端选通的存储器芯片的地址是唯一的,从上到下分别为:2000H23FFH,2400H27FFH、2800H2BFFH、2C00H2FFFH、3000H33FFH、3400H37FFH、3800H3BFFH、3C00H3FFFH。右图则存在地址重叠问题,例如Y0输出端选中的存储器的地址范围可以是0000H03FFH,也可以是2000H23FFH,或4000H43FFH等等,总之,随着A15、A14、A13这三位的变化可以有23=8种地址范围,同理,Y1、Y2、Y3、……等输出端各自选中的存储器芯片其地址范围也都重叠有8种。8.7题图是4片8K×8位存储器芯片的连接图,请确定每片存储器芯片的地址范围。8.7题图解:第一片芯片的地址范围是:0000H1FFFH第二片芯片的地址范围是:2000H3FFFH第三片芯片的地址范围是:4000H5FFFH http://www.wkfxw.com文库分享网第四片芯片的地址范围是:6000H7FFFH8.8画出用2片2716和2片6116并用片选法扩展片外ROM/RAM的电路图,说明每片存储器芯片的地址范围。解:每一片IC芯片的地址不唯一。将未连接的P2.3、P2.4、P2.5三位的地址信息看作0,则各片的地址范围为:IC1:C000HC7FFHIC2:8000H87FFHIC3:4000H47FFHIC4:0000H07FFH508RD88IC5803188WR88P0.00.78ALEOEOECE1A1B1Y0CE1Y3WE1Y21Y1O07I/O07WEI/O072716GP2.6O07IC674LS3732716OEA8A9A10A8A9A10 http://www.wkfxw.com文库分享网IC4A8A9A10CEA07IC374HC139A07IC1A8A9A10P2.7CEOEA07IC26116A07OE61161D8D1Q8QPSENP2.0P2.1P2.2EA8.7题图51第9章MCS51扩展I/O接口的设计9.1设8255A控制字寄存器地址为4003H,PA、PB、PC口全部用作输入,且工作方式0。试对8255A初始化编程。解:首先根据题意确定8255A的方式控制字。按8255A方式控制字格式,本题的方式控制字为10011011B,则初始化程序如下:MOVDPTR,#4003H;控制字寄存器地址MOVA,#9BH;方式控制字MOVX@DPTR,A;写入8255A如果全部输出,则方式控制字为10000000B=80H。8255A上电复位后所有口为输出`状态。9.2已知8255APA口输出,工作方式1,PB口输入,工作方式0,8255A的控制字地址7FFFH,试初始化编程。解:由于PA口工作在方式1,因此PC口的部分信号自动作为PA http://www.wkfxw.com文库分享网口的控制信息。在控制字中PC口的其他管脚定义为输出,则控制字为10100010B=A2H。另外允许中断,即PC6置“1”,则PC口置位控制字00001101B=0DH。初始化程序如下:9.38031单片机与并行接口芯片8255A的接口电路如9.3题图所示,端口A接一组指示灯,显示的内容由A口输出至指示灯;端口B接一组开关,将开关的内容由B口输入,并将此开关状态通过A口由指示灯显示出来。要求:(1)写出8255A的A口、B口、C口和控制口的地址,并写出控制字。(2)编写实现题目要求的程序。+5V8031D7+5VD0K7K0············P0ALEP2.7EARDWRCSRDWRGOED8D1D0D7···Q2Q1A1A0PAPB74LS http://www.wkfxw.com文库分享网3738255AQ8Q19.3题图解:(1)8255A的A口、B口、C口和控制字的地址分别为7F00H、7F01H、7F02H和7F03H。由于开关和指示灯通过8255A和8031进行数据传送,不需联络信号,因此可让A口和B口均52工作在方式0。A口作数据输出口,B口作数据输入口。此时,8255A的方式控制字为82H。(2)程序如下:ORG1000HSTART:MOVDPTR,#7F03HMOVA,#82HMOVX@DPTR,AMOVDPTR,#7F01HMOVXA,@DPTRDECDPTRMOVX@DPTR,ASJMPSTART9.4如9.4题图所示,由PA口输出点亮七段数码管,PC口接8个开关用作输入信号。当某开关合上时显示相应的开关号,即K1合显示“1”,K2合显示“2”,依此类推。试编程实现。解:首先确定方式控制字,PA口应该工作在方式0且输出,PB口没有用任意,PC口输入,则方式控制字是10001001B。由9.4题图不难确定8255A的4个地址分别为(无关位取1):PA口7CFFH,PB口7DFFH,PC口7EFFH,控制字寄存器地址7FFFH。应用子程序如下:EX8255:MOVDPTR,#7FFFH;8255A初始化MOVA,#89HMOVX@DPTR,AMOVDPTR,#7EFFH;取开关信号MOVXA,@DPTRMOVR3,#0;开关号单元清0MOVR2,#8;8个键EX82_1:RRCA;移出一位信号JCEX82_2;判断开关断转跳INCR3;键号+1MOVA,R3;显示值转换显示码MOVDPTR,#DIRTAB;七段数码管显示段码表首地址MOVCA,@A+DPTR;查表 http://www.wkfxw.com文库分享网MOVDPTR,#7CFFH;送PA口显示MOVX@DPTR,ARET53EX82_2:INCR3;键号+1DJNZR2,EX82_1;8个键判完?RETDIRTAB:DB0C0H,0F9H,0A4H,0B0H;定义段码0,1,2,3DB99H,92H,82H,0F8H;4,5,6,7DB80H,98H,88H,83H;8,9,A,BDB0C6H,0A1H,86H,8EH;C,D,E,F9.4题图9.5试设计一个8031单片机与并行接口芯片8155的接口电路,并对8155进行初始化编程:让8155的PA口、PB口工作在基本输入/输出方式,其中,A口为输出,B口为输入,对输入脉冲进行32分频,定时器作为脉冲发生器,输出连续脉冲。解:8031单片机与并行接口芯片8155的接口电路如9.5题图所示:EAP0.0P0.78051WRRDCE8155WRRDRESETRESETALEAD0AD7VssPC.0PC.7PB.0PB.7PA.0PA.7ALEP2.0IO/MP2.79.5题图对8155I/O口地址分配如下:54命令/状态寄存器的地址:7F00H http://www.wkfxw.com文库分享网PA口的地址:7F01HPB口的地址:7F02HPC口的地址:7F03H定时器低8位的地址:7F04H定时器高8位的地址:7F05H8155初始化参考程序如下:MOVDPTR,#7F04HMOVA,#20H;对计数器的低8位赋初值MOVX@DPTR,AINCDPTRMOVA,#C0H;设定定时器为连续脉冲输出MOVX@DPTR,A;装入定时器高8位MOVDPTR,#7F00HMOVA,#0C1H;设定命令控制字,并启动定时器MOVX@DPTR,A9.6用74LS373输入(P2.0片选),74LS377输出(P2.1片选),它们与8051的连接电路如9.6题图示。写出图示电路中74LS373与74LS377的端口地址,并编制完成下列要求的程序:从74LS373依次读入8个数据,取反后,从74LS377输出。EAP2.1P2.08051OE74LS377D0D7CLKQ0Q7³1OE74LS373D0D7WRQ0Q7RD输出信号输入信号P09.6题图解:74LS373与74LS377的端口地址分别为FEFFH和FDFFH编程如下:RDWR:MOVDPTR,#0FDFFH;置74LS377口地址MOV31H,DPH;暂存MOVDPTR,#0FEFFH;置74LS373口地址 http://www.wkfxw.com文库分享网MOV30H,DPH;暂存55MOVR2,#8;置数据长度LOOP:MOVXA,@DPTR;读一个数据CPLA;取反MOVDPH,31H;置74LS377口高8位地址MOVX@DPTR,A;输出一个数据MOVDPH,30H;置74LS373口高8位地址DJNZR2,LOOP;判8个数据操作完否?未完继续SJMP$9.79.7题图示为单片机扩展了8个按键输入接口及8个发光二极管输出接口的原理简图。图中74LS244作为输入接口,由RD及A14组合信号控制,74LS273作为输出接口由WR及A15组合信号控制,P0口作为数据总线与I/0的数据线连接。图中的地址分别是74LS244的地址为BFFFH(P2.6=0)、74LS273地址为7FFFH(P2.7=0)。要求当某开关合上时相对应的LED点亮,开关断时相应的LED暗,试编写控制程序。解:控制程序如下:M1:MOVDPTR,#0BFFFHMOVXA,@DPTRMOVDPTR,#7FFFHMOVX@DPTR,ASJMPM19.7题图单片机与I/O接口原理图569.8试编程将内部RAM30H、31H的内容由9.8题图输出,30H单元先送。解:采用串行口移位输出MOVR2,#2MOVR0,#30H;R0地址指针LOOP:MOVSBUF,@R0;串口输出JNBTI,$;等待输出结束CLRTI;清除标志INCR0;地址指针+1DJNZR2,LOOP;SJMP$9.8题图单片机串行口扩展输出接口57第10章MCS51与键盘、显示器、打印机的接口设计10.1显示器和键盘在单片机应用系统中的作用是什么? http://www.wkfxw.com文库分享网解:具有人机对话功能。实现人对应用系统的状态干预和数据输入以及应用系统向人报告运行和运行结果。10.2在单片机系统中,常用的显示器有那几种?解:发光二极管显示器,简称LED(LightEmittingDiode);液晶显示器,简称LCD(LiquidCrystalDisplay);荧光管显示器,简称CRT。10.3LED显示器的显示字符条件是什么?解:要使LED显示器显示出字符,必须提供段码和位选码。段码(即字码):可以用硬件译码的方法获得,也可以用软件的方法获得。位选码:静态显示和动态显示。10.4LED动态显示子程序设计要点是什么?解:(1)建立显示数据缓冲区:存放待显示数字、字符在字型编码表中的序号;(2)软件译码:利用查表方法获得字型编码(段码);(3)位扫描输出:采用移位方法逐位点亮LED显示器;(4)延时子程序:控制点亮时间和时间间隔。10.5LED静态显示方式与动态显示方式有何区别?各有什么优缺点?解:(1)静态显示方式:静态显示方式是指当显示器显示某一字符时,发光二极管的位选始终被选中。在这种显示方式下,每一个LED数码管显示器都需要一个8位的输出口进行控制。由于单片机本身提供的I/O口有限,实际使用中,通常通过扩展I/O口的形式解决输出口数量不足的问题。静态显示主要的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度大,系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,这样既节约了CPU的时间,又提高了CPU的工作效率。其不足之处是占用硬件资源较多,每个LED数码管需要独占8条输出线。随着显示器位数的增加,需要的I/O口线也将增加。(2)动态显示方式:动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。通过调整电流和时间参数,可以既保证亮度,又保证显示。若显示器的位数不大于8位,则显示器的公共端只需一个8位I/O口进行动态扫描(称为扫描口),控制每位显示器所显示的字形也需一个8位口(称为段码输出)。5810.6为什么有消除按键的机械抖动?消除按键抖动的方法有几种? http://www.wkfxw.com文库分享网解:通常的按键所用开关为机械弹性开关。由于机械触电的弹性作用,按键在闭合及断开的瞬间均伴随有一连串的抖动。键抖动会引起一次按键被误读多次。为了确保CPU对键的一次闭合仅作一次处理,必须去除抖动。消除抖动的方法有硬件和软件两种方法。硬件方法常用RS触发器电路。软件方法是当检测出键闭合后执行一个10ms~20ms的延时程序,再一次检测键的状态,如仍保持闭合状态,则确认真正有键按下。10.7简述液晶显示器LCD的特点,画出80C51与液晶显示模块LCM的基本接口电路,并编写初始化程序。解:液晶显示器简称LCD(LiquidCrystalDiodes),是一种被动式的显示器,即液晶本身并不发光,利用液晶经过处理后能够改变光线传输方向的特性,达到显示字符或者图形的目的。LCD显示器有笔段式和点阵式两种,点阵式又可分为字符型和图像型。笔段式LCD显示器类似于LED数码管显示器。每个显示器的段电极包括七个笔划(段)和一个背电极BP(或COM)。可以显示数字和简单的字符,每个数字和字符与其字形码(段码)对应。点阵式LCD显示器的段电极与背电极呈正交带状分布,液晶位于正交的带状电极间。点阵式LCD的控制一般采用行扫描方式,通过两个移位寄存器控制所扫描的点。80C51与液晶显示模块LCM的基本接口电路如图10.7所示。图10.780C51与液晶显示模块LCM的基本接口电路液晶显示模块初始化子程序(将系统设置成显示2行字符,5×7点阵,开显示,显示光标,字符闪烁,清屏,光标为移动方式,自动地址为增量方式。):电源打开后,在电源上升到4.5V并维持15ms后,写入功能设置控制字,选择数据接口位数等;等待5ms后,检查忙标志,在不忙的情况下,再进行其他的功能设置;检查忙标志,在不忙的情况下,关显示;检查忙标志,在不忙的情况下,清屏;检查忙标志,在不忙的情况下,设定输入方式,初始化结束。程序如下:LCD:MOVA,#38H;8位数据,2行显示,5×7点阵59MOVDPTR,#8000H;LCD的口地址MOVX@DPTR,ALCALLBUSYMOVA,#01H;清屏MOVDPTR,#8000HMOVX@DPTR,ALCALLBUSYMOVA,#07H;AC自动加1,整体显示移动MOVDPTR,#8000H http://www.wkfxw.com文库分享网MOVX@DPTR,ALCALLBUSYMOVA,#0FH;开显示,开光标,字符闪烁MOVDPTR,#8000HMOVX@DPTR,ARETBUSY:PUSHDPH;保护现场PUSHDPLPUSHPSWPUSHACCLOOP:MOVDPTR,#8001H;读BH及ACMOVXA,@DPTRJBACC.7,LOOP;忙,继续等待POPACC;不忙,恢复现场返回POPPSWPOPDPLPOPDPHRET10.8矩阵式键盘的编程要点是什么?60解:(1)判断键盘上有无键按下:列输出全0,读行输入状态,若状态为全1,则说明键盘无键按下;若不全为1,则说明键盘有按下。(2)消除按键抖动的影响:在判断有键按下后,用软件延时的方法,再判断键盘状态,如果仍为有键按下状态,则认为有一个确定的键按下,否则当作按键抖动处理。(3)求按键位置,计算键号:用扫描的方法识别闭合键N所在的行号X和列号Y,并根据:以下公式计算闭合键的键号N=X行首键号+列号Y。(4)键闭合一次仅进行一次按键处理:方法是等待按键释放之后,再进行按键功能的处理操作。10.9设计一个8051外扩键盘和显示器电路,要求扩展8个键,4位LED显示器。解:硬件电路连接图如图10.9所示。10.9题图LED显示器/键盘电路图61第11章MCS51单片机与D/A转换器、A/D转换器的接口11.1设某个数据采集系统中A/D转换器与单片机的连接如11.1题图所示,采用中断方式分别对8路模拟量输入信号检测,并将采集的数据存入片内数据存储器30H~37H单元。RDP2.7 http://www.wkfxw.com文库分享网WRP0~P7ALEINT1MCS-51地址锁存器11OESTARTALEA2A1ADDAADDBADDCD0~D7EOCCLOCK1分频IN0IN1IN2IN3IN4IN5IN6IN7ADC0809A0单片机11.1题图解:ADC0809各通道地址为7FF0H~7FF7H初始化程序:ORG0000HAJMPMAINORG0013HLJMPINT1S;INT1中断服务程序入口ORG0030HMAIN:MOVSP,#60H;取堆栈指针MOVR0,#30H;置片内RAM首地址MOVR7,#08;置通道计数初值 http://www.wkfxw.com文库分享网SETBIT1;置外部中断1为边沿触发SETBEX1;开外部中断1SETBEA;开总允许MOVDPTR,#7FF0H;指向AD0809的0通道LOOP:MOVX@DPTR,A;起动A/DWAIT:SJMPWAIT;等待中断DJNZR7,LOOP;8路未完继续采样(数据处理)……中断服务程序:INT1S:MOVXA,@DPTR;读取A/D转换值MOV@R0,A;存入片内RAMINCR062INCDPTR;指向下一通道RETI11.2DAC0832与8031单片机的连接如11.2题图(a)所示,试编程产生如11.2题图(b)所示倒梯形波,要求上升、平顶、下降三段的时间基本相等。(a)(b)11.2题图解:ORG0MOVDPTR,#00FEHMOVA,#0LP1:MOVX@DPTR,AINCAJNZLP1MOVA,#255MOVR7,#255LP2:MOVX@DPTR,ADJNZR7,LP2LP3:DECAMOVX@DPTR,AJNZLP3SJMPLP1END63第15章MCS51单片机应用系统的设计、开发与调试15.1简述单片机应用系统设计的一般方法及步骤。15.1题图单片机应用系统设计过程流程图解:单片机应用系统设计的一般方法及步骤如15.1题图所示。 http://www.wkfxw.com文库分享网(1)明确设计任务(2)器件选择(3)总体设计15.2简述单片机应用系统设计中软、硬件设计原则。解:(1)硬件电路设计在硬件设计时,要尽量应用最新单片机,采用新技术。要注意通用性的问题,尽可能选择典型电路,并符合单片机常规用法,为硬件系统的标准化、模块化打下良好的基础。系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。硬件系统设计应尽量朝“单片”(片上系统SOC)方向发展,以提高系统的稳定性。工艺设15.2题图软件设计的流程图64计时要考虑安装、调试、维修的方便。扩展接口的开发尽可能采用PSD等器件开发。(2)软件设计软件设计随单片机应用系统的不同而不同。15.2题图给出了单片机软件设计的流程图。一般可分为以下几个方面。①总体规划②程序设计技术:模块程序设计、自顶向下的程序设计。③程序设计:建立数学模型、绘制程序流程图、程序的编制。④软件装配。15.3单片机应用系统软、硬件设计应注意那些问题?解:硬件设计:(1)存储器扩展:容量需求,在选择单片机时就考虑到单片机的内部存储器资源,如能满足要求就不需要进行扩展,在必须扩展时注意存储器的类型、容量和接口,一般尽量留有余地,并且尽可能减少芯片的数量。选择合适的方法、ROM和RAM的形式,RAM是否要进行掉电保护等。(2)I/O接口的扩展:单片机应用系统在扩展I/O接口时应从体积、价格、负载能力、功能等几个方面考虑。应根据外部需要扩展电路的数量和所选单片机的内部资源(空闲地址线的数量)选择合适的地址译码方法。(3)输入通道的设计:输入通道设计包括开关量和模拟输入通道的设计。开关量要考虑接口形式、电压等级、隔离方式、扩展接口等。模拟量通道的设计要与信号检测环节(传感器、信号处理电路等)结合起来,应根据系统对速度、精度和价格等要求来选择,同时还需要和传感器等设备的性能相匹配,要考虑传感器类型、传输信号的形式(电流还是电压)、线性化、补偿、光电隔离、信号处理方式等,还应考虑A/D转换器的选择(转换精度、转换速度、结构、功耗等)及相关电路、扩展接口,有时还涉及软件的设计。高精度的模数转换器价格十分昂贵,因而应尽量降低对 http://www.wkfxw.com文库分享网A/D转换器的要求,能用软件实现的功能尽量用软件来实现。(4)输出通道的设计:输出通道设计包括开关量和模拟量输出通道的设计。开关量要考虑功率、控制方式(继电器、可控硅、三极管等)。模拟量输出要考虑D/A转换器的选择(转换精度、转换速度、结构、功耗等)、输出信号的形式(电流还是电压)、隔离方式、扩展接口等。(5)人机界面的设计:人机界面的设计包括输入键盘、开关、拨码盘、启/停操作、复位、显示器、打印、指示、报警等。输入键盘、开关、拨码盘应考虑类型、个数、参数及相关处理(如按键的去抖处理)。启/停、复位操作要考虑方式(自动、手动)及其切换。显示器要考虑类型(LED,LCD)、显示信息的种类、倍数等。此外还要考虑各种人机界面的扩展接口。(6)通信电路的设计:单片机应用系统往往作为现场测控设备,常与上位机或同位机构成测控网络,需要其有数据通信的能力,通常设计为RS232C、RS485、红外收发等通信标准。65(7)印刷电路板的设计与制作:电路原理图和印刷电路板的设计常采用专业设计软件进行设计,如Protel,OrCAD等。设计印刷电路板需要有很多的技巧和经验,设计好印刷电路板图后应送到专业化制作厂家生产,在生产出来的印刷电路板上安装好元件,则完成硬件设计和制作。(8)负载容限的考虑:单片机总线的负载能力是有限的。如MCS51的P0口的负载能力为4mA,最多驱动8个TTL电路,P1~P3口的负载能力为2mA,最多驱动4个TTL电路。若外接负载较多,则应采取总线驱动的方法提高系统的负载容限。常用驱动器有:单向驱动器74LS244,双向驱动器74LS245等。(9)信号逻辑电平兼容性的考虑:在所设计的电路中,可能兼有TTL和CMOS器件,也有非标准的信号电平,要设计相应的电平兼容和转换电路。当有RS232,RS485接口时,还要实现电平兼容和转换。常用的集成电路有MAX232,MAX485等。(10)电源系统的配置:单片机应用系统一定需要电源,要考虑电源的组数、输出功率、抗干扰。要熟悉常用三端稳压器(78хх系列、79хх系列)、精密电源(AD580,MC1403,CJ313/336/385,W431)的应用。(11 http://www.wkfxw.com文库分享网)抗干扰的实施:采取必要的抗干扰措施是保证单片机系统正常工作的重要环节。它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。软件设计:(1)总体规划:软件所要完成的任务已在总体设计时规定,在具体软件设计时,要结合硬件结构,进一步明确软件所承担的一个个任务细节,确定具体实施的方法,合理分配资源。(2)程序设计技术:合理的软件结构是设计一个性能优良的单片机应用系统软件的基础。在程序设计中,应培养结构化程序设计风格,各功能程序实行模块化、子程序化。一般有以下两种设计方法:(a)模块程序设计:模块程序设计是单片机应用中常用的一种程序设计技术。它是把一个较长的程序分解为若干个功能相对独立的较小的程序模块,各个程序模块分别设计、编程和调试,最后由各个调试好的模块组成一个大的程序。其优点是单个功能明确的程序模块的设计和调试比较方便,容易完成,一个模块可以为多个程序所共享。其缺点是各个模块的连接有时有一定难度。(b)自顶向下的程序设计:自顶向下程序设计时,先从主程序开始设计,从属程序或子程序用符号来代替。主程序编好后再编制各从属程序和子程序,最后完成整个系统软件的设计。其优点是比较符合于人们的日常思维,设计、调试和连接同时按一个线索进行,程序错误可以较早的发现。缺点是上一级的程序错误将对整个程序产生影响,一处修改可能引起对整个程序的全面修改。(3)程序设计:在选择好软件结构和所采用的程序设计技术后,便可着手进行程序设计,将设计任务转化为具体的程序。(a)建立数学模型:根据设计任务,描述出各输入变量和各输出变量之间的数学关系,此过程即为建立数学模型。数学模型随系统任务的不同而不同,其正确度是系统性能好坏的决定性因素之66一。(b)绘制程序流程图:通常在编写程序之前先绘制程序流程图,以提高软件设计的总体效率。程序流程图以简明直观的方式对任务进行描述,并很容易由此编写出程序,故对初学者来说尤为适用。在设计过程中,先画出简单的功能性流程图(粗框图),然后对功能流程图进行细化和具体化,对存储器、寄存器、标志位等工作单元作具体的分配和说明,将功能流程图中每一个粗框的操作转变为具体的存储器单元、工作寄存器或I/O口的操作,从而给出详细的程序流程图(细框图)。 http://www.wkfxw.com文库分享网(c)程序的编制:在完成程序流程图设计以后,便可以编写程序。程序设计语言对程序设计的影响较大。汇编语言是最为常用的单片机程序语言,用汇编语言编写程序代码精简,直接面向硬件电路进行设计,速度快,但进行大量数据运算时,编写难度将大大增加,不易阅读和调试。在有大量数据运算时可采用C语言(如MCS51的C51)或PL/M语言。编写程序时,应注意系统硬件资源的合理分配与使用,子程序的入/出口参数的设置与传递。采用合理的数据结构、控制算法,以满足系统要求的精度。在存储空间分配时,应将使用频率最高的数据缓冲器设在内部RAM;标志应设置在片内RAM位操作区(20H~2FH)中;指定用户堆栈区,栈区的大小应留有余量;余下部分作为数据缓冲区。在编写程序过程中,根据流程图逐条用符号指令来描述,即得汇编语言源程序。应按MCS51汇编语言的标准符号和格式书写,在完成系统功能的同时应注意保证设计的可靠性,如数字滤波、软件陷阱、保护等。必要时可作若干功能性注释,提高程序的可读性。(4)软件装配:各程序模块编辑之后,需进行汇编或编译、调试,当满足设计要求后,将各程序模块按照软件结构设计的要求连接起来,即为软件装配,从而完成软件设计。在软件装配时,应注意软件接口。15.4单片机应用系统硬件设计的基本任务是什么?解:一个单片机应用系统的硬件设计包含两部分内容:一是系统扩展,即当单片机内部的功能单元不能满足应用系统的要求时必须进行片外扩展,选择适当的芯片,设计相应的电路;二是系统的配置,即按照系统功能要求配置外围设备,如通信接口、键盘、显示器、打印机、A/D、D/A转换器等,要设计合理的接口电路。15.5在单片机应用系统设计中,硬件调试的基本步骤是什么?解:(1)静态检查根据硬件电路图核对元器件的型号、规格、极性、集成芯片的插接方向是否正确。用逻辑笔、万用表等工具检查硬件电路连线是否与电路图一致,有无短路、虚焊等现象。严防电源短路和极性接反。检查数据总线、地址线和控制总线是否存在短路的故障。(2)通电检查通电检查时,可以模拟各种输入信号分别送入电路的各有关部分,观察I/O口的动作情况,查67 http://www.wkfxw.com文库分享网看电路板上有无元件过热、冒烟、异味等现象,各相关设备的动作是否符合要求,整个系统的功能是否符合要求。15.6在单片机应用系统设计中,有那些常见的可靠性设计内容?解:可靠性通常是指在规定的条件下,在规定的时间内完成规定功能的能力。可采用以下的方法提高系统的可靠性。(1)隔离技术。(2)屏蔽措施。(3)双绞线传输。(4)长线传输的阻抗匹配。(5)对信号整形。(6)抑制机械触点,接触器、可控硅的噪声。(7)提高印刷电路板(PCB)设计中的抗干扰能力。(8)合理设计地线。(9)注意各电路之间的电平匹配,总线驱动能力;单片机的空闲端要接地或接电源,或者定义成输出;室外使用的单片机系统或从室外架空引入室内的电源线、信号线,要防止雷击等。15.7简述单片机应用系统软件设计的主要步骤和方法。解:软件设计随单片机应用系统的不同而不同,一般可分为以下几个方面(15.7题图画出了单片机软件设计的流程图)。(1)总体规划(2)程序设计技术①模块程序设计②自顶向下的程序设计(3)程序设计①建立数学模型②绘制程序流程图③程序的编制(4)软件装配15.8简述单片机应用系统的调试步骤和方法。解:硬件和软件调试完成之后,应进行系统调试。在系统调试时,应将全部硬件电路都接上,应用程序模块、子程序也都组合好,进行全系统软、硬件调试,系15.7题图软件设计的流程图68统调试的任务是排除软、硬件中的残留错误,使整个系统能够完成预定的工作任务,达到要求的性能指标。在进行系统调试时,对于有电气控制负载的系统,应先试验空载,空载正常后再试验负载情况。要试验系统的各项功能,避免遗漏。系统调试成功之后,就可以将程序固化到ROM中,程序固化可以在有些仿真系统中进行,最好用专用程序固化器进行固化操作,因为它的功能完善,使用方便、可靠。 http://www.wkfxw.com文库分享网将固化好程序的ROM插回到应用系统电路板的相应位置,即可脱机运行。系统试运行要连续运行相当长的时间,以考验其稳定性。并要进一步进行修改和完善处理。一般地,经开发装置调试合格的软、硬件,脱机后应正常运行。但由于开发调试环境与应用系统的实际运行环境不尽相同,也会出现脱机后不能正常运行的情况。当出现脱机运行故障时,应考虑程序固化有无错误;仿真系统与实际系统在运行时,有无某些方面的区别(如驱动能力);在联机仿真调试时,未涉及的电路部分有无错误。15.9按照单片机应用系统设计的一般方法和步骤,设计一个函数发生器,并写出完整的设计报告。解:设计提示:利用单片机控制函数发生器ICL8038芯片,外接少量元器件,制作一台多功能智能函数发生器,要求此函数发生器既能产生各种波形,又能以数字形式显示新产生波形的频率和幅值。函数发生器一般由以下几部分组成:单片机最小系统,函数发生器ICL8038,真有效值转换电路,A/D和D/A转换电路,显示、键盘及控制电路等。ICL8038是大规模单片函数发生器,只要外接少量元件,就能产生方波、三角波、正弦波等各种波形。为减少误差,提高函数发生器的准确度,采用真有效值转换电路,以改善ICL8038产生的波形畸变。一般采用真有效值转换器芯片AD636或AD537来实现。15.10《单片机技术》课程大作业。设计并画出一个单片机应用系统的硬件原理图,要求如下:(1)单片机采用8031(2)扩展8K的外部程序存储器。(3)外部扩展8K数据存储器。(4)扩展8个键盘和8个LED显示器。(5)地址空间分配采用74LS138译码法(6)扩展一个8位并行输入口和一个8位并行输出口(7)要有复位电路(带有按键复位)和时钟电路。(8)写出所有RAM、I/O以及EPROM的地址范围。__'