• 870.72 KB
  • 2022-04-22 11:24:40 发布

原理及应用_课后习题答案_山东理工.doc

  • 46页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《单片微型计算机原理及应用》习题参考答案姜志海刘连鑫王蕾编著电子工业出版社目录第1章微型计算机基础2第2章半导体存储器及I/O接口基础4第3章MCS-51系列单片机硬件结构11第4章MCS-51系列单片机指令系统16第5章MCS-51系列单片机汇编语言程序设计20第6章MCS-51系列单片机中断系统与定时器/计数器26第7章MCS-51系列单片机的串行口32第8章MCS-51系列单片机系统扩展技术34第9章MCS-51系列单片机键盘/显示器接口技术36第10章MCS-51系列单片机模拟量接口技术40第11章单片机应用系统设计44 第1章微型计算机基础1.简述微型计算机的结构及各部分的作用微型计算机在硬件上由运算器、控制器、存储器、输入设备及输出设备五大部分组成。运算器是计算机处理信息的主要部分;控制器控制计算机各部件自动地、协调一致地工作;存储器是存放数据与程序的部件;输入设备用来输入数据与程序;输出设备将计算机的处理结果用数字、图形等形式表示出来。通常把运算器、控制器、存储器这三部分称为计算机的主机,而输入、输出设备则称为计算机的外部设备(简称外设)。由于运算器、控制器是计算机处理信息的关键部件,所以常将它们合称为中央处理单元CPU(CentralProcessUnit)。2.微处理器、微型计算机、微型计算机系统有什么联系与区别?微处理器是利用微电子技术将计算机的核心部件(运算器和控制器)集中做在一块集成电路上的一个独立芯片。它具有解释指令、执行指令和与外界交换数据的能力。其内部包括三部分:运算器、控制器、内部寄存器阵列(工作寄存器组)。微型计算机由CPU、存储器、输入/输出(I/O)接口电路构成,各部分芯片之间通过总线(Bus)连接。以微型计算机为主体,配上外部输入/输出设备、电源、系统软件一起构成应用系统,称为微型计算机系统。3.微型计算机是以CPU为核心,配上存储器、输入/输出接口和系统总线组成的计算机。4.在计算机内部,一切信息的存取、处理和传递的形式是(C)。A.ASCII码B.BCD码C.二进制D.十六进制5.0~9的ASCII码是(C)。A.0~9B.30~39C.30H~39HD.40H~49H6.在微型计算机中,一般具有哪三类总线?试说出各自的特征(包括传输的信息类型、单向传输还是双向传输)。所谓总线,就是在微型计算机各芯片之间或芯片内部各部件之间传输信息的一组公共通信线。计算机元件级总线包括地址总线AB(AddressBus)、数据总线DB(DataBus)、控制总线CB(ControlBus)三种。(1)地址总线:地址总线是CPU用来向存储器或I/O接口传送地址信息的,是三态单向总线。地址总线的宽度决定了CPU 可直接寻址的内存容量。通过地址总线确定要操作的存储单元或I/O接口的地址。(2)数据总线:数据总线是CPU与存储器及外设交换数据的通路,是三态双向总线。(3)控制总线:控制总线是用来传输控制信号的,传送方向依据具体控制信号而定,如CPU向存储器或I/O接口电路输出读信号、写信号、地址有效信号,而I/O接口部件向CPU输入复位信号、中断请求信号等。7.将下列二进制数转换为十进制数。111101.101B100101.11B1100110.011B111101.101B=29.625100101.11B=37.751100110.011B=102.3758.将下列十进制数转换为二进制数、BCD码数。126.635317.12587.0735126.635=1111110.101B=(000100100110.011000110101)BCD317.125=100111101.001B=(001100010111.000100100101)BCD87.0735=1010111.0001B=(10000111.0000011100110101)BCD9.设机器数为8位,写出下列用真值表示的二进制数的原码、补码和反码。+0010101B–0010101B+1000000B–1000000B+0010101B–0010101B+1000000B–1000000B原码00010101B10010101B01000000B11000000B反码00010101B11101010B01000000B10111111B补码00010101B11101011B01000000B11000000B10.将下列BCD码表示成十进制数和二进制数。01111001010101111000001110011001(01111001)BCD=79=1001111B(01010111)BCD=57=111001B(10000011)BCD=83=1010011B(10011001)BCD=99=1100011B11.设下列数据为8位补码表示的十六进制数,计算a+b和a–b,并且判断有无溢出。aba+b是否溢出a–b是否溢出37H97H0CEHN0A0HY0B7H0D7H8EHY0E0HY0F7H0D7H0CEHY20HN037H0C7H0FEHN70HY12.计算机某字节存储单元的内容为10000111,若解释为无符号数,则真值为(135);若解释为有符号数,则真值为(-121);若解释为BCD码,则真值为(87);若用十六进制数表示,则为(87)H。 第2章半导体存储器及I/O接口基础1.半导体存储器分两大类:易失性存储器RAM和非易失性存储器ROM。闪速存储器属于非易失性存储器ROM。2.SRAM6264芯片的地址线为A12~A0,其存储容量为8K地址空间。3.可用紫外线擦除后改写的存储器EPROM经擦除后,各单元的内容应为0FFH。4.8´8KB的SRAM存储器芯片需要13根地址线和8根数据线。5.半导体存储器有哪几种类型?各自有什么特点?半导体存储器的两个重要指标是什么?半导体存储器通常分为随机存取存储器(RAM,RandomAccessMemory)和只读存储器(ROM,ReadOnlyMemory)两类。(1)RAM:RAM又称读写存储器,它的数据读取、存入时间都很短,因此计算机运行时,既可以从RAM中读数据,又可以将数据写入RAM。但掉电后RAM中存放的信息将丢失。RAM适宜存放输入数据、中间结果及最后的运算结果,因此又被称为数据存储器。随机存储器有静态RAM和动态RAM两种。静态RAM用触发器存储信息,只要不断电,信息就不会丢失。动态RAM依靠电容存储信息,充电后为“1”,放电后为“0”。为了保存信息,每隔1~2ms必须对高电平的电容重新充电,这称为动态RAM的定时刷新。动态RAM的集成度高;静态RAM的集成度低、功耗大,优点是省去了刷新电路。在设计专用的微型计算机系统时,一般只用静态RAM就可以满足要求。(2)ROM:ROM称为只读存储器。读出一个数据的时间为数百纳秒,有时也可改写,但写入一个数据的时间长达数十毫秒。因此在计算机运行时只能执行“读”操作。掉电后ROM中存放的数据不会丢失。ROM适宜存放程序、常数、表格等,因此又称为程序存储器。只读存储器有以下五类:掩模ROM:在半导体工厂生产时,已经用掩模技术将程序做入芯片,用户只能读出内容而不能改写。掩模ROM只能应用于有固定程序且批量很大的产品中。一次可编程只读存储器(PROM,ProgrammableROM):用户可将程序写入PROM,但程序一经写入就不能改写。紫外线擦除可编程只读存储器(EPROM,Erasable PROM):用户可将程序写入EPROM芯片。如果要改写程序,先用EPROM擦除器,擦去原先的程序,然后写入新程序。与PROM芯片一样,写入的速度很慢,且要用到高压,所以必须用特定的EPROM编程器写入信息。在计算机运行时只能执行读操作。电擦除可编程只读存储器(EEPROM,ElectricallyErasablePROM):由于采用电擦除方式,而且擦除、写入、读出的电源都用+5V,故能在应用系统中在线改写。但目前写入时间较长,约需10ms,读出时间约为几百纳秒。闪烁存储器(FlashMemory):快速擦写存储器(FlashMemory,简称Flash)是20世纪80年代中期推出的新型器件。它可以在联机条件下,在计算机内进行擦除、改写,因而称为快擦写型存储器或闪烁存储器。它具有芯片整体或分区电擦除和可再编程功能,从而使它成为性价比和可靠性最高的可读写、非易失性存储器。主要性能特点如下:高速芯片整体电擦除:芯片整体擦除时间约1s,而一般的EPROM需要15min以上。高速编程:采用快速脉冲编程方法,编程时间短。最少1万次擦除/编程周期,通常可达到10万次擦除/编程周期。早期的Flash采用12V编程电压,改进后在Flash内部集成了1个DC/DC变换器,可以采用单一的5V电压供电。高速度的存储器访问:最大读出时间不超过200μs。高速Flash的读出时间达到60μs。低功耗:最大工作电流为30mA,备用状态下的最大电流为100μA。密度大,价格低,性价比高。衡量半导体存储器性能的主要指标有存储容量、存取速度、存储器周期、功耗、可靠性、价格、电源种类等,其中主要的技术指标是存储容量和存取速度。存储容量是存储器的一个重要指标。存储器芯片的存储容量用“存储单元个数×每个单元的存储位数”来表示。如存储器有256个单元,每个单元存放8位二进制数,那么该存储器的容量为256×8位。存储器容量1K=1024=210。对于以字节编址的微型计算机,可以以字节表示容量,如某微型计算机的容量为64KB。在表示存储器的容量时,一般是以某一空间范围来表示的,而空间范围是由地址线来决定的,即存储器的容量和存储器的地址线的宽度(数量)有关。地址的二进制位数N与容量的关系是Q=2N。如某存储器芯片有13条地址线A12~A0,则存储器容量为8KB,空间表示范围为0000H~1FFFH。存取速度:该项指标一般用以下两个参数中的一个来描述。①存取时间(AccessTime,TA):是指从CPU给出有效的存储地址启动一次存储器读/写操作,到操作完成所经历的时间。具体地说,对一次读操作的存取时间就是读出时间,即从地址有效到数据输出有效之间的时间;对于一次写操作,存取时间就是写入时间。②存取周期(Access Cycle,TAC):是指连续两次存储器读/写操作之间所需要的最小时间间隔。对于读操作,就是读周期时间;对于写操作,就是写周期时间。因为在一次数据访问后,芯片不可能无间歇地进入下一次访问,所以存取周期TAC要略大于存取时间TA。表示上,该参数常表示为读周期TRC或写周期TWC,存取时间TAC是其统称。6.型号是1K×4位的静态RAM,应有多少条地址线?多少条数据线?10条地址线、4条数据线7.说明EPROM、PROM、ROM和Flash存储器之间的主要区别。参考第5题。8.什么是“闪存”?它有哪些特点?用于哪些场合?参考第5题。9.简述堆栈的作用与操作。所谓堆栈,是指在存储器中开辟的一个区域,用来存放需要暂时保存的数据。(1)堆栈的作用用来存放断点地址或保存临时数据。在调用子程序和执行中断服务程序的过程中,要保留断点地址,有时还要保护现场。只有保留了断点地址,才能在子程序或中断服务程序执行后保证返回到主程序的断点处,继续执行主程序。断点地址与现场信息是送入堆栈保存的。在返回主程序前,要把保存在堆栈中的现场信息送回对应的寄存器,这称为恢复现场。(2)堆栈操作堆栈有两种操作方式。将数据送入堆栈称为推入操作,又称为压入操作,如压入指令PUSHA把堆栈中内容取出来的操作称为弹出操作,如弹出指令POPA执行把栈顶内容送回A的操作。10.简述I/O接口的功能。接口电路是专门为解决CPU与外设之间的不匹配、不能协调工作而设置的,它处在总线和外设之间,一般应具有以下基本功能。(1)对输入/输出数据进行缓冲、隔离和锁存(2)对信号的形式和数据格式进行交换与匹配(3)提供信息相互交换的应答联络信号(4)根据寻址信息选择相应的外设由此可见,I/O电路是外设和计算机之间传送信息的交换器件,也有人称它为界面,它使两者之间能很好地协调工作,每一个外设都要通过接口电路才能和计算机相连。11.CPU处理I/O操作有几种方式?各自有什么特点和应用范围?CPU和外设之间的数据传输有4种方式,即无条件方式、查询方式、中断方式、直接存储器存取方式(DMA方式)。 (1)无条件传输方式所谓无条件传输方式,是指CPU对外设接口的读写随时都可以进行,不需要等待某种条件的满足。无条件传送方式也称同步传送方式,主要用于对简单外设进行操作,或者外设的定时是固定的或已知的场合。对于这类外设,在任何时刻均以准备好数据或处于接收数据状态,或者在某些固定时刻,它们处在数据就绪或准备接收状态,因此程序可以不必检查外设的状态,而在需要进行输入或输出操作时,直接执行输入/输出指令。当输入/输出指令执行后,数据传送便立即进行。这是一种最简单的输入/输出传送方式,所需要的硬件和软件都非常小,一般用于控制CPU与低速I/O接口之间的数据交换。无条件传输方式的软、硬件简单,但一般的外设难以满足上述条件,所以这种输出方式用得较少,只用于一些简单外设,如开关、数码管显示等。(2)程序查询传输方式程序查询传输方式是指CPU在向外设传递数据前,首先查询外设的状态(即条件),若外设准备好则传送,若未准备好,CPU就等待。可见,接口电路除了有传送数据的端口外,还有传送状态的端口。对于输入过程,当外设将数据准备好时,则使接口的状态端口中的“准备好”标志置1;对于输出过程,外设取走一个数据后,接口便将状态端口中的对应标志置1,表示当前输出寄存器已经处于“空”状态,可以接收下一个数据。因此,对应条件传送,一个数据传送过程由3个环节组成:①CPU从接口中读出状态字。②CPU检测状态字的对应位是否满足“就绪”条件,如果不满足,则回到前一步读出状态字。③如果状态字表明外设已处于“就绪”状态,则传送数据。程序查询传输方式接口电路中除了数据端口外,还必须有传送状态的端口,同时CPU要不断查询外设状态,占用大量CPU的时间,硬件比无条件传输方式复杂,并使用较多的端口地址。用查询方式输入数据时,在接口电路与外设间要交换数据、状态和控制3种信息。查询方式的缺点是CPU的利用受到影响,陷于等待和反复查询,不能再做它用;而且,这种方法不能处理掉电、设备故障等突发事件。(3)中断传输方式 在中断传送方式下,外设具有申请CPU服务的主动权,当输入设备将数据准备好或者输出设备可以接收数据时,便可以向CPU发中断请求,使CPU暂时停下目前的工作而和外设进行一次数据传输,等输入操作或者输出操作结束以后,CPU继续进行原来的工作。即中断传送方式就是外设中断CPU的工作,使CPU停止执行当前程序,而去执行一个输入/输出程序,此程序称为中断处理子程序或中断服务子程序。中断服务子程序执行完后,CPU又回来执行原来的程序。采用中断方式后,CPU平时可以执行主程序,只有当输入设备将数据准备好了,或者输出端口的数据缓冲器已空时,才向CPU发出中断请求。CPU响应中断后,暂停执行当前的程序,转去执行管理外设的中断服务程序。在中断服务程序中,用输入或输出指令在CPU和外设之间进行一次数据交换。等输入或输出操作完成后,CPU又回去执行原来的程序。(4)DMA传输方式DMA方式要利用系统的数据总线、地址总线和控制总线来传送数据。原先这些总线是由CPU管理的,但当外设需要利用DMA方式进行数据传送时,接口电路可以向CPU提出请求,要求CPU让出对总线的控制权,用一种称为DMA控制器的专用硬件接口电路来取代CPU临时接管总线,控制外设和存储器之间直接进行高速的数据传送,而不要CPU进行干预。这种控制器能给出访问内存所需要的地址信息,并能自动修改地址指针,也能设定和修改传送的字节数,还能向存储器和外设发出相应的读/写控制信号。在DMA传送结束后,它能释放总线,把对总线的控制权交还给CPU。可见用DMA方式传送数据时,不需要进行保护和恢复断点及现场之类的额外操作,一旦进入DMA操作,就可直接在硬件的控制下快速完成一批数据的交换任务,数据传送的速度基本取决于外设和存储器的存取速度。12.什么是中断?什么是可屏蔽中断?什么是非屏蔽中断?CPU在什么条件下可以响应中断?所谓中断,是指CPU正常运行程序时,由于微处理器内部事件或外设请求,引起CPU中止正在运行的程序,转去执行请求中断的外设(或内部事件)的中断服务程序,中断服务程序执行完毕,再返回被中止的程序。利用中断可以避免不断检测外设状态,提高CPU的效率。可屏蔽中断有时也称为直接中断。屏蔽是指CPU可以不处理的中断请求。这种屏蔽实际上是CPU的一种工作方式,可以通过软件(指令)来设置,也就是可以通过指令,使CPU或者允许接受中断请求,或者不接受中断请求。具体的指令由CPU的指令系统来决定。可屏蔽中断是最常见的一种中断方式,所有的微处理器都有这种中断方式。对非屏蔽中断来说,如果该中断源申请了中断,CPU是一定要处理的。CPU不可以也不能用软件将该中断屏蔽掉。一般一些紧急的情况,如掉电中断申请,就可以安排为这种中断方式,以保证紧急情况一定能得到处理。但并不是所有的微处理器的中断系统都有这种中断方式,MCS-51单片机的中断系统就没有非屏蔽中断。一个完整的中断处理的基本过程应包括:中断请求、中断优先权判别、中断响应、中断处理及中断返回。如果提出中断请求的中断源优先权高,而且接口电路与CPU都中断开放,CPU将响应中断,自动执行下列工作: ①保留断点:中止正在执行的程序,并对断点进行保护,即将断点地址的值压入堆栈保存,以便中断服务程序执行完后能返回断点处继续执行程序。②转入中断服务程序:将中断服务程序的人口地址送入PC,以转到中断服务程序。各中断源要求服务的内容不同,所以要编制不同的中断服务程序,它们有不同的入口地址。CPU首先要确定是哪一个中断源在申请中断,然后将对应的入口地址送入PC。13.DMA传送的基本过程是什么?为什么DMA方式可以加快数据在外设和存储器之间的传送?参看第11题。14.什么是接口?什么是端口?一个接口电路是否可以有多个端口?所谓接口,是指在两台计算机之间、计算机与外设之间、计算机内部各部件之间起连接作用的逻辑电路,是CPU与外界进行信息交换的中转站。所谓端口,是指I/O接口(包括芯片和控制卡)中供CPU直接存取访问的那些寄存器或某些硬件特定电路。一个I/O接口总要包括若干端口,除常见的数据端口、命令端口和状态端口外,还有特殊用途的端口,如方式控制端口、操作结果端口和地址索引端口等。端口的多少及相应的功能完全取决于与I/O接口所关联的I/O设备。15.CPU和外设之间传输的信息有哪几类?各有何特点?计算机与外设间的这种交换数据、状态和控制命令的过程统称为通信(Communication)。通信过程就是数据传输的过程,在这个过程中要传输的信息有数据信息、状态信息、控制信息。(1)数据信息CPU和外设交换的基本信息就是数据,数据通常为8位或16位。数据信息可分为以下三种类型。具体可分为数字量、模拟量、开关量。(2)状态信息状态信息反映了当前外设所处的工作状态,是外设通过接口往CPU传送的。对于输入设备来说,通常用准备好(READY)信号来表明输入的数据是否准备就绪;对于输出设备来说,通常用忙(BUSY)信号表示输出设备是否处于空闲,如为空闲,则可接收CPU送来的信息,否则CPU应等待。(3)控制信息控制信息是CPU通过接口传送给外设的,CPU通过发送控制信息控制外设的工作,如外设的启动、停止就是常见的控制信息。16.串行传送的特点是什么?数据传送按位顺序进行,最少只需一根传输线即可完成,成本低但速度慢。计算机与外界的数据传送大多数是串行的,其传送的距离可以从几米到几千千米。17.串行通信和并行通信的主要区别是什么?各有什么优缺点? 计算机与外设之间或计算机之间的信息交换或数据传输称为通信(Communication)。基本的通信方式有两种,一种是并行通信,另一种是串行通信。(1)并行通信并行通信是指数据的各位同时进行传送。在并行通信中,有多少位数据,就需要多少条传输线,因此传送速度较快,即在相同传输率的情况下,并行通信能够提供高速、高信息率的传输。由于并行通信所需的传输线较多,如果传输距离增加,传输线的开销会成为一个突出的问题,因而并行通信一般用于数据传输率要求较高、传输距离又比较短的场合。(2)串行通信串行通信是指数据一位一位地按顺序传送。串行通信时,要传送的数据或信息必须按一定的格式编码,然后在单根线上,按一位接一位的先后顺序进行传送,发送完一个字符,再发送第二个。接收数据时,每次从单根线上一位接一位地接收信息,再把它们拼成一个字符,送给CPU做进一步处理。采用串行通信方式的另一个出发点是,有些外设如调制解调器(Modem)、鼠标等,本身需要用串行通信方式,因为这些设备是以串行方式存取数据的。 第3章MCS-51系列单片机硬件结构1.MCS-51系列单片机内部有哪些主要的逻辑部件?MCS-51单片机是在一块芯片上集成了CPU、RAM、ROM、定时器/计数器和多种I/O功能部件,具有了一台微型计算机的基本结构,主要包括下列部件:一个8位的CPU、一个布尔处理机、一个片内振荡器、128B的片内数据存储器、4KB的片内程序存储器(8031无)、外部数据存储器和程序存储器的寻址范围为64KB、21个字节的专用寄存器、4个8位并行I/O接口、一个全双工的串行口、2个16位的定时器/计数器、5个中断源、2个中断优先级、111条指令、片内采用单总线结构。2.MCS-51单片机设有4个8位并行端口,实际应用中8位数据信息由哪个端口传送?16位地址线怎样形成?P3口有何功能?8位数据信息由P0口传送。P2口形成地址大高8位,P0口结果锁存器形成地址的低8位。P3口除具有一般的输入/输出功能,还具有第2功能:P3.0RXD串行口输入端P3.1TXD串行口输出端P3.2外部中断0请求输入端,低电平有效P3.3外部中断1请求输入端,低电平有效P3.4T0定时器/计数器0计数脉冲输入端P3.5T1定时器/计数器1计数脉冲输入端P3.6外部数据存储器及I/O接口写选通信号输出端,低电平有效P3.7外部数据存储器及I/O接口读选通信号输出端,低电平有效3.MCS-51单片机内部RAM区的功能结构如何分配?4组工作寄存器使用时如何选择?位寻址区域的字节范围是多少?MCS-51单片机片内RAM共有128B,字节范围为00H~7FH,可分为工作寄存器区、位寻址区、数据缓冲区共3个区域。(1)工作寄存器区00H~1FH单元为工作寄存器区。工作寄存器也称通用寄存器,用于临时寄存8位信息。工作寄存器分成4组,每组都是8个寄存器,用R0~R7来表示。程序中每次只用一组,其余各组不工作。使用哪一组寄存器工作,由程序状态字PSW中的PSW.3(RS0)和PSW.4(RS1)两位来选择,其对应关系如表所示。 工作寄存器组的选择表PSW.4(RS1)PSW.3(RS0)当前使用的工作寄存器组R0~R7000组(00H~07H)011组(08H~0FH)102组(10H~17H)113组(18H~1FH)该区域当不被用做工作寄存器时,可以作为一般的RAM区使用。(2)位寻址区20H~2FH单元是位寻址区。这16个单元(共计16×8=128位)的每一位都赋予了一个位地址,位地址范围为00H~7FH。位地址区的每一位都可当做软件触发器,由程序直接进行位处理。通常可以把各种程序状态标志、位控制变量存入位寻址区内。00H…07H08H…0FH10H…17H18H…1FH0组工作寄存器区1组2组3组20H21H22H23H24H25H26H27H28H29H2AH2BH2CH2DH2EH2FH0706050403020100位寻址区0F0E0D0C0B0A090817161514131211101F1E1D1C1B1A191827262524232221202F2E2D2C2B2A292837363534333231303F3E3D3C3B3A393847464544434241404F4E4D4C4B4A494857565554535251505F5E5D5C5B5A595867666564636261606F6E6D6C6B6A696877767574737271707F7E7D7C7B7A797830H…7FH数据缓冲区该区域当不被用做位寻址区时,可以作为一般的RAM区使用。(3)数据缓冲区30H~7FH是数据缓冲区,即用户RAM,共80个单元。由于工作寄存器区、位寻址区、数据缓冲区统一编址,使用同样的指令访问,这三个区的单元既有自己独特的功能,又可统一调度使用。因此,前两个区未使用的单元也可作为用户RAM单元使用,使容量较小的片内RAM得以充分利用。4.特殊功能寄存器中哪些寄存器可以位寻址?它们的字节地址是什么?参看表3-6.5.简述程序状态字PSW中各位的含义。 程序状态字PSW是一个8位寄存器,它保存指令执行结果的特征信息,为下一条指令或以后的指令的执行提供状态条件。PSW中的各位一般是在指令执行过程中形成的,但也可以根据需要采用传送指令加以改变。其各位定义如图所示。①进位标志C(PSW.7)在执行某些算术运算类、逻辑运算类指令时,可被硬件或软件置位或清零。它表示运算结果是否有进位或借位。如果在最高位有进位(加法时)或借位(减法时),则C=1,否则C=0。②辅助进位(或称半进位)标志位AC(PSW.6)它表示两个8位数运算,低4位有无进(借)位的状况。当低4位相加(或相减)时,若D3位向D4位有进位(或借位),则AC=1,否则AC=0。在BCD码运算的十进制调整中要用到该标志。③用户自定义标志位F0(PSW.5)用户可根据自己的需要为F0赋予一定的含义,通过软件置位或清零,并根据F0=1或0来决定程序的执行方式,或系统某一种工作状态。④工作寄存器组选择位RS1、RS0(PSW.4、PSW.3)可用软件置位或清零,用于选定当前使用的4个工作寄存器组中的某一组。⑤溢出标志位OV(PSW.2)做加法或减法时由硬件置位或清零,以指示运算结果是否溢出。在带符号数加减运算中,OV=1表示加减运算超出了累加器所能表示的数值范围(–128~+127),即产生了溢出,因此运算结果是错误的。OV=0表示运算正确,即无溢出产生。执行乘法指令MULAB也会影响OV标志,当积大于255时,OV=1,否则OV=0;执行除法指令DIVAB也会影响OV标志,如B中所存放的除数为0,则OV=1,否则0V=0。⑥奇偶标志位P(PSW.0)在执行指令后,单片机根据累加器A中1的个数的奇偶自动将该标志置位或清零。若A中1的个数为奇数,则P=1,否则P=0。该标志对串行通信的数据传输非常有用,通过奇偶校验可检验传输的可靠性。6.简述MCS-51单片机程序存储器的几个特殊入口地址的含义。0000H:程序入口地址0003H:外部中断0中断服务程序入口地址000BH:定时器/计数器0溢出中断服务程序入口地址0013H:外部中断1中断服务程序入口地址 001BH:定时器/计数器1溢出中断服务程序入口地址0023H:串行口发送/接收中断服务程序入口地址7.位地址7FH与字节地址7FH有何区别?位地址7FH具体在内存中的什么位置?二者存储的数据位数不一样。位地址7FH存放一位二进制数,字节地址7FH存放8为二进制数。位地址7FH具体在内存中字节地址为20H的最高位上。8.复位的作用是什么?复位后单片机的状态如何?计算机在启动运行时都需要复位,这就使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。单片机的复位都靠外部电路实现。MCS-51单片机有一个复位引脚RST,高电平有效。它是施密特触发输入(对于CMOS单片机,RST引脚的内部有一个拉低电阻),当振荡器起振后,该引脚上出现两个机器周期(即24个时钟周期)以上的高电平,使器件复位,只要RST保持高电平,MCS-51便保持复位状态。此时ALE、PSEN、P0、P1、P2、P3口都输出高电平。RST变为低电平,退出复位状态,CPU从初始状态开始工作。复位操作不影响片内RAM的内容,复位以后内部寄存器的初始状态如表3-7所示。9.试分别说明程序计数器PC和堆栈指针SP的作用。复位后PC和SP各为何值?程序计数器PC是一个16位专用寄存器,其内容表示下一条要执行的指令的地址。复位后为0000H。MCS-51单片机的堆栈是在片内RAM中开辟的一个专用区。堆栈指针SP是一个8位专用寄存器,用来存放栈顶的地址。进栈时,SP自动加1,将数据压入SP所指定的地址单元;出栈时,将SP所指示的地址单元中的数据弹出,然后SP自动减1。因此SP总是指向栈顶。复位后为07H。10.MCS-51单片机设置4组工作寄存器,开机复位后,CPU使用的是哪组寄存器?它们的地址如何?CPU如何改变当前工作寄存器组?第0组。字节地址为00H~07H。通过PSW的RS1、RS0来改变。工作寄存器组的选择表PSW.4(RS1)PSW.3(RS0)当前使用的工作寄存器组R0~R7000组(00H~07H)011组(08H~0FH)102组(10H~17H)113组(18H~1FH) 11.什么是时钟周期、机器周期和指令周期?当外部的振荡频率是8MHz时,8051单片机的机器周期为多少?MCS-51单片机的时序由下面4种周期构成。(1)振荡周期振荡周期是指为单片机提供定时信号的振荡源的周期。(2)状态周期(时钟周期)两个振荡周期为一个状态周期,用S表示。两个振荡周期作为两个节拍分别称为节拍P1和节拍P2。在状态周期的前半周期P1有效时,通常完成算术逻辑运算;在后半周期P2有效时,一般进行内部寄存器之间的传输。(3)机器周期CPU执行一条指令的过程可以划分为若干阶段,每一阶段完成某一项基本操作,如取指令、存储器读/写等。通常把完成一个基本操作所需要的时间称为机器周期。(4)指令周期指令周期是指执行一条指令所占用的全部时间,它以机器周期为单位。MCS-51系列单片机除乘法、除法指令是4机器周期指令外,其余都是单周期指令和双周期指令。若用12MHz晶体振荡器(晶振),则单周期指令和双周期指令的指令周期时间分别是1μs和2μs,乘法和除法指令为4μs。通过上面的分析,我们可以看出,外部晶振的二分频是MCS-51单片机的内部时钟周期,6个时钟周期构成了单片机的机器周期。如果单片机的外部晶振是8MHz,则其内部的机器周期是1.5μs。12.已知PSW=10H,则工作寄存器R0的地址是10H,R4的地址是14H。13.MCS-51单片机复位后,程序计数器PC=0000H,堆栈指针SP=07H。14.MCS-51单片机内部RAM的寄存器区共有32个单元,分为4组寄存器,每组8单元。15.MCS-51单片机的4个I/O接口的作用是什么?三总线是如何分配的?为什么说能作为I/O使用的一般只有P1口?P0口形成数据总线;P2口形成地址的高8位,P0口经过锁存器形成地址的低8位;P3口形成控制总线。在具有外部扩展的时间,需要用到数据总线、地址总线和控制总线,而三总线占用了P0、P2、P3口,可以单独使用的只有P1口。 第4章MCS-51系列单片机指令系统1.访问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。访问外部数据存储器:MOVXA,@DPTRMOVX@DPTR,AMOVXA,@RiMOVX@Ri,A访问程序存储器:MOVCA,@A+DPTRMOVCA,@A+PC2.设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H、62H、30H、31H、DPTR及SP的内容将有何变化?PUSH30HPUSH31HPOPDPLPOPDPHMOV0H,#00HMOV31H,#0FFH(61H)=24H(62H)=10H(30H)=00H(31H)=0FFH(DPTR)=2410H(SP)=60H3.设(A)=40H,(R1)=23H,(40H)=05H。执行下列两条指令后,累加器A和R1以及内部RAM中40H单元的内容各为何值?XCHA,R1XCHDA,@R1(A)=25H(R1)=40H(40H)=03H4.设(A)=01010101B,(R5)=10101010B,分别写出执行ANLA,R5;ORLA,R5;XRLA,R5指令后的结果。00000000B11111111B11111111B5.简述转移指令AJMPaddr11,SJMPrel,LJMPaddr16及JMP@A+DPTR的应用。AJMPaddr11:2K范围内的转移;SJMPrel:256字节复位内的转移;LJMPaddr16:64K范围内的转移;JMP@A+DPTR:在某一地址开始的256字节范围内的转移。6.试用下列4种方式编程,将立即数0EFH送入内部RAM的40H单元中。(1)用立即寻址;(2)用直接寻址;(3)用寄存器寻址;(4)用寄存器间接寻址(1)MOV40H,#0EFH----目的操作数立即寻址(2)MOV40H,#0EFH源操作数直接寻址 (3)MOVR0,#0EFHMOV40H,,R0源操作数寄存器寻址(4)MOVR0,#40HMOV@R0,#0EFH目的操作数寄存器间接寻址7.写出实现下列要求的指令或程序片段。(1)将内部RAM20H单元内容与累加器A内容相加,结果存放在20H单元中。(2)将内部RAM30H单元内容与内部RAM31H单元内容相加,结果存放到内部RAM31H单元中。(3)将内部RAM20H单元内容传送到外部RAM2000H单元中。(4)使内部RAM20H单元的D7和D3位清零,其他位保持不变。(5)使内部RAM20H单元的D7和D3位置1,D5位清零,其他位保持不变。(6)使内部RAM20H单元的D7和D3位置1,D5位取反,其他位保持不变。(1)ADDA,#20HMOV20H,A(2)MOVA,30HADDA,31HMOV31H,A(3)MOVA,20HMOVDPTR,#2000HMOVX@DPTR,A(4)CLR03HCLR07H或:ANL20H,#01110111B(5)SETB03HSETB07HCLR05H或:ORL20H,#10001000BANL20H,#11011111B(6)SETB03HSETB07HCPL05H或:ORL20H,#10001000BXRL20H,#00100000B8.试用三种方法实现累加器A和寄存器B的内容交换。(1)MOVR0,AMOVA,BMOVB,R0(2)PUSHAPUSHBPOPAPOPB(3)MOVR0,BXCHA,R0MOVB,R09.试分析下列程序段执行后,(A)=?,(30H)=?MOV30H,#0A4H MOVA,#0D6HMOVR0,#30HMOVR2,#5EHANLA,R2ORLA,@R0SWAPACPLAXRLA,#0FEHORL30H,A(A)=6EH(30H)=0EFH10.下述程序执行后,(SP)=?,(A)=?,(B)=?ORG2000HMOVSP,#40HMOVA,#30HLCALLSUBRADDA,#10HMOVB,AL1:SJMPL1SUBR:MOVDPTR,#200AHPUSHDPLPUSHDPHRET(SP)=42H(A)=30H(B)=00H11.设(R0)=20H,(R1)=25H,(20H)=80H,(21H)=90H,(22H)=0A0H,(25H)=0A0H,(26H)=6FH,(27H)=76H。下列程序执行后,结果如何?CLRCMOVR2,#3LOOP:MOVA,@R0ADDCA,@R1MOV@R0,AINCR0INCR1DJNZR2,LOOPJNCNEXTMOV@R0,#01HSJMP$NEXT:DECR0SJMP$(R0)=22H,(R1)=24H,(20H)=10H,(21H)=31H,(22H)=0A1H,(25H)=0A0H,(26H)=6FH,(27H)=76H。12.设片内RAM(30H)=0EH,执行下面的程序后,(A)=?,指出该程序完成的功能。MOVR0,#30HMOVA,@R0RLAMOVB,ARLARLAADDA,B=8CH 功能:将30H中的内容*10操作,结果在累加器A中。 第5章MCS-51系列单片机汇编语言程序设计1.编程将片内RAM30H~39H单元中的内容送到以3000H为首的存储区中。MOVR0,#30HMOVDPTR,#3000HMOVR7,#10L1:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,L1RET2.片内RAM60H开始存放20个数据,试统计正数、负数及为零的数据个数,并将结果分别存在50H、51H、52H单元中。MOV50H,#0MOV51H,#0MOV52H,#0MOVR7,#20MOVR0,#60HL3:MOVA,@R0JZL1JBACC.7,L2INC50HSJMPLENDL2:INC51HSJMPLENDL1:INC52HLEND:INCR0DJNZR7,L3RET3.设10次采样值依次放在片内RAM50H~59H的连续单元中,试编程去掉一个最大值、去掉一个最小值,求其余8个数的平均值,结果存放在60H中。MOVR0,#50H;最大值MOVA,@R0MOVR7,#9INCR0L1:CLRCMOVB,ASUBBA,@R0MOVA,BJNCL2XCHA,@R0L2:INCR0DJNZR7,L1MOVR0,#51H;最小值 MOVA,@R0MOVR7,#8INCR0L1:CLRCMOVB,ASUBBA,@R0MOVA,BJNL4XCHA,@R0L4:INCR0DJNZR7,L3MOVR3,#0;求和MOVR4,#0MOVR7,#8MOVR0,#52HL5:MOVA,R4ADDA,@R0MOVR4,AMOVA,R3ADDCA,#0MOVR3,AINCR0DJNZR7,L5MOVA,R4;平均值SWAPARLAMOVB,AMOVA,R3RRARRARRAANLA,#00011111BORLA,BMOV60H,ARET4.编写程序将R4R5R6中的3个字节数据对半分解成6个字节,存入显示缓冲区(DISMEM0~DISMEM5)。MOVA,R6LCALLCLMOVDISMEM0,R0MOVDISMEM1,R1MOVA,R5LCALLCLMOVDISMEM2,R0MOVDISMEM3,R1MOVA,R4LCALLCLMOVDISMEM4,R0MOVDISMEM5,R1RETCL:MOVB,AANLA,#0FHMOVR0,AMOVA,BANLA,#0F0H SWAPAMOVR1,ARET5.试编程把以2000H为首地址的连续10个单元的内容按升序排列,存放到以3000H为首地址的存储区中。MOVDPTR,#2000H;读到片内30H开始的单元MOVR0,#30HMOVR7,#10L1:MOVXA,@DPTRMOV@R0,AINCDPTRINCR0DJNZR7,L1START:CLR00H;排序CLRCMOVR7,#9MOVR0,#30HMOVA,@R0L3:INCR0MOVR2,ASUBBA,@R0MOVA,R2JCNEXTSETB00HXCHA,@R0DECR0MOV@R0,AINCR0NEXT:MOVA,@R0DJNZR7,L3JB00H,STARTMOVDPTR,#3000H;送到片外3000H开始的单元MOVR0,#20HMOVR7,#10L2:MOVA,@R0MOVX@DPTR,AINCDPTRINCR0DJNZR7,L2RET6.设片内30H单元开始,连续存放2个字节二进制数,试分别将其转换为BCD码,并以压缩BCD码格式连续存放在以60H为首地址的存储区中,低位字节存放在低地址单元中。DBCD:MOVR0,30HMOVA,R0MOVR6,AMOVR1,60HMOVA,R1MOVR7,AMOVR2,#2INCR2CLRA BB0:MOV@R1,AINCR1DJNZR2,BB0MOVR3,#16BB3:MOVA,R6MOVR0,AMOVR2,#2CLRCBB1:MOVA,@R0RLCAMOV@R0,AINCR0DJNZR2,BB1MOVR2,#2INCR2MOVA,R7MOVR1,ABB2:MOVA,@R1ADDCA,@R1DAAMOV@R1,AINCR1DJNZR2,BB2DJNZR3,BB3RET7.设片内RAM中从20H开始的单元,连续存放10个非压缩BCD码,试将其转换为ASCII码,存放到片内50H开始的单元中。MOVR0,#20HMOVR1,#50HMOVR7,#10L1:MOVA,@R0ADDA,#30HMOV@R1,AINCR0INCR1DJNZR7,L1RET8.从20H单元开始有一无符号数据块,其长度在20H单元。求出数据块中的最小值,并存入21H单元。参看第3题。9.片外RAM从2000H单元开始存有10个单字节无符号数,找出最大值存入片外RAM3000H单元,试编写程序。参看第3题。10.从片外RAM2000H单元开始存有20个有符号数,要求把它们传送到片外RAM3000H开始的单元,但负数不传送,试编写程序。MOVDPTR,#2000HMOVR0,#20HMOVR7,#20L1:MOVXA,@DPTR MOV@R0,AINCDPTRINCR0DJNZR7,L1MOVDPTR,#3000HMOVR0,#20HMOVR7,#20L2:MOVA,@R0JBACC.7,L3MOVX@DPTR,AL3:INCDPTRINCR0DJNZR7,L2RET11.设在片外RAM2000H~2004H单元存有5个压缩的BCD数,试编程将它们转变为ASCII码,存放到以2005H为首地址的存储区中。MOVDPTR,#2000HMOVR0,#20HMOVR7,#5L1:MOVXA,@DPTRMOV@R0,AINCDPTRINCR0DJNZR7,L1MOVA,20HLCALLCLMOV30H,R0MOV31H,R1MOVA,21HLCALLCLMOV32H,R0MOV33H,R1MOVA,22HLCALLCLMOV34H,R0MOV35H,R1MOVA,23HLCALLCLMOV36H,R0MOV37H,R1MOVA,24HLCALLCLMOV38H,R0MOV39H,R1MOVR0,#30HMOVDPTR,#2005HMOVR7,#10L2:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,L2RET12.在片外RAM2000H、2001H和3000H、3001H中分别存放两个字数据(高8位在偶地址),试比较两个数的大小,把大数存放在4000H、4001H单元中。 MOVDPTR,#2000HMOVXA,@DPTRMOV20H,AINCDPTRMOVXA,@DPTRMOV21H,AMOVDPTR,#3000HMOVXA,@DPTRMOV30H,AINCDPTRMOVXA,@DPTRMOV31H,ACLRCMOVA,21HSUBBA,31HMOVA,20HSUBBA,30HJNCL1MOVA,20HMOVB,21HSJMPL2L1:MOVA,30HMOVB,31HL2:MOVDPTR,#4000HMOVX@DPTR,AINCDPTRMOVA,BMOVX@DPTR,ARET 第6章MCS-51系列单片机中断系统与定时器/计数器1.什么是中断源?MCS-51单片机有哪些中断源?各有什么特点?能引起中断的原因称为中断源。MCS-51单片机的5个中断源分为两种类型:一类是外部中断源,包括和;另一类是内部中断源,包括两个定时器/计数器(T0和T1)的溢出中断和串行口的发送/接收中断。(1)外部中断MCS-51单片机提供了两个外部中断请求和,它们的中断请求信号有效方式分为电平触发和脉冲触发两种。电平方式是低电平有效,脉冲方式为负跳变触发有效。CPU在每个机器周期的S5P2检测和上的信号。对于电平方式,只要检测到低电平信号即为有效申请;对于脉冲方式,则需要比较两次检测到的信号,才能确定中断请求信号是否有效。中断请求信号高低电平的状态都应至少维持一个机器周期,以确保电平变化能被单片机检测到。(2)内部中断MCS-51单片机内部有TF0、TF1、TI、RI,分别为定时器/计数器溢出中断和串行口的发送/接收中断的中断源。当中断源有中断请求时,相应的中断源的中断请求标志置位。外部中断0、外部中断1、定时器/计数器0溢出中断、定时器/计数器1溢出中断和串行口的发送/接收中断的中断请求标志分别为IE0、IE1、TF0、TF1、TI或RI。IE0、IE1、TF0、TF1在特殊功能寄存器TCON中,TI或RI在特殊功能寄存器SCON中。2.试编写外部中断1为跳沿触发方式的中断初始化程序。SETBIT1SETBEASETBEX13.试编写一段对中断系统初始化的程序,允许外部中断0、外部中断1、定时器/计数器T0溢出中断、串行口中断,且使定时器/计数器T0溢出中断为高优先级中断。SETBEASETBEX0SETBEX1SETBET0SETBESSETBPT0 4.在MCS-51单片机中,外部中断有哪两种触发方式?如何加以区分?MCS-51单片机提供了两个外部中断请求和,它们的中断请求信号有效方式分为电平触发和脉冲触发两种。电平方式是低电平有效,脉冲方式为负跳变触发有效。CPU在每个机器周期的S5P2检测和上的信号。对于电平方式,只要检测到低电平信号即为有效申请;对于脉冲方式,则需要比较两次检测到的信号,才能确定中断请求信号是否有效。中断请求信号高低电平的状态都应至少维持一个机器周期,以确保电平变化能被单片机检测到。5.MCS-51单片机能提供几个中断优先级?各个中断源优先级如何确定?在同一优先级中各个中断源的优先级如何确定?两个中断优先级。通过IP寄存器进行确定。在同一优先级中,各个中断源的优先级:外部中断0、定时器/计数器T0、外部中断1、定时器/计数器T1、串行口。6.中断允许寄存器IE各位的定义是什么?IE是中断允许控制寄存器,CPU对中断系统的所有中断及某个中断源的“允许”与“禁止”都是由它来控制的。IE中断允许寄存器格式如下:寄存器中用于控制中断的共有6位,实现中断管理,其作用如下:EA为中断允许总控制位。EA=1时,CPU开放中断;EA=0时,CPU屏蔽所有中断请求。ES、ET1、EX1、ET0、EX0为对应的串行口中断、定时器/计数器1中断、外部中断1中断、定时器/计数器0中断、外部中断0中断的中断允许位。对应位为1时,允许其中断,对应位为0时,禁止其中断。7.为何要在程序的首地址安排一条跳转到主程序的指令?在响应中断过程中为什么要保护现场?应怎样保护?因为主程序的入口地址是0000H单元,而0003H单元式外部中断0的中断服务程序入口地址,主程序需要躲开该地址。为了使在中断服务程序响应完毕后能正确地返回中断的地方。在响应中断的时间,CPU自动地将要返回的地址压入堆栈保护。8.MCS-51单片机若要把外部中断源扩充为6个,可采用哪些方法?如何确定它们的优先级?可以由两种方法:参看例题6-4和例题6-5.对于第一种方法,在查询时先查询那个中断源,那个中断源的优先级最高。 对于第二种方法,先判断哪个中断源,哪个中断源的中断优先级高。9.子程序和中断服务程序有何异同?子程序返回指令RET和中断返回指令RETI能相互替代吗?子程序是有固定的调用位置的,而中断服务程序没有固定的调用位置。不能用RET指令代替RETI指令,因为用RET指令虽然也能控制PC返回原来中断的地方,但RET指令没有清零中断优先级状态触发器的功能,中断控制系统也会认为中断仍在进行,其后果是同级的中断请求将不被响应。所以,中断服务程序结束时必须使用RETI指令。10.MCS-51单片机各中断标志是如何产生的?又如何清除?在中断请求被响应前,中断源发出的中断请求是由CPU锁存在特殊功能寄存器TCON和SCON的相应中断标志位中的。一旦某个中断请求得到响应,CPU必须把它的相应标志位复位成0状态,否则MCS-51单片机就会因中断未能得到及时撤除而重复响应同一中断请求,这是绝对不允许的。MCS-51单片机的51子系列有5个中断源,但实际上只分属于三种中断类型。这三种类型是:外部中断、定时器/计数器溢出中断和串行口中断。对于这三种中断类型的中断请求,其撤除方法是不同的。(1)定时器/计数器溢出中断请求的撤除TF0和TF1是定时器/计数器溢出中断标志位,它们因定时器/计数器溢出中断请求的输入而置位,因定时器/计数器溢出中断得到响应而自动复位成0状态。因此定时器/计数器溢出中断源的中断请求是自动撤除的,用户根本不必专门为它们撤除。(2)串行口中断请求的撤除TI和RI是串行口中断的标志位,中断系统不能自动将它们撤除,这是因为MCS-51进入串行口中断服务程序后常需要对它们进行检测,以测定串行口发生了接收中断还是发送中断。为了防止CPU再次响应这类中断,用户应在中断服务程序的适当位置处通过指令将它们撤除:CLRTI;撤除发送中断CLRRI;撤除接收中断(3)外部中断的撤除外部中断请求有两种触发方式:电平触发和脉冲触发。对于这两种不同的中断触发方式,MCS-51单片机撤除它们的中断请求的方法是不相同的。在脉冲触发方式下,外部中断标志IE0和IE1是依靠CPU两次检测和上的触发电平状态而设置的。因此,芯片设计者使CPU在响应中断时自动复位IE0或IE1,就可撤除或上的中断请求,因为外部中断源在中断服务程序时是不可能再在或上产生负边沿而使相应的中断标志IE0或IE1置位的。 在电平触发方式下,外部中断标志IE0和IE1是依靠CPU检测和上的低电平而置位的。尽管CPU响应中断时相应中断标志IE0或IE1,能自动复位成“0”状态,但若外部中断源不能及时撤除它在或上的低电平,就会再次使已经变“0”的中断标志IE0或IE1置位,这是绝对不允许的。因此电平触发型外部中断请求的撤除必须使或上的低电平随着其中断被CPU响应而变为高电平。一种可供采用的电平型外部中断的撤除电路如图所示。=由图可见,当外部中断源产生中断请求时,D触发器复位成“0”状态,Q端的低电平被送到,该低电平被8051检测后就使中断标志IE0置1。8051响应上的中断请求可转入中断服务程序执行,故可以在中断服务程序开头安排如下程序来使上的电平变高:INSVR:SETBP1.0CLRP1.0CLRIE0···END8051执行上述程序就可在P1.0上产生一个宽度为两个机器周期的负脉冲。在该负脉冲作用下,D触发器被置位成1状态,上的电平也因此而变高,从而撤除了其上的中断请求。11.设MCS-51单片机时钟为12MHz,利用定时器T0编程令P1.0引脚输出2ms的矩形波程序,要求占空系数为1:2(高电平时间短)。ORG0000HLJMPMAINORG000BHLJMPT0INTORG0030HMAIN:MOVSP,#60HMOVR7,#0MOVTMOD,#01H;初始化MOVTH0,#0FDH;定时666微妙MOVTL0,#66HSETBEASETBET0SETBTR0L1:SJMPL1;中断服务程序T0INT:MOVTH0,#0FDH;重载初始值MOVTL0,#66HINCR7CJNER7,#1,LL1 CLRP1.0SJMPLLENDLL1:CJNER7,#3,LLENDSETBP1.0MOVR7,#00HLLEND:RETI12.如果MCS-51单片机系统的晶振频率为12MHz,分别指出定时器/计数器方式1和方式2的最长定时时间。方式1:65536微妙;方式2:256微妙13.MCS-51单片机P1端口上,经驱动接有8支发光二极管,若外部晶振频率为6MHz,试编写程序,使这8支发光管每隔2s循环发光(要求用T1定时)。ORG0000HLJMPMAINORG001BHLJMPT1INTORG0030HMAIN:MOVSP,#70HMOVTMOD,#10H;T1方式1MOVTH1,#3CH;定时100msMOVTL1,#0B0HMOVA,#11111110BMOVR7,#20;100ms*20=2SSETBEASETBET1SETBTR1SJMP$T1INT:MOVTH1,#3CHMOVTL1,#0B0HDJNZR7,L1MOVR7,#20MOVP1,ARLAL1:RETI14.设MCS-51单片机的晶振频率为12MHz,要求在P1.0输出周期是200ms的方波,试编写程序。ORG0000HLJMPMAINORG001BHLJMPT1INTORG0030HMAIN:MOVSP,#70HMOVTMOD,#10H;T1方式1MOVTH1,#3CH;定时50msMOVTL1,#0B0HMOVR7,#2;50ms*2=100msSETBEASETBET1SETBTR1SJMP$T1INT:MOVTH1,#3CH MOVTL1,#0B0HDJNZR7,L1MOVR7,#2CPLP1.0L1:RETI15.每隔1s读一次P1.0,如果所读的状态为“1”,则将片内RAM10H单元的内容加1;如果所读的状态为“0”,则将片内RAM11H单元的内容加1。设单片机的晶振频率为12MHz,试编写程序。ORG0000HLJMPMAINORG001BHLJMPT1INTORG0030HMAIN:MOVSP,#70HMOVTMOD,#10H;T1方式1MOVTH1,#3CH;定时50msMOVTL1,#0B0HMOVR7,#20;50ms*20=1sMOV10H,#0MOV11H,#0SETBEASETBET1SETBTR1SJMP$T1INT:MOVTH1,#3CHMOVTL1,#0B0HDJNZR7,L1MOVR7,#20SETBP1.0MOVC,P1.0JNCL2INC10HSJMPL1L2:INC11HL1:RETIEND 第7章MCS-51系列单片机的串行口1.若异步通信,每个字符由11位组成,串行口每秒传送250个字符,问波特率是多少?2750位/秒=2750波特2.设串行异步通信的传送速率为2400波特,传送的是带奇偶校验的ASCII码字符,每个字符包含10位(1个起始位,7个数据位,1个奇偶校验位,1个停止位),试编程初始化程序。设定串行口位方式1.MOVSCON,#40HMOVPCON,#80HMOVTMOD,#20HMOVTH1,#0F4HMOVTL1,#0F4HSETBTR13.MCS-51单片机的串行口控制寄存器SCON的SM2、TB8、RB8有何作用?(1)SM2是多机通信控制位因多机通信是在方式2和方式3下进行的,所以SM2位主要用于方式2和方式3。当串行口以方式2或方式3接收数据时,如SM2=1,则只有当接收到的第9位数据(RB8)为“1”时,才将接收到的前8位数据送入SBUF,并置位RI产生中断请求;否则,将接收到的前8位数据丢弃。而当SM2=0时,不论接收到的第9位数据是“0”还是“1”,都将前8位数据装入SBUF中,并产生中断请求。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1,以便接收下一帧数据。在方式0时,SM2必须为0。(2)TB8是发送数据的第9位在方式2、3时,其值由用户通过软件设置。在双机通信时,TB8一般作为奇偶校验位使用;在多机通信中,常以TB8位的状态表示主机发送的是地址帧还是数据帧,且一般约定:TB8=0为数据帧,TB8=1为地址帧。(3)RB8是接收数据的第9位在方式2、3时,RB8存放接收到的第9位数据,它代表接收到的数据的特征:可能是奇偶校验位,也可能是地址/数据的标志位。4.设外部晶振频率为6MHz,试编写一段对串行口的初始化程序,使之工作在方式1,波特率为1200b/s;并用查询串行口状态的方式,读出接收缓冲器的数据并回送到发送缓冲器。 MOVSCON,#50HMOVPCON,#80HMOVTMOD,#20HMOVTH1,#0E5HMOVTL1,#0E5HCLRESSETBTR1JBNRI,$MOVA,SBUFCLRRI5.设外部晶频率振为11.0592MHz,串行口工作在方式1,波特率为4800b/s。编写用T1作为波特率发生器的方式字并计算T1的计数初值。TMOD:20HTH1=TL1=0FAH6.设计一个单片机的双机通信系统,串行口工作在方式1,编写通信程序将甲机内部RAM30H~3FH存储区的数据块通过串行口传送到乙机内部RAM40H~4FH存储区中。甲机发送(采用查询方式):MOVSCON,#80H;设置工作方式2MOVPCON,#00H;置SMOD=0,波特率不加倍MOVR0,#30H;数据区地址指针MOVR2,#10H;数据长度LOOP:MOVA,@R0;取发送数据MOVC,P;奇偶位送TB8MOVTB8,CMOVSBUF,A;送串行口并开始发送数据WAIT:JBCTI,NEXT;检测是否发送结束并清TISJMPWAITNEXT:INCR0;修改发送数据地址指针DJNZR2,LOOPRET乙机接收(采用查询方式):MOVSCON,#90H;工作方式2,并允许接收MOVPCON,#00H;置SMOD=0MOVR0,#40H;置数据区地址指针MOVR2,#10H;等待接收数据长度LOOP:JBCRI,READ;等待接收数据并清RISJMPLOOPREAD:MOVA,SBUF;读一帧数据MOVC,PJNCLP0;C不为1转LP0JNBRB8,ERR;RB8=0,即RB8不为P转ERRAJMPLP1LP0:JBRB8,ERR;RB8=1,即RB8不为P转ERRLP1:MOV@R0,A;RB8=P,接收一帧数据INCR0DJNZR2,LOOPRETERR:…;出错处理程序 第8章MCS-51系列单片机系统扩展技术1.MCS-51单片机扩展系统中,程序存储器和数据存储器共用16位地址线和8位数据线,为什么两个存储空间不会发生冲突?因为是使用不同的控制信号。程序存储器的读控制使用/PSEN信号;数据存储器的读、写控制室使用/RD、/WR。2.试用Intel2764,6264为MCS-51单片机设计一个存储器系统,它具有8KBEPROM(地址由0000H~1FFFH)和16KB的数据存储器(地址为2000H~5FFFH)。要求绘出该存储器系统的硬件连接图,并指出每片芯片的地址空间。使用一片Intel2764,两片RAM6264.参看图8-22,采用译码器译码。2764可以不用译码,其片选信号直接接地,其地址为0000H~1FFFH,读控制接/PSEN;RAM6264的片选分别接74LS138的/Y1、/Y2,其地址分别为:2000H~3FFFH、4000H~5FFFH,其读。写控制分别接/RD、/WR。3.在一个8031应用系统中扩展一片2764、一片8255A和一片6264。试画出系统框图,并指出所扩展的各个芯片的地址范围。参看图8-20、8-23、8-29.将图8-23中的/CE1接74LS138译码器的/Y0端。2764的地址空间范围:0000H~1FFFH6464的地址空间范围:0000H~1FFFH82552A的口地址:PA口0FFFCH、PB口0FFFDH、PC口0FFFEH、控制口0FFFFH。4.试设计用两片74LS377和两片74LS244扩展两个并行输出口和两个并行输入口的扩展连接电路图。参看图8-26、8-27.5.8255A有哪几种工作方式?怎样进行选择?简述8255A的控制字。8255A具有3种工作方式,通过向8255A的控制字寄存器写入方式选择字,就可以规定各端口的工作方式。当8255A工作于方式1和方式2时,C口可用做A口或B口的联络信号,用输入指令可以读出C口的状态。通过方式选择控制字进行选择。 端口C置位/复位控制字端口C的各位常用做控制或应答信号,通过对8255A的控制口写入置位/复位控制字,可使端口C的任意一个引脚的输出单独置1或清零,或者为应答式数据传送发出中断请求信号。在基于控制的应用中,经常希望在某一位上产生一个TTL电平的控制信号,利用端口C的这个特点,只需要用简单的程序就能形成这样的信号,从而简化了程序。D7位为置位/复位控制字标志位,它必须等于0,用来和方式选择控制字进行区分;D3~D1位用于选择对端口C中某一位进行操作;D0位指出对选中位是置1还是清零。D0=1时,使选中位置1;D0=0时,使选中位清零。8.SPI总线一般使用几条线?分别是什么?SPI使用4条线:串行时钟SCK,主机输入/从机输出数据线MISO(简称SO),主机输出/从机输入数据线MOSI(简称SI)和低电平有效的从机选择线。9.I2C总线一般使用几条线?分别是什么?I2C总线采用两线制,由数据线SDA和时钟线SCL构成。 第9章MCS-51系列单片机键盘/显示器接口技术1.简述单片机如何进行键盘的键输入以及怎样实现键功能处理。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所规定的功能。键信息输入是与软件编程密切相关的过程。对于一组键或一个键盘,需要通过接口电路与CPU相连。CPU可以采用查询或中断方式了解有无键输入并检查是哪个键被按下,将该键的信息送入CPU,然后通过散转指令转入执行该键的功能程序,执行完毕又返回到原始状态。键输入接口与软件应可靠而快速地实现键信息输入与执行键功能任务。为此,应解决下列问题。(1)键开关状态的可靠输入目前,无论是按键还是键盘,大部分利用的都是机械触点的合、断作用。机械触点在闭合及断开瞬间由于弹性作用的影响均有抖动过程,从而使电压信号也出现抖动,如图9-20所示。抖动时间长短与开关的机械特性有关,一般为5~10ms。按键的稳定闭合时间,由操作人员的按键动作确定,一般为十分之几秒至几秒。为了保证CPU对键的一次闭合仅做一次键输入处理,必须去抖动影响。通常,去抖动影响的方法有硬、软两种。在硬件上是采取在键输出端加R-S触发器或单稳态电路构成去抖动电路。在软件上采取的措施是,在检测到有键按下时,执行一个10ms左右的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态,从而去除了抖动影响。(2)对按键进行编码以给出键值或直接给出键号任何一组按键或键盘都要通过I/O接口线查询按键的状态。根据不同的键盘结构采用不同的编码方法。但无论有无编码及采用什么编码,最后都要转换成与累加器中数值相对应的键值,以实现按键功能程序的散转转移(相应的散转指令为JMP@A+DPTR),因此一个完善的键盘控制程序应完成下述任务:①检测有无键按下。②有键按下后,在无硬件去抖动电路时,应用软件延时方法除去抖动影响。③有可靠的逻辑处理方法,如n键按下,即只处理一个键,其间任何按下又松开的键不产生影响,不管一次按键持续有多长时间,仅执行一次按键功能程序。④输出确定的键号以满足散转指令的要求。2.何谓键抖动?键抖动对单片机系统有何影响?如何消除键抖动? 目前,无论是按键还是键盘,大部分利用的都是机械触点的合、断作用。机械触点在闭合及断开瞬间由于弹性作用的影响均有抖动过程,从而使电压信号也出现抖动,如图9-20所示。抖动时间长短与开关的机械特性有关,一般为5~10ms。按键的稳定闭合时间,由操作人员的按键动作确定,一般为十分之几秒至几秒。为了保证CPU对键的一次闭合仅做一次键输入处理,必须去抖动影响。通常,去抖动影响的方法有硬、软两种。在硬件上是采取在键输出端加R-S触发器或单稳态电路构成去抖动电路。在软件上采取的措施是,在检测到有键按下时,执行一个10ms左右的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态,从而去除了抖动影响。3.何谓静态显示?何谓动态显示?两种显示方式有何优缺点?所谓静态显示,是指当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止,公共端接固定的电平。LED动态显示是将所有位的段选线并接在一个I/O接口上,称为段口,共阴极端或共阳极端分别由相应的I/O接口线控制,称为位口。静态显示显示稳定,但软件简单;动态显示硬件简单,但软件需要不断地刷新。4.设MCS-51单片机系统扩展一个8255,其口地址分别为7CFFH~7FFFH,其中PC扩展一个4×2的矩阵键盘,PC0~PC3为行,PC6~PC7为列,试画出8255与单片机及键盘的连接简图,并编写键盘管理程序。连接简图参看图9-24的键盘部分,将8*2的矩阵键盘改为4*4的矩阵键盘,片8288A的片选改为接MCS-51单片机的P2.7。键盘管理程序:KEY:MOVA,#00H;所有行输出0MOVDPTR,#7EFFHMOVX@DPTR,AMOVDPTR,#7EFFH;读列值MOVXA,@DPTRANLA,#0FHCJNEA,#0FH,KEY1;不全1,说明有键按下SJMPKEYEND;全1,说明无键按下KEY1:MOVB,#11111110B;有键,逐行输出0KEY4:MOVA,BMOVDPTR,#PORT1MOVX@DPTR,AMOVDPTR,#PORT2MOVXA,@DPTRANLA,#0FHCJNEA,#0FH,KEY2MOVA,BRLAJNBACC.4,KEYENDMOVB,ASJMPKEY4 KEY2:ANLB,#0FH;计算键值MOVR7,AMOVA,BSWAPAORLA,R7MOVB,A;键值在B中MOVR7,#00HMOVR6,#10HKEY6:MOVDPTR,#KEYTABMOVA,R7MOVCA,@A+DPTRCJNEA,B,KEY5MOVA,R7RLAADDA,R7MOVDPTR,#KEYTAB1JMP@A+DPTR;转相应的键处理KEYTAB1:LJMPK0LJMPK1LJMPK2···LJMPK15KEY5:INCR7DJNZR6,KEY6KEYEND:RETKEYTAB:DB0EEH,0EDH,0EBH,0E7H,0DEH,0DDH,0DBH,0D7HDB0BEH,0BDH,0BBH,0B7H,7EH,7DH,7BH,77H5.试用串行口扩展4个LED显示器电路,编程使数码管轮流显示YOUR和GOOD,每隔1s变换一次。显示的原理简图参看图9-5。ORG0000HMOVSCON,#00HLL:MOV30H,#0MOV31H,#1MOV32H,#2MOV33H,#3LCALLDISPMOVR7,#0DJNZR7,$MOV30H,#4MOV31H,#1MOV32H,#1MOV33H,#5LCALLDISPMOVR7,#0DJNZR7,$SJMPLLDISP:MOV34H,#4;显示位数送R7MOVR0,#30H;先送最低位MOVDPTR,#TAB;七段码表首地址DISP1:MOVA,@R0;取七段码MOVCA,@A+DPTR MOVSBUF,AJNBTI,$CLRTIINCR0;指向下一位DJNZ34H,DISP1;全部送完RETTAB:DB91H,0A3H,0C1H,8FH,90H,0A1H;yourgdEND 第10章MCS-51系列单片机模拟量接口技术1.什么是多路模拟开关?采样保持电路能实现哪些功能?多路模拟开关的作用是,能够实现各个被检测的物理量与A/D转换器(或者是D/A转换器与被控制对象)之间的通路。理想的多路模拟开关在断开时,其开路阻抗无穷大,接通时的导通电阻应为零。同时要求切换速度快、噪声小、寿命长、可靠性高。由于多路模拟开关用来切换模拟信号,因此其性能直接影响输入模拟量和输出模拟量的精度和速度。使用时,应根据实际需要和多路模拟开关的性能指标来进行选择。采样保持电路可以实现的功能有:保持采样信号不变,以便完成A/D转换;同时对几个模拟量进行采样,以便进行数据处理与测量;降低D/A转换器输出的不稳定性,从而消除输出电压的峰值及缩短输出值的建立时间;把一个D/A转换器的输出分配到几个输出点,以保证输出的稳定性。2.常见的多路模拟开关芯片、采样保持电路芯片有哪些?随着大规模集成电路的发展,厂家已推出各式各样的多路模拟开关,从输入信号的连接方式来看,有单端输入、双端输入或多端输入/多路输出;从组成多路模拟开关的电路来看,有TTL、CMOS和HMOS电路等。多路模拟开关芯片种类很多,常见的有“八选一”多路模拟开关,如CD4051、AD7501等;“十六选一”多路模拟开关,如CD4067、AD7506等。使用时,请查阅相关手册。目前,已有不少厂家把多路模拟开关与A/D转换器放在同一芯片中,如ADC0809,若采用这样的转换器,不必再外加多路模拟开关就能实现多路量的分时转换。目前,大多数采样保持电路多集中在一个芯片里,但芯片内不含保持电容,用户可以根据需要进行选择并外接。电容的选择应综合考虑精度、采样频率、下降误差等参数。常见的采样保持电路芯片有:通用芯片,如LF198、LF398、AD582K、AD583K等;高速芯片,如HTS-0025、THS-0060、HTC-0300等;高分辨率芯片,如SHA1144等。3.ADC0809与MCS-51单片机接口时有哪些控制信号?作用分别是什么?使用ADC0809时,转换的主要步骤有哪些?START:启动A/D转换。当START为高电平时,A/D开始转换。EOC:转换结束信号。当A/D转换结束时,由低电平转为高电平。OE:输出允许信号。CLK:工作时钟,最高允许值为1.2MHz。当CLK为640kHz时,转换时间为100μs。ALE:通道地址锁存允许。 A、B、C:通道地址输入。地址锁存信号ALE在上升沿将三位通道地址锁存,相应通道的模拟量经多路模拟开关送到A/D转换器。启动信号START上升沿复位内部电路,START信号的下降沿启动A/D转换。此时转换结束信号EOC呈低电平状态,由于逐次逼近需要一定的过程,所以在此期间模拟信号应维持不变,比较器一次次地进行比较,直到转换结束。此时转换结束信号EOC变为高电平,若CPU发出输出允许信号OE,则可读出数据,一次A/D转换的过程就结束了。4.在一个由MCS-51单片机与一片ADC0809组成的数据采集系统中,ADC0809的地址为7FF8H~7FFFH。试画出有关的逻辑框图,并编写出每隔一分钟轮流采集一次8个通道数据的程序。共采样100次,其采样值存入片外RAM3000H开始的存储单元中。原理框图参看图10-23。5.如何启动一个ADC进行A/D转换?启动方式有几种?单片机如何了解到ADC是否转换结束?通过写信号对A/D进行驱动。通过转换结束信号了解ADC是否转换结束。6.使用DAC0832与MCS-51单片机连接时有哪些控制信号?双缓冲方式如何工作?在何种情况下要使用双缓冲工作方式?ILE:输入锁存使能信号输入端,高电平有效。:片选信号端。、:两个写信号端,均为低电平有效。:传输控制信号输入端,低电平有效。DAC0832可工作于双缓冲器方式,输入寄存器的锁存信号和DAC寄存器的锁存信号分开控制,这种方式适用于几个模拟量需同时输出的系统,每一模拟量输出需一个DAC0832,构成多个DAC0832同时输出的系统。7.试设计一个12位A/D转换器与8031的接口电路,编写连续转换10次并将转换结果存入片内50H开始的单元中的程序。接口电路参看图10-26。MOVR1,#50HMOVR7,#10LL:LCALLAD574AMOV@R1,31HINCR1MOV@R1,30HDJNZR7,LLSJMP$AD574A:MOVR0,#7CH;AD574A端口地址 MOVX@R0,A;启动AD574A进行12位转换SETBP1.0;置P1.0为输入方式LOOP:JBP1.0,LOOP;检测STS的状态INCR0;使R/为1,按双字节读取转换结果MOVXA,@R0;读取高8位转换结果MOV31H,A;存高8位结果INCR0INCR0;使R/、A0均为1MOVXA,@R0;读取低4位结果ANLA,#0FH;屏蔽高4位MOV30H,A;存低4位结果RET8.试设计一个12位D/A转换器与8031的接口电路,编写将存放在片内RAM的50H、51H单元的12位数(低8位在50H单元中,高4位在51H的低半字节中)进行转换输出的程序。接口电路参看图10-18。SYNCBITP1.0;DAC7512的与8051的P1.0相连SCLKBITP1.1;DAC7512的SCLK与8051的P1.1相连DINBITP1.2;DAC75121的DIN与8051的P1.2相连DAHDATA50H;12位数据高字节DALDATA51H;12位数据低字节DAOUT:MOVR7,#08H;置循环次数MOVA,DAH;取高4位数ANLA,#0FH;正常工作模式CLRSYNC;启动写时序DA1:RLCA;从最高位开始串行移位MOVDIN,C;输出数据SETBSCLK;产生SCLK上升沿CLRSCLK;产生SCLK下降沿DJNZR7,DA1;8位数据传送完毕?MOVR7,#08HMOVA,DAL;取低8位数据DA2:RLCAMOVDIN,CSETBSCLKCLRSCLKDJNZR7,DA2;低8位数据传送完毕?NOPSETBSYNCSETBDINRET9.要求某电子秤的称重范围为0~500g,测量误差小于0.05g。至少应该选择分辨率为多少位的A/D转换器?14位。214=1638410.如果一个8位D/A转换器的满量程(对应于数字量255)为10V,试分别确定模拟量为2.0V和8.0V所对应的数字量。 5120411.某12位D/A转换器,输出电压为0~2.5V,当输入的数字量为400H时,对应的输出电压是多少?[2.5/212]*400H=0.625V 第11章单片机应用系统设计1.单片机应用系统一般由哪几部分组成?从系统的角度来看,单片机应用系统是由硬件系统和软件系统两部分组成的。硬件系统是指单片机扩展的存储器、外设及其接口电路等,软件系统包括监控程序和各种应用程序。2.单片机应用系统设计主要有哪些内容?单片机应用系统的设计包含硬件设计与软件设计两部分,具体涉及的内容主要有单片机系统、通道与接口、系统的抗干扰、应用软件的设计等。3.单片机应用系统的一般设计方法是什么?(1)确定系统的功能与性能。(2)确定系统基本结构。(3)单片机应用系统硬件与软件设计。(4)资源分配4.在单片机应用系统设计中,软、硬件分工的原则是什么?对系统结构有何影响?(1)硬件系统设计原则一个单片机应用系统的硬件电路设计包括如下两部分内容:①单片机系统的扩展,即单片机内部的功能单元(如程序存储器、数据存储器、I/O、定时器/计数器、中断系统等)的容量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的扩展电路。②系统配置,即按照系统功能要求配置外设,如键盘、显示器、打印机、A/D转换器、D/A转换器等,要设计合适的接口电路。系统扩展的配置设计应遵循下列原则:①尽可能选择典型通用的电路,并符合单片机的常规用法,为硬件系统的标准化、模块化奠定良好的基础。②系统的扩展与外设配置的水平应充分满足应用系统当前的功能要求,并留有适当余地,便于以后进行功能的扩充。③硬件结构应结合应用软件方案一并考虑,硬件结构与软件方案会产生相互影响。④整个系统中相关的器件要尽可能做到性能匹配。例如,选用晶体振荡频率较高时,存储器的存取时间就较短,应选择存取速度较快的芯片;选择COMS芯片单片机构成低功耗系统时,系统中的所有芯片都应选择低功耗产品。如果系统中相关的器件性能差异很大,系统综合性能就会降低,甚至不能正常工作。 ⑤可靠性及抗干扰设计是硬件设计中不可忽略的一部分,它包括芯片、器件选择、去耦合滤波、印制电路板布线、通道隔离等。如果设计中只注重功能实现,而忽略可靠性及抗干扰设计,到头来只能是事半功倍,甚至会造成系统崩溃,前功尽弃。⑥单片机外接电路较多时,必须考虑其总线驱动能力。驱动能力不足时,系统工作不可靠。解决的办法是增加驱动能力,增加总线驱动器或者减少芯片功耗,降低总线负载。(2)软件设计的原则应用系统中的应用软件是根据系统功能设计的,应可靠地实现系统的各种功能。应用系统种类繁多,应用软件各不相同,但优秀的应用软件应具有以下特点:①软件结构清晰、简捷、流程合理。②各功能程序事先模块化、系统化。这样既便于调试、连接,又便于移植、修改和维护。③程序存储区、数据存储区规划合理,既能节约存储容量,又能给程序设计与操作带来方便。④运行状态实现标志化管理。各个功能程序运行状态、运行结果及运行需求都设置状态标志以便查询,程序的转移、运行、控制都可通过状态标志来控制。⑤经过调试修改后的程序应进行规范化,除去修改“痕迹”。规范化的程序便于交流、借鉴,也为今后的软件模块化、标准化打下基础。⑥实现全面软件抗干扰设计。软件抗干扰是计算机应用系统提高可靠性的有力措施。⑦为提高运行的可靠性,在应用软件中设置自诊断程序,在系统运行前先运行自诊断程序,以检查系统各特征参数是否正常。整个单片机应用系统是一个整体。在进行应用系统总体设计时,软件设计和硬件设计应统一考虑,相结合进行。当系统的硬件电路设计定型后,软件的任务也就明确了。5.什么是联调?主要解决哪些问题?系统联调是指让用户系统的软件在其硬件上运行,进行软、硬件联合调试,从中发现硬件故障错误或软、硬件设计错误。这是对用户系统检验的重要一关。系统联调主要解决以下问题:①系统的软、硬件能否按预定的要求配合工作。②系统运行中是否有潜在的设计时难以预料的错误。③系统的动态性能指标(包括精度、响应速度等)是否满足设计要求。系统联调时,首先采用单步、断点、连续运行方式调试与硬件相关的各程序段,既可检验这些程序段的正确性,又可在各功能独立的情况下,检验软、硬件的配合情况。然后将软、硬件按系统工作要求进行综合运行,以解决在系统总体运行情况下软、硬件的协调问题,并提高系统的动态性能。在具体操作中,用户系统在开发系统环境下,先借用仿真器的单片机、存储器等资源进行工作。若发现问题,按上述软、硬件调试方法准确定位错误,分析错误原因,找出解决办法。用户系统调试完后,将用户程序固化到用户系统的程序存储器中,再借用仿真器单片机,使用户系统运行。若无问题,则用户系统插上单片机即可正确工作。 6.为什么要进行现场调试?一般情况下,通过系统联调后,用户系统就可以按照设计目标正常工作了。但在某些情况下,由于用户系统运行的环境较为复杂(如环境干扰较为严重、工作现场有腐蚀性气体等),在实际现场工作之前,环境对系统的影响无法预料,只能通过现场运行调试来发现问题,找出相应的解决方法;或者虽然已经在系统设计时考虑到了抗干扰的对策,但是否行之有效,还必须通过用户系统在实际现场的运行来加以验证。另外,有些用户系统的调试是在模拟设备代替实际监测、控制对象的情况下进行的,这就更有必要进行现场调试,以检验用户系统在实际工作环境中工作的正确性。总之,现场调试对用户系统的调试来说是最后必需的一个过程,用户系统只有经过现场调试才能保证可靠地工作。现场调试仍需利用开发系统来完成,其调试方法与前述类似。7.试设计一个采用单片机控制的自动交通信号灯系统。设在一个十字路口的两个路口均有一组交通信号灯(红、黄、绿),控制要求:主干线绿灯亮的时间为30秒,然后转为黄灯亮,2秒后即转为红灯亮。支干线在主干线绿灯和黄灯亮时,其为红灯亮,直到主干线黄灯熄灭时才转为绿灯亮。其绿灯亮的持续时间为20秒,然后黄灯亮2秒后即转为红灯亮,如此反复控制。试绘出系统逻辑图、程序流程图,并编制程序。'