单片机原理及应用习题答案_第1页
单片机原理及应用习题答案_第2页
单片机原理及应用习题答案_第3页
单片机原理及应用习题答案_第4页
单片机原理及应用习题答案_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及应用习题答案习题1解答1填空201010014;1100101B10165;1F8H111111000504;1个字节由8个二进制位组成,每个二进制位只有2种状态,可表示为0或1;1K字节就是2的10次方字节,即1024个字节;1M字节就是2的20次方字节,约为1048567个字节。2在8位二进制中,26、26、127、1的补码(用十六进制表示)是多少解正数的补码等于原码,负数的补码等于它的原码除符号位不变,其余的各位求反加1。26原000110101B1AH,26补1AH26原100110101B,26补11100101B111100110B0E6H127原11111111B,127补10000000B110000001B81H1原10000001B,1补11111110B111111111B0FFH3用十进制写出下列补码表示的数的真值FEH、FBH、80H、11H、70H、7FH。解真值是指日常用“”或“”号表示的数。机器数是指计算机中用编码表示的数,正数的符号以最高位为0表示,负数的符号以最高位为1表示。根据补码求真值的一个通俗口诀是“正码不变,负码求补,补后勿忘添负号”。FEH11111110B,其符号位为“1”,属负数,故其原码为10000001B110000010B,即FEH真值为2;同理FBH属负数,其真值为5;80H的真值为128;11H的真值为17;70H的真值为112;7FH的真值为127。4微型计算机主要由哪几部分组成各部分有何功能答一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(BUS)即地址总线AB、数据总线DB和控制总线CB来连接。CPU由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作。存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据。按其功能可分为RAM和ROM。输入/输出(I/O)接口是CPU与外部设备进行信息交换的部件。总线是将CPU、存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道。5何为存储器单元的地址答存储器中存放二进制数的单元称为存储单元。存储器中包含许多存储单元,为了便于信息的存入和取出,每一个存储单元必须有一个固定的编号来标识,称这个编号为存储器单元地址。6何谓单片机单片机有何特点答单片机(SINGLECHIPMICROCOMPUTER)是指把CPU、RAM、ROM、定时器/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机。单片机在控制应用领域中的特点面向控制,能针对性地解决从简决从简单到复杂的各类控制任务,因而获得最佳的性能价格比;抗干扰能力强、适应温度范围宽,能在各种恶劣的环境下都能可靠性地工作;能方便地实现多机和分布式控制,从而使整个控制系统的效率和可靠性大大提高;体积小、功耗低、低成本、控制功能强、易于产品化,能方便地组成各种智能化的控制设备和仪器,做到机、电、仪一体化。7单片机内部ROM的配置有几种形式答单片机片内ROM的配置状态可分四种片内掩膜(MASK)ROM型单片机(如8051),适合于定型大批量应用产品的生产;片内EPROM型单片机(如8751),适合于研制产品样机;片内无ROM型单片机(如8031),需外接EPROM,单片机扩展灵活,适用于研制新产品;EEPROM(或FLASHROM)型单片机(如89C51),内部程序存储器电可擦除,使用更方便。习题2解答18051单片机内包含哪些主要逻辑功能部件答8051单片机是一个完整的单片微型计算机。它包括以下功能部件一个芯片上,集成了一个微型计算机的基本组成部分。它包括以下功能部件1个8位CPU;片内4KB的程序存储器ROM;片内128B的数据存储器RAM;可寻址外部程序存储器和数据存储器空间各64KB的控制电路;21个特殊功能寄存器SFR;4个8位并行I/O口P0P3,共32根I/O线;1个全双工的串行口;2个16位定时器/计数器;5个中断源,有2个优先级嵌套中断结构;片内振荡器及时钟电路。28051单片机的信号有何功能8031的引脚应如何处理,为什么EAEA答1是访问外部程序存储器ROM的控制信号。当为低电平(接地)时,CPU只执行外部程序存储器中的程序。当为高电平且PC值小于0FFFH(4K)时,CPU执行内部程序存储器的程序,但当PC的值超出4K时(对8051/8751/8951)将自动转去执行片外程序存储器内的程序。8031单片机无片内ROM的,必须外接程序存储器,因此,8031的必须接地(低电平)。EA38051单片机的P0P3口各有什么特点8051单片机有P0、P1、P2、P3四个双向的8位并行I/O口,每个端口可以按字节输入或输出,每一条I/O线也可以单独用作输入或输出(即按位进行输入或输出)。每个端口都是由一个锁存器(即特殊功能寄存器P0P3),一个输出驱动器和两个(P3口为3个)输入缓冲器组成。并行I/O口作输出时数据可以锁存,作输入时数据可以缓冲,但它们又各具特点。P0口和P2口构成MCS51单片机的16位地址总线,P0口还是8位的数据总线。P3口多用于第二功能输入或输出,。通常只有P1口用于一般输入/输出。P3口各位的第二功能P3口引脚第二功能P3口引脚第二功能P30RXD(串行输入端)P34T0(定时器0的外部输入)P31TXD(串行输出端)P35T1(定时器1的外部输入)P32(外部中断0输入)INTP36(片外数据存储器写选通控制输出)WRP33(外部中断1输入)P37(片外数据存储器读选通控制输出)D系统复位后,P0P3口的32个管脚均输出高电平,因此在系统的设计过程中,应保证这些管脚控制的外设不会因为系统复位而发生误动作。P0P3口输出级的电路结构有所不同。P0口是三态输出,其每个管脚均可以驱动8个LSTTL输入,而P1P3口的输出级均有上拉电阻,每个管脚可驱动4个LSTTL输入。每个并行口,可定义一部分管脚为输入脚,另一部分管脚为输出脚,没有使用的管脚可以悬空。4简述8051单片机存储器的组织结构和片内RAM的空间分配。答8051单片机的存储器包括程序存储器和数据存储器,从用户使用的角度可分为三个逻辑地址空间片内、片外统一编址的64KB程序存储器地址空间0000HFFFFH;64KB的外部数据存储器或扩展I/O口地址空间0000HFFFFH;256B的片内数据存储器地址空间00HFFH(包括低128B的内部RAM地址00H7FH和高128B的特殊功能寄存器地址空间,21个SFR离散地分布在这个区域)。内部RAM共有128个单元,根据用途可划分为工作寄存器区、位寻址区和通用RAM区,各区域的特性如下工作寄存器区(00H1FH)寄存器区32个单元共分4个组,每个组有8个8位的寄存器R0R7。在任何时刻,四个组中只能有一组可以成为当前工作寄存器组使用,其他三组作为一般的内部RAM使用。当前工作寄存器组由程序状态字寄存器PSW的RS0和RS1两位的状态来决定。位寻址区(20H2FH)共16个单元,每个单元有8个位,每个位都有一个位地址,编号为00H7FH,位寻址区的16个单元也可以按字节寻址,作为一般的内部RAM使用。通用RAM区(30H7FH)这部分存储空间作为一般的内部RAM区或堆栈区,CPU只能按字节方式寻址。58051单片机有哪些特殊功能寄存器各在单片机中的哪些功能部件中答8051单片机有21个8位的特殊功能寄存器(SFR),它们的地址离散地分部在内部数据存储器的80HFFH地址空间。在8051单片机结构中,21个SFR在物理上是分散在片内各功能部件中CPU的中SFRACC、B、PSW、SP和DPTR(16位寄存器,由DPH和DPL组成);定时/计数器单元中的寄存器TMOD、TCON、T0(16位寄存器,由TH0和TL0组成)和T1(16位寄存器,由TH1和TL1组成);并行I/O口寄存器P0、P1、P2和P3;中断系统内的寄存器IE和IP;串行端口中的寄存器SCON、SBUF和PCON。6程序计数器PC有何作用是否属于SFR,为什么答程序计数器PC是一个16位的专用寄存器,用来存放即将要执行的指令地址,可对64KB的程序存储器直接寻址。它具有自动加1功能,当CPU要取指令时,PC的内容送地址总线上,从存储器中取出指令后,PC内容则自动加1,指向下一条指令,从而保证程序按顺序执行。PC虽然也是CPU内部的一个寄存器,但它在物理结构上是独立的,没有地址,是不可寻址的,用户无法对它进行直接读写,不属特殊功能寄存器。7什么叫堆栈堆栈指针SP的作用是什么8051单片机堆栈的最大容量是多少字节答堆栈是按照“先进后出,后进先出”的原则来存取数据的一个内部RAM区域,这个存储器区域的一端是固定的(栈底),另一端是活动的(栈顶),每个存储单元是不能按字节任意访问的。堆栈指针SP始终指向栈顶单元,栈顶随着数据入栈和出栈上下浮动。8051单片机堆栈的最大容量是128字节88051单片机的程序存储器和数据存储器可以有相同的地址,而单片机在对这两个存储区的数据进行操作时,不会发生错误,为什么答对于不同的存储地址空间,8051单片机采用不同的存取指令和控制信号CPU访问片内、外ROM时,采用“MOVC”指令,外部ROM用选通;访问外部RAM或扩展I/O口时,采用PSEN“MOVX”指令,由(读)信号和(写)信号选通;访问片内RAM和特殊功能寄存器时,采用RDWR“MOV”指令。因此,尽管程序存储器地址和数据存储器地址空间重叠,但不会发生混乱。98051单片机是如何确定和改变当前工作寄存器组答在任何时刻,8051单片机的四个工作寄存器组中只能有一组可以成为当前工作寄存器组使用,其他三组作为一般的内部RAM使用。当前工作寄存器组由程序状态字寄存器PSW的RS0和RS1两位的状态来决定,如表所示。当前工作寄存器组的选择RS1RS0被选寄存器组寄存器R0R7的地址000组00H07H011组08H0FH102组10H17H113组18H1FH根据需要,用户可以利用传送指令或位操作指令改变RS1和RS0的内容来选择不同的工作寄存器组。10单片机复位后,CPU使用了哪一组工作寄存器工作寄存器R0R7对应的单元地址是什么答单片机复位后,RS1和RS0都为0,CPU选中第0组作为当前工作寄存器组,工作寄存器R0R7对应的单元地址是00H07H。11程序状态字寄存器PSW的作用是什么常用标志位有哪些位作用是什么答PSW是一个8位的特殊功能寄存器,由一些标志位组成,用于存放程序运行中的各种状态信息。它可以进行位寻址,各位的定义如下位D7D6D5D4D3D2D1D0位名称CYACF0RS1RS0OVPCY进位标志位。在进行加(或减)法运算时,若操作结果的最高位(D7位)有进位(或借位)时,CY由硬件置1,否则CY清0。在进行位操作时,CY又是位累加器,指令助记符用C表示。AC辅助进位标志位。在进行加(或减)运算时,若操作结果的低半字节(D3位)向高半字节产生进位(或借位)时,AC位将由硬件自动置1,否则AC位清0。F0用户标志位。用户根据需要对F0置位或复位,作为软件标志。RS1和RS0工作寄存器组选择控制位。由用户用软件改变RS1和RS0的状态,以选择内RAM中的哪组工作寄存器为当前工作寄存器组。OV溢出标志位。当进行补码运算时,运算结果超出128127范围时,产生溢出,则OV自动置1,否则OV清0。PSW1保留位。8051中未定义。P奇偶校验标志位。每条指令执行完后,该位始终跟踪累加器A中1的数目的奇偶性。如果A中有奇数个1,则P1;否则P0。128051单片机的晶体振荡器频率为6MHZ,则它一个机器周期为多少微秒答机器周期是指CPU完成某一个规定操作所需的时间,8051单片机的一个机器周期包含6个状态,并依次表示为S1S6,每个状态分为2个节拍。因此一个机器周期包含12个时钟周期(振荡周期),依次表示为S1P1、S1P2、S2P1、S6P1、S6P2。当FOSC6MHZ时,机器周期T12(1/6MHZ)2S138051单片机复位后寄存器PC、A、PSW、SP、P0P3的状态各是什么复位后内部RAM中的数据有何影响答8051单片机复位后PC、A、PSW、SP、P0P3的状态如下PC0000H;A、PSW00HSP07H;P0P3FFH单片机的复位不影响内部RAM的状态(包括工作寄存器RN)。习题3解答1若访问工作寄存器、特殊功能寄存器、片外数据存储器、程序存储器分别可使用哪些寻址方式答访问工作寄存器采用寄存器寻址,特殊功能寄存器采用直接寻址,片外数据存储器采用寄存器间接寻址,程序存储器的寻址方式有立即寻、变址寻址、相对寻址。2写出下列源操作数的寻址方式。(1)JZ20H(2)MOVA,R2(3)MOVA,B(4)MOVDPTR,4012H(5)MOVXA,DPTR(6)MOVCA,APC(7)PUSHB(8)POPACC(9)MOVC,20H(10)MOVA,20H答各指令的源操作数的寻址方式是相对寻址;寄存器寻址;寄存器寻址;立即寻址;寄存器间接寻址;变址寻址;直接寻址;直接寻址;位寻址;直接寻址3设片内RAM的30H单元的内容为40H,即(30H)40H,(40H)10H,(10H)00H,端口P1CAH,执行下列程序段填结果。MOVR0,30H;R030HMOVA,R0;A(R0)(30H)40HMOVR1,A;R140HMOVB,R1;B(40H)10HMOVR1,P1;(40H)0CAHMOVA,P1;A0CAHMOV10H,20H;(10H)20HMOV30H,10H;(30H)20H结果R0,R1,A,B,P1,(40H),(30H),(10H)。解每一条指令执行后的结果如注释字段所标。最后的结果为R030H,R140H,A0CAH,B10H,P10CAH,(40H)0CAH,(30H)20H,(10H)20H。4设A94H,R237H,(40H)6EH,R140H,RS1RS000执行程序段填结果。MOVP2,AMOVA0H,R2MOVD0H,R1MOV02H,98H结果A,02H,40H,01H,P2,PSW。解结果A94H,02H98H,40H6EH,01H40H,P237H,PSW6EH。5A83H,R017H,(17H)34H,执行以下指令后AANLA,17H;A03HORL17H,A;17H37HXRLA,R0;A34HCPLA;A0CBH解每一条指令执行后的结果如注释字段所标。所以执行以下指令后A0CBH。6若要完成下列数据传送,应如何用MCS51的指令来实现。A的内容送到P1。解MOVA,P1R1的内容传送到R0。解MOVA,R1MOVR0,A片内RAM20H单元的内容送片内RAM30H单元。解MOV31H,20H片外RAM20H单元的内容送片内RAM30H单元。解MOVR0,20HMOVXA,R0MOV30H,A片外RAM20H单元的内容送片外RAM30H单元。解MOVR0,20HMOVXA,R0MOVR1,30HMOVXR1,A用两种方法将程序存储器ROM3040H中的常数送到A中,已知PC当前值为3000H。解MOVA,00HMOVDPTR,3040HMOVCA,ADPTRMOVA,40HMOVCA,APC3000H3040HROM2000H单元的内容送到片外RAM1000H单元中。解CLRAMOVDPTR,2000HMOVA,ADPTRMOVDPTR,1000HMOVDPTR,A将A中的内容与寄存器B中的内容交换。解XCHA,B将片内RAM30H单元内容与片外40H单元的内容交换。解MOVR0,40HMOVXA,R0XCHA,30HMOVXR0,A将片外RAM30H单元内容与片外40H单元的内容交换。解MOVR0,30HMOVXA,R0MOVR7,A;暂存外部RAM30H单元的内容MOVR1,40HMOVXA,R1MOVXR0,A;外部RAM40H单元的内容送外部RAM30H单元MOVA,R7MOVXR1,A;外部RAM30H单元的内容送外部RAM40H单元7设位单元00H、01H中的内容为0,下列程序段执行后P1口的8条I/O线为何状态位单元00H、01H的值。STARTCLRCCY0MOVA,56HA56H01010110BJCLP1CPLCCY1SETB01H01H1LP1MOVACC0,CACC01JBACC2,因ACC21,转向LP2SETB00H该指令不执行LP2MOVP1,AP1A01010111BRET解每一条指令执行后的结果如注释字段所标。P101010111B,即P1口的8条I/O线中P00、P01、P02、P04、P06为高电平状态,P03、P05、P07为低电平状态,8下列指令哪些是非法指令1CPLB2ADDCB,20H3SETB30H,04MOVR1,R25SUBBA,R26CJNER0,64H,LABEL7MOVXR0,20H8DJNZR0,LABEL9PUSHB10POPR111RLB12MOVR7,R013RLCA14MOVR1,1234H15ANLR0,A16ORLC,/ACC517XRLC,ACC518DECDPTR19XCHDA,R120SWAPB21MOVXA,ADPTR22MOVCA,ADPTR23XCHA,R124SUBA,12H25MULA,B26DIVAB27DAA28JMPLABEL29LJMPLABEL30RETI解1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;2526;27;28;29;30。9执行下列程序填结果。MOVSP,2FHSP2FHMOVA,50HA50HMOVB,51HB51HPUSHACCSP30H,30H50HPUSHBSP31H,31H51HPOPACCA51H,SP30HPOPBB50HSP2FH结果SP,A,B,(30H),(31H)。解结果SP2FH,A51H,B50H,(30H)50H,(31H)51H。10SP70H,MA1000H,SUBPR4060H。试问下列程序中哪些是正确的为什么哪些程序最好,为什么若SUBPR1060H,则哪个程序最好,为什么(1)MAACALLSUBPR(2)MALCALLSUBPR(3)MALJMP4000H4000HACALLSUBPRLJMP1003H解因为ACALL指令转去子程序的入口地址与ACALL的下一条指令必须在同一个2K范围,而LCALL指令转去子程序的入口地址与LCALL的下一条指令范围为64K。所以当SUBPR4060H时,程序(2)和(3)是正确的,(1)的程序是错误的,程序(2)较(3)快捷;当SUBPR1060H时,程序(1)和(2)是正确的,程序(3)是错误的,程序(1)较程序(2)节省一个存储单元。11设A53H,PSW81H,转移指令所在地址为3090H,执行下列各条指令后,PC(1)JNZ12H(2)JNC34H(3)JNBP,56H(4)JBCAC,78H(5)CJNEA,50H,9AH(6)DJNZPSW,0BCH(7)SJMP0B4H解(1)因A0,所以转移,故PC3090H212H30A4H;(2)因CY1,所以不转移,故PC3090H23092H;(3)因P1,所以不转移,故PC3090H33093H;(4)因AC0,所以不转移,故PC3090H33093H;(5)因A50H,所以转移,故PC3090H39AH3093H66H302DH注意补码数9AH的最高位为1属负数,故应先求得其真值为66H(6)因PSWPSW180H0,所以转移,故PC3090H30BCH3093H44H304FH(7)无条件转移,PC3090H20B4H3092H4CH3046H。12阅读下列程序,说明其功能。MOVR1,40H;设(40H)XMOVA,R1;AXRLA;A2MOVR0,A;R02RLA;A224RLA;A428XADDA,R0;A8210MOVR1,A;(40H)10X解各指令的注释如程序所标,程序的功能为40H单元的内容乘10。13执行程序填结果(1)MOVA,19H;A19HADDA,72H;A8BHDAA;A91H结果A解A91H(2)CLRC;CY0MOVA,9AH;A9AHSUBBA,19H;A81HADDA,72H;A0F3HDAA;A53H,CY1结果A解A53H14设(SP)50H,MA0123H,SUB0345H。执行指令“MAACALLSUB”后PC,SP,(51H),(52H)。解PC0345H,SP52H,(51H)25H,(52H)01H15(SP)4BH,(49H)12H,(4AH)5AH,(4BH)68H。执行指令“RET”后PC,SP。解PC685AH,SP48H习题4解答1按下面要求编程。(51H)0;若(50H)为奇数1;若(50H)为偶数解MOVA,50HMOVB,2DIVAB;偶数除以2的余数为0MOVA,BJNZL1;判余数是否为0MOV51H,01H;为偶数,1送51H单元SJMPNEXTL1MOV51H,00H;为奇数,0送51H单元NEXTSJMPNEXT2按下面要求编程。1;若(50H)20(51H)0;若20(50H)401;若(50H)40解MOVA,50H;设50H单元的内容为XCJNEA,20,L1;X20时,转向L1SJMPL4;X20时,转向L4L1JCL4;X20时,转向L4L2CJNEA,40,L3;X20且X40时,转向L3SJMPL4;X40时,转向L4L3JNCL4;X40时,转向L4MOV51H,00H;20X40时,送0到51H单元SJMPNEXTL4MOV51H,0FFH;X20或X40时,送1到51H单元NEXTSJMPNEXT3试编写程序,将片外8000H开始的16个连续单元清0。解方法一MOVDPTR,8000H;数据块首址CLRALOOPMOVXDPTR,A;单元清0INCDPTRMOVR7,DPLCJNER7,10H,LOOPSJMP方法二MOVDPTR,8000HMOVR7,10H;数据块长度16CLRALOOPMOVXDPTR,AINCDPTRDJNZR7,LOOPSJMP4在片内50H开始的单元中存有8个无符号数,找出其中最大数存于70H单元中。解MOVR0,50H;数据块首址MOVR2,8;长度计数器赋初值MOVA,R0;取第一个数LOOPINCR0;取下一个数MOVB,R0CJNEA,B,NEXTNEXTJNCNEXT1;两数比较,若AB时,A中放当前数MOVA,R0;若AB时,送大数到A中NEXT1DJNZR2,LOOP;数据块比较完否MOV70H,A;最大值送入70H单元中HERESJMPHERE5试编写程序,求出片内RAM30H单元中的数据含“1”的个数,将结果存入31H单元。解要统计一个8位二进制数中“1”的个数,可以把这个数一位一位地移到CY中,然后加以判断和统计。程序设计如下MOVR2,8移位次数MOVR1,10R1作为统计“1”的个数的计数器MOVA,30H取数LOOPRLCA数的最高位移入CYJNCNEXTINCR1若CY1,则计数器加1NEXTDJNZR2,LOOPMOV31H,R1存结果HERESJMPHERE6编制用软件延时1秒的子程序,控制P1脚上所接的8个发光二极管交叉灯亮一秒。解设晶体振荡器的频率为6MHZMOVA,0AAHLOOPMOVP1,A;交叉亮LCALLDEY1S;调延时1S子程序CPLASJMPLOOPDEY1SMOVR5,2;延时1S子程序LOOP3MOVR6,200LOOP2MOVR7,250LOOP1NOPNOPNOPDJNZR7,LOOP1DJNZR6,LOOP2DJNZR5,LOOP3RET7设计灯移位程序,要求P1脚上所接的8只发光二极管每次点亮一个,点亮时间为05秒。顺序从低位到高位循环点亮。解MOVA,01HLOOPMOVP1,ALCALLDEY05SRLASJMPLOOPDEY1SMOVR5,1;延时05S子程序LOOP3MOVR6,200LOOP2MOVR7,250LOOP1NOPNOPNOPDJNZR7,LOOP1DJNZR6,LOOP2DJNZR5,LOOP3RET8将累加器A中的2位十六进制数,转换为ASCII码,存放在片内RAM30H和31H单元中。解MOVR0,A;暂存A中的数在R0中ANLA,0FH;屏蔽高位MOVDPTR,ASCTABMOVCA,ADPTR;低位转换成ASCII码MOV31H,A;存低位MOVA,R0SWAPA;将高位交换到低位ANLA,0FHMOVCA,ADPTRMOV30H,A;存高位ASCIIDB30H,31H,32H,33H,34H,35H,36HDB37H,38H,39H,41H,42H,43H,44HDB45H,46H9将两字节ASCII码,转换为二进制数,编成子程序形式。解子程序为AASCH如下;功能将两字节ASCII码,转换为一个字节二进制数(即十六进制);入口参数(R0)为ASCII码的首地址;出口参数(R1)为转换后的二进制数的地址AASCHMOVA,R0;取ASCII码的高位ACALLASCH;调用子程序ACHSWAPA;将十六进制数放在A的高位MOVR1,A;存十六进制数到高4位INCR0;指向下一个ASCII码数MOVA,R0ACALLASCHXCHDA,R1;存十六进制数到低4位RETACHCLRC;将A中的ASCII码数转换成十六进制数并存放在A中的子程序SUBBA,30HCJNEA,0AH,NEXT;判ASCII码数是数字还是字母NEXTJCAH;若为数字(09),转移SUBBA,07H;十六进制数为字母是减7AHRET10将两字节ASCII码,转换为BCD码,编成子程序形式。解两字节ASCII码转换为BCD码,用压缩BCD码的形式表示正好占用一个字节。子程序ASCBCD如下;功能将两字节ASCII码,转换为BCD码,若ASCII码数为非法BCD码(即AF),则在相应半字中置入“”符号,以示区别;入口参数(R1)为ASCII码的首地址;出口参数(R0)为转换后的BCD码的地址ASCBCDMOVA,R1;取一个ASCII码ACALLACB;调用ACB子程序SWAPA;BCD码的放在A的高4位MOVAR0,A;存BCD码到高4位INCR1MOVA,R1ACALLACBXCHDA,R0RETACBCLRC;将A中的ASCII码转换为BCD码的子程序SUBBA,30HCJNEA,0AH,L1L1JCL2;是BCD码数则转L2MOVA,24H;非法BCD码数,则送入“”符号L2RET11将两位十进制数的BCD码,转换为ASCII,编成子程序形式。解子程序BCAC如下;功能将两位十进制数的BCD码,转换为ASCII;入口参数R1存放BCD码数的地址;出口参数(R0)和(R0)1存放结果的地址BCASMOVA,R1;取BCD码数MOVR2,A;暂存BCD码数在R2中ANLA,0FH;屏蔽高4位ADDA,30H;低4位BCD码转换成为ASCII码MOVR0,A;存入第一个ASCII码MOVA,R2SWAPA;取原BCD码,把高4位交换到低4位ANLA,0FH;屏蔽高4位INCR0MOVR0,A;存入第二个ASCII码RET12将20H单元中的8位无符号二进制数转换为BCD码,存入21H、22H。解程序设计如下;功能将20H单元中的8位无符号二进制数转换为BCD码;入口参数20H单元中存放要转换的二进制数;出口参数21H单元存放的是百位BCD码,22H单元存放的是十位和个位BCD码,高半字节放十位,低半字节放个位。;占用寄存器A,BBINBCDMOVA,20H;取数MOVB,64HDIVAB;除以100,A为百位数MOV21H,A;存入21H单元MOVA,0AHXCHA,B;余数B送ADIVAB;除以10,得十位和个位SWAPA;十位数放于高半字节ADDA,B;个位数放于低半字节MOV22H,A;十位、个位存22H单元RET13用查表程序求08之间整数的平方。解设08之间的整数存放在R0单元中,查表结果存在R1中MOVR0,DATAMOVA,R0MOVDPTR,TABMOVCA,ADPTRMOVR1,ATABDB0,1,4,9,16,25,36,49,6414编写程序,实现下列逻辑函数的功能。其中X、Y、Z、F都是位单元地址。FXYZY解XBIT20H0YBIT20H1ZBIT20H2FBIT20H3TEMPBIT20H4MOVC,XANLC,Y;CXYMOVF,C;存XY在F中MOVC,YANLC,/Z;CYZMOVTEMP,C;暂存Y在TEMP中MOVC,ZANLC,/Y;CZORLC,TEMPCPLCORLC,FMOVF,C15有一16位二进制数存放于50H、51H单元,50H存高位,编程实现全部左移一位。解CLRCMOVA,51HRLCAMOV51H,AMOVA,50HRLCAMOV50H,ASJMP16完成两字节压缩BCD码的加法。(30H31H)(40H41H)(30H31H)解MOVA,31HADDA,41H;低字节相加DAA;十进制调整MOV31H,A;存结果低字节MOVA,30HADDCA,40HDAAMOV30H,ASJMP17编程实现(R3R2)10(R3R2)解本题可以采用乘法指令或者用循环移位指令实现,此处采用用乘法指令。MOVA,R2MOVB,0AHMULAB;被乘数低8位乘以10,即R210MOVR2,A;MOVR4,B;R210的高8位暂存于R4中MOVA,R3;MOVB,0AHMULAB;被乘数高8位乘以10,即R310ADDA,R4;R310的低8位与R210的高8位之和送R3MOVR3,AMOVR4,BSJMP习题5解答51MCS51型单片机有几个中断源有几级中断优先级各中断源中断标志是怎样产生的答MCS51单片机的有5个中断源2个外部中断源,即和;3个内部中断源,两个片内0INT1定时器/计数器溢出中断T0和T1,1个片内全双工串行口中断源。有两级中断优先级即高优先级和低先级,实现两级中断服务程序嵌套,同一优先级的中断源,由硬件查询来确定优先序列,从高到低依次为外部中断、定时器T0溢出中断、外部中断定时器、I1INTT1溢出中断、串行口中断。各中断源请求的中断的标志分别由特殊功能寄存器TCON和SCON的相应位锁存,这些标志位的产生如下TF1定时器T1的溢出中断请求标志位。当计数器T1产生溢出时,由硬件使TF1置1,并向CPU发出中断请求。TF0定时器T0的溢出中断请求标志位。含义与TF1相同。IE1外部中断1(即)的中断请求标志位。当检测到外部中断引脚(P32)上存在有效的中断INT请求信号时,由硬件使IE1置1。IE0外部中断的中断请求标志位,其含义与IE1类同0TI串行口发送中断请求标志位。CPU将一个数据写入发送缓冲器SBUF时,每发送完一帧串行数据后,硬件置位TI(TI1)。RI串行口接收中断请求标志位。在串行口允许接收时,每接收完一个串行帧,硬件置位RI。52编写程序将设为脉冲下降沿触发的高优先级中断源。INT解用位操作SETBIT1;设为边沿触发方式1SETBPX1;设高优先级中断源I用字节操作MOVTCON,04H;设为边沿触发方式INTMOVIP,04H;设高优先级中断源153试编程实现将设为高优先级中断,且为电平触发方式,T0设为低优先级中断计数器,串1I行口中断为高优先级中断,其余中断源设为禁止状态。解MOVTMOD,04H;设T0为计数器状态MOVTCON,00H;设外部中断1为电平触发方式MOVIE,96H;开放外部中断1、T0和串行口中断MOVIP,14H;设和串行口为高优先级,T0设为低优先级INT54在MCS51型单片机中,哪些中断标志可以在响应后自动撤除哪些需要用户撤除如何撤除答CPU在响应中断请求后会自动清除的中断标志的有定时器T0、T1的溢出中断请求标志TF0、TF1;边沿触发方式下的外部、的中断请求标志IE0、IE1。INT01CPU响应中断后不会自动清除,只能在中断服务程序中用软件清除的有串行口的接收、发送中断标志RI、TI,用“CLR中断请求标志位”指令清除;在电平触发方式下的外部中断标志IE0和IE1,则是根据引脚和的电平而变化的,CPU无法直接干预,需在引脚外INT加硬件(如D触发器)使其自动撤消外部中断请求。55MCS51型单片机响应中断后,各中断源的中断入口地址是什么答中断源中断入口地址外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中断0023H56简述MCS51型单片机中断响应全过程。答当有中断源发出中断请求、允许中断位开放、无同级或更高级中断正在被服务、当前的指令周期已经结束时,CPU按优先级顺序查询中断标志,如查询到某个中断标志为1CPU响应中断请求,CPU响应中断后即转至中断服务程序的入口,执行中断服务程序。57试比较用单片机的可编程定时器实现时钟计时与用硬件电路实现时钟计时有什么不同。答不可编程的硬件定时对于时间较长的定时,常使用硬件电路完成。硬件定时方法的特点是定时功能全部由硬件电路完成,不占用CPU时间。但需通过改变电路中的元件参数来调节定时时间,在使用上不够灵活方便。单片机的可编程定时器定时这种定时方法是通过对系统时钟脉冲的计数来实现的。计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来既灵活又方便。此外,由于采用计数方法实现定时,因此可编程序定时器都兼有计数功能,可以对外来脉冲进行计数。58简述MCS51型单片机定时/计数器的4种工作方式及其特点。答MCS51单片机有T0和T1两个定时/计数器,T0有4种工作方式,T1有3种工作方式,如下表工作方式适用定时器功能说明方式0T0、T113位定时器/计数器方式1T0、T116位定时器/计数器方式2T0、T1自动重装初值的8位定时器/计数器方式3T0仅适用于T0,分为2个8位计数器TL0和TH0,TL0可工作于定时或计数状态,而TH0则固定为定时状态。方式3对T1则停止计数59若MCS51型单片机的时钟频率为12MHZ,试计算用4种工作方式定时300S所需的初始值。解机器周期T121/FOSC121/121S,以定时器T0为例。定时时间T2XT0初值T方式0X13,则T0初值213300S/1S81923007892D1111011010100B所以TH00F6H,TL014H方式1X16,则T0初值216300S/1S6553630065236D0FED4H所以TH00FEH,TL00D4H方式2和方式3X8,最长定时时间TMAX2801S256S300S所以方式2和方式3不能实现510当T0工作在方式3下,TR1和TF1已被T0占用,如何控制T1的开启和关闭解T0设置为工作方式3,T0被分成两个独立的8位计数器TH0和TL0。其中TH0被固定为定时方式,并占用T1的状态控制位TR1、TF1。在这种情况下,T1可工作于方式0、1、2,作为串行口的波特率发生器。这时控制T1的启停由设置工作方式02(自动启动T1计数)和写入T1的方式字为方式3(停止计数)来实现。511已知8051型单片机的系统时钟频率为6MHZ,试利用定时器T0在P11输出周期为300S的正方波。解设T0工作在方式0,欲产生300S的等宽正方波脉冲,只需在P10端以150S为周期交替输出高低电平即可实现,为此定时时间应为150S。使用6MHZ晶振,则一个机器周期为2S。设待求的计数初值为X,则(213X)2S150S求解得X8117D1111110110101B。十六进制表示,高8位为0FDH,低5位为15H。其中高8位放入TH0,即TH00FDH;低5位放入TL0,即TL015H。TMOD寄存器初始化把T0设定为方式0,则M1M000;为实现定时功能,应使C/0;为实现用TR0控制T0的运行,TGATE0。因此TMOD寄存器应初始化为00H。采用软件查询方式程序如下程序如下ORG0000HLJMPMAINORG1000HMAINMOVTMOD,00H;设置T0为工作方式0MOVIE,00H;禁止中断SETBTR0;启动定时LOOPMOVTH0,0FDH;设置计数初值MOVTL0,15HJNBTF0,;查询计数溢出CLRTF0;计数溢出标志位清“0”CPLP11;输出取反AJMPLOOP;重复循环END本题也可用中断方式,读者可参考例58自己完成。512设单片机的系统时钟频率为12MHZ,试编程输出频率为100KHZ,占空比为210的矩形波。解信号频率为100KHZ,则周期为1/100KHZ10S,占空比为210即高电平为2S,低电平为8S的方波,设采用定时器T0工作在方式2,P10输出该矩形波。定时2S(28X)12/122,X2540FEH定时8S(28X)12/128,X2480F8H程序如下ORG0000HLJMPMAINORG000BHLJMPPULSEMAINMOVTOMD,02H;T0方式2MOVTH0,0F8H;定时8SMOVTL0,0F8HSETBET0;开中断SETBEACLRP10;输出低电平CLRF0;F00,输出低电平标志SETBTR0;启动定时器SJMP;等待中断PULSEJNBF0,NEXT1;中断服务程序MOVTH0,0FEH;定时2SMOVFL0,0FEHSJMPNEXT2NEXT1MOVTH0,0F8H;定时8SMOVTL0,0F8HNEXT2CPLF0CPLP10END513设8031型单片机的时钟频率为6MHZ,请编写程序在P10输出周期为2S的方波的程序。解1、输出周期为2S的方波,采用T0定时时间应为1S。因定时时间较长,先求T0各种工作方式的最长定时时间TMAX方式0时,计数器为13位,TMAX213121/6MHZ16384MS方式1时,计数器为16位,TMAX216121/6MHZ131072MS方式2时,计数器为8位,TMAX28121/6MHZ512S本题定时为1S,可选方式1,每隔100MS中断一次,中断10次为1S。2、求计数初值X为(216X)12/6100103所以X15536D3CB0H故TH03CH,TL00B0H3、对于中断10次,可采用T1工作于计数方式,也可采用循环程序的方法实现,本题采用循环程序法。4、确定方式控制字(T0工作于方式1)TMOD01H5、程序如下ORG0000HAJMPMAIN;转向主程序ORG000BH;定时器T0的中断入口地址AJMPTSER;转向中断服务程序主程序ORG1000HMAINMOVSP,60H;设堆栈指针MOVR0,0AH;设循环次数MOVTMOD,01H;设置T0为工作方式1MOVTH0,3CH;设置计数初值MOVTL0,0B0HSETBEA;开中断SETBET0;T0允许中断SETBTR0;启动定时器1HERESJMPHERE;等待中断中断服务程序TSERMOVTH0,03CH;重新设置计数初值MOVTL0,0B0HDJNZR0,LOOPCPLP10;输出取反LOOPRETI;中断返回END514利用8051型单片机的定时器测量某正单脉冲宽度,采用何种工作方式可以获得最大的量程若系统时钟频率为6MHZ,那么最大允许的脉冲宽度是多少答门控位GATE1时,仅当X0、1为高电平时,计数器才对计数。利用这一特性,INTX12/FOSC可测量输入到引脚的脉冲宽度(机器周期数)。采用方式1(16位计数器)可获得最大的量程,且I要求脉冲宽应小于65536个机器周期。当6MHZ时,允许测量的最大脉宽为65OSCF53612/6S13107MS。515试编写程序将内部RAM以30H为起点地址的X个数传送到外RAM以BUF为起点地址的区域,要求每隔500MS传送一个数据,设8031型单片机的时钟频率为6MHZ。解设用T0方式1来定时100MS,循环5次为500MS。定时100MS的初值X为(216X)12/6100103则X155363CB0H即TH03C,TL00B0H参考程序如下ORG1000HMOVR0,30H;源数据块首址MOVR1,X;数据块长度MOVDPTR,BUF;目标数据块首址LOOPMOVA,R0MOVXDPTR,ALCALLDEY500;调500MS延时子程序INCR0;修改源地址指针INCDPTR;修改目标地址指针DJNZR1,LOOP;未传送完则继续DEY500MOVR2,5;500MS延时子程序MOVTMOD,01HSETBTR0LLMOVTL0,0B0HMOVTH0,3CHJNBTF0,CLRTF0DJNZR2,LLRETEND习题6解答61在MCS51单片机系统中,外接程序存储器和数据存储器共用16位地址线和8位数据线,为什么不会发生冲突答MCS51单片机采用不同控制信号CPU访问片外ROM时,外部ROM用选通;访问PSEN外部RAM或扩展I/O口时,由(读)信号和(写)信号选通。因此,尽管程序存储器地址和数RDWR据存储器地址空间重叠,但不会发生混乱。62用两片EPROM2716给8051单片机扩展一个4KB的外部程序存储器,要求地址空间与8051的内部ROM相衔接,请画出逻辑连接图。解外部ROM的逻辑连接如图所示,8051内部ROM的4KB地址空间为0000H0FFFH,两片EPROM2716扩展的外部ROM4KB地址空间分别为IC11000H17FFH,IC21800H1FFFH。D0Q0D1Q1D2Q2D3Q3D4Q4D5Q5D6Q6D7Q7OEG74LS3736227164KBPSENP00P01P02P03P04P05P06P07P20P21P22ALEP23P248051A0A1A2A3A4A5A6A7A8A9A10OED0D1D2D3D4D5D6D7CEIC12716A0A1A2A3A4A5A6A7A8A9A10OED0D1D2D3D4D5D6D7CEIC227161163试用一片EPROM2716和一片RAM6116组成一个既有程序存储器又有数据存储器的存储器扩展系统,请画出逻辑连接图,并说明各芯片的地址范围。解2716是2KB的EPROM,6116是2KB的RAM,两者都需要11根地址线。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论