• 432.50 KB
  • 2022-04-29 14:05:34 发布

单片机原理及应用(姜志海第3版)习题参考答案.doc

  • 29页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《单片机原理及应用(第3版)》习题参考答案姜志海黄玉清刘连鑫编著电子工业出版社目录第1章概述2第2章MCS-51系列单片机硬件结构4第3章MCS-51系列单片机指令系统8第4章MCS-51系列单片机汇编语言程序设计11第5章MCS-51系列单片机硬件资源的应用15第6章MCS-51系列单片机并行扩展接口技术19第7章MCS-51系列单片机串行总线扩展技术23第8章单片机应用系统设计25第29页共29页m 第1章概述1.简述微型计算机的结构及各部分的作用微型计算机在硬件上由运算器、控制器、存储器、输入设备及输出设备五大部分组成。运算器是计算机处理信息的主要部分;控制器控制计算机各部件自动地、协调一致地工作;存储器是存放数据与程序的部件;输入设备用来输入数据与程序;输出设备将计算机的处理结果用数字、图形等形式表示出来。通常把运算器、控制器、存储器这三部分称为计算机的主机,而输入、输出设备则称为计算机的外部设备(简称外设)。由于运算器、控制器是计算机处理信息的关键部件,所以常将它们合称为中央处理单元CPU(CentralProcessUnit)。2.微处理器、微型计算机、微型计算机系统有什么联系与区别?微处理器是利用微电子技术将计算机的核心部件(运算器和控制器)集中做在一块集成电路上的一个独立芯片。它具有解释指令、执行指令和与外界交换数据的能力。其内部包括三部分:运算器、控制器、内部寄存器阵列(工作寄存器组)。微型计算机由CPU、存储器、输入/输出(I/O)接口电路构成,各部分芯片之间通过总线(Bus)连接。以微型计算机为主体,配上外部输入/输出设备、电源、系统软件一起构成应用系统,称为微型计算机系统。3.简述在微型计算机中的地址总线、数据总线和控制总线的作用。所谓总线,就是在微型计算机各芯片之间或芯片内部各部件之间传输信息的一组公共通信线。计算机元件级总线包括地址总线AB(AddressBus)、数据总线DB(DataBus)、控制总线CB(ControlBus)三种。(1)地址总线:地址总线是CPU用来向存储器或I/O接口传送地址信息的,是三态单向总线。地址总线的宽度决定了CPU可直接寻址的内存容量。通过地址总线确定要操作的存储单元或I/O接口的地址。(2)数据总线:数据总线是CPU与存储器及外设交换数据的通路,是三态双向总线。(3)控制总线:控制总线是用来传输控制信号的,传送方向依据具体控制信号而定,如CPU向存储器或I/O接口电路输出读信号、写信号、地址有效信号,而I/O接口部件向CPU输入复位信号、中断请求信号等。4.微型计算机是以CPU为核心,配上(存储器)、(输入/输出接口)和系统总线组成的计算机。5.在计算机内部,一切信息的存取、处理和传递的形式是(C)。A.ASCII码B.BCD码C.二进制D.十六进制6.0~9的ASCII码是(C)。A.0~9B.30~39C.30H~39HD.40H~49H第29页共29页m 7.假设某CPU含有16根地址线,8根数据线,则该CPU的最大寻址能力是多少KB?64KB8.简述单片机的定义、特点、应用领域和发展方向。定义:它采用一定的工艺手段将CPU、存储器和I/O口集成在一个芯片上。特点:①单片机CPU的抗干扰性强,工作温度范围宽,而通用微机CPU一般要求在室温下工作,抗干扰能力较弱。②单片机CPU可靠性强,在工业控制中,任何差错都有可能造成极其严重的后果。③单片机CPU控制功能往往很强,数值计算能力较差,而通用微机CPU具有很强的数值运算能力,但控制能力相对较弱,将通用微机用于工业控制时,一般需要增加一些专用的接口电路。④单片机CPU指令系统比通用微机系统简单。⑤单片机CPU更新换代速度比通用微机处理器慢得多。应用领域:①单片机在智能仪表中的应用②单片机在机电一体化中的应用③单片机在实时控制中的应用④在军工领域的应用⑤单片机在分布式多机系统中的应用⑥在民用电子产品中的应用发展趋势:②CPU的改进②存储器的发展③片内I/O口的改进一般单片机都有较多的并行口,以满足外围设备、芯片扩展的需要,并配以串行口,以满足对多机通信功能的要求。①提高并行口的驱动能力。这样可减少外围驱动芯片。有的单片机直接输出大电流和高电压,以便能直接驱动LED和VFD(荧光显示器)等。②增加I/O口的逻辑控制功能。中、高档单片机的位处理系统能够对I/O口线进行位寻址及位操作,这加强了I/O口线控制的灵活性。③特殊的串行接口功能。为单片机构成网络系统提供更便利的条件。④外围电路内装化⑤低功耗与工作电压范围加宽⑥低噪声与高可靠性技术⑦ISP及IAP第29页共29页m 第2章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)第29页共29页m 该区域当不被用做工作寄存器时,可以作为一般的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.简述程序状态字PSW中各位的含义。程序状态字PSW是一个8位寄存器,它保存指令执行结果的特征信息,为下一条指令或以后的指令的执行提供状态条件。PSW中的各位一般是在指令执行过程中形成的,但也可以根据需要采用传送指令加以改变。其各位定义如图所示。①进位标志C(PSW.7)在执行某些算术运算类、逻辑运算类指令时,可被硬件或软件置位或清零。它表示运算结果是否有进位或借位。如果在最高位有进位(加法时)或借位(减法时),则C=1,否则C=0。②辅助进位(或称半进位)标志位AC(PSW.6)第29页共29页m 它表示两个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。该标志对串行通信的数据传输非常有用,通过奇偶校验可检验传输的可靠性。5.简述MCS-51单片机程序存储器的几个特殊入口地址的含义。0000H:程序入口地址0003H:外部中断0中断服务程序入口地址000BH:定时器/计数器0溢出中断服务程序入口地址0013H:外部中断1中断服务程序入口地址001BH:定时器/计数器1溢出中断服务程序入口地址0023H:串行口发送/接收中断服务程序入口地址6.位地址7FH与字节地址7FH有何区别?位地址7FH具体在内存中的什么位置?二者存储的数据位数不一样。位地址7FH存放一位二进制数,字节地址7FH存放8为二进制数。位地址7FH具体在内存中字节地址为20H的最高位上。7.试分别说明程序计数器PC和堆栈指针SP的作用。复位后PC和SP各为何值?程序计数器PC是一个16位专用寄存器,其内容表示下一条要执行的指令的地址。复位后为0000H。MCS-51单片机的堆栈是在片内RAM中开辟的一个专用区。堆栈指针SP是一个8位专用寄存器,用来存放栈顶的地址。进栈时,SP自动加1,将数据压入SP所指定的地址单元;出栈时,将SP所指示的地址单元中的数据弹出,然后SP自动减1。因此SP总是指向栈顶。复位后为07H。8.MCS-51单片机设置4组工作寄存器,开机复位后,CPU使用的是哪组寄存器?它们的地址如何?CPU如何改变当前工作寄存器组?第0组。字节地址为00H~07H。通过PSW的RS1、RS0来改变。第29页共29页m 工作寄存器组的选择表PSW.4(RS1)PSW.3(RS0)当前使用的工作寄存器组R0~R7000组(00H~07H)011组(08H~0FH)102组(10H~17H)113组(18H~1FH)9.什么是时钟周期、机器周期和指令周期?当外部的振荡频率是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。第29页共29页m 第3章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的内容将有何变化?PUSH30HPUSH31HPOPDPLPOPDPHMOV30H,#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.试用三种方法实现累加器A和寄存器B的内容交换。(1)MOVR0,AMOVA,BMOVB,R0(2)PUSHAPUSHBPOPAPOPB(3)MOVR0,BXCHA,R0第29页共29页m MOVB,R07.写出实现下列要求的指令或程序片段。(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)=?,(30H)=?MOV30H,#0A4HMOVA,#0D6HMOVR0,#30HMOVR2,#5EHANLA,R2ORLA,@R0SWAPACPLAXRLA,#0FEHORL30H,A(A)=6EH(30H)=0EFH9.设片内RAM(30H)=0EH,执行下面的程序后,(A)=?,指出该程序完成的功能。MOVR0,#30H第29页共29页m MOVA,@R0RLAMOVB,ARLARLAADDA,B=8CH功能:将30H中的内容*10操作,结果在累加器A中。第29页共29页m 第4章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,#8INCR0第29页共29页m L1: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.编写程序将R4、R5、R6中的3个字节数据对半分解成6个字节,存入显示缓冲区(DISMEM0~DISMEM5)。MOVA,R6LCALLCLMOVDISMEM0,R0MOVDISMEM1,R1MOVA,R5LCALLCLMOVDISMEM2,R0MOVDISMEM3,R1MOVA,R4LCALLCLMOVDISMEM4,R0MOVDISMEM5,R1RETCL:MOVB,AANLA,#0FHMOVR0,AMOVA,BANLA,#0F0H第29页共29页m 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第29页共29页m 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,#20第29页共29页m L1:MOVXA,@DPTRMOV@R0,AINCDPTRINCR0DJNZR7,L1MOVDPTR,#3000HMOVR0,#20HMOVR7,#20L2:MOVA,@R0JBACC.7,L3MOVX@DPTR,AL3:INCDPTRINCR0DJNZR7,L2RET第29页共29页m 第5章MCS-51系列单片机硬件资源的应用1.MCS-51单片机的4个I/O接口的作用是什么?三总线是如何分配的?为什么说能作为I/O使用的一般只有P1口?P0口形成数据总线;P2口形成地址的高8位,P0口经过锁存器形成地址的低8位;P3口形成控制总线。在具有外部扩展的时间,需要用到数据总线、地址总线和控制总线,而三总线占用了P0、P2、P3口,可以单独使用的只有P1口。2.举例说明MCS-51单片机P1口的输入操作与输出操作。输入操作:MOVP1,#0FFHMOVA,P1输出操作:MOVP1,A3.简述MCS-51单片机的中断系统结构。MCS-51单片机的有5个中断源,它们均有两级优先级,通过4个专用中断控制寄存器(IE、IP、TCON、SCON)进行中断管理,其结构原理如图所示。4.MCS-51单片机有几个中断源?各中断标志是如何产生的?如何清除?MCS-51单片机的5个中断源分为两种类型:一类是外部中断源,包括和;另一类是内部中断源,包括两个定时器/计数器(T0和T1)的溢出中断和串行口的发送/接收中断。(1)外部中断MCS-51单片机提供了两个外部中断请求和,它们的中断请求信号有效方式分为电平触发和脉冲触发两种。电平方式是低电平有效,脉冲方式为负跳变触发有效。CPU在每个机器周期的S5P2检测和第29页共29页m 上的信号。对于电平方式,只要检测到低电平信号即为有效申请;对于脉冲方式,则需要比较两次检测到的信号,才能确定中断请求信号是否有效。中断请求信号高低电平的状态都应至少维持一个机器周期,以确保电平变化能被单片机检测到。(2)内部中断MCS-51单片机内部有TF0、TF1、TI、RI,分别为定时器/计数器溢出中断和串行口的发送/接收中断的中断源。在中断请求被响应前,中断源发出的中断请求是由CPU锁存在特殊功能寄存器TCON和SCON的相应中断标志位中的。一旦某个中断请求得到响应,CPU必须把它的相应标志位复位成0状态,否则MCS-51单片机就会因中断未能得到及时撤除而重复响应同一中断请求,这是绝对不允许的。MCS-51单片机的55个中断源,实际上只分属于三种中断类型。这三种类型是:外部中断、定时器/计数器溢出中断和串行口中断。对于这三种中断类型的中断请求,其撤除方法是不同的。(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端的低电平被送到第29页共29页m ,该低电平被8051检测后就使中断标志IE0置1。8051响应上的中断请求可转入中断服务程序执行,故可以在中断服务程序开头安排如下程序来使上的电平变高:INSVR:SETBP1.0CLRP1.0CLRIE0···END8051执行上述程序就可在P1.0上产生一个宽度为两个机器周期的负脉冲。在该负脉冲作用下,D触发器被置位成1状态,上的电平也因此而变高,从而撤除了其上的中断请求。5.设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,LL1CLRP1.0SJMPLLENDLL1:CJNER7,#3,LLENDSETBP1.0MOVR7,#00HLLEND:RETI6.MCS-51单片机内设有几个可编程的定时器/计数器?它们可以有4种工作方式,如何选择和设定?作为定时器或计数器应用时,它们的速率分别为晶振频率的多少倍?2个16位的定时器/计数器。通过TMOD的M1M0选择。M1M0=00:方式0——13位定时器/计数器工作方式;M1M0=01:方式1——16位定时器/计数器工作方式;第29页共29页m M1M0=10:方式2——常数自动装入的8位定时器/计数器工作方式;M1M0=11:方式3——仅适用于T0,为两个8位定时器/计数器工作方式;在方式3时T1停止计数。是外部晶振频率的12倍。7.如果MCS-51单片机系统的晶振频率为12MHz,分别指出定时器/计数器方式1和方式2的最长定时时间。方式1:65536微妙;方式2:256微妙8.若异步通信,每个字符由11位组成,串行口每秒传送250个字符,问波特率是多少?2750位/秒=2750波特9.设串行异步通信的传送速率为2400波特,传送的是带奇偶校验的ASCII码字符,每个字符包含10位(1个起始位,7个数据位,1个奇偶校验位,1个停止位),试编程初始化程序。设定串行口位方式1.MOVSCON,#40HMOVPCON,#80HMOVTMOD,#20HMOVTH1,#0F4HMOVTL1,#0F4HSETBTR110.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:RETI第29页共29页m 第6章MCS-51系列单片机并行扩展接口技术1.试用Intel2864,SRAM6264为MCS-51单片机设计一个存储器系统,它具有8KBEEPROM(地址由0000H~1FFFH)和16KB的数据存储器(地址为2000H~5FFFH)。要求绘出该存储器系统的硬件连接图,并指出每片芯片的地址空间。使用一片Intel2864,两片RAM6264.参看图6-14,采用译码器译码。2864可以不用译码,其片选信号直接接地,其地址为0000H~1FFFH,读控制接/PSEN;RAM6264的片选分别接74LS138的/Y1、/Y2,其地址分别为:2000H~3FFFH、4000H~5FFFH,其读。写控制分别接/RD、/WR。2.试设计用两片74LS377和两片74LS244扩展两个并行输出口和两个并行输入口的扩展连接电路图。参看图6-20、6-21.3.简述单片机如何进行键盘的键输入以及怎样实现键功能处理。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所规定的功能。键信息输入是与软件编程密切相关的过程。对于一组键或一个键盘,需要通过接口电路与CPU相连。CPU可以采用查询或中断方式了解有无键输入并检查是哪个键被按下,将该键的信息送入CPU,然后通过散转指令转入执行该键的功能程序,执行完毕又返回到原始状态。键输入接口与软件应可靠而快速地实现键信息输入与执行键功能任务。为此,应解决下列问题。(1)键开关状态的可靠输入目前,无论是按键还是键盘,大部分利用的都是机械触点的合、断作用。机械触点在闭合及断开瞬间由于弹性作用的影响均有抖动过程,从而使电压信号也出现抖动,如图9-20所示。抖动时间长短与开关的机械特性有关,一般为5~10ms。按键的稳定闭合时间,由操作人员的按键动作确定,一般为十分之几秒至几秒。为了保证CPU对键的一次闭合仅做一次键输入处理,必须去抖动影响。通常,去抖动影响的方法有硬、软两种。在硬件上是采取在键输出端加R-S触发器或单稳态电路构成去抖动电路。在软件上采取的措施是,在检测到有键按下时,执行一个10ms左右的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态,从而去除了抖动影响。(2)对按键进行编码以给出键值或直接给出键号任何一组按键或键盘都要通过I/O接口线查询按键的状态。根据不同的键盘结构采用不同的编码方法。但无论有无编码及采用什么编码,最后都要转换成与累加器中数值相对应的键值,以实现按键功能程序的散转转移(相应的散转指令为JMP@A+DPTR),因此一个完善的键盘控制程序应完成下述任务:①检测有无键按下。②有键按下后,在无硬件去抖动电路时,应用软件延时方法除去抖动影响。第29页共29页m ③有可靠的逻辑处理方法,如n键按下,即只处理一个键,其间任何按下又松开的键不产生影响,不管一次按键持续有多长时间,仅执行一次按键功能程序。④输出确定的键号以满足散转指令的要求。4.何谓键抖动?键抖动对单片机系统有何影响?如何消除键抖动?目前,无论是按键还是键盘,大部分利用的都是机械触点的合、断作用。机械触点在闭合及断开瞬间由于弹性作用的影响均有抖动过程,从而使电压信号也出现抖动,如图9-20所示。抖动时间长短与开关的机械特性有关,一般为5~10ms。按键的稳定闭合时间,由操作人员的按键动作确定,一般为十分之几秒至几秒。为了保证CPU对键的一次闭合仅做一次键输入处理,必须去抖动影响。通常,去抖动影响的方法有硬、软两种。在硬件上是采取在键输出端加R-S触发器或单稳态电路构成去抖动电路。在软件上采取的措施是,在检测到有键按下时,执行一个10ms左右的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态,从而去除了抖动影响。5.何谓静态显示?何谓动态显示?两种显示方式有何优缺点?所谓静态显示,是指当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止,公共端接固定的电平。LED动态显示是将所有位的段选线并接在一个I/O接口上,称为段口,共阴极端或共阳极端分别由相应的I/O接口线控制,称为位口。静态显示显示稳定,但软件简单;动态显示硬件简单,但软件需要不断地刷新。6.如果一个8位D/A转换器的满量程(对应于数字量255)为10V,试分别确定模拟量为2.0V和8.0V所对应的数字量。512047.某12位D/A转换器,输出电压为0~2.5V,当输入的数字量为400H时,对应的输出电压是多少?[2.5/212]*400H=0.625V8.使用DAC0832与MCS-51单片机连接时有哪些控制信号?双缓冲方式如何工作?在何种情况下要使用双缓冲工作方式?ILE:输入锁存使能信号输入端,高电平有效。:片选信号端。、:两个写信号端,均为低电平有效。:传输控制信号输入端,低电平有效。DAC0832可工作于双缓冲器方式,输入寄存器的锁存信号和DAC寄存器的锁存信号分开控制,这种方式适用于几个模拟量需同时输出的系统,每一模拟量输出需一个DAC0832,构成多个DAC0832同时输出的系统。9第29页共29页m .试设计一个12位A/D转换器与8031的接口电路,编写连续转换10次并将转换结果存入片内50H开始的单元中的程序。接口电路参看图6-48。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位结果RET10.设MCS-51单片机系统扩展一个8255,其口地址分别为7CFFH~7FFFH,其中PC扩展一个4×2的矩阵键盘,PC0~PC3为行,PC6~PC7为列,试画出8255与单片机及键盘的连接简图,并编写键盘管理程序。连接简图参看图6-35的键盘部分,将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,A第29页共29页m SJMPKEY4KEY2: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,77H11.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转换的过程就结束了。12.在一个由MCS-51单片机与一片ADC0809组成的数据采集系统中,ADC0809的地址为7FF8H~7FFFH。试画出有关的逻辑框图,并编写出每隔一分钟轮流采集一次8个通道数据的程序。共采样100次,其采样值存入片外RAM3000H开始的存储单元中。原理框图参看图6-45。第29页共29页m 第29页共29页m 第7章MCS-51系列单片机串行总线扩展技术1.SPI总线一般使用几条线?分别是什么?SPI使用4条线:串行时钟SCK,主机输入/从机输出数据线MISO(简称SO),主机输出/从机输入数据线MOSI(简称SI)和低电平有效的从机选择线。2.I2C总线一般使用几条线?分别是什么?I2C总线采用两线制,由数据线SDA和时钟线SCL构成。3.说明I2C总线主机、从机数据传输过程。I2C总线采用两线制,由数据线SDA和时钟线SCL构成。I2C总线为同步传输总线,数据线上的信号完全与时钟同步。数据传送采用主从方式,即主器件(主控器)寻址从器件(被控器),启动总线产生时钟,传送数据及结束数据的传送。SDA/SCL总线上挂接的单片机(主器件)或外围器件(从器件),其接口电路都应具有I2C总线接口,所有器件都通过总线寻址,而且所有SDA/SCL的同名端相连4.SPI总线与I2C总线在扩展多个外部器件时有什么不同?SPI总线有主机、从机的概念。图7-1所示为SPI外围扩展结构图。该系统有一台主机,从机通常是外围接口器件,如E2PROM、A/D、日历时钟及显示驱动等。图7-1SPI外围串行扩展结构图单片机与外围器件在SCK、SO和SI上都是同名端相连的。外围扩展多个器件时,SPI无法通过数据线译码选择,故SPI的外围器件都有片选端口。在扩展单个SPI器件时,外设的端可以接地,或通过I/O接口控制;在扩展多个SPI外围器件时,单片机应分别通过I/O接口来分时选通外围器件。图7-2I2C总线应用系统的组成I2C总线采用两线制,由数据线SDA和时钟线SCL构成。I2C总线为同步传输总线,数据线上的信号完全与时钟同步。数据传送采用主从方式,即主器件(主控器)寻址从器件(被控器),启动总线产生时钟,传送数据及结束数据的传送。SDA/SCL总线上挂接的单片机(主器件)或外围器件(从器件),其接口电路都应具有I2C总线接口,所有器件都通过总线寻址,而且所有SDA/SCL的同名端相连,如图7-2所示。第29页共29页m 5.单总线的操作原理是什么?单总线系统中配置的各种测控器件,是由Dallas公司提供的专用芯片实现的。每个芯片均有64位ROM,厂家对每一个芯片用激光烧写编码,其中存有16位十进制编码序列号,是器件的地址编号,确保挂在总线上后,可以唯一地确定。除了器件地址编码外,芯片内还含有收发控制和电源存储电路。这些芯片的耗电量都很小,从总线上馈送电量(空闲时为几微瓦,工作时为几毫瓦)到大电容中就可以正常工作,故一般不另附加电源。6.具有SPI总线的器件,除具有SDO、SDI和SCK外,还有其他控制线吗?还有/CS控制端。7.SPI总线上挂有多个SPI器件,如何选中某一个SPI从器件?SPI串行扩展系统中作为主器件的单片机在启动一次传送时,便产生8个时钟传送给接口芯片,作为同步时钟,控制数据的输入与输出。数据的传送格式是高位(MSB)在前,低位(LSB)在后。数据线上输出数据的变化以及输入数据时的采样,都取决于SCK。但对于不同的外围芯片,有的可能是SCK上升沿起作用,有的可能是SCK的下降沿起作用。8.I2C总线上挂有多个I2C器件,如何选中某一个I2C器件?在一般的并行接口扩展系统中,器件地址都是由地址线的连接形式决定的,而在I2C总线系统中,地址是由器件类型及其地址引脚电平决定的,对器件的寻址采用软件的方法。I2C总线上所有外围器件都有规范的器件地址。器件地址由7位组成,它与一个方向位共同构成I2C总线器件的寻址字节第29页共29页m 第8章单片机应用系统设计1.单片机应用系统一般由哪几部分组成?从系统的角度来看,单片机应用系统是由硬件系统和软件系统两部分组成的。硬件系统是指单片机扩展的存储器、外设及其接口电路等,软件系统包括监控程序和各种应用程序。2.单片机应用系统设计主要有哪些内容?单片机应用系统的设计包含硬件设计与软件设计两部分,具体涉及的内容主要有单片机系统、通道与接口、系统的抗干扰、应用软件的设计等。3.单片机应用系统的一般设计方法是什么?(1)确定系统的功能与性能。(2)确定系统基本结构。(3)单片机应用系统硬件与软件设计。(4)资源分配4.在单片机应用系统设计中,软、硬件分工的原则是什么?对系统结构有何影响?(1)硬件系统设计原则一个单片机应用系统的硬件电路设计包括如下两部分内容:①单片机系统的扩展,即单片机内部的功能单元(如程序存储器、数据存储器、I/O、定时器/计数器、中断系统等)的容量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的扩展电路。②系统配置,即按照系统功能要求配置外设,如键盘、显示器、打印机、A/D转换器、D/A转换器等,要设计合适的接口电路。系统扩展的配置设计应遵循下列原则:①尽可能选择典型通用的电路,并符合单片机的常规用法,为硬件系统的标准化、模块化奠定良好的基础。②系统的扩展与外设配置的水平应充分满足应用系统当前的功能要求,并留有适当余地,便于以后进行功能的扩充。③硬件结构应结合应用软件方案一并考虑,硬件结构与软件方案会产生相互影响。④整个系统中相关的器件要尽可能做到性能匹配。例如,选用晶体振荡频率较高时,存储器的存取时间就较短,应选择存取速度较快的芯片;选择COMS芯片单片机构成低功耗系统时,系统中的所有芯片都应选择低功耗产品。如果系统中相关的器件性能差异很大,系统综合性能就会降低,甚至不能正常工作。⑤可靠性及抗干扰设计是硬件设计中不可忽略的一部分,它包括芯片、器件选择、去耦合滤波、印制电路板布线、通道隔离等。如果设计中只注重功能实现,而忽略可靠性及抗干扰设计,到头来只能是事半功倍,甚至会造成系统崩溃,前功尽弃。第29页共29页m ⑥单片机外接电路较多时,必须考虑其总线驱动能力。驱动能力不足时,系统工作不可靠。解决的办法是增加驱动能力,增加总线驱动器或者减少芯片功耗,降低总线负载。(2)软件设计的原则应用系统中的应用软件是根据系统功能设计的,应可靠地实现系统的各种功能。应用系统种类繁多,应用软件各不相同,但优秀的应用软件应具有以下特点:①软件结构清晰、简捷、流程合理。②各功能程序事先模块化、系统化。这样既便于调试、连接,又便于移植、修改和维护。③程序存储区、数据存储区规划合理,既能节约存储容量,又能给程序设计与操作带来方便。④运行状态实现标志化管理。各个功能程序运行状态、运行结果及运行需求都设置状态标志以便查询,程序的转移、运行、控制都可通过状态标志来控制。⑤经过调试修改后的程序应进行规范化,除去修改“痕迹”。规范化的程序便于交流、借鉴,也为今后的软件模块化、标准化打下基础。⑥实现全面软件抗干扰设计。软件抗干扰是计算机应用系统提高可靠性的有力措施。⑦为提高运行的可靠性,在应用软件中设置自诊断程序,在系统运行前先运行自诊断程序,以检查系统各特征参数是否正常。整个单片机应用系统是一个整体。在进行应用系统总体设计时,软件设计和硬件设计应统一考虑,相结合进行。当系统的硬件电路设计定型后,软件的任务也就明确了。5.什么是联调?主要解决哪些问题?系统联调是指让用户系统的软件在其硬件上运行,进行软、硬件联合调试,从中发现硬件故障错误或软、硬件设计错误。这是对用户系统检验的重要一关。系统联调主要解决以下问题:①系统的软、硬件能否按预定的要求配合工作。②系统运行中是否有潜在的设计时难以预料的错误。③系统的动态性能指标(包括精度、响应速度等)是否满足设计要求。系统联调时,首先采用单步、断点、连续运行方式调试与硬件相关的各程序段,既可检验这些程序段的正确性,又可在各功能独立的情况下,检验软、硬件的配合情况。然后将软、硬件按系统工作要求进行综合运行,以解决在系统总体运行情况下软、硬件的协调问题,并提高系统的动态性能。在具体操作中,用户系统在开发系统环境下,先借用仿真器的单片机、存储器等资源进行工作。若发现问题,按上述软、硬件调试方法准确定位错误,分析错误原因,找出解决办法。用户系统调试完后,将用户程序固化到用户系统的程序存储器中,再借用仿真器单片机,使用户系统运行。若无问题,则用户系统插上单片机即可正确工作。6.为什么要进行现场调试?第29页共29页m 一般情况下,通过系统联调后,用户系统就可以按照设计目标正常工作了。但在某些情况下,由于用户系统运行的环境较为复杂(如环境干扰较为严重、工作现场有腐蚀性气体等),在实际现场工作之前,环境对系统的影响无法预料,只能通过现场运行调试来发现问题,找出相应的解决方法;或者虽然已经在系统设计时考虑到了抗干扰的对策,但是否行之有效,还必须通过用户系统在实际现场的运行来加以验证。另外,有些用户系统的调试是在模拟设备代替实际监测、控制对象的情况下进行的,这就更有必要进行现场调试,以检验用户系统在实际工作环境中工作的正确性。总之,现场调试对用户系统的调试来说是最后必需的一个过程,用户系统只有经过现场调试才能保证可靠地工作。现场调试仍需利用开发系统来完成,其调试方法与前述类似。7.试设计一个采用单片机控制的自动交通信号灯系统。设在一个十字路口的两个路口均有一组交通信号灯(红、黄、绿),控制要求:主干线绿灯亮的时间为30秒,然后转为黄灯亮,2秒后即转为红灯亮。支干线在主干线绿灯和黄灯亮时,其为红灯亮,直到主干线黄灯熄灭时才转为绿灯亮。其绿灯亮的持续时间为20秒,然后黄灯亮2秒后即转为红灯亮,如此反复控制。试绘出系统逻辑图、程序流程图,并编制程序。第29页共29页m'