STC32位8051单片机原理及应用 课件 第一章 单片机设计导论_第1页
STC32位8051单片机原理及应用 课件 第一章 单片机设计导论_第2页
STC32位8051单片机原理及应用 课件 第一章 单片机设计导论_第3页
STC32位8051单片机原理及应用 课件 第一章 单片机设计导论_第4页
STC32位8051单片机原理及应用 课件 第一章 单片机设计导论_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

第一章单片机设计导论

单片机和桌面系统的基本架构处理器和的指令集类型嵌入式系统的硬件和软件单片机程序设计语言单片机性能评价主要内容单片机和桌面系统的基本架构

本节教学目标说明“单片机”这一术语的本质含义说明单片机与面向桌面应用的计算机系统的本质区别单片机和桌面系统的基本架构

--单片机的结构单片机是指单个集成电路(IntegratedCircuit,IC)芯片上的小型计算机(Microcomputer),也称为微控制器(MicrocontrollerUnit,MCU)MCU主要面向嵌入式应用,这些应用面向自动控制产品和设备比如汽车发动机的控制系统、植入式医疗设备、遥控器、办公机器、电器、电动工具、玩具和其他嵌入式系统单片机和桌面系统的基本架构通常,在MCU内包含一个/多个中央处理器单元(CentralProcessingUnit,CPU)、易失性和非易失性存储器,以及可编程的输入和输出设备CPUEMIFROM/FlashSRAM

UART

GPIOTimerOSCIntControllerADCDAC单片机和桌面系统的基本架构

--单片机的结构OSC为晶体振荡器(Oscillator)的英文缩写,它为MCU提供最基本的时钟源通过MCU内的相位锁相环(PhaseLockedLoop,PLL)电路,基于该时钟源可以产生不同频率和相位的其他时钟信号,以提供给MCU内的所有功能单元随着半导体技术的发展和芯片设计水平的不断提高,厂商经常在MCU内部集成了晶体振荡器,这样就不需要像以前那样需要在MCU外部连接晶体振荡器电路,这样既减少了系统硬件设计的复杂度,降低了系统设计成本,同时也提高了系统的可靠性MCU也仍然保留了从外部输入时钟源的能力。这样,就为系统的设计提供了更多的灵活性单片机和桌面系统的基本架构

--单片机的结构CPU是中央处理单元(CentralProcessingUnit,CPU)的英文缩写,CPU是MCU中的核心功能单元从MCU外部获取的所有信息都要汇集到CPU进行处理,CPU将处理后的数据送到存储器或者外设CPU是指令集架构(InstructionSetArchitecture,ISA)的具体实现,也称为微架构(Microarchitecture),它所采用的ISA决定了MCU的性能和特点比如Intel和AMD的CPU采用的x86的ISA,但是两者的微架构实现有差异单片机和桌面系统的基本架构

--单片机的结构SRAM是静态随机访问存储器(StaticRandomAccessMemory,SRAM)的英文缩写,主要用于暂时保存在程序运行过程中所需要的数据,它充当了易失性存储器的角色这种类型存储器的主要特点是需要上电来保存信息。当MCU断电时,保存在易失性存储器中的数据会丢失单片机和桌面系统的基本架构

--单片机的结构Flash是闪存(FlashMemory)的英文简称,主要用于保存程序代码,它充当了非易失性存储器的角色这种类型存储器的主要特点是不需要上电保存信息。当MCU断电时,程序代码仍然会保存在非易失性存储器中在闪存问世之前,MCU厂商经常使用只读存储器(ReadOnlyMemory,ROM)或一次性可编程ROM(OneTimeProgrammableROM,OTPROM)来保存程序代码单片机和桌面系统的基本架构

--单片机的结构UART为通用串行收发器(UniversalAsynchronousReceiver/Transmitter,UART)的英文缩写,它是一种以串行方式发送和接收数据的简单外部设备(简称外设)在MCU中,UART是标准配置,这是因为这种外设通常用于帮助嵌入式系统开发人员调试设备通过UART和支持UART的串口调试软件进行人机交互,以快速定位系统的故障单片机和桌面系统的基本架构

--单片机的结构GPIO为通用输入输出(GeneralPurposeInput&Output,GPIO)的英文缩写,它是MCU最基本的外设配置,也是MCU中最简单的外设MCU内的CPU可以直接驱动GPIO或读取GPIO的逻辑状态单片机和桌面系统的基本架构

--单片机的结构Timer为定时器的英文单词,它是MCU中必不可少的基本外设定时器为MCU提供定时和计数功能,是MCU中提供最基本的外设配置当在MCU中运行嵌入式操作系统(OperatingSystem,OS)时,定时器也用于为OS提供“嘀嗒”时钟单片机和桌面系统的基本架构

--单片机的结构IntController为中断控制器(InterruptController)的英文缩写,它是MCU中最基本的功能单元中断控制器为MCU提供了处理内部和外部事件的能力,使得MCU内的CPU能够以最高效和最快的速度响应并处理内部和外部事件单片机和桌面系统的基本架构

--单片机的结构EMIF为外部存储器接口(ExternalMemoryInterface,EMIF)的英文缩写,它为MCU提供了连接片外SRAM芯片的能力通过该接口,用户可以在MCU外部连接多片SRAM芯片来扩展SRAM的总容量,以适应整个系统对程序运行期间所需要暂时保存大容量数据的需要显然,对于一些成本比较敏感的应用,扩展SRAM会增加系统的总成本。由于现代MCU中片内提供的SRAM容量足以保证低成本的嵌入式应用,因此只有在必要的情况下,才需要在MCU外部采用外接SRAM芯片的方式来扩展SRAM的总容量单片机和桌面系统的基本架构

--单片机的结构ADC和DAC分别为模拟数字转换器(Analog-to-DigitalConverter,ADC)单元和数字模拟转换器单元(Digital-to-AnalogConvertor,DAC)的英文缩写随着集成电路设计技术的不断发展,MCU也向着混合信号的方向发展,最主要的表现就是在MCU内部集成了ADC和DAC单元这样,MCU就成为连接数据采集、处理和驱动控制的边缘设备,构建起了模拟和数字世界之间的“桥梁”单片机和桌面系统的基本架构

--单片机的结构此外,在一些对功耗比较敏感的应用中(比如使用电池为MCU供电的应用),要求MCU具有更加灵活的低功耗工作模式这些模式包括间歇工作模式、休眠模式或冬眠模式单片机和桌面系统的基本架构

--单片机的结构从半导体工艺和设计技术的角度来看,MCU朝着片上系统(SystemonChip,SoC)的方向发展,即在MCU中集成的外设数量不断增加,集成的SRAM和闪存的容量也越来越大,CPU的性能也越来越高与以前的MCU相比,MCU的整体性能和复杂度在增加,但是MCU的总成本却保持不变,这符合“摩尔定理”所预测的半导体发展规律MCU的这种发展趋势进一步降低了系统总成本,并且进一步提高了整个系统的可靠性单片机和桌面系统的基本架构

--桌面系统的结构读者经常会问到,MCU与个人电脑(PersonalComputer,PC)和移动电话(也称为手机)上使用的微处理器(Microprocessor)有什么不同?个人电脑和手机主要面向桌面应用,它们搭载着Windows操作系统/Andriod操作系统/iOS操作系统单片机和桌面系统的基本架构

--桌面系统的结构简化的桌面系统结构

CPUDRAM闪存I/OI/O单片机和桌面系统的基本架构

--桌面系统的结构使用了性能强大的微处理器,它的时钟速度可以达到几个GHz的频率,而MCU内的时钟速度最多也就在几百MHz的频率此外,这种性能强大的微处理器中,还包含了多级高速缓存和存储器管理单元,这也是绝大多数MCU中所不具备的处理器内部集成的低容量SRAM用于高速缓存(Cache)单片机和桌面系统的基本架构

--桌面系统的结构面向桌面的应用中,要求处理器外部扩展大容量同步动态随机访问存储器(SynchronousDynamicRAM,SDRAM)这种外扩存储器的容量一般为几十个GB的容量,甚至多达几个GB的容量而MCU内集成的SRAM存储器的容量一般为几十个KB的容量单片机和桌面系统的基本架构

--桌面系统的结构处理器外部扩展了大容量NOR/NAND闪存,这种外扩的闪存容量最多达到几个GB,其容量也远远大于MCU内集成的闪存单片机和桌面系统的基本架构

--桌面系统的结构由于处理器面向桌面应用,因此其外部连接的输入/输出设备也比MCU内集成的输入/输出设备的功能更加复杂比如,在面向桌面应用的处理器中提供了高性能的PCI/PCI-E接口,这种接口在MCU中就没有提供单片机和桌面系统的基本架构

--桌面系统的结构此外,面向桌面的应用中所搭载操作系统的功能也远比MCU上所能搭载操作系统的功能复杂的多常见的,在MCU上搭载的嵌入式操作系统有μC-OS、FreeRTOS、RTX51-Tiny和RT-Thread等

第一章单片机设计导论

单片机设计导论

--处理器核的指令集类型不同厂商的MCU内集成的CPU核也有所不同在前面介绍MCU内的CPU核时,提到CPU是ISA的具体实现,也称为微架构MCU厂商根据ISA设计CPU,以最终实现ISA中每条指令期望实现的功能准确来说,所谓的处理器核的类型实际上是指不同的ISA下面介绍几种MCU常用的CPUISA单片机设计导论

--处理器核的指令集类型无内部互所流水级微处理器(MicroprocessorwithoutInterlockedPipelineStages,MIPS)ISA,它由MIPS公司提供在Microchip(中文称为微芯)公司的PIC32系列MCU内就集成了M4K,该处理器核是MIPS核中的一款32位低功耗RISC内核,采用了增强型的MIPS32IIISA单片机设计导论

--处理器核的指令集类型高级RISC机器(AdvancedRISCMachine,ARM)ISA,它由ARM公司提供全球很多半导体公司通过购买的方式,从ARM公司获取Cortex-M系列处理器核的ISA、硬件描述语言(HardwareDescriptionLanguage,HDL)设计代码、物理版图,并基于它们制造基于ARMISA的MCU产品比如,ST(中文称为意法半导体)公司的STM32G0系列MCU内集成了Cortex-M0+处理器核STM32F4系列MCU内集成了Cortex-M4处理器核STM32H7系列MCU内集成了Cortex-M7处理器核单片机设计导论

--处理器核的指令集类型用于Intel(中文称为英特尔)公司的MCS-51MCU(也称为8051)和MCS-251MCU(也称为80251)的ISA全球很多半导体公司基于英特尔授权的基于MCS-51MCU和MCS-251MCU的ISA,设计并制造基于这些ISA的MCU产品单片机设计导论

--处理器核的指令集类型具体来说,Intel首先制定了一个ISA,基于该ISA实现了MCS-51MCU当其他MCU厂商得到了ISA的使用授权后,就可以自己也设计和实现基于该ISA的MCU,简称为8051单片机比如,STC公司基于该ISA,设计并量产了STC89C52RC系列MCU、STC15系列MCU和STC8系列MCU由于它们基于IntelMCS-51MCU的ISA,因此这些MCU又称为8051单片机此外,由于这些8051单片机对最早的IntelMCS-51MCU的内部结构进行了改进和优化,使得其性能有了显著的提高,因此又把STC公司的这些8051单片机称为增强型8051单片机单片机设计导论

--处理器核的指令集类型课程所介绍的STC32GG系列单片机是基于Intel1996年量产的MCS-251MCU的ISA,并对IntelMCS-251MCU内CPU的实现结构进行了改进和优化,使得STC32GG系列单片机比起Intel早期的MCS-251单片机的性能提高了很多倍注:实际上,STC公司的STC32GGMCU在实现MCS-251ISA时,与Intel早期的MCS-251MCU内CPU核的结构有很大的不同,这一点读者要特别注意!!在本书介绍相关内容时,也会强调这一点处理器核的指令集类型

--MCS-51指令集MCS-51(通常称为8051)是英特尔于1980年开发的应用于嵌入式系统的8位MCU系列。这个最早的版本在20世纪80年代和90年代早期就很受欢迎,其增强型的衍生产品(实际上是指使用MCS-51ISA的改进型MCU)至今被广泛应用于嵌入式系统中处理器核的指令集类型

--MCS-51指令集在MCS-51MCU内部,集成了CPU、RAM、ROM、I/O、UART、中断控制和定时器,它具有单独的程序指令和数据存储空间本质上,MCS-51是一个8位宽度的MCU这是因为MCS-51核内部主要提供了可以实现算术和逻辑运算的8位算术逻辑单元、8位数据总线和8位寄存器处理器核的指令集类型

--MCS-51指令集MCS-51MCU所使用的ISA包含了111条指令,其中49条为单字节指令,46条为双字节指令,以及16条是三字节指令,这是复杂指令集计算机(ComplexInstructionSetComputer,CISC)的典型代表CISC的典型特点就是具有可变的指令长度,并且允许在存储器上执行算术和逻辑运算处理器核的指令集类型

--MCS-51指令集与CISC不同,精简指令集计算机(ReducedInstructionSetComputer,RISC)主要表现为指令长度固定,并且不支持在存储器上执行算术和逻辑运算,所有的算术和逻辑运算必须在寄存器上完成在本节前面所提到的用于ARMCortex-M处理器核的ISA就属于RISC的范畴处理器核的指令集类型

--MCS-51指令集需要注意,由于半导体集成电路设计技术的发展,现代版本的MCS-51MCU比Intel最早的MCS-51MCU运行速度更快且性能越高,同时保持了与传统MCS-51ISA指令的兼容性最早的IntelMCS-51MCU每个机器周期运行12个时钟周期,大多数指令在一个或两个机器周期内完成典型的,最高时钟频率为12MHz,这意味着早期Intel的MCS-51MCU可以在每秒执行100万条单周期指令,或50万条双周期指令处理器核的指令集类型

--MCS-51指令集而现代版本的基于MCS-51ISA的MCU(或称为8051单片机)可以在每个周期执行一个时钟周期这意味着在相同的时钟频率下,基于MCS-51ISA的现代版本8051单片机可以在每秒执行1200万条单周期指令,或600万条双周期指令。随着8051单片机时钟频率的提高,每秒可执行指令的个数还会显著增加。处理器核的指令集类型

--MCS-251指令集英特尔于1996年推出8/16/32位的MCS-251MCU。与MCS-51MCU相比,在相同时钟频率下MCS-251MCU内的CPU执行速度显著提高,主要特性表现为:片内提供了24位线性寻址能力,可寻址高达16MB的存储器空间可通过字节、字和双字方式访问处理器核内的寄存器用于加速获取外部指令的页面模式指令通道采用了流水线技术丰富的指令集,包括16和32位算术和逻辑指令处理器核的指令集类型

--MCS-251指令集一个64KB的扩展堆栈空间两个时钟的最短指令执行时间(相对于MCS-51MCU的12个时钟)处理器核的指令集类型

--MCS-251指令集MCS-251MCU的ISA在最初MCS-51MCU的ISA基础上进行了扩展,包括新的操作、寻址模式和操作数MCS-251ISA中的许多指令可以对8/16/32位操作数进行操作,从这点就可以看出MCS-251ISA要比MCS-51ISA的功能更加强大处理器核的指令集类型

--两个指令集的兼容性由于MCS-251ISA是在MCS-51ISA的基础上进行了扩展,因此在MCS-51上编写的代码可以不需要任何修改就可以运行在MCS-251上,这就是MCS-251向下兼容MCS-51的根本原因!!!处理器核的指令集类型

--两个指令集的兼容性在C251版本的KeilμVision软件中,可以将STC32G系列单片机配置为以二进制模式(binarymode)或源模式(sourcemode)运行这两种模式都执行所有MCS-51ISA指令和所有MCS-251ISA指令源模式对MCS-251ISA的指令更有效,而二进制模式对MCS-51ISA的指令更有效。在二进制模式下,在8051微控制器的目标代码无需重新编译即可在STC32GG系列单片机上运行处理器核的指令集类型

--两个指令集的兼容性处理器核的指令集类型

--两个指令集的兼容性如果嵌入式系统最初是使用8051单片机开发的,并且如果新的基于STC32G系列单片机的嵌入式系统将运行为8051单片机编写的代码,那么在二进制模式下运行STC32G系列单片机时性能会更好。为8051单片机编写的目标代码在STC32G系列单片机上运行得更快。处理器核的指令集类型

--两个指令集的兼容性但是,如果使用新指令集重新书写大部分代码,则在源模式下运行STC32GG系列单片机时性能会更好。在这种情况下,STC32G单片机的运行速度明显快于8051单片机(或者说STC15系列/STC8系列单片机)

第一章单片机设计导论

单片机设计导论

--嵌入式系统硬件和软件美国电气和电子工程师协会(InstituteofElectricalandElectronicsEngineers,IEEE)将嵌入式系统定义为用于控制、监视或者辅助操作机器和设备的装置嵌入式系统是以具体应用为导向的,以计算机技术为核心的,根据具体应用对硬件和软件系统量身订做的便于携带的微型计算机系统嵌入式系统是系统级的概念,包含硬件和软件两个层面嵌入式系统硬件和软件

--嵌入式系统硬件微控制器或面向桌面应用的高性能处理器是嵌入式系统的硬件核心,通过印刷电路板(PrintCircuitBoard,PCB)将它与其他电子元器件组装在一起构成满足特定功能需求的硬件平台在一个嵌入式系统中,可能使用MCU作为嵌入式系统的硬件核心,也可能使用面向桌面应用的高性能处理器作为嵌入式系统的硬件核心,这是由嵌入式系统的功能需求所决定的。电视机遥控器就是一个典型的简单嵌入式系统,在这种嵌入式应用中使用MCU作为系统的硬件核心。移动电话这种需要面向桌面应用的复杂嵌入式系统,就必须使用高性能的处理器作为系统的硬件核心。嵌入式系统硬件和软件

--嵌入式系统硬件嵌入式系统的硬件有点像乐高玩具那样,当把乐高正确组合在一起时,就会产生壮观的效果。而单个乐高本身并没有什么特别的作用,这也适用于嵌入式系统的硬件在嵌入式系统的硬件中,即使MCU或者面上桌面应用的微处理器是整个嵌入式系统硬件的核心,但是单独存在的它们一点价值都不能体现出来,只有将它们和其他电子元器件组合在一起用于实现特定的应用目标时,它们的重要作用才能体现出来嵌入式系统硬件和软件

--嵌入式系统硬件STC官方提供的基于STC32G系列MCU的硬件开发平台嵌入式系统硬件和软件

--嵌入式系统软件嵌入式系统的软件开发,划分为三个层次。包括:第一层次是直接在嵌入式硬件上开发软件应用,这要求软件开发人员对嵌入式系统的硬件原理非常清楚,这就对软件开发人员提出了比较高的要求。这种直接面向嵌入式硬件开发软件应用,最大的问题就是程序的移植比较麻烦,因为当软件应用移植到不同的嵌入式硬件平台时,需要对针对新的嵌入式硬件来修改软件应用代码。其次,这种直接面向嵌入式硬件开发软件的方法不利于对系统进行维护,一旦系统出现故障,很难查找系统的故障点。嵌入式系统硬件和软件

--嵌入式系统软件第二层次是借助于嵌入式硬件厂商提供的应用程序接口(ApplicationProgramInterface,API)函数开发应用。软件开发人员就无需过多关心嵌入式系统的硬件原理,这样就显著降低了对软件开发人员的要求,并且提高了程序开发的效率,同时也便于今后对所开发的嵌入式应用进行维护。当把嵌入式应用移植到不同的嵌入式硬件平台时,只需要修改所调用的API函数即可实现,显著降低了应用程序移植的难度。嵌入式系统硬件和软件

--嵌入式系统软件第三层次是借助于嵌入式操作系统。当软件开发人员使用基于MCU的嵌入式硬件平台进行嵌入式应用开发遇到需要处理多任务时,就可以在嵌入式硬件平台上搭载用于嵌入式系统的OS,比如μC-OS、FreeRTOS、RTX51/RTX51-Tiny或RT-Thread。这些操作系统支持多任务处理,并且为软件开发人员提供了针对不同嵌入式平台的底层硬件驱动程序,因此软件开发人员只需要关注应用程序本身即可,这样就进一步提高了软件应用的开发效率,并且很好的解决了在不同嵌入式硬件上移植软件应用的难题。此外,基于MCU的嵌入式应用往往要求有更好的实时响应能力,因此搭载在MCU嵌入式系统的操作系统也称为实时操作系统(RealTimeOperatingSystem,RTOS),μC-OS、FreeRTOS、RTX51/RTX51-Tiny或RT-Thread都属于RTOS。

第一章单片机设计导论

单片机程序设计语言

--分层结构按从顶层到底层的顺序将单片机的程序设计分为四个层次,包括高级语言、汇编语言、机器指令和微指令底层顶层机器指令汇编语言高级语言微指令单片机程序设计语言

--分层结构根据MCU内CPU所使用ISA的指令格式,软件工具链将使用C语言或汇编语言所编写的程序代码最终转换为可以运行在CPU上的以二进制格式表示的机器指令比如,在基于8051和80251处理器核的单片机应用程序开发过程中,在使用C语言或汇编语言编写完程序代码后,就可以通过KeilμVision软件开发环境中集成的工具链(包括C编译器、汇编器和链接器),将高级语言和汇编语言转换为以二进制形式表示的机器指令单片机程序设计语言

--分层结构程序设计的最低层次为微指令,微指令(也称为微指令控制序列)为MCU中CPU内部的控制信号序列根据机器指令所要实现的功能,CPU设计人员将其转换为CPU内部的控制信号序列,这个控制信号序列也是以二进制序列表示的,与二进制逻辑“1”(高电平)和逻辑“0”(低电平)对应单片机程序设计语言

--设计实例从本质上,使用C语言编写程序代码实际上是从高层次对计算机的逻辑行为进行建模,即只需要将MCU完成的逻辑行为表达清楚即可,不需要知道MCU在硬件底层是如何完成具体的逻辑行为设计实例

--高级语言在KeilμVision软件集成开发环境中,可以使用C语言对MCS-51和MCS-251核的MCU进行应用开发

代码清单1-1对于两个8位数进行加法运算的C语言描述voidmain(){ volatilecharconsta=10,b=80;volatilecharc; c=a+b;}设计实例

--高级语言在代码清单1-1给出的代码中,main()表示主函数,{}表示main函数的作用范围。在main函数中:定义了两个字符型(char)常量a和b,它们的值分别为10和80定义了一个字符型(char)变量c在字符型char前面的关键字volatile用于告诉C编译器,不要对常量a和b,以及变量c进行优化通过赋值语句c=a+b,让常量a和常量b进行相加,相加的结果保存到变量c中显然,在C语言代码中,只需要描述a加上b这个算术运算即可,无需知道在MCU的CPU是如何完成a加上b这个运算的。设计实例

--汇编语言在keilμVision中使用编译器工具在二进制模式(BinaryMode)对该代码进行编译和链接后,生成可执行代码在KeilμVision调试器工具下打开Disassembly窗口,在窗口中可以看到C语言所对应的汇编语言助记符指令和机器指令设计实例

--汇编语言C语言中的两条类型声明语句:

volatilecharconsta=10,b=80;volatilecharc;汇编语言指令实现的功能MOVA,#c(0x0A)将立即数0x0A加载到累加器A中MOVa(0x0008),R11将累加器A(累加器A=寄存器R11)的数据保存到数据存储器地址为0x0008的单元MOVA,#0x50将立即数0x50加载到累加器A中MOVb(0x0009),R11将累加器A(累加器A=寄存器R11)的数据保存到数据存储器地址为0x0009的单元设计实例

--汇编语言C语言中的加法和赋值语句:c=a+b;

汇编语言指令实现的功能MOVR7,b(0x0009)将数据存储器地址为0x0009单元的数据加载到寄存器R7,即(R7)=0x50MOVSWR4,R7将8位寄存器R7的内容加载到16位寄存器WR4中,高8位符号扩展,即(WR4)=0x50MOVR7,a(0x0008)将数据存储器地址为0x0008单元的数据加载到寄存器R7,即(R7)=0x0AMOVSWR6,R7将8位寄存器R7的内容加载到16位寄存器WR6中,高8位符号扩展,即(WR6)=0x0AADDWR6,WR4将16位寄存器WR4的值和16位寄存器WR6的值相加,结果保存在16位寄存器WR6中,即(WR4)+(WR6)=0x50+0x0A=0x5A,(WR6)=0x5AMOVc(0x000A),R7将WR6寄存器的低8位的值(即寄存器R7的值),保存到数据存储器地址为0x000A的单元设计实例

--汇编语言(反)汇编指令由操作码和操作数两部分组成操作码说明该指令要实现的功能,比如MOV,表示移动数据;ADD,表示算术加法操作。对于MCS-251MCU的汇编指令来说,每条汇编指令的格式为

操作码目的操作数,源操作数操作码和目的操作数之间用空格分隔目的操作数和源操作数之间用逗号分隔操作码后面跟着目的操作数,目的操作数的右侧是源操作数设计实例

--汇编语言对于下面的汇编指令ADDWR6,WR416位寄存器WR6为目的操作数,16位寄存器WR4为源操作数在该操作中,源操作数和目的操作数的内容进行相加,相加的结果保存在目的操作数中对于下面的汇编指令MOVSWR6,R716位寄存器WR6为目的操作数,8位寄存器R7为源操作数在该操作中,将源操作数R7中的8位数据移动到16位目的操作数WR6中,对于WR6中的高8位,根据源操作数R7中的最高位进行符号扩展。设计实例

--汇编语言

从上面的分析可知,汇编语言是对机器指令的一种形式上的“抽象”在汇编语言指令中,使用类似MOV和ADD这种英文单词的缩写来描述指令的功能(即操作码),用英文符号表示操作数,这些符号比较简单易于被软件开发人员记住,因此称它们为“助记符”因此,将汇编语言指令称为汇编助记符指令与下面介绍的机器指令相比,汇编语言助记符就显得非常容易记忆了设计实例

--汇编语言与使用高级语言相比较,使用汇编助记符描述MCU的具体操作需要对MCU内的CPU的结构和ISA非常清楚,也就是需要掌握机器底层的原理与C语言相比,汇编语言更接近机器指令,因此汇编语言的运行效率要比C语言高。设计实例

--机器指令在二进制模式下,汇编语言和机器指令对应的关系汇编助记符指令机器指令(以十六进制数表示)机器指令字节个数MOVA,#c(0x0A)740A2MOVa(0x0008),R11A57AB300085MOVA,#0x5074502MOVb(0x0009),R11A57AB300095MOVR7,b(0x0009)A57E7300095MOVSWR4,R7A51A273MOVR7,a(0x0008)A57E7300085MOVSWR6,R7A51A373ADDWR6,WR4A52D323MOVc(0x000A),R7A57A73000A5设计实例

--机器指令从上表可知,汇编助记符指令对应的机器指令的长度是不一样的,有2个字节、3个字节和5个字节,这符合CISC的典型特征,也就是MCS-251的指令长度是可变的设计实例

--机器指令下面对上表中的汇编助记符指令MOVSWRj,Rm所对应的机器指令进行分析该指令对应的机器指令编码格式下图所示图中,tttt为寄存器WRj的编号j除以2得到值的二进制表示,即j/2=“tttt”;ssss为寄存器Rm编号值m的二进制表示,即m=“ssss”寄存器WR4的编号为4,4/2=2的二进制表示为”0010“,即为tttt的二进制编码;寄存器R7的编号为7,该编号的二进制表示为”0111“,即为ssss的二进制编码根据该指令的编码规则,对于二进制模式,需要在图1.5给出的二进制编码前添加前导的二进制序列10100101(即十六进制数A5)00011010

ttttssss设计实例

--机器指令根据上图给出的机器指令编码格式,得到该指令的机器指令编码为二进制序列“0001101000100111”,等效的十六进制数表示为1A27对于二进制模式,在该十六进制数的前面添加A5,即得到十六进制数A51A27设计实例

--机器指令下面对表中的汇编助记符指令ADDWRjd,WRjs所对应的机器指令进行分析图中,tttt为寄存器WRjd的编号jd除以2得到值的二进制表示,即jd/2=“tttt”;TTTT为寄存器js的编号js除以2得到值的二进制表示,即js/2=“TTTT”比如,寄存器WR6的编号为6,6/2=3的二进制表示为”0011“,即为tttt的二进制编码;寄存器WR4的编号为4,4/2=2的二进制表示为”0010“,即为TTTT的二进制编码根据该指令的编码规则,对于二进制模式,需要在上图给出的二进制编码前添加前导的二进制序列10100101(即十六进制数A5)00101101

ttttTTTT设计实例

--机器指令根据上图给出的机器指令编码格式,得到该指令的机器指令编码为二进制序列“0010110100110010”,等效的十六进制数表示为2D32。对于二进制模式,在该十六进制数的前面添加A5,即得到十六进制数A52D32

第一章单片机设计导论

单片机性能评价本节以STC公司STC15/STC8系列增强型8051单片机和STC32GG单片机为例,评价STC15/STC8系列增强型8051单片机和STC32G系列单片机的性能单片机性能评价对于下面的一段C语言代码,如代码清单1-2所示。

代码清单1-2C语言程序设计voidmain(){volatilelonginta=10000000,b=30000000;volatilelongintc;c=a+b;}单片机性能评价运

温馨提示

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

评论

0/150

提交评论