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

下载本文档

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

文档简介

单片机单片机原理与应用第4版习题答案第一章.单片机内部至少包含哪些部件?答:中央处理器CPU、I/O口、随机存储器RAM、只读存储器ROM。.根据程序存储器的差别,单片机可以分为哪几种类型?答:MCS-51系列单片机按片内不同程序存储器的配置来分,可以分为以下3种类型:1,片内带MaskROM(掩膜ROM)型:例如8051、80C51,8052、80c52。此类芯片是由半导体厂家在芯片生产过程中,将用户的应用程序代码通过掩膜工艺制作到ROM中。其应用程序只能委托半导体厂家“写入”,一旦写入后不能修改。此类单片机适合大批量使用。2、片内带EPROM型:例如8751、87C51,8752。此类芯片带有透明窗口,可通过紫外线擦除存储器中的程序代码,应用程序可通过专门的编程器写入到单片机中,需要更改时可擦除重新写入。此类单片机价格较贵,不宜于大批量使用。3、片内带EEPROM(电可擦可编程只读存储器)型:例如8951、89C51,8952。此类芯片可以在电脑上或专用设备上擦除已有信息,重新编程。此类单片机目前应用很广。4、片内无ROM(ROMLess)型:例如8031、80c31、8032.此类芯片的片内没有程序存储器,使用时必须在外部并行扩展程序存储器存储芯片。此类单片机由于必须在外部并行扩展程序存储器存储芯片,造成系统电路复杂,目前较少使用。.单片机的主要特点是什么?它适宜构成通用微机系统还是专用微机系统?为什么?答:单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种1/0口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。其主要特点如下:1、价格便宜。2、功能不大。只能专用在适用的领域,但在适用的领域中,性价比却是最佳。3,可靠性高,抗干扰能力强。4、功耗比较低。对电源要求低,适用面广。5、外围扩展能力强。可以应用到不同的控制系统中。根据其特点可知,单片机功能不大,不适宜构成通用微机系统,只适宜构成专用微机系统。.研制微机应用系统时,应如何选择单片机的型号?答:在单片机应用研究系统开发中,单片机是整个设计的核心。在进行正式的单片机应用研究系统开发之前,需要根据不同单片机的特性,从中作出合理的选择。.仔细调查市场,尽量选用主流的、货源充足的单片机型号,这些器件使用比较广泛,有许多设计资料供学习或参考。.尽量选择所需硬件集成在单片机内部的型号,例如ADC、DAC、I2C、SPI和USB等。这样便于整个控制系统的软件管理,减少外部硬件的投入,缩小整体电路板的面积,从而减少总体投资等。.对于手持设备,移动设备或者其他需要低功耗的设备,尽量选择低电压、低功耗的单片机型号,这样可以减少能量的消耗,延长设备的使用寿命。.在资金等条件允许的情况下,尽量选择功能丰富,扩展能力强的单片机,这样便于以后的功能升级和扩展。.对于体积有限制的产品,尽量选择贴片封装的单片机型号,这样可以减少电路板面积,从而降低硬件成本,同时也有助于电磁兼容设计。第一草1.分别写出一个MCS-51中ROM、EPROM、无ROM型单片机的型号和内部资源。其中哪个产品内部具有固化的软件?该软件能否被所有用户所使用?怎样使用该种产品?答:1、8051,80c51、8052、80C52.此类芯片带有4K字节的掩膜ROM,由半导体厂家在芯片生产过程中,将用户的应用程序代码通过掩膜工艺制作到ROM中。其应用程序只能委托半导体厂家“写入”,一旦写入后不能修改。2、8751、87c51、8752.此类芯片带有4K字节的EPROM,带有透明窗口,可通过紫外线擦除存储器中的程序代码,应用程序可通过专门的编程器写入到单片机中,需要更改时可擦除重新写入。3,8031、80c31、8032o此类芯片片内无ROM,使用时必须在外部并行扩展程序存储器芯片。其中8051、80c51、8052、80C52等产品具有固化软件,该软件不能被所有用户所使用,应用程序只能委托半导体厂家“写入”。.MCS-51中无ROM型单片机在应用中P2口和P0口能否直接作为输入/输出口连接开关、指示灯之类的外围设备?为什么?答:不能。因为无ROM型单片机在应用中必须扩展程序存储器,P0口必须作为地址总线的低8位及数据总线复用,P2口必须作为高8位地址总线送出高8位地址,因此P2口和P0□的输出信号都是不稳定的,不能直接作为输入/输出口连接开关、指示灯之类的外围设备。.什么是堆栈?8032的堆栈区可以设在什么地方?一般应设在什么区域?如何实现?试举例说明。答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"后进先出”的结构方式处理的。实质上,堆栈就是一个按照“后进先出”原则组织的一段内存区域。堆栈操作指令PUSHdirect,POPdirect只能采用直接寻址方式,8032的片内RAM中只有低128字节可以采用直接寻址方式访问,因此,尽管8032片内RAM的地址范围是OOH-OFFH,但堆栈区只可以设在内部RAM中的00H-7FH的区域内,一般应设在30H-7FH的范围内。可以通过赋值的方式设置堆栈区,如:MOVSP,#60H„.8031的内部RAM中,哪些可以作为数据缓冲区?答:8031内部RAM的128字节均可以作为数据缓冲区,但00H〜1FH通常作为工作寄存器区使用,20H〜2FH通常作为位寻址区使用。.对于8052单片机,地址为90H的物理单元有哪些?答:一个是Pl口,Pl口的物理地址就是90H,使用直接寻址方式访问;还有一个是RAM单元,必须使用寄存器间接寻址方式访问。.MCS-51单片机构成系统时,程序存储器的容量最大是多少?答:MCS-51单片机构成系统时,程序存储器的容量最大是64KB。.当单片机系统的程序存储器的容量为8KB时,程序存储器的开始地址为多少?答:因为单片机复位时,PCROOOH,程序都是从0000H开始执行,所以无论何种情况,程序存储器的开始地址都必须是OOOOHo.MCS-51单片机构成系统时,外部数据存储器的容量最大是多少?答:MCS-51单片机构成系统时,外部存储器的容量最大是64KB。.当单片机系统外部数据存储器的容量为8KB时,数据存储器的开始地址一定要是0000H吗?答:不一定。.什么是单片机的的节电方式?答:MCS-51系列运行时耗电小,还提供两种节电工作方式一一空闲方式和掉电方式。在单片机空闲时程序停止运行,进入待机状态,在接收到一个中断时退出空闲方式,处理完后继续进入空闲方式,就这样断断续续的工作以达到节电目的。.CHM0S型单片机,进入掉电方式时,单片机的振荡器是否工作?采用什么办法能使单片机退出掉电方式?答:不工作。在掉电方式中,振荡器停止工作,单片机内部所以功能部件停止工作。在掉电方式期间,内部RAM和寄存器的内容维持不变。退出掉电方式的唯一方法是硬件复位。.CHMOS型单片机,进入空闲方式时,单片机的振荡器是否工作?采用什么办法能使单片机退出空闲方式?答:工作。进入空闲方式中,中断、串行口和定时器继续工作。CPU现场、内部RAM和其他特殊功能寄存器内容维持不变。有两种方法退出空闲方式,一是采用被允许的中断源请求中断;二是硬件复位,因为空闲方式中,振荡器在工作,所以仅需两个机器周期便完成复位。第三章指出下列指令中划线操作数的寻址方式和指令的操作功能。答:MOVA,#78H;立即寻址,将立即数送入累加器AMOVA,78H; 直接寻址,将内部RAM78H单元内容送累加器AMOVA,R6;寄存器寻址,将R6内容送累加器AINC@R0; 寄存器间接寻址,将指针R0指向的内部RAM单元内容加1PUSHACC; 直接寻址,将累加器A的内容入栈RLA: 寄存器寻址,将累加器A的内容左移1位

CPL30H; 位寻址,将位变量30H的内容取反SJMPI; 相对寻址,原地等待MOVCA,@A+PC;基寄存器加变址寄存器间接寻址,程序存储器PC和累加器A中内容相加形成ROM地址,取数送到累加器A。指出下列指令中哪些是非法的?INC@R1DECDPTRMOVA,@R2MOVRI,@R0MOVPl.1,30HMOV#30H,AMOV20H,21HMOVOV,30HMOVA,©A+DPTRRRC3011RLBANL20H,#30HXRLC,30H答:DECDPTRDECDPLMOVA,@R2MOVA,@R1MOVRI,@R0MOVA,@R0MOVPl.1,30HMOVC,30H和MOVPl.1,CMOV#3011,AMOVA,#30HMOV0V,30HMOVC,30H和MOV0V,CMOVA,©A+DPTRMOVCA,@A+DPTRRRC30HRRCA因为所有的移位指令均是对累积器A进行的RLBRLAXRLC,30H错,因为位操作指令中,没有位的异或运算如何将1个立即数30H送入内部RAM90H单元?如何将立即数送特殊功能寄存器P1?答:(1)MOVRO,#90HMOV©RO,#30H(2)MOVPl,#30H4.执行下列一段程序后,试分析有关单元内容。答:MOVPSW,#0;(PSW)=OOHMOVR0,#3011;(R0)=30HMOV30H,#40H(30H)=40HMOV40H,#50(4011)=32HMOVA,@R0(A)=40HADDCA,#OCEH(A)=40H+0CEH+0=0EII PSW=10000001B=81HINCR0(R0)=31H最后的执行结果:(R0)=31H,(3011)=4011,(4011)=3211,(A)=0EH,(PSW)=81HPSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.OCyACFORSI RSOOV—P.试编写一段程序,将内部RAM40H、41H单元内容传送到外部RAM2000H、2001H单元中去。答:MOVDPTR,#2000HMOVRO,#40HMOVA,@R0MOVX@DPTR,AINCROINCDPTRMOVA,@R0MOVX@DPTR,A.试编写一段程序,根据累加器A的内容,到程序存储器1000H起始的表格中取一双字节数,送内部RAM50H、51H单元。答:MOVDPTR,#100011PUSHACCMOVCA,©A+DPTRMOV50H,APOPACCINCDPTRMOVCA,@A+DPTRMOV51H,A.试编写一段程序,进行两个16位数的相减运算:6483H-56E2H。结果高8位存内部RAM40H,低8位存41Ho答:CLRCMOVA,#83HSUBBA,#0E2HMOV41H,AMOVA,#64HSUBBA,#56HMOV40H,A.试编写一段程序,将30H、31H单元中存放的BCD数,压缩成一个字节(原30H单元内容为高位),并放入30H单元。答:MOVA,30HSWAPAORLA,31HMOV30H,A.试编写一段程序,将30H〜32H单元中的压缩BCD拆成6个单字节BCD数,并放入33H到38H单元。答:MOVA,30HMOVRO,#33HACALLLPMOVA,31HACALLLPMOVA,32HACALLLPSJMP$LP:MOVB,AANLA,#OFHMOV@RO,AINCROMOVA,BSWAPAANLA,#OFHMOV@RO,AINCRORET.设晶振频率为6MHz,试编写一个延时hns的子程序,并利用该子程序,编写一段主程序,在PL0引脚上输出高电平宽2ms、低电平宽1ms的方波信号。答:机器周期T=2us,延时1ms的子程序应运行500T,子程序为:DELAY:MOVRO,#248;ITTOC\o"1-5"\h\zDJNZ RO,$; 2TNOP; ITRET 2T子程序运行机器周期数为:1T+248*2T+1T+2T=500T,500T=lms主程序为:MOVPSW,#0011LOOP:SETBP1.0ACALLDELAYACALLDELAYCLRP1.0ACALLDELAYSJMPLOOP第四章.试根据Pl口和P3口的结构特性,指出它们作为输入口或第二功能输入/输出的条件。答:P1口作为输入口时,相应的口锁存器必须先置“1”,使输出场效应管T截止,CPU读Pl时才能准确读取外部电路的输入信息。同理,P3口作为第二功能I/O口时,相应的口锁存器也必须先置“1”。.MCS-51中无ROM型单片机,在应用中PO口和P2口能否直接作为输入/输出口连接开关、指示灯之类的外围设备?为什么?答:不能。因为无ROM型单片机在应用中必须扩展程序存储器,P0口必须作为地址总线的低8位及数据总线复用,P2口必须作为高8位地址总线送出高8位地址,因此P2口和P0口的输出信号都是不稳定的,不能直接作为输入/输出口连接开关、指示灯之类的外围设备。.什么是堆栈?堆栈的作用有哪些?答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"后进先出”的结构方式处理的。实质上,堆栈就是一个按照"后进先出”原则组织的一段内存区域。作用:(1)子程序调用和中断服务时CPU自动将当前PC值压栈保存,返回时自动将PC值弹出堆栈。(2)保护现场/恢复现场(3)数据传输.MCS-51的TO、T1的定时器和计数器的方式差别是什么?试举例说明这两种方式的用途。答:MCS-51的TO、T1的定时器和计数器本质上都是计数器,定时器方式是对单片机内部的机器周期数进行计数,计数器方式是对TO、T1引脚上输入的外部脉冲(方波)信号进行计数。定时器方式用来产生定时信号,可用于串行通信,也可以通过口输出脉冲和方波信号;计数器方式可以用来检测外部信号的频率和脉宽。.晶振为12MHz,用TO产生1ms的定时,可以选择哪几种方式?分别写出定时器的方式字和计数初值。如需要1s的定时,应如何实现?答:由于定时器工作在方式2和方式3下时的最大定时时间只有0.256ms,因此要想获得1ms的定时时间,定时器必须工作在方式0或方式1。机器周期T=12X1/12X10%=1us,计数值Tttft=lms/lum=1000.1、采用方式0,定时器的方式字TMOD=OOH,定时器的计数初值为TC=M-T/Th数=2i3-i*io3/1=7192=1C18H,TH0应装#1CH;TLO应装#18H。2,采用方式1,定时器的方式字TM0D=01H,定时器的计数初值为TC=M-T/This=2i6-l*103/l=64536=FC18H,THO应装#0FCH;TLO应装#18H。如需要Is的定时,可以采用查询相应溢出标志位,结合软件计数100循环,即可实现1s的定时。.晶振为12MHz,如何用TO来测试20Hz“000Hz之间的方波信号(设高低电平宽度相同)的周期?又如何测试频率为0.5MHz左右的脉冲频率?答:1、使用定时器方式,利用方波的边沿触发定时器的开始与结束,比如使用上升沿来启动定时器计数,机器周期T为lus,下降沿停止计数。依据计数值N计算周期,周期=2N*To2、TO工作在计数器方式,待测试的脉冲信号引入T0引脚计数,同时T1工作在定时器方式,定时1ms,1ms定时结束时取TO计数值,脉冲频率=1000*T0计数值。.若晶振为11.0592MHz,串行口工作于方式1,波特率为4800bit/s,分别写出用T1、T2作为波特率发生器的方式字和计数初值。答:n作为波特率发生器。由:波特率=2$侬*振荡器频率/[32*12*(256-X)]设SM0D=0,可得,4800=2°*11059200/32/12/(256-X),可得的计数初值X=250=0FAH,将X值装入TH1中,TM0D=20HoMOVTMOD,#20H;T1方式2MOVTHl.ttOFAHT2作为波特率发生器,需对T2C0N(置"1"TCLK、RCLK),TH2、TL2、RCAP2H,RCAP2L初始化编程,再置“1”TR2,具体略。.串行口方式0能否外接多个74LS164?若不可以,说明原因:若可以,画出逻辑框图并说明数据输出方法。答:串口工作方式0时,可以外接多个74LS164o此时TXD用于发送同步脉冲接74LS164的CLK端,RXD用于发送数据接第一片74LS164的数据输入端DSA和DSB,74LS164的/CR和Vcc端接+5V,Vss端接地,后一片74LS164的数据输入端DSA和DSB接前一片74LS164的Q7。只要将数据载入SUBF之后,时钟脉冲和数据就会自动出现在单片机的I/O端口,程序不需要对I/O口再进行干预。出现在74LS164的数据低位在右,高位在左。将数据多次载入SUBF,就可以在多个74LS164的输出端得到稳定的数据。逻辑框图略,可参考教材的例4-8..MCS-51的中断处理程序能否存储在64KB程序存储器的任意区域?若可以,如何实现?答:可以。因为每个中断源的中断入口地址处均预留了8个单元的空间,8个单元足够存放一条跳转指令,使程序转向64KB程序存储区的任意区域。在相应的中断入口使用JMP指令进行跳转就可以实现。.在一个8031系统中,晶振为12MHz,一个外部中断请求信号是一个宽度为500ms的负脉冲,则应该采用哪种中断触发方式,如何实现?答:应该采用边沿触发方式,采用SETBITO或SETBIT1即可。若采用电平触发方式,由于外部中断请求信号长期存在,可能会引起重复中断。.若外部中断请求信号是一个低电平有效的信号,是否一定要选择电平触发方式?为什么?答:不一定。因为采用边沿触发,能自动锁存中断信号,是一种可靠的中断管理方式。第五章.若晶振为6MHz,试编写一个2nls延时子程序。答:晶振为6MHz,机器周期T为2us,应计满1000个T0DELAY:MOVR7,#10DLYO:MOVR6,#49DLY1:DJNZR6,DLY1;2TDJNZR7,DLYO;2TRET.试编制一个子程序,对串行口初始化,使串行口以方式1,波特率1200bit/s(晶振为11.059MHz)发送字符串“MCS-51"。答:ORG0000HAJMPMAIN0RG01OOHMAIN:MOVTMOD,#20HMOVTL1,#OE8IIMOVTH1,#OE8HSETBTRIMOVSCON,#42HMOVR4,#0MOVDPTR,#TABFS1:MOVA,R4MOVCA,@A+DPTRCJNER4,#6,FS2SJMPFSJSFS2:JBCTI,FS3SJMPFS2FS3:MOVSBUF,AINCR4SJMPFS1FSJS:SJMP$TAB:'M',C,'S',」,'5',TEND.晶振为11.059MHz,串行口工作与方式3,波特率为2400bit/s,第9位数据为奇校验位。编制一个程序,对串行口初始化,并用查询方式接受串行口上输入的10个字符存入内部RAM中30H开始的区域。答:RECS:MOVSCON,#ODOH;串行口方式3允许接收MOVTMOD,#20H:T1方式2定时MOVTL1,#0F4H;写入n时间常数MOVTH1,#0F4HSETBTRI;启动T1MOVR0, #30H;设数据指针MOVR7, #10;接收数据长度WAIT:JBCRI,NEXT;等待串行口接收SJMPWAITNEXT:MOVA,SBUF;取一个接收字符JNBP,COMP;奇偶校验JNBRB8,ERR;PWRB8,数据出错SJMPRIGHT;P=RB8,数据正确COMP:JBRB8,ERRRIGHT:MOV@R0,A;保存一个字符INCR0;修改指针DJNZR7,WAIT:全部字符接收完?CLRF0;F0=0,接收数据全部正确ERR:SETBF0:F0=1,接收数据出错RET.写一个子程序,其功能是将(R0)指出的两个RAM单元中的数转化为ASCII字符,并用查询方式从串行口上发送出去。答:设串行口以方式1工作,波特率为1200bit/s,晶振为11.059MHz。ORG0000HAJMPMAINORG010011MAIN:MOVTMOD,#20HMOVTL1,#OE8HMOVTH1,#OE8HSETBTRIMOVSCON,#42HMOVR4,#2FS1:MOVA,@R0ANLA,#0FHMOVDPTR,#TABMOVCA,A+DPTRFS2:JBCTI,FS3SJMPFS2FS3:MOVSBUF,AINCRODJNZR4,FS1FSJS:SJMP$TAB:DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,41H,43H,44H,45H,46HEND.试编写一个子程序将字符串“MCS-51Microcomputerw装入外部RAM8000H开始的显示缓冲区。答:ORG0000HAJMP0030HMIAN:MOVDPTR,#800011MOVRl,#0MOVR0,#20LOOP:MOVA,RIADDA,#6MOVCA,@A+PCMOVX©DPTR,AINCDPTRINCRIDJNZRO,LOOPSJMP$TAB:DB'MCS-51Microcomputer'END.试设计一个n字节的无符号十进制数加法子程序,其功能为将(R0)和(R1)指出的内部RAM中两个n字节压缩BCD码无符号十进制数相加,结果存放于被加数单元中。子程序入口时,RO,R1分别指向被加数和加数的低位字节,字节数n存于R2,出口时R0指向和的最高位字节,CY为进位位。答:LENEQUnORG0000HAJMPMAINORG0030HMAIN:MOVSP.#6011MOVR2,#LENACALLADD_NBYTESJMP$ADD_NBYTE:CLRCLOOP:MOVA,@R0ADDCA,@R1DAAMOV@R0,AINCROINCRIDJNZR2,LOOPRETEND.试设计一个n字节的无符号十进制数减法子程序,其功能是将R0指出的内部RAM中n字节无符号压缩BCD码减去(R1)指出的内部RAM中n字节无符号压缩BCD码,结果存放在被减数单元中。子程序入口时,RO,R1分别指向被减数和减数的低位字节,字节数n存于R2,出口R0指向差的高位字节,CY=1为正,CY=O为负,结果为补码。答:以n=2为例。.将2字节无符号压缩BCD码被减数转换4位BCD码,存入60H-63H,再转换为二进制数,存R3R4。MOVA,@R0ANLA,#OFHMOV63H,AMOVA,@R0SWAPAANLA,#OFHMOV62H,AINCROMOVA,@ROANLA,#OFHMOV63H,AMOVA,@ROSWAPAANLA,#OFHMOV62H,ADTB:MOVRO,#60HMOVR3,#3MOVR3,#0MOVA,@R0MOVR4,ALOOP:MOVA,R4MOVB,#10MULABMOVR4,AMOVA,BXCHA,R3MOVB,#10MULABADDA,R3MOVR3,AINCROMOVA,R4ADDA,@R0MOVR4,AMOVA,R3ADDCA,#0MOVR3,ADJNZR2,LOOP.用相同程序可将2字节无符号压缩BCD码减数转换4位BCD码,存入60H〜63H,再转换为二进制数,存R5R6。.双字节无符号数减法程序,差存入R7R1NSUB1:MOVA,R4CLRCSUBBA,R6MOVRI,AMOVA,R3SUBBA,R5MOVR7,AJBCPOUTCMPT:MOVA,RI;负数求补CPLAADDA,#lMOVRI,AMOVA,R7CPLAADDCA,#0MOV@RO,ADECROMOV@RO,R1INCRORET.试设计一个子程序,其功能为判断R2R3R4R5中的压缩BCD码十进制数最高位是否为0,若最高位为0,且该十进制数不为0,则通过左移使最高位不为0。略.试设计一个双字节无符号整数乘法子程序,其功能将R3R2和R5R4相乘,积存于30H-33H单元。答:MULTB:CLRAMOV30H,AMOV31H,AMOV32H,AMOV33H,AMOVR0,#30HMOVA,R2MOVB,R4MULABACALLRADDMOVA,R2MOVB,R5MULABDECR0ACALLRADDMOVA,R4MOVB,R3MULABDECR0DECR0ACALLRADDMOVA,R5MOVB,R3MULABDECR0ACALLRADDSJMP$RADD:ADDA,@R0MOV@RO,AMOVA,BINCROADDCA,©ROMOV@RO,AINCROMOVA,©ROADDCA,#OOHMOV@RO,ARET.试设计一个子程序,其功能将无符号二进制整数R2R3R4R5除以R6R7,其商存放于30H,31H单元,余数存于R2R3。略.试设计一个子程序,其功能为将R0指出的内部RAM中6个单字节正整数按从小到大的次序重新排列。答:ORG0200HMOV30H,#6SUM1EQU30HSUM2EQU31HLOOP1:MOVA,ROINCAMOVRI,AMOVSUM2,SUMIDJNZSUMI,LOOP2SJMPDONELOOP2:DJNZSUM2,LOOP3SJMPLOOP1LOOP3:MOVA,@R0CLRCSUBBA,@R1JCNEXTXCHA,@R1MOV@RO,ANEXT:INCROINCRISJMPLOOP2DONE:END.试设计一个子程序,其功能为应用查表指令:MOVCA,0A+PC,求累加器A的平方值,结果送入A,入口时A<15。答:MEMO:INCAMOVCA,@A+PCRETTAB:DB0,1,4,9,16,25,36,49DB64,81,100,121,144,169,196,225.试设计一个子程序,其功能将R0指出的内部RAM中双字节压缩BCD码转化为二进制数存放于R1指出的内部RAM中,并将结果再转化为BCD码存放于30H开始的单元中。答:先将压缩BCD码转化为BCD码存放于30H开始的单元中MOVR2,R0MOVA,@R0PUSHACCANLA,#OFHMOV30H,APOPACCSWAPAANLA,#OFHMOV31H,AINCROMOVA,@R0PUSHACCANLA,#OFHMOV32H,APOPACCSWAPAANLA,#OFHMOV33H,AMOVA,31H;((Rl))=(31H)*10+(30H)MOVB,#10MULABADDA,30HMOV@R1,AMOVA,32H;((Rl)+1)((Rl))=(32H)*100+((RI))MOVB,#100MULABADDA,@R1MOV@R1,AINCRIMOVA,BADDCA,@R1MOV@R1,AMOVA,33H;((Rl)+1)((Rl))=(33H)*1000+((RI)+1)((RI))MOVB,#232MULABDECRIADDA,@R1PUSHPSWMOV@R1,AINCRIMOV@R1,BMOVA,33HMOVB,#3MULABPOPPSWADDCA,@R1MOV@R1,A.若晶振为6MHz,用TO产生500us的定时中断,试编写有关的初始化程序和对时钟进行计数的TO中断服务程序。时钟计数单元为:30H,31H,32H,分别存放压缩BCD码的时分秒参数。答:晶振为6MHz,机器周期T为2us,500us=250T,TO可以工作在方式2。有关的初始化程序和对时钟进行计数的TO中断服务程序如下:ORG0000HSJMPMAINORGOOOBHSJMPPTOORG0030HMAIN:MOVTMOD,#02HMOVTHO,#6MOVIE,82HSETBTROCLRAMOV30H,AMOV31H,AMOV32H,AMOV33H,AMOV34H,AMOV35H,AMOVR7,#40MOVR6,#50SJMP$PTO:DJNZR7,AlMOVR7,#40DJNZR6,AlMOVR6,#50INC33HCJNE3311,#60,A2MOV33H,#0MOV30H,#0INC34HCJNE34H,#60,A3MOV34H,#0MOV31H,#0INC35HCJNE35H,#24,A4MOV35H,#0MOV32H,#0Al:RETIA2:MOVA,33HMOVB,#10DIVABSWAPAMOV30H,BMOVRO,#30HXCHDA,@R0MOV30H,ASJMPAlA3:MOVA,34HMOVB,#10DIVABSWAPAMOV31H,BMOVRO,#31HXCHDA,@R0MOV31H,ASJMPAlA4:MOVA,35HMOVB,#10DIVABSWAPAMOV32H,BMOVRO,#32HXCHDA,@R0MOV32H,ASJMPAl.在一个8031系统中,晶振为12MHz,Pl口上输入8路脉冲,频率为0.ITHz,现用TO产生1ms定时,由TO中断服务程序读P1口的状态,若发生上跳则该路软件计数单元加b每到1分钟将各路计数值拆分成2位十六进制数送显示缓冲区70H-7FH,并清零各计数器,试编写有关程序。答:设置8路脉冲计数值缓冲区60H-67H,机器周期T=lus,lms=1000T,TO工作在方式1,ORG0000HSJMPMAINORGOOOBHSJMPPTOORG0030HMAIN:MOVTMOD,#01HMOVTHO,#OFCHMOVTLO,#1811MOVIE,82HSETBTROCLRAMOV60H,AMOV61H,AMOV62H,AMOV63H,AMOV64H,AMOV65H,AMOV66H,AMOV67H,AMOV70H,AMOV71H,AMOV72H,AMOV73H,AMOV74H,AMOV75H,AMOV76H,AMOV77H,AMOV78H,AMOV79H,AMOV7AH,AMOV7BH,AMOV7CH,AMOV7DH,AMOV7EH,AMOV7FH,AMOVR7,#8MOVRO,#60HMOVRI,#7011MOV68H,PlMOV69H,PlSJMP$PTO:MOV6AH,PlMOV6BH,PlPUSHACCA3:MOVA,68HRRCAMOV68H,AJCAOMOVA,6AHRRCAMOV6AH,AJNCAlINC@ROMOVA,@ROANLA,#OFHMOV@R1,AMOVA,@ROSWAPAANLA,#OFHINCRIMOV@R1,ADECRIA2:INCROINCRIINCRIDJNZR7,A3MOV68H,6BHPOPACCRETIAO:MOVA,6AHRRCAMOV6AH,AAl:SJMPA2.在某应用系统中,有A-T20个单字符合法命令,这些命令的处理程序入口地址依次存放在标号为CADR开始的地址表中,若输入的命令字符存放于A,试编写一个散转程序,其功能为:若(A)为非法字符,则转CDER;若为合法字符,则转相应的入口地址。答:A-T字符对应的ASC码16进制数为41H-54H,散转程序为:PUSHACCCLRCSUBBA,#55HJNCCDERPOPACCPUSHACCCLRCSUBBA,#4111JCCDERPOPACCMOVB,#3MULABMOVDPTR,#CADRJMP@A+DPTRCADR:LJMPPGALJMPPGBCDER:非法字符处理第六章1.一个8051扩展系统,用线选法最多可以扩展几片6264?画出原理图,并确定每片6264的地址范围解:一个8051扩展系统,用线选法最多可以扩展3片6264。扩展电路中6264的地址线A0-A12与地址锁存器373的输出及P2.0-P2.4的对应线相连,6264的数据线DO-D7与P0口对应相连,6264的读写控制端无和而与8051的血和丽对应相连,三个6264的片选信号端分别接8051的P2.5,P2.6,P2.7o

C000HDFFFH第二片(1010)000000000000————(1011)FFFFFFFFFFFFA000HBFFFH第三片(0110)000000000000————(0111)FFFFFFFFFFFF6000H7FFFH2.MCS-51单片机用地址译码法最多可扩展多少片6264?它们的地址范围各是多少?试画出其逻辑图。解:最多可扩展8片6264,地址范围如下:第一片:0000H-1FFFH第二片:2000H-3FFFH第三片:4000H-5FFFH第四片:6000H-7FFFH第五片:8000H-9FFFH第六片:OAOOOH-OBFFFH第七片:OCOOOH-ODFFFH

第八片:OEOOOH-OFFFFH3.一个8032扩展系统,扩展了一片27256、一片62256、一片74LS377、一片74LS245、一片8255、一片0809、一片0832,试画出其逻辑图,并写出各器件的地址范围。解:8032扩展一片27256、一片62256的逻辑图如图所示,P2.7低电平时可选中62256,27256、62256的地址范围均为0000H-7FFFH。下图中,扩展一片27256(32K),一片62256(32K)/RAM的地址为:0〜7FFFH(P?7为片选信号,P2.7=0)卜ROM的地址为:0〜7FFFH(CE接地)[ ■由祁EN、TO.WR有效访问。采用3-8译码器使用全地址译码法连接其他芯片,采用P2.0、P2.1、P2.2作为3-8译码器的输入信号,P2.7作为3-8译码器的使能信号,只有当P2.7=1,3-8译码器才有有效低电平输出。设3-8译码器的丫。连74LS377的片选信号端后,8032的而连74LS377的CLK端,则74LS377的地址范围为:8000H-8FFFH;设3-8译码器的Yi连74LS245的片选信号端3,8032的而连74LS245的DIR端,则74LS245的地址范围为:9000H-9FFFH;设3-8译码器的丫2连8255的片选信号端方,地址锁存器373的输出h、Ai分别接8255的A。、A,,8032的丽、而连8255的丽、而端,贝8255的PA口地址范围为:1010XXXXXXXXXXOO;PB口地址范围为:1010XXXXXXXXXX01;PC口地址范围为:1010XXXXXXXXXX10;控制口地址范围为:1010XXXXXXXXXXlloX为。和1之间的任意数。设3-8译码器的丫3与8032的丽、丽信号分别或非后连0809的左端及START/ALE并连端,0809的EOC端经非门连接8032的而i,8032的ALE经2

分频后接0809的CLOCK端,地址锁存器373的输出A。、Ai、A,分别接0809的A。、A、、A2,贝IJ0809的8个通道地址范围为:1011XXXXXXXXX000、1011XXXXXXXXX001、1011XXXXXXXXX010,1011XXXXXXXXX011.1011XXXXXXXXX100.1011XXXXXXXXX101.1011XXXXXXXXX110,1011XXXXXXXXXlllo设3-8译码器的匕接0832的片选信号端次/通乐并连端,8032的丽接0832的而并连端,则0832的地址范围为:1100XXXXXXXXXXXX0部分逻辑图略。4.在一个89c51扩展系统中,P2口接I/O设备,P0口做扩展总线口使用,扩展一片8255、一片0832,试画出其逻辑图,并编写一个初始化程序,使8255的PA、PC口为方式0输出,PB口以方式0输入。解:由于8255A内部已有数据总线驱动器,可以直接与MCS-51单片机总线相连接。下图是8255A与MCS-51单片机的一种连接方法。4AOA1C5MmD2D3rM股D7RERD04AOA1C5MmD2D3rM股D7RERD0obr”■.、丁三T-十rU43?144111Iit 6701234567O1,彳-4S67AAAAAAAABBRBRBBRpppppppppppppppppppppppp由于P2口接I/O设备,应采用MOVX@Ri,A、MOVXA,@Ri类指令访问8255和0832,74LS373的Q7连8255的CS端,Q6连0832的CS端和XFER端,其他如上图和教材图6-32所示。8255的A口地址为70H、B口地址为71H、C口地址为72H、控口地址为73H,0832地址为ODFH,8255的控制字为10000010B,初始化程序为:MOVRO,#73HMOVA,#100000106MOVX@R0,A.试编制一个程序,使0832输出一个幅度为4V的三角波形。解:设0832地址为7FFFH,外接基准电压为0-5V,4V对应的数值为4*255/5=204ORG0000HJMPSTARTORG0030HSTART:CLRALOOP:MOVDPTR,#7FFFH;该循环产生上升波形MOVX@DPTR,AINCACALLDELI;延时CJNEA,#204,LOOPL00P1:MOVDPTR,#7FFFH;该循环产生下降波形MOVX@DPTR,ADECACALLDELI;延时JNZL00P1SJMPLOOPDELI:MOVR6,#2;延时子程序DEL2:MOVR7,#250DJNZR7,DEL2;内循环250遍DJNZR6,DELI;外循环2遍RETEND.晶振频率为12MHz,利用程序存储器中OEOOH-OFFFH表格内的512B数据,通过D/A转换,产生频率约为1Hz的正弦周期波形,试编制有关程序。解:设D/A转换器0832的地址为ODFFFH,则8032正弦波电压输出程序如下:MOVR5,#00HSIN:MOVA,R5MOVDPTR,#OEOOHMOVA,@A+DPTRMOVDPTR,#ODFFFHMOV@DPTR,AINCR5AJMPSINORGOEOOHTAB:DB:808386898D909396999C9FA2A5A8ABAEBlB4B7BABCBFC2C5

C7CACCCFDID4D7D6DADDDFElE3E5E7E9EAECEE:EF<FlF2F4F5F6F7F8F9FAf'BI'CFDFDFCFBFAF9F8F7F6F5F4F2FlEFEEECEAE9E7E5

温馨提示

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

评论

0/150

提交评论