微机原理复习重点_第1页
微机原理复习重点_第2页
微机原理复习重点_第3页
微机原理复习重点_第4页
微机原理复习重点_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1.什么是嵌入式系统?第一种,根据IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(原文为devicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants)。第二种,嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入到对象体系中的专用计算机系统两种定义之一即可。2.与通用型计算机相比,嵌入式系统有哪些特点?通常是面向特定应用的;空间和各种资源相对不足,必须高效率地设计,量体裁衣、去除冗余;产品升级换代和具体产品同步,具有较长的生命周期;软件一般都固化在存储器芯片或单片机本身;不具备自主开发能力,必须有一套开发工具和环境才能进行开发3.举例介绍嵌入式微处理器有哪几类?嵌入式微处理器的基础是通用计算机中的CPU(1)嵌入式微处理器(EmbeddedMicroprocessorUnit,EMPU)嵌入式处理器目前主要有Aml86/88、386EX、SC-400、PowerPC、68000、MIPS、ARM系列等。嵌入式微控制器(MicrocontrollerUnit,MCU)(又称单片机,即将整个计算机系统集成到一块芯片上)嵌入式微控制器目前的品种和数量最多,比较有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300等。嵌入式DSP处理器(EmbeddedDigitalSignalProcessor,EDSP)嵌入式DSP处理器比较有代表性的产品是TexasInstruments的TMS320系列和Motorola摩托罗拉的DSP56000系列。嵌入式片上系统(SystemOnChip)4.从硬件系统来看,嵌入式系统由哪几部分组成?画出简图。嵌入式核心芯片,EMPU——嵌入式微处理器、EMCU——嵌入式微控制器、EDSP——嵌入式数字信号处理器、ESoC——嵌入式片上系统。用以保存固件的ROM(非挥发性只读存储器)。用以保存程序数据的RAM(挥发性的随机访问存储器)。连接微控制器和开关、按钮、传感器、模/数转化器、控制器、LED(发光二极管)、显示器的I/O端口。5.嵌入式微处理器和嵌入式微控制器分别由哪些部件组成,两者有何区别。答:嵌入式微处理器的基础是通用计算机中的CPU。嵌入式微处理器=运算器+控制器+寄存器组+内总线,在应用中必须装配在专门设计的电路板上,在电路板上必须包括ROM、RAM、总线接口、各种外设等器件。嵌入式微控制器=cpu内核+存储器+I/o接口+辅助电路(时钟、A/D、D/A等)嵌入式微处理器与嵌入式微控制器的区别:嵌入式微处理器只含有内核,嵌入式微控制器除含有内核外,内部还包含ROM、RAM存储器以及各种外设接口、辅助电路等。和嵌入式微处理器相比,嵌入式微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降,可靠性提高。6.嵌入式操作系统通常含有几层,主要实现何功能。嵌入式操作系统通常包括:(1)驱动层:硬件相关的底层驱动软件和设备驱动接口;如:LCD、触摸屏的驱动及接口。(2)操作系统层:系统内核(基本模块),扩展模块(可裁剪)。基本模块包含内存管理、文件管理和进程调度;扩展模块包含网络模块、图形驱动、数据库驱动等。(3)应用层:应用程序接口。7.嵌入式系统开发过程?答:嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分。流程如图所示。系统定义系统定义可行性研究需求分析软硬件集成系统总体框架软硬件划分处理器选定操作系统选定开发环境选定系统总体设计硬件概要设计硬件详细设计硬件制作硬件测试软件概要设计软件详细设计软件实现软件测试硬件设计制作软件设计实现功能性能测试符合要求产品YN嵌入式系统开发流程图8.嵌入式系统调试常用的基本方法?答:常用的三种方法:模拟调试(Simulator)、全仿真调试(Emulator)、BDM/JTAG调试(BDM/JTAGDebugger)。模拟调试:调试器和待调试的嵌入式软件都在主机上运行,由主机提供一个模拟的目标运行环境,可以进行语法和逻辑上的调试。优点:简单方便,不需要目标板,成本低缺点:功能非常有限,无法实时调试全仿真调试(Emulator):这种方式用仿真器完全取代目标板上的MCU,仿真器是仿照目标机上的CPU而专门设计的硬件。仿真器与目标板通过仿真头连接,与主机有串口、并口、网口或USB口等连接方式。优点:功能非常强大,软硬件均可做到完全实时在线调试缺点:价格昂贵。BDM/JTAG调试:这种方式有一个硬件调试体。该硬件调试体与目标板通过BDM、JTAG等调试接口相连,与主机通过串口、并口、网口或USB口相连。待调试软件通过BDM/JTAG调试器下载到目标板上运行。优点:方便、简单,软硬件均可调试缺点:需要目标板,且目标板工作基本正常(至少MCU工作正常),仅适用于有调试接口的芯片 9.理解交叉编译和交叉调试。答:嵌入式软件开发所采用的编译为交叉编译。在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,称这种编译器支持交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。要进行交叉编译,需要在主机平台上安装对应的交叉编译器,然后用这个交叉编译器编译源代码,最终生成可在目标平台上运行的代码。在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。10.嵌入式系统面临的挑战原因:(1)嵌入式系统发展与计算机技术发展越行越远(2)计算机技术逐步以通用化战胜专用化(3)嵌入式技术逐渐桌面化第二章作业答案一、冯诺依曼结构结构特点:1、指令和数据存储在相同的内存空间,但存储地址不同。2、处理器利用相同的总线处理内存中的指令和数据,指令和数据具有相同的数据宽度,指令与数据无法同时存取。ARM7嵌入式微处理器亦采用此结构哈佛体系结构结构特点:1、指令存储和数据存储分开,指令和数据分别位于不同的存储空间。2、指令与数据的存取采用不同总线,取指令和存取数据可同时进行,微处理器具有较高的执行效率数字信号处理器DSP通常采用哈佛结构,ARM9嵌入式微处理器亦采用此结构。二、命名规则1、基于ARMArchitecture的版本命名规则|ARMVn

|variants

|x(variants)

|

Vnn--指令集版本号,n[1:7]。variants--变种。x(variants)--排除x后指定的变种例,ARMv5TxM表示ARM指令集版本为5,支持T变种,不支持M变种。2、基于ARMArchitecture版本的处理器系列命名规则ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}·x--处理器系列

·y--存储管理/保护单元,若为2包括内存管理单元(MMU),若为4包括内存保护单元(MPU)·z–cache;T—支持thumb指令集D--支持片上调试(加断点,单步执行)I--支持EmbeddedICE,支持嵌入式跟踪调试。开发环境可跟踪调试目标板。M—支持长乘法运算;E—支持增强dsp运算;F—具备向量浮点单元VFP-S--可综合版本,无s硬核,工艺固定不可综合。例:ARM7TDMI:只有内核;ARM720T:有内核、高速缓存和内存管理单元(MMU)组成。ARM740T:由内核、高速缓存和内存保护单元(MPU)组成ARM7EJ-S:带有DSP和JazelleTM技术,能够实现Java加速功能,处理器的可综合版本;三、工作状态ARM状态:正执行ARM指令的处理器在ARM状态下工作。在ARM状态下,处理器只能执行执行字对齐的32位ARM指令。Thumb状态:正执行Thumb指令的处理器在Thumb状态下工作。在Thumb状态下,处理器只能执行半字对齐的16位Thumb指令。Thumb-2状态:正在执行Thumb-2指令的处理器在Thumb-2状态下工作。在Thumb-2状态下,处理器可以执行16位或32位混合的Thumb-2指令,无需ARM状态和Thumb状态之间转换。四、工作状态切换ARM和Thumb两种工作状态由当前程序状态寄存器CPSR中的T(Thumb)位决定,并切换工作。当CPSR.T=0时,处于ARM状态,当CPSR.T=1时,处于Thumb状态。进入Thumb状态:当操作数寄存器Rm的状态为bit[0]=1时,执行“BXRm”指令进入Thumb状态。如果处理器在Thumb状态下进入异常处理时,自动进入ARM状态,当异常处理返回(IRQ、FIQ、Undef、About、SWI)时,自动返回Thumb状态。进入ARM状态:当操作数寄存器Rm的状态为bit[0]=0时,执行“BXRm”指令进入ARM状态。在处理器进行异常处理(IRQ、FIQ、Undef、About、SWI)时,如果把PC放入异常模式连接寄存器LR中,从异常向量地址开始执行,可以进入ARM状态。五、CISC(复杂指令系统计算机)RISC(精简指令系统计算机)RISC的特点:1.指令集中的大多数指令只需要执行简单和基本的功能,其执行过程是在一个机器周期内完成的。2.由于存储器访问指令执行时间较长,应尽量减少这类指令。采用加载/存储指令结构。面向运算部件的操作数都经过加载指令和存储指令,从存储器取出后预先放在寄存器对内,以加快执行速度。3.芯片逻辑不采用或少采用微码技术,而采用硬布线逻辑,以减少指令解释的开销。4.减少指令数和寻址方式,使控制部件简化,加快执行速度。5.指令格式固定,指令译码简化6.编译开销很大,应尽量优化采用的特别技术:1.所有的指令都可根据前面的执行结果决定是否被执行,从而提高执行效率。2.可用Load/Store指令批量传输数据,以提高数据的传输效率。3.可在一条数据处理指令中同时完成逻辑处理和移位处理。六、流水线(Pipeline)技术:几个指令可以并行执行提高了CPU的运行效率内部信息流要求通畅流动ARM的三级流水线:取值(将指令从内存中取出来)、译码(操作码和操作数被译码以决定执行什么功能)、执行(执行已译码的指令)Tprog:程序执行时间Ninst:指令条数CPI:指令平均时钟周期数FCLK:时钟频率缩短程序执行时间:提高时钟频率fclk减少每条指令的平均时钟周期数CPI解决流水线相关问题:结构相关:如果某些指令在流水线中重叠执行时,产生资源冲突,则称该流水线存在结构相关。解决:资源重复(Cache分离、ALU中单独的地址计算加法器)数据相关:写后读”、“写后写”“读后写”解决:专用通路、流水线互锁技术控制相关:当流水线遇到分支指令和其他会改变PC值的指令时,取指取决于指令执行条件,可能需重新取指,致使流水线停顿。解决:引入延时分支、尽早计算转移成功时的目标地址。七、在Cache当中,地址映像是指把主存地址空间映像到cache地址空间。也就是说,把存放在主存中的程序或数据按照某种规则装入到cache中,并建立主存地址到cache地址之间的对应关系。地址变换是指当程序或数据已经装入到cache后,在实际运行过程当中,把主存地址如何变成cache地址。S3C44B0存储系统:存储系统设计支持数据存储的大/小端选择;地址空间:支持8个存储体访问;对所有存储体的访问宽度均可改变(8/16/32位);7个存储体的起始地址固定,1个存储体的起始地址可变1.ARM处理器工作模式有几种?各种工作模式下分别有什么特点?答:ARM微处理器支持用户、系统、快速中断、外部中断、管理、中止、未定义等7种工作模式。各工作模式拥有自己的寄存器组,不同的工作模式间可以相互切换,共有两种方式。第一种,发生异常时,处理器自动改变CPSR中M[4:0]的值,进入相应的工作模式;第二种,当处理器处于特权模式时,用指令向CPSR的M[4:0]字段写入特定的值,以进入相应的工作模式。当处理器处于用户模式时,不能改变工作模式,除非发生异常。2.ARM处理器总共有多少个寄存器,这些寄存器按其在用户编程中的功能是如何划分的?这些寄存器在使用中各有何特殊之处?答:ARM处理器总共有37个寄存器,各寄存器均为32位。31个通用寄存器,包括程序计数器PC;6个状态寄存器。这些寄存器按其在用户编程中的功能可划分为:通用寄存器和状态寄存器。根据ARM处理器不同工作模式,可将全部寄存器分成7组;各工作模式拥有属于自己的寄存器组,也只能访问自己的寄存器组。3. 寄存器R13,R14,R15的专用功能各是什么?答:1)寄存器R13用作堆栈指针SP;2)寄存器R14用作子程序链接寄存器,也称为LR,用以保存返回地址;3)R15(PC)用作程序计数器。4.若寄存器R1=0x01020304,分别按小端模式和大端模式存储在0x30000字单元中,试分别画出两种模式下内存存储内容,并标出内存地址。0x30x300000x300010x300020x300030x010x020x030x04大端模式0x300000x300010x300020x300030x040x030x020x01小端模式5.试述ARM处理器对异常中断的响应过程。答:当一个异常出现以后,ARM微处理器执行完当前指令后(复位异常除外)会执行以下几步操作:将CPSR复制到相应到相应模式下的SPSR中,设置CPSR:置位I位(禁止IRQ中断)清零T位(进入ARM状态)设置MOD位,切换处理器至相应模式将下一条指令的地址存入相应连接寄存器LR(R14_XXX),以便程序在处理异常返回时能从正确的位置重新开始执行。强制PC从相关的异常向量地址取一条指令执行,从而跳转到相应的异常处理程序处。6.如何从异常中断处理程序中返回?需要注意哪些问题?答:异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:将SPSR复制回CPSR中,恢复原处理器工作模式。将连接寄存器LR(R14_XXX)的值减去相应的偏移量后送到PC中,跳转到被中断的用户程序。7.ARM存储器的存储周期有几种类型,对应于cache访问和存储器访问是何存储周期?答:(1)空闲周期I周期内部周期,不执行存储器访问;可广播下一次访问的地址以便开始译码,与S周期配合实现总线上的突发传送。顺序周期S周期顺序周期:多用于实现总线上的突发传送,第一个周期必须是一个内部周期。(cache传送)协处理器寄存器传送周期C周期协处理器寄存器传递周期:通过数据总线向或从协处理器传送数据;传送期间,存储系统不允许驱动数据总线。非顺序周期N周期非顺序周期:最简单的总线周期,存储控制器必须启动存储器访问来满足这个请求;该方式存储系统常需要长的访问时间。(存储器读写)cache访问:I周期、S周期存储器访问:N周期8.何谓cache?简述cache的工作原理。Cache(ARM的高速缓冲存储器),为了提高存储器系统的性能而在主存储器和CPU之间采用工作原理:cache访问过程:虚拟地址存入地址寄存器;地址变换部件进行地址变换,即根据主存块号M检索cache,若找到则为命中,并将M转换成cache块号m存入cache寄存器;以cache寄存器所存地址(块号m,块内地址n)访问cache;若未命中,虚拟地址经地址转换部件(页表)转换成物理地址访问主存;未命中时,若为cache的读操作或写操作分配cache的写操作,则将内存块调入cache;若cache已满,根据替换算法替换某cache块.八、Cache分类:统一cache和独立的数据/程序cache如果一个存储系统中指令预取时使用的cahce和数据读写时使用的cache是同一个cache,这时称系统使用统一的cache。如果一个存储系统中指令预取时使用的cahce和数据读写时使用的cache是各自独立的,这时称系统使用了独立的cache。包括指令cache和数据cache。写通cache和写回cache:当CPU更新cache的内容时,将结果写回到主存中的两种方法写回法是指当CPU更新了cache的内容时,被写的数据只写入cache,不写入主存。仅当需要替换时,才把已经修改的cache块写回到主存中。采用写回法进行数据更新的cache称为写回cache。写通法是指当CPU在执行写操作时,必须把数据同时写入cache和主存中。采用写通法进行数据更新的cache称为写通cache。读操作分配cache和写操作分配cache:当进行数据写操作时,可能cache未命中,这时根据cache执行的操作不同,将cache分为两类,即读操作分配cache和写操作分配cache对于读操作分配cache,当进行数据写操作时,如果cache未命中,则只是简单地将数据写入主存中,在数据读取时才进行cache内容预取。对于写操作分配cache,当进行数据写操作时,如果cache未命中,cache系统将会进行cache内容预取,从主存中将相应地块读取到cache中相应的位置,并执行写操作,把数据写入到cache中。对于写通类型的cache,数据将会同时被写入到主存中;对于写回类型的cache,数据将会在合适的时候写回到主存中。9.何谓写通cache和写回cache,两者有何区别?答:(1)写回法是指CPU在执行写操作时,被写的数据只写入cache,不写入主存。仅当需要替换时,才把已经修改的cache块写回到主存中。采用写回法进行数据更新的cache称为写回cache。写通法是指CPU在执行写操作时,必须把数据同时写入cache和主存。采用写通法进行数据更新的cache称为写通cache。10.arm的MMU(存储管理单元,用于在CPU和物理内存之间进行地址转换)主要实现何功能。答:(1)虚拟存储空间到物理存储空间的映射。在ARM中采用了页式虚拟存储管理,通过两级页表实现虚拟地址到物理地址的映射。(2)存储器访问权限的控制。(3)设置虚拟存储空间的缓冲特性:Cache/writebuffer11.协处理器cp15主要实现的功能?答:(1)用于处理、控制ARM的特殊性能(2)片上存储器管理单元(MMU)(3)指令、数据缓存(4)写缓冲器12、简述MMU使能时存储访问过程。答:芯片设置为MMU使能(设置cp15寄存器):(1)若cache使能,根据arm输出的虚拟地址在CACHE中搜索;若cache命中,arm处理器与cache交换数据。若cache禁止或cache未命中,首先访问TLB,参见(2)。(2)根据arm输出的虚拟地址在TLB中搜索,若找到,将其转换为物理地址,访问主存并把该块数据读取到cache(使能时)中。13、ARM支持的物理页有几种类型,其容量为何值?答:ARM支持的存储块:(1)段(section):由1MB的存储器块构成 (2)大页(largepage):由64KB的存储器块构成 (3)小页(smallpage):由4KB的存储器块构成 (4)微页(tinypage):由1KB的存储器块构成14、简述基于段的地址变换过程。15、简述使用粗页表和4k页的二级虚实地址转换过程。补充题:1.理解片内Flash的3种编程方法。答:通过内置JTAG接口编程、通过在系统编程(ISP)、通过在应用编程(IAP)JTAG也是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程后再装到板上,现在先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。ISP:ISP(In-SystemProgramming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。ISP的工作原理:ISP一般通用做法是内部的存储器可以由上位机(宿主机)的软件通过串口来进行改写。对于微处理器来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。区别:JTAG:既可以下载也可以硬件仿真,独占端口;ISP只能下载,不独占端口IAP:(inapplicationprogramming)在应用编程,有芯片本身(或通过外围的芯片)可以通过一系列操作将code写入。IAP的实现原理:在实现IAP功能时,微处理器内部一定要有3块存储区,一般一块被称为BOOT区,一块被称为存储区,另外一块作下载区。微处理器上电运行在BOOT区,如果外部改写程序的条件满足,也就是芯片通过串口接收到下载命令,则在引导程序下接受newcode内容,下载到下载区,下载完毕并校验通过后再将下载区内容复制到存储区,运行复位程序对存储区的程序进行改写操作。如果外部改写程序的条件不满足,程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了IAP功能。2.理解LPC2000系列存储器存储空间分布。3.S3C44BOX的存储空间的分布,由哪几部分组成?答:S3C44B0X的存储空间分成8组,每组容量为32MB,bank0bank5起始地址固定,容量固定为32MB,bank6起始地址也固定,其容量和bank7的容量可编程改变,可以是2、4、8、16、32MB,并且bank7的起始地址与bank6的结束地址相连接处理器模式用户模式、快速中断模式、外部中断模式、管理模式、中止模式、未定义指令模式、系统模式除用户模式以外的6种称为特权模式(非用户模式),特权模式中,除系统模式以外的5种模式称为异常模式。各种模式由第五位M【4:0】决定用户模式:正常的程序执行状态,10000快速中断模式:用于高速数据传输或通道处理,10001外部中断模式:用于通用的中断处理,10010管理模式:操作系统的保护模式,10011中止模式:用于虚拟存储及存储保护,10111未定义指令模式:用于支持硬件协处理器的软件仿真,11011系统模式:运行特权级的操作系统任务,11111处理器工作状态:ARM状态:处理器执行32位的ARM指令集时,工作在此状态Thumb状态:处理器执行16位的Thumb指令集时,工作在此状态。寄存器组织ARM处理器共有37个寄存器,各寄存器均为32位。31个通用寄存器,包括程序计数器PC。6个状态寄存器。异常中断是指处理器由于外部或内部的原因,停止执行任务,转而处理特定的事件,处理完后返回原程序,继续执行。异常类型及其优先级和工作模式:1复位(管理模式):当发生复位异常时,处理器立即停止当前程序,进入禁止中断的管理模式。并从地址0x00000000或0xFFFF0000处开始执行。2数据访问中止(中止模式)若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,就会产生数据中止异常。SUBSPCR14#83.快速中断请求FIQ(快速中断模式)处理器的快速中断请求引脚有效,而且CPSR中的F位为0时,将产生FIQ异常。4.外部请求中断IRQ(外部中断模式):当处理器的外部中断请求引脚有效,而且CPSR中的1位为0时,就会产生IRQ异常。系统的外设可通过该异常请求中断服务。SUBSPCR14#45.指令预取中止(中止模式):当处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器就会向处理器发出中止信号;只有当预取的指令被执行时,才会产生指令预取中止异常。SUBSPCR14#46.【未定义指令(未定义指令中止模式)ARM处理器认为当前指令未定义时,便产生了未定义指令中断。该异常可用于协处理器软件仿真。软件中断SWI(管理模式):当用户模式下的程序使用软件SWI时,处理器便产生软件中断,进入管理模式,以调用特权操作。】MOVSPCR14指令格式:机器指令编码格式分为7个部分:条件域,类别,操作码,S域,目的操作数,第一源操作数,第二源操作数。移位:LSL逻辑左移:Rx,LSL<op1>op1--为通用寄存器或立即数(0~31)MOVR0,R1,LSL#5;R1的值左移5位后,存入R0;相当于R1的值×32后,存入R0。LSR逻辑右移:Rx,LSR<op1>MOVR0,R1,LSR#5;相当于R1的值除以32后,存入R0。ASR算术右移:Rx,ASR<op1>MOVR0,R1,ASR#5; R1的值右移5位后,存入R0;最左端用第31位的值来填充。ROR循环右移:Rx,ROR<op1>MOVR0,R0,ROR#5; R0的值循环右移5位。RRX带扩展的循环右移:Rx,RRXMOVR0,R1,RRX; R1的值扩展的循环右移,最左端由进位标志位填充,存入R0。7.寻址:立即数寻址ADDR0,R1,#5; R0=R1+5MOVR0,#0x55; R0=0x55寄存器寻址ADDR0,R1,R2; R0=R1+R2MOVR0,R1; R0=R1寄存器移位寻址ADDR0,R1,R2,RORR3;R0=R1+R2循环右移R3位MOVR0,R1,LSL#3;R0=R1逻辑左移3位寄存器间接寻址STRR0,[R1]; [R1]=R0LDRR0,[R1]; R0=[R1]基址变址寻址LDRR0,[R1,#5]; R0=[R1+5]LDRR0,[R1,R2]; R0=[R1+R2]相对寻址同基址变址寻址相似,区别只是将程序计数器PC作为基址寄存器,指令中的标记作为地址偏移量。例如:BEQprocess1 ……—>process1: ……多寄存器寻址LDMIAR0,{R1-R5};R1=[R0],R2=[R0+4],R3=[R0+8],R4=[R0+12],R5=[R0+16]块拷贝寻址LDMIAR0,{R1-R5};从以R0的值为起始地址的存储单元中取出5个字的数据STMIAR0,{R1-R5};将取出的数据存入以R1的值为起始地址的存储单元中堆栈寻址STMFDR13!,{R0,R1,R2,R3,R4};将R0-R4中的数据压入堆栈,R13为堆栈指针LTMFDR13!,{R0,R1,R2,R3,R4};将数据出栈,恢复R0-R4原先的值指令MOV数据传送指令(Move)MOV{<cond>}{S}<Rd>,<op1>;MOVR0,#5; R0=5MOVR0,R1; R0=R1MOVR0,R1,LSL#5; R0=R1左移5位MVN数据取反传送指令(MoveNegative)MVN{<cond>}{S}<Rd>,<op1>;ADD{<cond>}{S}<Rd>,<Rn>,<op2>;MVNR0,#4;R0=-5MVNR0,#0;R0=-1ADD加法指令(Addition)ADDR0,R1,R2;R0=R1+R2ADDR0,R1,#256;R0=R1+256ADDR0,R2,R3,LSL#1;R0=R2+(R3<<1)ADC带进位加法指令(AdditionwithCarry)ADC{<cond>}{S}<Rd>,<Rn>,<op2>;Rd=Rn+op2+carry下列例子将加两个128位的数。128位结果:寄存器0、1、2、和3;第一个128位数:寄存器4、5、6、和7;第二个128位数:寄存器8、9、10、和11。ADDSR0,R4,R8;加低端的字ADCSR1,R5,R9;加下一个字,带进位ADCSR2,R6,R10;加第三个字,带进位ADCSR3,R7,R11;加高端的字,带进位注意:相加时,不要忘记设置S后缀来更改进位标志。SUB减法指令(Subtraction)SUB{<cond>}{S}<Rd>,<Rn>,<op2>;SUBR0,R1,R2;R0=R1-R2SUBR0,R1,#256;R0=R1-256SUBR0,R2,R3,LSL#1;R0=R2-(R3<<1)SBC带借位减法指令:(SubtractionwithCarry)SBC{<cond>}{S}<Rd>,<Rn>,<op2>;Rd=Rn-op2-!carry该指令用于实现超过32位的数的减法。第一个64位操作数存放在寄存器R2,R3中;第二个64位操作数存放在寄存器R4,R5中;64位结果存放在R0,R1中。SUBSR0,R2,R4;低32位相减,S表示结果影响条件标志位的值SBCR1,R3,R5; 高32位相减AND逻辑与指令(logicalAND)AND{<cond>}{S}<Rd>,<Rn>,<op2>;ANDR0,R0,#3;R0=保持R0的位0和1,其余位清0。ORR逻辑或指令(logicalOR)ORR{<cond>}{S}<Rd>,<Rn>,<op2>;ORRR0,R0,#3;设置R0中位0和1,其余位不变EOR逻辑异或指令(logicalExclusiveOR)EOR{<cond>}{S}<Rd>,<Rn>,<op2>;EORR0,R0,#3;反转R0中的位0和1BIC位清除指令(BitClear)BIC{<cond>}{S}<Rd>,<Rn>,<op2>;BICR0,R0,#11;清除R0中的位0和位4。其余位不变BICR0,R0,#5;R0中第0位和第3位清0,其余位不变CMP比较指令(Compare)CMP{<cond>}<Rn>,<op1>;CMPR0,#5;计算R0-5,根据结果设置条件标志位ADDGTR0,R0,#5;如果R0>5,则执行ADDGT指令TST位测试指令(Testbits)TST{<cond>}<Rn>,<op1>;TSTR0,#5;测试R0中第0位和第2位是否同为0B跳转指令:B{<cond>}<addr>;Bexit; 程序跳转到标号exit处……exit……BL带返回的跳转指令BL{<cond>}<addr>;例如:BLfunc; 调用子程序func……func……MOVR15,R14;子程序返回Load/Store指令分为三类:单一数据传送指令(LDR和STR等);多数据传送指令(LDM和STM);数据交换指令(SWP和SWPB)LDR字数据加载指令:LDR{<cond>}<Rd>,<addr>;LDR Rd,[Rn],Rm;将内存中地址为Rn的字数据装入寄存器Rd,并将新地址Rn+Rm写入Rn;LDRRd,[Rn],#index;将内存中地址为Rn的字数据装入寄存器Rd,并将新地址Rn+index写入Rn;LDRRd,[Rn],Rm,LSL#5;将内存中地址为Rn的字数据装入寄存器Rd,并将新地址Rn+Rm×32写入Rn。LDRRd,[Rn,Rm]!;将内存中地址为Rn+Rm的字数据装入寄存器Rd,并将新地址Rn+Rm写入Rn;LDRRd,[Rn,#index]!;将内存中地址为Rn+index的字数据装入寄存器Rd,并将新地址Rn+index写入Rn;LDR Rd,[Rn,Rm,LSL#5]!;将内存中地址为Rn+Rm×32的字数据装入寄存器Rd,并将新地址Rn+Rm×32写入RnLDRRd,[Rn];把内存中地址为Rn的字数据装入寄存器Rd中;LDRRd,[Rn,Rm];将内存中地址为Rn+Rm的字数据装入寄存器Rd中;LDRRd,[Rn,#index];将内存中地址为Rn+index的字数据装入寄存器Rd中;LDRRd,[Rn,Rm,LSL#5];将内存中地址为Rn+Rm×32的字数据装入寄存器Rd;也可从基址上减去偏移量:LDRBR0,[R1,#-1];可以存储或装载PC,但不可以用装载或存储指令来修改CPSR。要装载一个被存储的‘状态’并正确的恢复它,请使用:LDRR0,[Rbase];MOVSR15,R0;.LDRB字节数据加载指令:LDR{<cond>}B<Rd>,<addr>;LDRBR0,[R1];将内存中起始地址为R1的一个字节数据装入R0中STR字数据存储指令:STR{<cond>}<Rd>,<addr>;例如:STRR0,[R1,#5]!; 把R0中的字数据保存到以R1+5为地址的内存中,然后R1=R1+5STRB字节数据存储指令:STR{<cond>}B<Rd>,<addr>;例如:STRBR0,[R1]; 将寄存器R0中的低8位数据存入R1表示的内存地址中LDM批量数据加载指令:LDM{<cond>}{<type>}<Rn>{!},<regs>{^};STM批量数据存储指令:STM{<cond>}{<type>}<Rn>{!},<regs>{^};LDMED=IB先增加后操作FD=IA先操作后增加EA=DB先减少后操作FA=DA先操作后减少STMFA=IB先增加后操作EA=IA先操作后增加FD=DB先减少后操作ED=DA先操作后减少.SWP字数据交换指令:SWP{<cond>}<Rd>,<op1>,[<op2>];例如:SWPR0,R1,[R2];将R2所表示的内存单元中的字数据装载到R0,然后将R1中的字数据保存到R2所表示的内存单元中。SWPB字节数据交换指令:SWP{<cond>}B<Rd>,<op1>,[<op2>];例如:SWPBR0,R1,[R2];将R2所表示的内存单元中的一个字节数据装载到R0的低8位,然后将R1中的低8位字节数据保存到R2所表示的内存单元中。SWI软件中断指令:SWI{条件}24位的立即数;功能:用于产生软件中断,以使用户程序调用操作系统的系统例程。使用SWI来访问操作系统例程或第三方生产的模块。BKPT断点中断指令:BKPT16位的立即数;功能:用于产生软件断点中断,以便软件调试时使用。16位的立即数用于保存软件调试中额外的断点信息。一、行扫描法原理①识别键盘是否有键按下:让所有行线均为低电平,检查各列线电平是否为低,如果有列线为低,则说明该列有键被按下,否则说明无键被按下。rPDATF=0xf0;输出全0值②若有键按下,则识别哪行的键被按下:逐行置低电平,并置其余各行为高电平,检查各列线电平的变化,如果列电平变为低电平,则可确定此行此列交叉点处按键被按下。行扫描码0xfe0xfd0xfb0xf7二.设置PCONF寄存器PF口的有3个端口:控制口PCONF,用于设置接口的功能。数据口PDATF,用于输入、输出数据。上拉电阻配置口PUPF,用于使能上拉电阻。设定PF0-3为输出口,PF4-7为输入口,在端口工作之前设置1.rPCONF=0000000000001010101BPF4-7为输入PF0-3为输出2、设置PDATF寄存器PF0-3作为输出口输出扫描码时,采用语句:rPDATF=Oxf0//PF0-3全写入0PF4-7作为输入口读入列值时,采用语句:Keyval=(rPDATF&0xf0)>>4;3、设置PUPF寄存器设置内部上拉电阻的语句为:rPUPF=0x00;//使能PF0-7的内部上拉电阻键盘扫描子程序代码如下:返回的是各键的键值:0–F#include<string.h>#include<stdio.h>charReadKeyVal(void){unsignedchari,j,H_val,L_val;charkeyval=-1;rPCONF=0x55;rPUPF=0xff;上拉电阻禁止rPDATF=0xf0;输出全0值if((L_val=(rPDATF&0xf0))!=0xf0){ H_val=0xfe;//0xfe,0xfd0xfb0xf7对应于第0、1、2、3行键 for(i=0;i<4;i++) { rPDATF=H_val;输出第1行的扫描码 for(j=0;j<100;j++);延时 if((L_val=(rPDATF&0xf0))!=0xf0)//输入列数据不全为1 { L_val=((L_val>>4))|0xf0; Keyval=get_val(H_val)×4+get_val(L_val); returnkeyval; } else H_val=(H_val<<1)|0x01; }}returnkeyval;}//get_val子函数是由行扫描值、读取的列值分别得到行号、列号。charget_val(unsignedcharval){ unsignedchari,x; x=0; for(i=0;i<4;i++) { if((~val)==1)returnx; val=(val>>1)|0x80; x=x+1; }}LED的工作原理7个字段分别称为a、b、c、d、e、f、g段,有时还有一个小数点段DP。通过7个发光段的不同组合,可以显示0到9和A到F共16个字母数字,从而实现十六进制的显示设置PCONF、PCONG寄存器(在端口工作之前设置为输出端口)rPCONF=0010010010101010101B=0x12555;rPCONG=0101010101010101B=0x5555;设置PUPF、PUPG寄存器(设置内部上拉电阻)rPUPF=0x00;//使能PF0-7的内部上拉电阻rPUPG=0x00;//使能PG0-7的内部上拉电阻voidDisplayLedl(unsignedchardis_8_num[])//保存待显示的数组{unsignedcharled_dis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x8C};//0-F小数位段码表unsignedchari,j,D_val,B_val;rPCONF=0x12555;//将端口设置为输出端口rPCONG=0x5555;rPUPF=0x00;//使能PG和PF内部上拉电阻B_val=0x80;B_val=0x80;//首先显示第七位for(i=0;i<8;i++) { D_val=dis_8_num[i];//取出待显示的字符 rPDATF=led_dis[D_val];//转换成七段字型码送

温馨提示

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

评论

0/150

提交评论