• 55.74 KB
  • 2022-04-22 11:19:28 发布

《单片机原理及接口技术》第三版梅丽凤王艳秋编著的习题解答课后答案(1).doc

  • 103页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'103f《单片机原理及接口技术》第三版梅丽凤王艳秋编著的习题解答课后答案第1章绪论1-1解答:第一台计算机的研制目的是为了计算复杂的数学难题。它的特点是:计算机字长为12位,运算速度为5000次/s,使用18800个电子管,1500个继电器,占地面积为150m2,重达30t,其造价为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解答:高档型单片机有AT89S51、AT89S52、AT89S53和AT89S8252等型号,其中AT89S51有4KB可下载Flash存储器,AT89S52、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:串行数据发送端P3.2—0INT:外部中断0申请输入端P3.3—1INT:外部中断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解答:MC103fS-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 来进行选择。具体关系如下表:RS1RS0当前寄存器组00第0组工作寄存器01第1组工作寄存器1.0第2组工作寄存器1.1第3组工作寄存器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)相对寻址:只在相对转移指令中使用。对应片内、片外的R103fOM空间。(7)位寻址:对可寻址的位单独进行操作。对应位寻址区20H~2FH单元的128位和字节地址能被8整除的特殊功能寄存器的相应位。3-4解答:直接寻址方式。3-5解答:寄存器间接寻址方式。3-6解答:立即寻址方式,直接寻址方式,寄存器寻址方式,寄存器间接寻址方式,位寻址方式。3-7解答:变址寻址方式3-8解答:对于8052单片机内部RAM的高128B,必须采用寄存器间接寻址方式进行访问。3-9解答:外部数据传送指令有6条:MOVXA,@DPTRMOVX@DPTR,AMOVXA,@RiMOVX@Ri,AMOVCA,@A+DPTRMOVCA,@A+PC (1)MOVXA,@R1MOVXA,@DPTR都是访问片外RAM,但二者寻址范围不同。前1条指令是对片外RAM低256个单元的“读”操作。后1条指令是对片外RAM64KB空间的“读”操作。(2)MOVXA,@DPTRMOVX@DPTR,A访问空间相同,但数据传送方向不同。前1条指令是对片外RAM64KB空间的“读”操作。后1条指令是对片外RAM64KB空间的“写”操作。(3)MOV@R0,AMOVX@R0,A二者访问的空间不同。前1条指令是对片内RAM低128个单元的“写”操作。后1条指令是对片外RAM低256个单元的“写”操作。(4)MOVCA,@A+DPTRMOVXA,@DPTR二者访问的空间不同,寻址方式不同。前1条指令是变址寻址方式,对ROM操作。后1条指令是寄存器间接寻址方式,对片外RAM操作。3-10解答:R0←30H,(R0)=30HA←((R0)),(A)=40HR1←(A),(R1)=40HB←((R1)),(B)=10H(R1)←(P1),((R1))=(40H)=EFHP2←(P1),(P2)=EFH 10H←20H,(10H)=20H30H←(10H),(30H)=20H结果:(R0)=30H,(A)=40H,(R1)=40H,(B)=10H,(40H)=EFH,(P2)=EFH,(10H)=20H,(30H)=20H3-11解答:(1)由于在工作寄存器与工作寄存器之间不能直接传送数据,所以需要借助累加器A。MOVA,R1MOVR0,A(2)片外RAM向片内RAM传送数据,不能直接进行,需要借助累加器A。由于片外RAM是60H单元,地址小于FFH,所以间址寄存器使用Ri即可。MOVR1,#60HMOVXA,@R1MOVR0,A(3)MOVR1,#60HMOVXA,@R1MOV40H,A(4)片外数据不能直接送入片外单元,需要先将片外数据读入累加器,然后再送到片外。MOVDPTR,#1000HMOVXA,@DPTRMOVR1,#40HMOVX@R1,A(5)ROM中的数据需要使用查表指令才能读出来,所以此题不能使用一般的传送指令从ROM中读数据。 MOVDPTR,#2000HMOVA,#00HMOVCA,@A+DPTRMOVR2,A(6)MOVDPTR,#2000HMOVA,#00HMOVCA,@A+DPTRMOV40H,A(7)MOVDPTR,#2000HMOVA,#00HMOVCA,@A+DPTRMOVDPTR,#0200HMOVX@DPTR,A3-12解答:片外RAM与片内RAM之间的数据传送不能直接进行,需要借助累加器A。数据交换需要使用数据交换指令XCH。MOVDPTR,#1000HMOVXA,@DPTRXCHA,60HMOVX@DPTR,A3-13解答:本题需要采用查表指令。ORG0200HMOVDPTR,#TAB MOVA,R7MOVCA,@A+DPTRORG0300HTAB:DB0,1,4,9,16,25,36,49,64,813-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)=01H3-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。CLRCMOVA,#56HSUBBA,#78HMOVR0,AMOVA,#23HSUBBA,#45HMOVR1,A3-17解答:A←(A)∧23H,(A)=03H42H←(42H)∨(A),(42H?103f?37HA←(A)⊕((R0)),(A)=34HA←(A),(A)=CBH结果:(A)=CBH3-18解答:(1)MOVDPTR,#1000HMOVXA,@DPTRCPLAMOVX@DPTR,A(2)MOVR0,#60HMOVXA,@R0 ANLA,#3FHXRLA,#03HMOVX@R0,A3-19解答:DAA指令的作用是对A中刚进行的两个BCD码的加法结果进行修正,即继续使BCD码加法运算的结果保持为BCD码。使用时,DAA指令只能使用在加法指令后,即ADD指令和ADDC指令。3-20解答:MOVDPTR,#1000HMOVXA,@DPTRMOVB,#10MULABMOV30H,AMOV31H,BMOVDPTR,#2000HMOVXA,@DPTRMOVB,#32MULABADDA,30HMOV30H,AMOVA,BADDCA,31HMOV31H,A3-21解答:MOVR7,#10 MOVDPTR,#block1MOVR0,#block2LOOP:MOVXA,@DPTRMOV@R0,AINCDPTRINCR0DJNZR7,LOOP3-22解答:MOVA,#01HLOOP:MOVP0,ARLALCALLDELAYSJMPLOOPDELAY:MOVR7,#00HDELAY1:MOVR6,#00HDJNZR6,$DJNZR7,DELAY1RET3-23解答:ORLC,11HMOV11H,CMOVC,P1.0ORLC,10HANLC,11HMOVP1.0,C3-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解答:ANLA,BORLA,CMOVF,C3-26解答:指令LJMPaddr16是长转移指令,指令中提供了16位目的地址,寻址范围是64KB。指令AJMPaddr11是绝对转移指令,指令中11位目的地址,其中a7~a0在第二字节,a10~a8则占据第一字节的高3位,寻址范围是与PC当前值(本指令所在地址+本条指令所占用的字节数2)在同一个2K的区域内。 3-27解答:(1)MOVP1,#0CAH;P1←CAH,P1=CAH=11001010BMOVA,#56H;A←56H,A=56H=01010110BJBP1.2,L1;若P1.2=1,则转移至L1JNBACC.3,L2;若ACC.3=0,则转移至L2…L1:…L2:…执行完本段程序后将转移至L2,因为P1.2=0,ACC.3=0,所以转至L2。(2)MOVA,#43H;A←43H,A=43H=01000011BJBACC.2,L1;若ACC.2=1,则转移至L1JBCACC.6,L2;若ACC.6=1,则转移至L2,同时将ACC.6清零…L1:…L2:…执行完本段程序后将转移至L2,因为ACC.2=0,ACC.6=1,所以转至L2,并且将ACC.6清零。3-28解答:(1)MOVA,P1CPLAANLA,#0F0HSWAPAMOVP1,A(2):LOOP:JNBP1.4,L1; JNBP1.5,L2;JNBP1.6,L3;JNBP1.7,L4;LJMPLOOP;L1:MOVP1,#01H;LJMPLOOP;L2:MOVP1,#02H;LJMPLOOP;L3:MOVP1,#03H;LJMPLOOP;L4:MOVP1,#04H;LJMPLOOP;第4章汇编语言程序设计4-1解答:ORG0100HMOVA,21HADDA,23HMOV25H,AMOVA,20HADDCA,22HMOV24H,ARET4-2解答:ORG0200HMOVA,51H MOVB,#20MULABMOV53H,AMOV52H,BMOVA,50HMOVB,#3MULABADDA,53HMOV53H,AMOVA,BADDCA,52HMOV52H,ARET4-3解答:ORG0300HMOVA,DATACJNEA,#20,LOP1LOP1:JCLOP3CJNEA,#50,LOP2LOP2:JCLOP4MOVB,#1LJMPLOP5LOP3:MOVB,#2LJMPLOP5LOP4:MOVB,#5LOP5:MULAB MOVFUNC,ARET4-4解答:ORG0400HMOVA,mun+1JNBACC.7,LOOPCLRCMOVA,numSUBBA,#01HCPLAMOVnum,AMOVA,#num+1X→A暂存A<20?A<50?2→B5→B1→BA×B→AA→FUNC保存结果开始返回YNY N题图4-1习题4-3流程图103fSUBBA,#00HCPLAMOVnum+1,ALOOP:RET4-5解答:ORG0500HMOVDPTR,#JPTABMOVA,R2RLAJMP@A+DPTRJPTAB:AJMPKEY0AJMPKEY1AJMPKEY2……AJMPKEY15KEY0:…KEY1:…KEY2:………KEY15:…4-6解答:ORG0600H MOVR0,#40HMOVDPTR,#2000HMOVR7,#21HLOOP:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,LOOPRET4-7解答:ORG0700HMOVDPTR,#DATAMOVR7,#10LOOP:MOVXA,@DPTRORLA,#80HMOVX@DPTR,AINCDPTRDJNZR7,LOOPRET4-8解答:ORG0800HMOVDPTR,#3000HMOVR0,#30HMOVR7,#7LOOP:MOVXA,@DPTRMOV@R0,AINCDPTR INCDPTRINCR0DJNZR7,LOOPRET4-9解答:ORG0900HMOVDPTR,#1000HMOVR1,#30HMOVR7,#31HLOOP:MOVXA,@DPTRMOV@R1,ACLRAMOVX@DPTR,AINCDPTRINCR1DJNZR7,LOOPRET4-10解答:ORG0A00HMOVR1,#DAT1MOVDPTR,#DAT2MOVR6,#10HLOOP1:MOVA,@R1CJNEA,#0DH,LOOP2LJMPLOOP3 LOOP2:MOVX@DPTR,AINCR1INCDPTRDJNZR6,LOOP1LOOP3:RET4-11解答:ORG0B00HMOVDPTR,#3000HMOVR7,#100MOVone,#00HMOVtwo,#00HMOVthree,#00HLOP1:MOVXA,@DPTRJZLOP2JNBACC.7,LOP3INCthreeLJMPLOP4LOP2:INCtwoLJMPLOP4LOP3:INConeLOP4:INCDPTRDJNZR7,LOP1RET4-12解答:ORG0C00HMOVR0,#50HMOVA,#00H MOVR7,#10LOP:ADDA,@R0INCR0DJNZR7,LOPMOVB,#10DIVABMOV5AH,ARET4-13解答:ORG0D00HMOVR0,#40HMOVA,@R0MOVR7,#47LOOP:INCR0MOV30H,@R0CJNEA,30H,CHKCHK:JCLOOP1MOVA,@R0LOOP1:DJNZR7,LOOPMOVMIN,ARET4-14解答:ORG0E00HSTART:MOVR0,#40HMOVR7,#19 CLR00HLOOP:MOVA,@R0MOV30H,AINCR0MOV31H,@R0CLRCSUBBA,@R0JNCNEXTMOV@R0,30HDECR0MOV@R0,31HINCR0SETB00HNEXT:DJNZR7,LOOPJB00H,STARTMOVR0,#40HMOVDPTR,#2000HMOVR7,#20LOP1:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,LOP1RET4-15解答:ORG0F00H MOVDPTR,#2000HMOVR7,#100LOOP1:MOVXA,@DPTRCJNEA,#44H,LOOP2MOV30H,DPLMOV31H,DPHMOVDPTR,#20A0HMOVA,30HMOVX@DPTR,AINCDPTRMOVA,31HMOVX@DPTR,ALJMPLOOP3LOOP2:INCDPTRDJNZR7,LOOP1LOOP3:RET4-16解答:ORG1000HMOVR0,#30HMOVR1,#50HMOVR7,#20LOP1:MOVA,@R0CJNEA,#0AH,LOP2LOP2:JNCLOP3ADDA,#30H LJMPLOP4LOP3:ADDA,#37HLOP4:MOV@R1,AINCR0INCR1DJNZR7,LOP1RET4-17解答:ORG1100HMOVR0,#40HMOVR1,#60HMOVR7,#NLOP1:MOVA,@R0CJNEA,#41H,LOP2LOP2:JNCLOP3CLRCSUBBA,#30HLJMPLOP4LOP3:CLRCSUBBA,#37HLOP4:MOV@R1,AINCR0INCR1DJNZR7,LOP1RET4-18解答:ORG1200H MOVDPTR,#2000HMOVR0,#30HMOVR7,#5LOP1:MOVXA,@DPTRANLA,#0FHADDA,#30HMOV@R0,AINCR0MOVXA,@DPTRANLA,#0F0HSWAPAADDA,#30HMOV@R0,AINCR0INCDPTRDJNZR7,LOP1MOVDPTR,#2005HMOVR0,#30HMOVR7,#10LOP2:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,LOP2RET4-19解答: ORG1300HMOV103fDPTR,#2000HMOVR0,#30HMOVR7,#10LOP1:MOVXA,@DPTRCLRCSUBBA,#30HMOV@R0,AINCDPTRMOVXA,@DPTRCLRCSUBBA,#30HSWAPAORLA,@R0MOV@R0,AINCDPTRINCR0DJNZR7,LOP1MOVDPTR,#3000HMOVR0,#30HMOVR7,#10LOP2:MOVA,@R0MOVX@DPTR,AINCR0INCDPTR DJNZR7,LOP2RET4-20解答:ORG1400HMOVA,40HMOVB,AMULABMOV31H,AMOVA,30HMOVB,AMULABCLRCSUBBA,31HMOV30H,ARET4-21解答:ORG1500HMOVA,#80HLOOP:MOVP1,ALCALLDELRRASJMPLOOPDEL:MOVR7,#100DEL1:MOVR6,#198DJNZR6,$DJNZR7,DEL1RET 4-22解答:ORG1600HMOVA,#55HLOOP:MOVP1,ALCALLDELRLASJMPLOOPDEL:MOVR7,#250DEL1:MOVR6,#198DJNZR6,$DJNZR7,DEL1RET第5章定时/计数器5-1解答:51系列单片机的内部设有两个定时/计数器。分别有两种工作方式:定时器方式和计数器方式。由TMOD(定时器模式控制寄存器)中的控制位T/C进行选择。定时器方式的脉冲来自于内部时钟脉冲,每个机器周期是计数器的值增1;计数器方式的脉冲来自于外部输入引脚T0(P3.4)或T1(P3.5)。5-2解答:51系列单片机的定时/计数器有四种工作模式。分别由TMOD中的M1和M0进行选择。特点如下:M1 M0特点00模式0。TLX中低5位与THX中的8位构成13位计数器。计满溢出时,13位计数器回零。01模式1。TLX与THX构成16位计数器。计满溢出时,16位计数器回零。10模式2。8位自动重装载的定时/计数器,每当计数器TLX溢出时,THX中的内容重新装载到TLX中。1.模式3。对定时器0,分成2个8位计数器,对于定时器1,停止计数。15-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、GATE、TR0、0INT和TF0。它既可以按照计数方式工作,也可以按照定时方式工作。而TH0被规定只可用作定时器方式,借用了T1的控制位TR1和TF1。5-5解答:(TMOD)=27H=00100111B此时,T1工作于模式2,定时方式(即波特率发生器方式)。T1工作于模式3,TL0和TH0同为计数方式。5-6解答:单片机系统复位后(TMOD)=00H,即T0工作在模式0,使用的是TL0的低5位和TH0构成13位定时/计数器,由于(TH0)=06H,(TL0)=00H,所以定时的初值为:X=0000011000000B=192假设系统晶振频率为6MHz,机器周期T=2μs,则定时时间为:定时值=(M-X)T=(213-192)×2μs=16000μs=16ms5-7解答:ORG0000HLJMPSTARTORG0200HSTART:MOVTMOD,#20HMOVTL1,#231SETBTR1 LOOP:SETBP1.2MOVTH1,#81LOP1:JBCTF1,LOP2SJMPLOP1LOP2:CLRP1.2MOVTH1,#231LOP3:JBCTF1,LOOPSJMPLOP3END5-8解答:ORG0000HLJMPSTARTORG0300HSTART:MOVTMOD,#51HLOOP:CLRTR0MOVTL1,#18HMOVTH1,#0E0HSETBTR1LOP1:JBCTF1,LOP2SJMPLOP1LOP2:CLRTR1MOVTL0,#18HMOVTH0,#0E0HSETBTR0LOP3:JBCTF0,LOOPSJMPLOP3 END5-9解答:TF0为定时/计数器T0的溢出标志位。TF1为定时/计数器T1的溢出标志位。TF2为定时/计数器T2的溢出中断标志位。EXF2为定时/计数器T2的外部触发中断标志位。当定时/计数器T0或T1溢出时TF0或TF1由硬件置1,使用查询方式时,此位做状态位供查询,查询有效后需由软件清零;使用中断方式时,此位做中断申请标志位,进入中断服务后被硬件自动清零。当定时/计数器T2计数溢出或外部触发时,TF2或EXF2置1,并申请中断,但该两位只能靠软件清除。5-10解答:RCLK为接收时钟选择位,靠软件置位或清除,用以选择定时/计数器2或1做串行口接收波特率发生器。TCLK为发送时钟选择位,靠软件置位或清除,用以选择定时/计数器2或1做串行口发送波特率发生器。如果两者都被清零,则T2工作在定时/计数器方式。此时当2T/C=0时,TH2和TL2计的?103f腔髦?期数,做定时器使用;当2 T/C=1时,计数脉冲来自T2(P1.0)引脚,TH2和TL2做外部信号脉冲计数用。5-11解答:52系列单片机的T0、T1和T2对外来脉冲进行计数时,T0的外来脉冲引入引脚为P3.4;T1的外来脉冲引入引脚为P3.5;T2的外来脉冲引入引脚为P1.0。5-12解答:2RL/CP为捕获或重装载标志,由软件设置或清除。当2RL/CP=1时选择捕获功能,这时若EXEN2=1,且T2EX端的信号负跳变时,发生捕获操作,即把TH2和TL2的内容传递给RCAP2H和RCAP2L;当2RL/CP=0时,选择重装载功能,这时若定时器2溢出,或在EXEN2=1条件下T2EX端信号有负跳变,都会造成自动重装载操作,即把RCAP2H和RCAP2L的内容传送给TH2和TL2。5-13解答:初值=65536-fose/(波特率×2×16)=65536-(11.0592×106)/(19200×2×16)=65536-18=65518=FFEEH即T2的重复装载常数为:TH2=0FFH,TL2=0EEH第6章串行接口6.1解答:计算机与外界信息交换的基本方式可分为并行通信与串行通信:并行通信是数据的各位同时传送, 并行通信的特点是传送速度快,但不适用长距离传输;串行通信是数据的各位依次逐位传送,串行通信的特点是传送速度较慢,但传输距离较长。并行通信适合近距离的CPU之间或设备之间快速进行数据交换;串行通信适合长距离的CPU之间或设备之间进行数据交换,或近距离的慢速数据交换。6.2解答:①异步通信依靠起始位、停止位、保持通信同步。②特点是数据在线路上的传送不连续,传送时,字符间隔不固定,各个字符可以是连续传送,也可以间断传送,这完全取决于通信协议或约定。③串行异步通信的数据帧格式如图6-1:一位起始位“0”电平;其后是5位、6位、7位或8位数据位,低位在前,高位在后;后面是一位奇偶校验位;最后是停止位“1”电平。图6-1异步通信的数据帧格式6.3解答:串行通信有3种数据传送形式单工方式:数据传送是单向的。半双工方式:数据传送是双向的,在同一时间只能做一个方向的传送。全双工方式:数据传送是双向的,即可同时发送,又可同时接收。 ABA单工方式ABb半双工方式ABC全双工方式图6-2串行通信数据传送3种形式6.4解答:波特率表示每秒传输的二进制数据位数。Fb=11×250=2750其波特率应为2750bps。6.5解答:MCS-51单片机串行口有4种工作模式,由串行控制寄存器SCON中的SM0、SM1两位组合来确定。模式0是同步位移寄存器方式,用于I/O口的串、并转换。模式1是8位异步通信方式,桢格式10位,波特率可变,用于双机通信。模式2是9位异步通信方式,桢格式11位,波特率固定,用于多机通信。模式3是9位异步通信方式,桢格式11位,波特率可变,用于多机远距离通信。模式1、2、3的区别主要表现在桢格式和波特率两个方面。6.6解答:模式0的波特率固定:fosc/12模式2的波特率固定:fosc/n(n=64或32) 模式1、3的波特率可变:T1溢出率/n(n=32或16)起始位0D1D1.34567奇偶校验位停止位6.7解答:定时器T1模式2是自动装载初值模式,波特率精度高。若已知系统晶振频率、通信选用的波特率,其初值波特率*384)1mod(256+?=sfxosc6.8解答:MCS-51单片机串行口的模式0是同步位移寄存器方式,用于I/O口的串、并转换。扩展并行I/O 口时,需要对串行控制寄存器SCON进行初始化设置;串行口需外接移位寄存器,串行口的TXD端作为同步时钟端,RXD作为串行数据的I/O端。6.9解答:多机通信时,主机发送的信息可传送到各个从机,而各从机发送的信息只能被主机接收,利用SCON中的TB8/RB8和SM2可实现多机通信。多机通信过程:①所有从机在初始化时置SM2=1,都处于只能接收主机发送的地址桢(RB8=1)。②主机发送地址桢(TB8=1),指出接收从机的地址。③所有从机接收到主机发送的地址桢后,与自身地址相比较,相同则置SM2=0;相异则保持SM2=1不变。④主机发送数据桢(TB8=0),由于指定的从机已将SM2=0,能接收主机发送的数据桢,而其它从机仍置SM2=1,对主机发送的数据桢不予理睬。⑤被寻址的从机与主机通信完毕,重置SM2=1,恢复初始状态。6.10解答:串行口工作在模式2,确定SMOD=1。未规定波特率,定时器初值任取,但两机要保持一致。甲机发送子程序:TXDA:MOVTMOD,#20H;置T1定时器工作方式2MOVTL1,#0FDH;置初值MOVTH1,#0FDH;置初值 SETBTR1;启动T1MOVSCON,#90H;置串口方式2,允许接收,且SM2=0MOVPCON,#80H;置SMOD=1(SMOD不能位操作)CLRES;禁止串行中断MOVDPTR,#2200H;指发103f送数据区首地址MOVR2,#51H;指发送数据长度TRSA:MOVXA,@DPTR;读一个数据MOVC,PMOVTB8,C;置校验位MOVSBUF,A;发送JNBTI,$;等待一桢数据发送完毕CLRTI;清发送中断标志INCDPTR;指向下一字节单元DJNZR2,TRSA;判数据发完否?未完继续RET;乙机接收子程序:RXDB:MOVTMOD,#20H;置T1定时器工作方式2MOVTL1,#0FDH;置初值MOVTH1,#0FDH;置初值SETBTR1;启动T1MOVSCON,#90H;置串行方式2,允许接收,且SM2=0 MOVPCON,#80H;置SMOD=1(SMOD不能位操作)CLRES;禁止串行中断MOVDPTR,#1400H;置接收数据区首地址MOVR2,#51H;置接收数据长度SETBREN;启动接收SETBF0;先置出错标志F0为1。RDSB:JNBRI,$;等待一桢数据接收完毕CLRRI;清接收中断标志MOVA,SBUF;读接收数据MOVX@DPTR,A;存接收数据MOVC,RB8ANLC,PJCRDSB2;都是1,则正确MOVC,RB8ORLC,PJNCRDSB2;都是0,则正确LJMPRXDBD;出错RDSB2:INCDPTR;指向下一数据存储单元DJNZR2,RDSB;判数据接收完否?未完继续CLRF0;正确接收,则清除出错标志F0RXDBD:RET;第7章中断系统 7.1解答:①MCS-51系统有0INT、T0、1INT、T1和串行口共五个中断源;②0INT和1INT的中断标志是IE0和IE1,在电平方式下,当外部中断输入信号是低电平时,由硬件置1;在边沿方式下,当外部中断输入信号是下降沿时,由硬件置1;定时计数器溢出中断T0和T1的中断标志位是TF0和TF1,当定时/计数器产生溢出时,该位由硬件置1;串行口中断标志是TI或RI,当单片机接收到或发送完一帧数据后,由硬件置1。③外部中断0INT和1INT的电平方式,无法清除,需采取硬件和软件相结合的方法来清除;边沿方式,在CPU响应中断后自动清除;定时/计数器0和1的溢出中断,在CPU响应中断后自动清除;串行口中断(包括串行接收中断RI和串行发送中断TI),由软件清零。④0INT、T0、1INT、T1和串行口中断5个中断源分别对应的中断入口地址是:0003H、000BH、0013H、001BH、0023H。7.2解答:MCS-51的中断系统有两个中断优先级:高优先级和低优先级。中断优先级的控制方式是:①高优先级中断可以中断正在响应的低优先级中断,反之则不能。 ②优先级中断不能互相中断。即某个中断(不论是高优先级或低优先级)一旦得到响应,与其同级的中断就不能再中断它。③同一中断优先级中优先权由高到低的次序是0INT、T0、1INT、T1和串行口中断,若有多个中断源同时请求中断,CPU将先响应优先权高的中断,后响应优先权低的中断。通过中断优先级控制寄存器IP可以选择5个中断源的优先级别7.3解答:①MCS-51有IE0、TF0、IE1、TF1、TI和RI共6个中断标志位。②相同之处是这些中断标志位都是由硬件自动产生的,不同之处是外部中断和计数/定时器中断标志的清零是由硬件自动完成的,而串行口中断标志(TI、RI)不会自动清除,必须由用户在串行中断服务程序中用指令对TI或RI清0。7.4解答:MOVIE,#10010110B;T0、1INT、串行口允许中断MOVIP,#00010100B;1INT和串行口中断为高优先级CLRIT1;1INT电平触发方式7.5解答:(1)置定时/计数器为工作模式2,且为计数方式,即8位的自动装载方式; (2)定时/计数器的高8位和低8位初值都预置0FFH;(3)将定时/计数器的计数输入端(P3.3、P3.4)作为扩展的外部中断请求输入;(4)在相应的中断服务程序入口开始存放外中断服务的中断服务程序。7.6解答:保护断点是调用子程序或中断程序之前,将主程序的当前位置(PC值)压入堆栈当中。不需要软件处理,硬件自动完成。保护现场是保护在子程序和中断服务程序中可能与主程序发生冲突的累加器、PSW寄存器以及其它一些寄存器,是把断点处有关寄存器的内容压入堆栈进行保护,需要软件完成。7.7解答:中断由IE寄存器控制,开中?103f鲜侵窱E寄存器中对应的控制位置1;关中断是指IE寄存器中对应的控制位置0。7.8解答:①主机频率6MHz,定时器最大定时130ms左右,取100ms为定时时间单位,高电平包含6个单位,低电平包含4个单位,共10个单位。选用定时器T0模式1,初值:HCBx0315536210100655363==×?= P1.7驱动发光二极管,R7作时间单位计数器。电路如图7-1。电路中7404是反向器,P1.7输出高电平,灯不亮。②编程:ORG0000H;复位地址LJMPSTAT;转初始化程序400ms600ms图7-1P1.7驱动发光二极管电路D17404VDLEDR5008051P1.7P1.7ORG000BH;T0中断服务程序LJMPPT0;转T0中断服务程序 ORG1000H;初始化程序首地址STAT:CLRP1.7;输出低电平MOVTMOD,#01H;置T0定时器方式1MOVTH0,#3CH;置T0初值,定时100msMOVTL0,#0B0H;置T0初值,定时100msSETBTR0,;T0启动MOVR7,#10;计数器置初值MOVIE,#10000010B;T0开中LJMP$;等待中断PT0:CJNER7,#10,PT02SETBP1.7;计数器值10~5时,灯灭LJMPPT04PT02:CJNER7,#4,PT04CLRP1.7;计数器值4~1时,灯亮PT04:DJNZR7,PT0DMOVR7,#10;计数器置初值PT0D:RETI;中断返回7.9解答:由于未规定波特率,A、B机保持一致则可。取串行口工作在模式2,SMOD=1。A机发送子程序:TXDA:MOVTMOD,#20H;置T1定时器工作方式2MOVSCON,#40H;置串行方式1,禁止接收 MOVPCON,#80H;置SMOD=1(SMOD不能位操作)CLRES;禁止串行中断MOVR0,#40H;置发送数据区首地址MOVR2,#20H;置发送数据长度TRSA:MOVA,@R0;读一个数据MOVC,PMOVTB8,C;置校验位MOVSBUF,A;发送JNBTI,$;等待一桢数据发送完毕CLRTI;清发送中断标志INCR0;指向下一字节单元DJNZR2,TRSA;判数据发完否?未完继续RET;B机接收子程序:RXDB:MOVTMOD,#20H;置T1定时器工作方式2MOVSCON,#40H;置串行方式1,禁止接收SM2=0MOVPCON,#80H;置SMOD=1(SMOD不能位操作)CLRES;禁止串行中断MOVR0,#60H;置接收数据区首地址MOVR2,#20H;置接收数据长度SETBREN;启动接收SETBF0;先置出错标志F0为1。 RDSB:JNBRI,$;等待一桢数据接收完毕CLRRI;清接收中断标志MOVA,SBUF;读接收数据MOV@R0,A;存接收数据MOVC,RB8ANLC,PJCRDSB2;都是1,则正确MOVC,RB8ORLC,PJNCRDSB2;都是0,则正确LJMPRXDBD;出错RDSB2:INCR0;指向下一数据存储单元DJNZR2,RDSB;判数据接收完否?未完继续CLRF0;正确接收,则清除出错标志F0RXDBD:RET;第8章MCS-51单片机的系统扩展8.1解答:程序存储器和数据存储器虽然共用16位地址线和8位数据线,但数据存储器的读和写由RD和WR信号控制,程序存储器由读选通信号PSEN控制,两者虽然共处同一地址空间,但由于控制信号不同,故不会发生总线冲突。8.2解答: MCS-51单片机的寻址范围是64KB,既0000H~FFFFH;8031单片机可以配置的存储器最大容量:程序存储器64KB;片外数据存储器64KB;用户可以使用的最大容量是:64KBROM、64KBRAM、128B片内RAM及SFR。8.3解答:单片机外扩存储器时,P0口要外接锁存器,是因为P0口是分时提供低8位地址和数据信息的,为避免低8位地址信息丢失,所以P0口要外接锁存器;而P2口103f不具备分时、复用功能,所以不用外接锁存器。8.4解答:程序存储器和数据存储器的扩展相同点是:由P2口提供高8位地址,P0口分时提供低8位地址和8位双向数据线。程序存储器和数据存储器的扩展不相同点是:数据存储器的读和写由CPU的RD和WR信号控制,地址空间任意选取;程序存储器读选信号由CPU的PSEN控制,程序空间从0000H开始。8031与2732、6116连接的电路图如图8-1。8.5解答:8031单片机与两片2732AEPROM芯片连接如图8-28.6解答:静态RAM6116的 容量是2KB,选用2片6116可满足扩展要求,8031单片机与2片6116芯片连接如图8-3。图8-38031与两片6116的连接图8.7解答:由于题中没有片选要求,所以取P2.7作片选。扩展I/O口作普通输入、输出。这里随机定义为A、B口输出、C 口输入。控制字为00000011B(03H)8031与8155连接的硬件电路图如图8-4。图8-4p101p112p123p134p145p156p167p178RST9 P30/RXD10P31/TXD11P32/INT012P33/INT113P34/T014P35/T115P36/WR16P37/RD17X218X119GND20P2021P2122P22 23P2324P2425P2526P2627P2728/PSEN29ALE30/EA31P0732P0633P0534P0435P0336 P0237P0138P0039VCC40D18031AD012AD113AD214AD315AD416AD517AD618AD719PA0 21PA122PA223PA324PA425PA526PA627PA728PB029PB130PB231PB332PB433PB534 PB635PB736PC037PC138PC239PC31PC42PC55TMRIN3RST4IO/M7CE8RD9WR 10ALE11TMROUT6GND23VCC24D28155VCCVCC图8-28031单片机与两片2732连接的电路图OC1C111D31Q22D42Q53D73Q 64D84Q95D135Q126D146Q157D177Q168D188Q19D2SN74LS373p101p112 p123p134p145p156p167p178RST9P30/RXD10P31/TXD11P32/INT012P33/INT113P34/T014P35/T115P36/WR 16P37/RD17X218X119GND20P2021P2122P2223P2324P2425P2526P2627P2728/PSEN29 ALE30/EA31P0732P0633P0534P0435P0336P0237P0138P0039VCC40D18031D7D6D5D4 D3D2D1D0A10A9A8VCCGNDA08A17A26A35A44A53A62A71A823A9 22A1021A1119OE20CE18DQ19DQ210DQ311DQ413DQ514DQ615DQ716DQ817D42732 A11A08A17A26A35A44A53A62A71A823A922A1021A1119OE20 CE18DQ19DQ210DQ311DQ413DQ514DQ615DQ716DQ817D32732D57404图8-18031与2732、6116的电路图A71A62 A53A44A35A26A17A08D09D110D211D313D414D515D616D7 17A1019A922A823/OE20/WE21/CE18D36116OC1C111D31Q22D42Q5 3D73Q64D84Q95D135Q126D146Q157D177Q168D188Q19D2SN74LS373p10 1p112p123p134p145p156p167p178RST9P30/RXD10P31/TXD11P32/INT012P33/INT113P34/T014 P35/T115P36/WR16P37/RD17X218X119GND20P2021P2122P2223P2324P2425P2526P2627P27 28/PSEN29ALE30/EA31P0732P0633P0534P0435P0336P0237P0138P0039VCC40D18031D7 D6D5D4D3D2D1D0A10A9A8A15VCCGNDA15A08A17A26A35A44A53A62 A71A823A922A1021A1119OE20CE103f18DQ19DQ210DQ311DQ413DQ514DQ615 DQ716DQ817D42732A11A71A62A53A44A35A26A17A08D09D110D2 11D313D414D515D616D717A1019A922A823/OE20/WE21/CE18D36116OC1 C111D31Q22D42Q53D73Q64D84Q95D135Q126D146Q157D 177Q168D188Q19D2SN74LS373p101p112p123p134p145p156p167p178RST9 P30/RXD10P31/TXD11P32/INT012P33/INT113P34/T014P35/T115P36/WR16P37/RD17X218X119GND20P2021P2122P22 23P2324P2425P2526P2627P2728/PSEN29ALE30/EA31P0732P0633P0534P0435P0336 P0237P0138P0039VCC40D18031D7D6D5D4D3D2D1D0A10A9A8A14A15VCCGNDWRA71A6 2A53A44A35A26A17A08D09D110D211D313D414D515D616 D717A1019A922A823/OE20/WE21/CE18D46116A14A15RD8031与8155连接的电路图初始化程序:MOVDPTR,#7FF8H;命令口地址MOVA,#03H;控制字MOVX@DPTR,A;控制字送入命令口8.8解答:分析可编程8255的工作状况可知:A口为普通输入,B口普通输出,C口未用,可定义成普通输入, 控制字为10011001B,即99H,编程如下:MOVDPTR,#8255命令口MOVA,#99HMOVX@DPTR,ALOOP:MOVDPTR,#8255A口MOVXA,@DPTRCPLAMOVDPTR,#8255B口MOVX@DPTR,ALJMPLOOP8.9解答:8155工作方式控制字的作用是使可编程的A口、B口、C口工作在需要的方式下以及控制定时器的启动和停止。各位的功能定义如图8-5所示。TM2TM1IEBIEAPC2PC1PBPA0:A口定义为输入方式。1:A口定义为输出方式0 :B口定义为输入方式。1:B口定义为输出方式00方式1:A、B口基本输入输出,C口输入方式01方式2:A、B 口基本输入输出,C口输出方式A口选通输入输出、B口基本输入输出方式PC0:AINTR,PC1:ABF,PC2:/ASTB10方式3PC(3 ~5):输出A口、B口都为选通输入输出PC0:AINTR,PC1:ABF,PC2:/ASTB11方式4PC3:BINTR, PC4:BBF,PC5:/BSTB00空操作,不影响定时/计数器操作01停止定时/计数器操作10若定时/计数器正在计数,长度减为1时停止计数启动,置定时/计数器方式和长度后立即启动, 11若正在计数,溢出后按新的方式和长度计数0:禁止A口中断1:允许A口中断0:禁止B口中断1:允许B口中断 图8-58155控制字8.10解答:设定时计数器的输入脉冲fin=500kHz,定时10mS(100次/秒),相当于进行5k分频,计数为1388H,工作在模式3(连续脉冲),初值为D388H。编程:8155初始化子程序STR8155:MOVDPTR,#7F84H;指向定时计数器低位寄存器MOVA,#88H;MOVX@DPTR,A;低位寄存器赋值INCDPTR;指向定时计数器高位寄存器MOVA,#0D3H;MOVX@DPTR,A;高位寄存器赋值(方式3)MOVDPTR,#7F80H;指向8155命令寄存器MOVA,#11001001B;A口选通输出,B口基本输入,C口作联络MOVX@DPTR,A;命令寄存器赋值,定时器立即启动RET8.11解答:设fosc=12MHz,定时计数器T0工作在模式2,定时时间为2504μs,中断40,000次达到10S,采用两个单元存放中断次数(40,000=200×200),定时器初值x=28-250=6。编程:ORG0000H;复位后入口地址LJMPSTR ORG000BH;T0中断入口地址LJMPPT0ORG0100H;主程序首地址STR:MOVSP,#50H;片内RAM50H单元开始设为堆栈区MOVTMOD,#02H;T0工作在模式2MOVTH0,#6;定时250uSMOVTL0,#6;定时250uSMOVIE,#82H;C103fPU开中断,T0开中断MOV33H,#06;计数器送初值MOV30H,#200;30H、31H中断计数40,000次MOV31H,#200;30H、31H中断计数40,000次MOVDPTR,#IOD;8255命令口MOVA,#80H;控制字MOVX@DPTR,A;控制字送到8255命令口SETBTR0;启动定时器MN:JNBF0,$;等待10S时间到CLRF0;清除标志MN2:MOVDPTR,#GLIST;工序对应输出表首地址MOVA,33H;计数器DECA;计数器-1=偏移量MOVCA,@A+DPTR;查表得到工序输出要求 MOVDPTR,#IOA;8255A口MOVX@DPTR,A;状态输出DJNZ33H,MN;下一个工序号MOV33H,#6;重新置工序号LJMPMN;等待下一工序时间GLIST:DB20H,10H,08H,04H,02H,01H;工序启、停控制PT0:DJNZ30H,PT0D;40,000次计数MOV30H,#200;40,000次计数DJNZ31H,PT0D;40,000次计数MOV31H,#200;40,000次计数SETBF0;10S时间到,标志F0=1PT0D:RETI;中断返回第9章MCS–51单片机的接口技术9.1解答:由于机械触点的弹性作用,键盘操作在闭合及断开瞬间均有抖动过程,会出现一系列负脉冲。抖动时间的长短,与开关的机械特性有关,一般为5~10ms。通常去抖动影响的措施有硬件和软件两种。①采用硬件去除抖动影响的方法是:加入RC滤波或D触发器电路。②采用软件去除抖动影响可节省硬件开销。方法是:检测到有键按下时,执行一个10ms的延时程序后,再确认该键是否按下。9.2解答: 键盘的工作方式一般有编程扫描方式和中断扫描方式两种。编程扫描方式是利用CPU在完成其他工作的空余,调用键盘扫描子程序,来响应按键输入要求。这种方式不管键盘上有无键按下,CPU总要定时扫描键盘,因此CPU经常处于空扫描状态。中断扫描工作方式是当键盘上有键闭合时产生中断请求,CPU响应中断请求后,转去执行中断服务程序,在中断服务程序中判别键盘上闭合键的键号,并作相应的处理。9.3解答:键盘的操作,无论是按键或键盘都是利用机械触点的合、断作用。通过机械触点的闭合、断开过程产生一个电压信号。由于机械触点的弹性作用,在闭合及断开瞬间均有抖动过程,抖动时间的长短,与开关的机械特性有关,一般为5~10ms。这样会出现一系列脉冲。为了保证CPU对键的一次闭合,仅作一次键输入处理,必须去除抖动影响。9.4解答:无论是LCD还是LED,其显示方式都有静态显示和动态显示两种显示方式。所谓静态显示,就是当显示器显示某一字符时,相应段的发光二极管恒定地导通或截止,并且显示器的各位可同时显示。静态显示时,较小的驱动电流就能得到较高的显示亮度。所谓动态显示就是一位一位地轮流点亮显示器的各个位(扫描),对于显示器的每一位而言,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。9.5解答: 设计数据采集系统时应考虑以下问题:①采样速度:在一个数据采集系统中,采样速度表示了采集系统的实时性能。采样速度由模拟信号带宽、数据通道数和每个周期的采样数决定。奈奎斯特采样定理是实现采样数据无损再现的必要条件。②孔径误差:由于从模拟信号到数字信号有一个过程,对于一个动态信号,在模/数转换器接通的孔径时间里,输入的模拟信号是不确定的,从而引起输出的不确定性误差。③系统通过率:系统的通过率由模拟多路选择器、输入放大器的稳定时间、采样/保持电路的采集时间以及A/D转换器的稳定和转换时间确定。④模/数转换精度:前向通道的总误差应小于等于A/D转换器的量化误差,否则选取高分辨率A/D转换器失去意义。9.6解答:A/D转换器的主要技术指标包括:①量化误差与分辨率:分辨率是以输出二进制位数或者BCD码位数表示。测量误差和分辨率是统一的,量化误差是由于A/D转换器的有限字长引起的。量化误差理论上为一个单位分辨率,即±1/2LSB。提高分辨率可减少量化误差。②转换精度:A/D转换器的转换精度反映了一个实际A/D转换器在量化值上与理想A/D转换器进行A/D转换的差值,可表示成绝对误差和相对误差。③转换时间与转换速率:A/D转换器完成一次A/D转换所需要的时间为A/D转换时间。通常A/D转 换速率是转换时间的倒数。目前A/D转换最快的是高速全并行式A/D转换器。④失调(零点)和增益温度系数:这两项指标都是表示A/D转换器受环境温度影响的程度,一般用每摄氏度温度变化所产生的相对误差作为指标,以ppm/℃为单位表示。⑤对电源电压变化的抑制比:A/D转换器对电源电压的抑制比(PSRR)用改变电源电压使数据发生±1LSB变化时所对应的电源电压变化范围来表示。9.7解答:在确定A/D转换器时,应遵循下述原则:①根据前向通道的总误差,选择A/D转换器的精度和分辨率。②根据信号的变化率及转换精度要求,确定A/D转换速度,103f以保证系统的实时性要求。为减少孔径误差,若对变化速度非常快的信号进行A/D转换,可考虑加入采样/保持电路。③根据环境条件来选择A/D转换器的些环境参数要求,如工作温度、功耗、可靠性等级等性能。④根据计算机接口特征,考虑选择A/D转换器的输出形式。例如,A/D转换器是并行输出还是串行输出,是二进制码还是BCD码;是用外部时钟、内部时钟还是不用时钟;有无转换结束状态标志;与TTL、CMOS及ECL电路的兼容性等等。⑤还要考虑到芯片的成本、货源、是否是主流芯片等诸因素。9.8解答:①MC14433主要特点:MC14433是单通道廉价型3(1/2)双积分A/D转换器,抗干扰性好,精度较 高,但速度慢,转换速度约1~10次/秒,适合在一些非快速过程的前向通道中应用。②ADC0809主要特点:8通道8位分辨率;由外部加入参考电源及转换时钟源,当时钟fc=640kHz时,典型转换时间100μs,是中速廉价型产品。适合多路信号输入、精度和速度要求不高的场合。③MAX197主要特点:8通道12位分辨率;电压5.0V,并行接口;转换时间6,内置参考电源及转换时钟源;可编程自动通道扫描。测量范围0~5V,可选择单极性输入和双极性输入。适合多路信号输入、精度要求高、速度较快的场合,尤其是双极性信号,电路简单。④TLV2548主要特点:8通道12位分辨率;电压2.7-5.0V,低电流、低功耗,SPI串行接口;转换时间4μs,内置参考电源、8个12位结果缓冲区及转换时钟源;可编程自动通道扫描。适合多路信号输入、精度要求高、转换速度快的场合。9.9解答:MAX197是8通道12位分辨率、并行接口的A/D转换器;模拟信号电压量程为多种,适合多路信号输入、精度要求高、速度快且并行接口的场合,MAX197与单片机是采用并行接口方式连接,其硬件电路比串行接口复杂。TLV2548是8通道12位分辨率、串行接口的A/D转换器;模拟信号电压为0~5V,适合多路信号输入、精度要求高、速度要求高且串行接口的场合,由于TLV2548与单片机是以串行接口方式连接,使其 硬件电路简单。9.10解答:当模拟信号电压为0~1.999V或0~199.9mV,只有一路模拟信号输入,并且对A/D转换精度要求高,对转换速度无要求的场合下,可选择低速、廉价型3(1/2)双积分A/D转换器MC14433;当模拟信号电压为0~5V,有多路模拟信号输入,并且对A/D转换精度和速度要求不高的场合下,可选择ADC0809。9.11解答:当有多路模拟信号输入,模拟信号电压为0~5V,并且要求较高的转换精度和极快的转换速度的场合下,可选择TLV2548。当有多路模拟信号输入,模拟信号电压量程为多种,可以为±5V,±10V,0~5V,0~10V,并且要求较高的转换精度和极快的转换速度的场合下,可选择MAX197。9.12解答:D/A转换器的选择原则包括:D/A转换器的主要性能指标和结构特性①D/A转换器的主要性能指标D/A转换器的主要性能指标有:静态指标,包括各项精度指标和动态指标;增益温度系数;转换精度和转换时间。其中转换精度和转换时间是用户首要考虑的。②D/A转换器结构特性主要表现为芯片内部的配置情况,主要有:数字输入特性中的接收数码制、数据格式、逻辑电平等; 模拟输出特性中的参考电压、参考电阻、满码输出,以及最大输出短路电流和输出电压范围;锁存特性及转换特性;影响输出电压的参考源。这些会给接口设计带来很大的影响。9.13解答:①分辨率:当输入数字发生单位数码变化时,即LSB位产生一次变化时,所对应的输出模拟量(电压或电流)的变化量。②量程和实际满量程:标称满量程(NFS)是指相应于数字量标称值2n的模拟输出量。但实际数字量最大为2n–1,要比标称值小一个LSB,因此实际满量程(AFS)要比标称满量程(NFS)小一个LSB的增量。③精度:D/A转换器的转换精度与D/A转换芯片的结构和接口配置的电路有关。一般说来,不考虑其D/A转换误差时,D/A转换器的转换精度即为其分辨率的大小。但D/A转换器的转换精度还与外电路的配置有关,当外电路的器件或电源有较大的误差时,会造成较大的D/A转化误差。④建立时间(ts):输入数字量变化后模拟输出量稳定到相应数值范围内所需的时间。⑤尖峰:输入码发生变化时刻产生的瞬间误差。9.14解答:①DAC0832主要特点:DAC0832是廉价、中速、并行接口的D/A转换器;是单通道、8位、电流输出型,要获得电压输出,则需外接转换电路;内部无参考电源,需外接参考电源;双缓冲结构,可以实现多通道D/A转换的同步输出。 ②TLV5630主要特点:TLV5630是快速、SPI串行接口的D/A转换器;是8通道、12位、电压输出型;低电压供电2.7-5.0V,低功耗;内置参考电源,无需外接参考电源,使硬件电路简单。③MAX508主要特点:MAX508是快速、并行接口的D/A转换器;是单通道、12位、电压输出型;可以双电源供电,有3种输出供选择;内置参考电源,无需外接参考电源,使硬件电路简单。9.15解答:TLV5630和MAX508都是快速、高精度(12位)电压输出型的D/A转换器,内置参考电源,二者的区别是TLV5630215是8通道串行接口的D/A转换器;可以低电压供电2.7~5.0V,是低功耗产品。而MAX508是单通道并行接口的D/A转换器;可以双电源供电,有3种输出供选择。9.16解答:对D/A转换输出精度和速度要求不高的场合,可选择中速、廉价的DAC0832。如果对D/A转换输出精度要求高、速度快,且需要多种输出的场合,可选择MAX508。9.17解答:当只需一路模拟输出信号,并且对D/A转换输出精度和速度要求不高的场合,可选择中速、廉价的DAC0832。当需要多路模拟输出信号,低电压供电,并且要求较高的转换精度和极快的转换速度的场合,可选择TLV5630。4 0'