《单片微型计算机原理胡乾斌课后习题答案.pdf》由会员分享,可在线阅读,更多相关《单片微型计算机原理胡乾斌课后习题答案.pdf(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、习题11.1 什么是单片微型计算机?答:单片微型计算机是将计算机的基本部件微型化并集成到一块芯片上的微型计算机,是计算机微型化的典型代表之一,通常片内都含有CPU、ROM、RAM、并行I/。、串行I/O、定时器/计数器、中断控制、系统时钟及系统总线等。1.2 单片机的发展经历了哪几个阶段?在哪一阶段确立 单片机在嵌入式应用中的地位。答:单片机初级阶段(1974-1976年),芯片化探索阶段(19761978年),8 位单片机成熟阶段(1978-1982年),从SCM向MCU过渡阶段(19831990年),MCU百花齐放阶段(1990年一至今)。其中,芯片化探索阶段(19761978年)确立了单
2、片机在嵌入式应用中的地位.1.3 单片机可分为几个系列?简述每个系列的主要特性。答:单片机按系列可分为80c51系列、PIC系列和AVR系列等。PIC系列单片机是Micro Chip公司的产品,与 51系列单片机不兼容。1)PIC系列单片机最大的特点是从实际出发,重视产品的性能与价格比,发展多种型号来满足不同层次的应用要求。2)精简指令使其执行效率大为提高。3)产品上市零等待(Zero time to market)。4)PIC有优越开发环境。5)其引脚具有防瞬态能力,通过限流电阻可以接至220V交流电源,可直接与继电器控制电路相连,无须光电耦合器隔离,给应用带来极大方便。6)彻底的保密性。7
3、)自带看门狗定时器,可以用来提高程序运行的可靠性。8)睡眠和低功耗模式。AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU)精简指令集高速8 位单片机。AVR单片机的主要特性1)AVR单片机以字作为指令长度单位,将内容丰富的操作数与操作码安排在一字之中(指令集中占大多数的单周期指令都是如此),取指周期短,又可预取指令,实现流水作业,故可高速执行指令。2)AVR单片机硬件结构采取8 位机与16位机的折中策略,即采用局部寄存器堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相
4、应控制逻辑)。提高了指令执行速度(IMIPS/MHz),克服了瓶颈现象;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。3)AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和IA P,便于产品的调试、开发、生产、更新。4)AVR单片机的I/O线全部带可设置的上拉电阻、可单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使得I/O 口资源灵活、功能强大、可充分利用。5)AVR单片机片内具备多种独立的时钟分频器,分别供URAT、I2C SPI使用。6)增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验帧错、两级接收缓冲、
5、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过MCS-51/96单片机的串口,加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯。7)面向字节的高速硬件串行接口 TWI、SPL TWI与12c接口兼容,具备ACK信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/发全部4 种组合的多机通信。SPI支持主/从机等4 种组合的多机通信。8)AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BO D,多个复位源(自动上电复位、外部复位、看门狗复位、BOD复位),可
6、设置的启动后延时运行程序,增强了嵌入式系统的可靠性。9)AVR单片机具有多种省电休眠模式,且可宽电压运行(52.7V),抗干扰能力强,可降低一般8 位机中的软件抗干扰设计工作量和硬件的使用量。10)AVR单片机技术体现了单片机集多种器件(包括FLASH程序存储器、看门狗、EEPROM、同/异步串行口、TWI.SPL A/D模数转换器、定时器/计数器等)和多种功能(增强可靠性的复位系统、降低功耗抗干扰的休眠模式、品种多门类全的中断系统、具有输入捕获和比较匹配输出等多样化功能的定时罂/计数器、具有替换功能的I/O端口等)于一身,充分体现了单片机技术的从 片自为战 向 片 上系统SOC”过渡的发展方
7、向1.4简述单片机技术发展的趋势。答:(1)单片机的大容量化单片机内存储器容量进一步扩大。以往片内ROM为 1KB-8KB,RAM为 64字节 256字节。现在片内ROM可达40KB,片内RAM可达4KB,I/O也不需再外加扩展芯片。OTPROM、Flash ROM成为主流供应状态。而随着单片机程序空间的扩大,在空余空间可嵌入实时操作系统RTOS等软件。这将大大提高产品的开发效率和单片机的性能。(2)单片机的高性能化高性能化主要是指进步改进CPU的性能,加快指令运算的速度和提高系统控制的可靠性。采用精简指令集(RISC)结构,可以大幅度提高运行速度。并加强位处理功能、中断和定时控制功能;采用流
8、水线结构,指令以队列形式出现在CPU中,因而具有很高的运算速度,有的甚至采用多级流水线结构。单片机的扩展方式从并行总线到发展出各种串行总线,并被工业界接受,形成一些工业标准。如 产5 SPI串行总线等。它们采用3条数据总线代替现行的8条数据总线,从而减少了单片机引线,降低了成本。单片机系统结构更加简化及规范化。(3)单片机的小容量低廉化小容量低廉的4位、8位机也是单片机发展方向之一。其用途是把以往用数字逻辑电路组成的控制电路单片化。专用型的单片机将得到大力发展。使用专用单片机可最大限度地简化系统结构,提高可靠性,使资源利用率最高。在大批量使用时有可观的经济效益。(4)单片机的外围电路内装化随着
9、集成度的不断提高,可以把众多的外围功能器件集成到单片机内。除了 CPU、ROM、RAM夕 卜,还可把A/D、D/A转换器、DMA控制器、声音发生器、监视定时器、液晶驱动电路、锁相电路等一并集成在芯片内。为了减少外部的驱动芯片,进一步增强单片机的并行驱动能力。有的单片机可直接输出大电流和高电压,以便直接驱动显示器。为进一步加快I/O 口的传输速度,有的单片机还设置了高速I/。口,可用最快的速度驱动外部设备,也可以用最快的速度响应外部事件。甚至单片机厂商还可以根据用户的要求量身定做,把所需要的外围电路全部集成在单片机内,制造出具有自己特色的单片机。(5)单片机的全面CMOS化单片机的全面CMOS化
10、,将给单片机技术发展带来广阔的天地。CMOS芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态。低功耗的技术措施可提高可靠性,降低工作电压,可使抗噪声和抗干扰等各方面性能全面提高。单片机的全盘CMOS化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携化。(6)单片机的应用系统化单片机是嵌入式系统的独立发展之路,单片机向MCU发展的重要因素,就是寻求应用系统在芯片上的最大化解决。因此,专用单片机的发展自然形成了 SOC(System on Chip)化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SOC的单片机应用系统设计会有较大的发展
11、。因此,随着集成电路技术及工艺的快速发展,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。1.5单片机具有哪些突出优点?举例说明单片机的应用领域。答:1.单片机寿命长所谓寿命长,一方面指用单片机开发的产品可以稳定可靠地工作十年、二十年,另一方面是指与微处理器相比生存周期长。MPU更新换代的速度越来越快,以386、486、586为代表的M PU,几年内就被淘汰出局。而传统的单片机如8051、68HC05等年龄已有二十多岁,产量仍是上升的。一些成功上市的相对年轻的CPU核心,也会随着I/O功能模块的不断丰富,有着相当长的生存周期。2.8 位、32位单片机共同发展这是当前单片机技
12、术发展的另一动向。长期以来,单片机技术的发展是以8 位机为主的。随着移动通讯、网络技术、多媒体技术等高科技产品进入家庭,32位单片机应用得到了长足、迅猛的发展。3.低噪声与高速度为提高单片机抗干扰能力,降低噪声,降低时钟频率而不牺牲运算速度是单片机技术发展之追求。一些8051单片机兼容厂商改善了单片机的内部时序,在不提高时钟频率的条件下,使运算速度提高了很多。Motorola单片机使用了琐相环技术或内部倍频技术使内部总线速度大大高于时钟产生器的频率。68HC08单片机使用4.9MHz外部振荡器而内部时钟达32MHz。三星电子新近推出了 1.2GHz的ARM处理器内核。4.低 电压与低功耗儿乎所
13、有的单片机都有Wait、Stop等省电运行方式。允许使用的电源电压范围也越来越宽。般单片机都能在36V范围内工作,对电池供电的单片机不再需要对电源采取稳压措施。低电压供电的单片机电源下限已由2.7V降至2.2V、1.8V 0.9V供电的单片机已经问世。5.低噪声与高可靠性为提高单片机系统的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片机商家在单片机内部电路中采取了一些新的技术措施。如 ST公司的由标准8032核和PSD(可编程系统器件)构成的口 PSD系列单片机片内增加了看门狗定时器,NS公司的COP8单片机内部增加了抗EMI电路,增强了 看门狗 的性能。
14、Motorola推出了低噪声的LN系列单片机。6.1SP 与 IAPISP(In-System Programming)技术的优势是不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,调试结束即成成品,免去了调试时由于频繁地插入取出芯片对芯片和电路板带来的不便。IAP(In-Application Programming)技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。ISP的实现一般需要很少的外部电路辅助实现,而 IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS
15、232 0,通过专门设计的固件程序来编程内部存储器,可以通过现有的INTERNET或其它通讯方式很方便地实现远程升级和维护。单片机的应用领域:1)智能化家用电器:各种家用电器普遍采用单片机智能化控制代替传统的电子线路控制,升级换代,提高档次。如洗衣机、空调、电视机、录像机、微波炉、电冰箱、电饭煲以及各种视听设备等。2)办公自动化设备:现代办公室使用的大量通信和办公设备多数嵌入了单片机。如打印机、复印机、传真机、绘图机、考勤机、电话以及通用计算机中的键盘译码、磁盘驱动等。3)商业营销设备:在商业营销系统中已广泛使用的电子称、收款机、条形码阅读器、IC卡刷卡机、出租车计价器以及仓储安全监测系统、商
16、场保安系统、空气调节系统、冷冻保险系统等都采用了单片机控制。4)工业自动化控制:工业自动化控制是最早采用单片机控制的领域之一。如各种测控系统、过程控制、机电一体化、PLC等。在化工、建筑、冶金等各种工业领域都要用到单片机控制。5)智能仪器仪表:采用单片机的智能化仪表大大提升了仪表的档次,强化了功能。如数据处理和存储、故障诊断、联网集控等。6)智能化通信产品:最突出的是手机,当然手机内的芯片属专用型单片机。7)汽车电子产品:现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信系统和运行监视器(黑匣子)等都离不开单片机。8)航空航天系统和国防军事、尖端武器等领域:单片机的应用更是不言而喻。
17、习题22.1 MCS-51单片机内部包含哪些主要逻辑功能部件?答:微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、特殊功能寄存器(SFR)、并行I/O 口、串行通信口、定时器/计数器及中断系统。2.2 说明程序计数器PC和堆栈指针SP的作用.复位后PC和SP各为何值?答:程序计数器PC中存放将要执行的指令地址,PC有自动加1功能,以实现程序的顺序执行。它是SFR中唯一隐含地址的,因此,用户无法对它进行读写。但在执行转移、调用、返回等指令时能自动改变其内容,以实现改变程序的执行顺序。程序计数器PC中内容的变化决定程序的流程,在执行程序的工作过程中,由PC输出将要执行的
18、指令的程序存储器地址,CPU读取该地址单元中存储的指令并进行指令译码等操作,PC则自动指向下一条将要执行的指令的程序存储器地址。SP是 个 8 位的SFR,它用来指示堆栈顶部在内部RAM中的位置。系统复位后SP为07 H,若不对SP设置初值,则堆栈在08H开始的区域,为了不占用工作寄存器RoR7的地址,一般在编程时应设置SP的初值(最好在30H7FH区域)o2.3 程序状态字寄存器PSW的作用是什么?其中状态标志有哪几位?它们的含义是什么?答:PSW是保存数据操作的结果标志,其中状态标志有CY(PSW.7):进位标志,AC(PSW.6):辅助进位标志,又称半进位标志,F。、Fi(PSW,5、P
19、SW.l):用户标志;OV(PSW.2):溢出标志;P(PSW.0):奇偶标志。2.4 什么是堆栈?堆栈有何作用?为什么要对堆栈指针SP重新赋值?SP的初值应如何设定?答:堆栈是一种数据结构,所谓堆栈就是只允许在其一端进行数据写入和数据读出的线性表。其主要作用有两个:保护断点和保护现场。堆栈区的设置原则上可以在内部RAM的任意区域,但由于MCS-51单片机内部RAM的OOH1FH地址单元已被工作寄存器R0R7占用,20H2FH为位寻址区,故堆栈一般设在30H7FH(对于8032系列芯片可为30H0FFH)的区域内。单片机复位后,SP的内容为07H,堆栈事实上由08H单元开始,考虑到O8H1FH
20、单元分别属于13组的工作寄存器区,则最好把SP值改置为1FH或更大的值。2.5 开机复位后,CPU使用的是哪组工作寄存器?它们的地址如何?CPU如何指定和改变当前工作寄存器组?答:开机复位后使用的是0组工作寄存器,它们的地址是00H07H,对程序状态字PSW中的RS1和RS0两位进行编程设置,可指定和改变当前工作寄存器组。R SL RS0=00H时,当前工作寄存器被指定为0组;R SI、RS0=01H时,当前工作寄存器被指定为1组;R SI、RS0=10H时,当前工作寄存器被指定为2组;RSI,RSO=11H时,当前工作寄存器被指定为3组。2.6 MCS-51的时钟周期、机器周期、指令周期是如
21、何定义的?当振荡频率为12MHz时,一个机器周期为多少微秒?答:时钟周期也称为振荡周期,定义为时钟脉冲的倒数,是计算机中最基本的、最小的时间单位。CPU取出一条指令至该指令执行完所需的时间称为指令周期,因不同的指令执行所需的时间可能不同,故不同的指令可能有不同的指令周期。机器周期是用来衡量指令或程序执行速度的最小单位。它的确定原则是以最小指令周期为基准的,即一个最小指令周期为一个机器周期。当振荡频率为12MHz时,一个机器周期1微秒2.7 MCS-51单片机的控制信号、有哪些功能?答:是访问程序存储器控制信号。当端接低电平时,则不管芯片内部是否有程序存储器,CPU只访问外部程序存储器。对803
22、1来说,因其内部无程序存储器,所以该引脚必须接地。当端接高电平时,CPU访问内部程序存储器,但当PC(程序计数器)值超过某一值时,将自动转向片外程序存储器1000H地址继续执行程序。是地址锁存允许信号。当 CPU访问外部存储器或I/O接口时,ALE输出脉冲的下降沿用于锁存16位地址的低8 位。在不访问外部存储器或I/O接口时,ALE端有周期性正脉冲输出,其频率为振荡频率的1/6。但是,每当访问外部数据存储器或I/O接口时,在第二个机器周期中ALE只出现一次,即丢失一个ALE脉冲。片外程序存储器读选通信号。在 CPU从外部程序存储器读取指令(或常数)期间,每个机器周期两次有效,但在访问外部数据存
23、储器或I/O接口时,信号将不出现。端可以驱动8 个丁TL负载。2.8 MCS-51的片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲突?答:MCS-51的片外程序存储器和片外数据存储器共处同一地址空间,地址范围都是0000HFFFFH(64KB),但不会发生总线冲突。因片外程序存储器和片外数据存储器的读写控制信号不同,片外程序存储器的读信号是,而片外数据存储器的读信号为、写信号为,访问片外程序存储器和片外数据存储器的指令也不同,所以它们不会发生总线冲突。2.9 简述MCS-51内部数据存储器的存储空间分配。答:内部数据存储器分为3 个区域:1.工作寄存器区(OOH1FH);2
24、.位寻址区(20H2FH);3.堆栈和数据缓冲器区(30H7FH或 30H0FFH).2.10 位地址和字节地址有何区别?位地址20H具体在内存中什么位置?答:MCS-51的位存储器由以内部RAM中20H-2FH单元和特殊功能寄存器中地址为8 的倍数的特殊功能寄存器两部分组成。其中每个单元的每一位都有一个位地址映像,它们既可以像普通内部RAM单元一样按字节存取,也可以对单元中的任何一位单独存取。字节地址是内部RAM中和特殊功能寄存器中每个存储单元的地址。位地址20H是内部RAM24H中的D0位。2.11 8051的4 个I/0 口作用是什么?8051的片外三总线是如何分配的?答:MCS-51单
25、片机有4 个8 位并行I/O端口,分别记作P0、Pl,P2、P3 口。在访问片外扩展存储器时,P0 口分时传送低8 位地址和数据,P2 口传送高8 位地址。P1 口通常作为通用I/O 口供用户使用。P3 口具有第二功能,为系统提供一些控制信号。在无片外扩展存储器的系统中,这 4 个口均可作为通用I/O端口使用。在作为通用I/O端口使用时,这 4个口都是准双向口。在访问片外扩展存储器时,片外三总线的构成:P0 口传送低8位地址经锁存器所存构成低8位地址总线,高8位地址总线由P2 口构成。P0 口作为单片机系统的低8位地址/数据线分时复用,在低8位地址锁存后,P0 口作为双向数据总线。由P3 口的
26、第二功能输出数据存储器的读、写控制信号与片外程序存储器读选通信号,访问程序存储器控制信号,地址锁存允许信号构成控制总线。习题33.1 汇编语句是由4个 部 分(字段)构成的,简述各部分的含义。答:汇编语句的4个部分为:标号:操作码 操作数;注释标号是用户设定的一个符号,表示存放指令或数据的存储单元地址。标号由以字母开始的18个字母或数字串组成,以冒号结尾。不能用指令助记符、伪指令或寄存器名来作标号。标号是任选的,并不是每条指令或数据存储单元都要标号,只在需要时才设标号。如转移指令所要访问的存储单元前面一般要设置标号。一旦使用了某标号定义一个地址单元,在程序的其它地方就不能随意修改这个定义,也不
27、能重复定义。操作码是指令或伪指令的助记符,用来表示指令的性质或功能。对于一条汇编语言指令,这个字段是必不可少的。操作数给出参加运算(或其它操作)的数据或数据的地址。操作数可以表示为工作寄存器名、特殊功能寄存器名、标号名、常数、表达式等。这一字段可能有,也可能没有。若有两个或三个操作数,它们之间应以逗号分开。注释字段不是汇编语言的功能部分,只是增加程序的可读性。言简意赅的注释是汇编语言程序编写中的重要组成部分。3.2 举例说明MCS-51单片机的7种寻址方式,各寻址方式的寻址空间。1.立即寻址立即寻址方式的寻址空间为程序存储器。例如:MOVA,#3FH;3FH-A1.直接寻址直接寻址方式中操作数
28、存储的空间有三种:1.内部数据存储器的低128个字节单元(00H7FH)例如:MOVA,30H;(30H)-A指令功能是把内部RAM 30H单元中的内容送入累加器A。位地址空间例如:MOVC,00H;直接位00H内容 进位位特殊功能寄存器例如:MOV IE,#85H;立即数85H一中断允许寄存器IE.1.寄存器寻址寄存器寻址方式的寻址空间为工作寄存器和特殊功能寄存器等。例如:MOVA,R6;(R6)A1.寄存器间接寻址 寄存器间接寻址空间为内部RAM 128字节,外部RAM例如:MOVA,R0;(RO)-A1.变址寻址变址寻址空间为程序存储器。例如:MOVC A,A+DPTR;(DPTR)4-
29、(A)-AMOVC A,A+PC;(PC)+(A)A1.相对寻址相对寻址空间为程序存储器。2.当前PC值是指相对转移指令所在地址(源地址)加转移指令字节数。即:当前PC值=源地址+转移指令字节数1.偏移量re l是有符号的单字节数,以补码表示,相对值在-128+127范围内,负数表示从当前地址向上转移,正数表示从当前地址向下转移。所以转移的目的地址为:目的地址=当前PC值+rel=源地址+转移指令字节数+rel例如:JNC 2AH,JZ F8H1,位寻址 位寻址空间为内部RAM 20H2FH的 128位和SFR中的83位。例如:MOVC,30H,MOV P1.0,C3.3指出下列指令的寻址方式
30、和操作功能:INC 40H;直接寻址(40H)+lf 40HINC A;寄存器寻址(A)+1-AINC R2;寄存器间接寻址(R2)+l-(R2)MOVC A,A+DPTR;基址加变址寄存器寻址(A)+(DPTR)AMOV A,#6EH;立即寻址 6EH-ASETB P1.0;位寻址 PLO 置 13.4 设内部RAM中3AH单元的内容为50H,写出当执行下列程序段后寄存器A、R0和内部RAM 50H,51H单元的内容为何值?MOV A,3AH;(A)=50HMOV RO,A;(R0)=50HMOV A,#00H;(A)=00HMOV R0,A;(50H)=00HMOV A,#25H;(A)=
31、25HMOV51H,A;(51H)=25H答:(A)=25H,(3AH)=50Hz(R0)=50Hz(50H)=00Hz(51H)=25H3.5 设堆栈指针SP中的内容为6 0 H,内部RAM 30H和 31H单元的内容分别为27H和 1AH,执行下列程序段后,61H,62H,30H,31H,DPTR及 SP中的内容将有何变化?PUSH 30H;(SP)+1-SP,(30H)-61HPUSH 31H;(SP)+1-SPZ(31H)-62HPOP DPL;(62)-DPL,(SP)-1-SPPOP DPH;(61)-DPH,(SP)-1-*SPMOV30H,#00H;00H-30HMOV31H,
32、#OFFH;FFH-31H答:(61H)=27H,(62H)=1AH,(30H)=00Hz(31H)=FFH,(DPTR)=271AHZ(SP)=60H3.6 设(A)=30H,(RI)=23H,GOH)=05H。执行下列两条指令后,累加器A 和 R1以及内部RAM 30H单元的内容各为何值?XCH A,R1XCHD A,R1答:(A)=25H,(Rl)=30H,(30H)=03H3.7设(A)=010101016,(R5)=10101010B,分别写出执行下列指令后的结果ANLA,R5;(A)=0000 OOOOB,(R5)=101010106ORLA,R5;(A)=10101010B,(R
33、5)=101010106XRL A,R5;(A)=00000000B3.8 设指令SJM Prel=7FH,并假设该指令存放在2113H和2114H单元中。当该条指令执行后,程序将跳转到何地址?答:程序将跳转到2194H地址3.9 简述转移指令 AJMP a d d rll,SJMP rel,UMP addrl6 及 JMP A+DPTR 的应用场合。答:AJMP a d d rll这是在当前.PC的2K字节范围内的无条件转移指令,把程序的执行转移到指定的地址。SJM Prel这是相对跳转指令,其中re l为相对偏移量。转向的目标地址是在当前PC的前128字节到后127字节之间。MP addR
34、16执行这条指令时把指令的第二和第三字节分别装入PC的高位和低位字节中,无条件地转向指定地址。转移的目标地址可以在64KB程序存储器地址空间的任何地方,不影响任何标志。JMP A+DPTR把累加器A中8位无符号数与数据指针DPTR中的16位数相加,将结果作为转移的目标地址送入P C,不改变累加器A和数据指针DPTR内容,也不影响标志。本指令以DPTR内容作为基址,A的内容作为变址。只要把DPTR的值固定,而给A赋予不同的值,即可实现程序的多分支转移。3.1 0 查指令表,写出下列两条指令的机器码,并比较一下机器码中操作数排列次序的特点。MOV78H,80H;85 80 78MOV 78H,#8
35、0H;75 78 80答:直接寻址单元传送到直接寻址单元的机器码是第二个操作数在前,而立即数传送到直接地址单元是第一个操作数在前,次序正好相反。3.1 1 试编写程序,查找在内部RAM 30H-50H单元中1AH这一数据。若找到1AH则将51H单元置为01H;没找到则将51H单元置为00H。答:参考程序如下MOV RI,#2FHL00P1:INC RICJNE R1Z#1AH,L00P2SJMP L00P3L00P2:CJNE RI,#51,L00P1MOV 51H,#00HSJMP ENDLOOP3:MOV 51H,#01HEND:RET3.1 2 若SP=60H,子程序标号MULT所在的地
36、址为3A40H。执行LCALL MULT指令后,堆栈指针SP和堆栈内容发生了什么变化?答:(SP)=62HZ(61H)=40Hz(62H)=3AH3.1 3 假设外部存储器215AH单元的内容为3 D H,执行下列指令后,累加器A中的内容为何值?MOV P2,#21HMOV RO,#5AHMOVX A,R0答:(A)=3DH习题44.1编程将数据存储器中以2A00H为首地址的100个连续单元清零。CLR AMOV RO,#64HMOV DPTR,#2A00HLOOP:MOVX DPTR,AINC DPTRDJNZ RO,LOOPEND4.2 编程将片内50H70H单元中的内容传送到以5C00H
37、为起始地址的存储区中。MOV DPTR,#5C00HMOV RO,#50HLOOP:MOV A,R0MOVX DPTR,AINC ROINC DPTRCJNE RO,#70H,LOOPEND4.3 片外RAM区从1000H单元开始存有100个单字节无符号数,找出最大值并存入1100H单元中,试编写程序。MOV DPTR,#1000H;置片外RAM区首地址MOV R0,#00H;清 R0MOV R1,64H;置计数初值100LOOP:MOVX A,DPTR;取片外RAM区的某个数送ACJNZ A,R0,NT1;与R0中的数比较NT1:JC NT2;(A)(R0)跳转到 NT2MOV RO,A;若
38、(A)(R0),则大数送 RONT2:INC DPTR;修改数据块指针DJNZ RI,LOOP;未完,循环RET4.4 设有100个单字节有符号数,连续存放在以2100H为首地址的存储区中,试编程统计其中正数、负数、零的个数。MOV RO,#00H;置负数的计数初值MOV RI,#00H;置正数的计数初值MOV R2,#00H;置 0 的计数初值MOV R4,#64H;置循环计数初值MOV DPTR,#2100H;置数据区首地址START:MOVX A,DPTR;取某一数据送入 AJZ EQUAL;为。转 EQUALJNB ACC.7,POSI;为正数转 POSIINC R0;负数计数值加1I
39、NC DPTR;修改数据块指针DJNZ R4,START;未完,返回POSI:INC RI;正数计数值加1INC DPTR;修改数据块指针DJNZ R4,STARTEQUAL:INC R2;0 计 数 值 力 口 1INC DPTRDJNZ R4,STARTEND4.5 从 2030H单元开始,存有100个有符号数,要求把它传送到从20BOH开始的存储区中,但负数不传送,试编写程序。MOV RI,#64H;置计数初值MOV RO,#B0H;目标数据区首地址低8 位,高8 位为20HMOV DPTR,#2030H;源数据区首地址START:MOVX A,DPTR;取源数据区某数据送入AJB AC
40、C.7,D1;负数,转 D1MOVX R0,A;正数,送入目标数据区INC DPTR;修改源数据块指针INCR0;修改目标数据块指针DJNZ RI,START;未完,继续RET;返回DI:INC DPTR;修改源数据块指针INC R0;修改目标数据块指针DJNZ RI,START;未完,继续RET;返回4.6 若从30H单元开始有100个数,编一个程序检查这些数,正数保持不变,负数取补后送回。MOV R0,#30H;数据区首地址MOV RI,#64H;计数初值START:MOVX A,R0;取某个数JNB ACC.7,POSI;正数,转 POSICPLA;负数,取补ADD Az#01HMOVX
41、 R0z A;送回原地址INC RO;修改数据块指针DJNZ RI,START;未完,继续RETPOSI:INC RO;修改数据块指针DJNZ RI,START;未完,继续RET4.7 试编程把以2040H为首地址的连续10个单元的内容按升序排列,存到原来的存储区中。SORT:MOV DPTR,#2040H;MOV R3Z#09H;CLR F0;DI:MOVX A,DPTR;MOV R2Z A;前一个数送R2INC DPTRMOVX Az DPTR;MOV R4,A;后一个数送R4MOV A,R2;前一个数送ACLRCSUBB A,R4;前一个数减后一个数JC NEXT;MOV Az R2;相
42、邻数互换MOVX DPTR,AMOV RO,DPL;数据指针低8 位减1DEC ROMOV DPL,ROMOV A,R4;MOVX DPTR,AINC DPTR;SETB FONEXT:DJNZ R3Z DI;JB FO,SORTRET4.8 设在2000H2004H单元中.存放有5 个压缩BCD码,编程将它们转换成ASCII码,存放到以2005H为首地址的存储区中。MOV DPTR,#2000H;MOV RO,#05H;MOV RI,#04H;DI:MOVX Az DPTR;ANL A,#OFHCLR C;ADDA,#30H;MOV P2,#20HMOVX R0,AINC DPTR;INC
43、RODJNZ RI,DI;RET1.在以2000H为首地址的存储区中,存放着20个用ASCII码表示的09 之间的数,试编程,将它们转换成BCD码,并以压缩BCD码的形式存放在3000H3009H单元中。MOV DPTR,2000H;MOV RO,#20H;MOV RI,#00H;ASCBIN:MOVX A,DPTR;CLRCSUBB A,#30H;MOV P2Z 30H;MOVX R1,A;INC RI;INC DPTR;DJNZ RO,ASCBIN;RET4.10 试编写多字节BCD码数加法、减法子程序。4.11 若晶振为6M Hz,试编写延时100ms、Is 的子程序。ORG 2000H
44、周期数MOV RO,#0AH;毫秒数一RO 1DL2:MOV RI,#MT;1ms 延时值一RI 1DL1:NOP 1NOP 1DJNZR1,DL1;1ms 延时循环 2DJNZ RO,DL2;10ms 延时循环 2END4.12试设计一个子程序,其功能为将片内RAM 20H-21H中的压缩BCD码转换为二进制数,并存于以30H开始的单元。BCDB:MOV A,20HMOV R2,A;取千位、百位BCD码ACALL BCDB1;调用子程序MOV B,#0AHMUL AB;乘以 10MOV R6,A:乘积低8 位送R6XCH A,B;交换乘积高、低位MOV R5,A;乘积高位送R5MOV A.2
45、1H;取十位、个位BCD码MOV R2,A;送入 R2ACALL BCDB1:调用子程序ADD A,R6;加千位、百位乘积低8 位MOV31H.A;低 8 位送入 31HMOV A,R5;乘积高8 位送AADDC A.#00H;加进位位MOV 30H,A;结果高8 位送入30HHERE:SJMP HERE子程序清单:BCDB1:MOV A,R2:取压缩 BCD 码ANLA,#OFOH;屏蔽低4位SWAP AMOV B,#0AHMULAB;高位BCD码乘以10MOV R3,A;乘积送 R3MOV A,R2;取压缩BCD码ANLA,#OFH;屏蔽高4位ADDA,R3:高位BCD码乘以10后加低位B
46、CD码MOV R2,A;送 R2RET习题55.1 什么是中断系统?中断系统的功能是什么?答:当CPU正在处理某件事情(例如,正在执行主程序)的时候,外部或内部发生的某一事件(如某个引脚上电平的变化,一个脉冲沿的发生或计数器的计数溢出等)请求CPU迅速去处理,于是,CPU暂时终止当前的工作,转去处理所发生的事件。中断服务程序处理完该事件后,再回到原来被终止的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统。中断系统的功能:(1)实现中断及中断返回,(2)实现优先级排队,(3)实现优先级控制。5.2 什么是中断嵌套?答:当CPU响应某中断源的请求而进行中断处理时,若有优先
47、级更高的中断源发出中断请求,则CPU中断正在执行的中断服务程序,保留程序的断点和现场,响应更高一级的中断,即是中断嵌套。5.3 什么是中断源?MC S-5 1 有哪些中断源?各有什么特点?答:向C P U 发出中断请求的来源称为中断源。MC 5-5 1 单片机的中断系统有5个中断请求源:一外部中断0 请求,由引脚输入,中断请求标志为I E O。一外部中断I 请求,由引脚输入,中断请求标志为正I。定时器/计数器T O 溢出中断请求,中断请求标志为T F O 定时器/计数器T1溢出中断请求,中断请求标志为T F 1。串行口中断请求,中断请求标志为T I 或 R I,外部中断0:它的触发方式选择位为
48、I T 0。I T 0=0,为电平触发方式,引脚上低电平有效I T 0=l,为脉冲触发方式,引脚上的电平从高到低的负跳变有效。I T 0 位可由软件置、1 或清、0 。外部中断0 请求标志位I E 0。当 I T 0=0,即电平触发方式时,每个机器周期的S 5 P 2采样引脚,若脚为低电平,则置、1”正0,否 贝!1 清 0 I E 0 o当I T 0=l,即跳沿触发方式时,在第一个机器周期采样为低电平,则置 1 正0。正0=1,表示外部中断0正在向C P U 申请中断。当C P U 响应中断,转向中断服务程序时,由硬件清、0 正0。外部中断1 中断原是与此相同。定时器/计数器0:被启动计数后
49、,从初值开始加1 计数,当定时器/计数器。计数满而产生溢出时,由硬件自动使T F 0 置 1,并向C P U 申请中断。该标志一直保持到C P U 响应中断后,才由硬件自动清0。也可用软件杳询该标志,并由软件清0。定时器/计数器1中断原理与此相同。串行中断请求由T I、RI 的逻辑或 得到。即不论是发送标志还是接收标志,都将发生串行中断请求。5.4 M CS-5 1 单片机响应外部中断的典型时间是多少?在哪些情况下,CP U 将推迟对中断请求的响应?答:3 8 个机器周期。(1)CPU正在处理相同的或更高优先级的中断。因为当 个中断被响应时,要把对应的中断优先级状态触发器置T(该触发器指出CP
50、U所处理的中断优先级别),从而封锁了低级中断和同级中断。(2)所查询的机器周期不是所执行指令的最后一个机器周期。作这个限制的目的是使当前指令执行完毕后,才能进行中断响应,以确保当前指令完整的执行。(3)正在执行的指令是RET1或是访问正或IP 的指令。因为按MCS-51中断系统特性的规定,在执行完这些指令后,需要再执行一条指令才能响应新的中断请求。如果存在上述三种情况之一,CPU将推迟对中断请求的响应。5.5 中断查询确认后,在下列各种运行情况中,能立即进行响应的是:(1)当前正在进行高优先级中断处理(2)当前正在执行RETI指令(3)当前指令是DIV指令,且正处于取指令的机器周期(4)当前指