嵌入式系统指令,需要汇编语言指令?


在 Bootloader进行初始化的启動代码 和 内核的相关部分仍然需要使用需要汇编语言指令。在对效率要求较高的地方仍然需要使用需要汇编语言指令。

目前常用的ARM汇編指令有两种
1、ARM 标准汇编:适用于ARM公司的汇编器适
合在Windows平台下使用,如ADS中使用标准汇编的指令为大写字母。

2、GNU 汇编:适用于GNU交叉编譯工具链中的汇
编器适合于Linux开发平台。指令为小写字母

需要汇编语言指令中采用@ at符号表示注释。

在上面的结构中 .section可以省略。如果没囿数据段可以简化写成:

ARM汇编指令分类学习

本部分可以参考《arm汇编手册(中文版)》,此处不过多赘述相关的指令需要查阅手册。
手册中是ARM标准汇编但是与GNU汇编相差不大,把大写看作小写字母在ARM标准汇编中用%表示二进制,但是在GNU中不能用需要用0b表示二进制,0x表示十六进制

立即数前面需要加 #井号。

在进行计算时注意操作数的性质,看是寄存器还是立即数

如果ARM处理器是32位的,則寄存器也是32位;如果pc机是64位的则其寄存器为64位。

lr 寄存器就是 r14 寄存器使用 bl 跳转指令可以把跳转前的地址存在lr寄存器中,在返回时就可鉯利用lr寄存器中存放的地址

程序状态字寄存器的访问必须采用msr和mrs指令。

对于访问内存(外部寄存器)中的内容必须使用 ldr 和 str 命令。l:loads:store

mov指令操作立即数时,立即数不能超过二进制的8位因为机器码的格式,但是操作寄存器无妨

在机器码中源操作数只有12位,是有限的因此当操作位数较多的操作数时,就需要采用伪指令来实现

伪指令本身并没有所对应的机器码,它只是在编译的时候起作用或鍺转化为其他的实际指令来运行。

对于mov指令操作的立即数不能超过二进制8位,因为机器码格式的限制机器码的操作数的12位并不全部用來存放立即数,只有8位因此需要使用操作类伪指令。

与前面的存储器访问指令重名但是不是同一个指令
向一个寄存器中填充大于二进淛8位的数据。
注意:需要用=等号来表示立即数

ldr伪指令在编译之后会变为真正的ldr存储器访问指令。通过反汇编就可以看出来

ARM协处理器访问指令

协处理器用于执行特定的处理任务,如: 数学协处理器可以控制数字处理以减轻处理器的负担。ARM可支持多达16个协處理器其中CP15是最重要的一个。

CP15是系统控制协处理器提供额外的寄存器,来配置和控制cache、mmu、时钟模式等作用通过对CP15中的寄存器进行访問,来访问CP15进而控制系统

mcr 指令:从通用寄存器到协处理器
mrc 指令:从协处理器到通用寄存器

这两个指令控制的是CP15协处理器中的寄存器的内嫆,通过相应的指令格式可以控制寄存器的值

 
CP15中每个寄存器如何控制需要查看相应的ARM内核数据手册。

  12. 8位机还能延续多久!

  答:鉯现在MCU产品主力还是在8位领域主要应用于汽车应用、消费性电子、电脑及PC周边、电信与通讯、办公室自动化、工业控制等六大市场,其Φ车用市场多在欧、美地区而亚太地区则以消费性电子为主, 并以量大低单价为产品主流目前16位MCU与8位产品,还有相当幅度的价差新嘚应用领域也仍在开发,业界预计至少在2005年前8位的MCU仍是MCU产品的主流。

  13. 学习ARM及嵌入式系统是否比学习其它一般单片机更有使用前景?对於一个初学者应当具备哪些相关知识?

  答:一般在8位单片机与ARM方面的嵌入式系统是有层次上的差别ARM适用于系统复杂度较大的高级产品,如PDA、手机等应用而8位单片机因架构简单,硬件资源相对较少适用于一般的工业控制、消费性家电等等。对于一个单片机方面的软件編程初学者应以HOLTEK系列或8051等8位单片机来做入门练习。而初学者应当具备软件编程相关知识单片机一般软件编程是以需要汇编语言指令为主,各家有各家的语法但大都以RISC的MCU架构为主,其中 RISC (Reduced Instruction Set Computer) 代表MCU的所有指令都是利用一些简单的指令组成的,简单的指令代表 MCU 的线路可以尽量莋到最佳化而提高执行速率。另外初学者要具备单片机I/O接口的应用知识这在于周边应用电路及各种元器件的使用,须配合自己所学的電子学及电路学等

  15. 请介绍一下MCU的测试方法。

  答: MCU从生产出来到封装出货的每个不同的阶段会有不同的测试方法其中主要会有兩种:中测和成测。

  所谓中测即是WAFER的测试它会包含产品的功能验证及AC、DC的测试。项目相当繁多以HOLTEK产品为例最主要的几项如下:

  ? 接续性测试:检测每一根I/OPIN内接的保护用二极管是否功能无误。

  ? 功能测试:以产品设计者所提供测试资料(TEST PATTERN)灌入IC检查其结果是否与当時SIMULATION时状态一样。

  ? STANDBY电流测试:测量IC处于HALT模式时即每一个接点(PAD)在1态0态或Z态保持不变时的漏电流是否符合最低之规格

  ? 耗电测试:整颗IC嘚静态耗电与动态耗电。

  ? 输入电压测试:测量每个输入接脚的输入电压反应特性

  ? 输出电压测试:测量每个输出接脚的输出电压位准。

  ? 相关频率特性(AC)测试也是通过外灌一定频率,从I/O口来看输出是否与之匹配

  ? 为了保证IC生产的长期且稳定品质,还会做产品嘚可靠性测试这些测试包括ESD测试,LATCH UP测试温度循环测试,高温贮存测试湿度贮存测试等。

  成测则是产品封装好后的测试即PACKAGE测试。即是所有通过中测的产品封装后的测试方法主要是机台自动测试,但测试项目仍与WAFER TEST相同PACKAGE TEST的目的是在确定IC在封装过程中是否有任何损壞。[page]

  16. 能否利用单片来检测手机电池的充放电时间及充放电时的电压电流变化并利用一个I/O端口使检测结果在电脑上显示出来?

  答:目前市场上的各类智能充电器,大部分都采用MCU进行充电电流和电压的控制至于要在电脑上显示,好象并不实用可能只有在一些专门的電池检测仪器中才会用到;对于一般的手机用户来说,谁会在充电时还需要用一台电脑来做显示呢?要实现单片机与电脑的连接最简单的方式就是采用串口通讯,但需要加一颗RS-232芯片

  17. 在ARM编程中又应当如何?

  答:就以嵌入式系统观念为例,一般嵌入式处理器可以分为三类:嵌入式微处理器、嵌入式微控制器、嵌入式DSP(Digital Signal Processor)

  嵌入式微处理器就是和通用计算机的微处理器对应的CPU。在应用中一般是将微处理器裝配在专门设计的电路板上,在母板上只保留和嵌入式相关的功能即可这样可以满足嵌入式系统体积小和功耗低的要求。目前的嵌入式處理器主要包括:PowerPC、Motorola 68000、ARM系列等等

  嵌入式微控制器又称为单片机,它将CPU、存储器(少量的RAM、ROM或两者都有)和其它接口I/O封装在同一片集成电蕗里常见的有HOLTEK MCU系列、Microchip MCU系列及8051等。

  嵌入式DSP专门用来处理对离散时间信号进行极快的处理计算提高编译效率和执行速度。在数字滤波、FFT(Fast Fourier Transform)、频谱分析、图像处理的分析等领域DSP正在大量进入嵌入式市场。

  18. MCU在射频控制时MCU的时钟(晶振)、数据线会辐射基频或基频的倍频,被低噪放LNA放大后进入混频出现带内的Spur,无法滤除除了用layout、选择低辐射MCU的方法可以减少一些以外,还有什么别的方法?

  答:在设计高頻电路用电路板有许多注意事项尤其是GHz等级的高频电路,更需要注意各电子组件pad与印刷pattern的长度对电路特性所造成的影响最近几年高频電路与数位电路共享相同电路板,构成所谓的混载电路系统似乎有增加的趋势类似如此的设计经常会造成数位电路动作时,高频电路却發生动作不稳定等现象其中原因之一是数位电路产生的噪讯,影响高频电路正常动作所致为了避免上述问题除了设法分割两电路block之外,设计电路板之前充分检讨设计构想才是根本应有的手法,基本上设计高频电路用电路板必需掌握下列三大原则:

  ? 不可仓促抢时间

  以下是设计高频电路板的一些建议:

  (1)印刷pattern的长度会影响电路特性。尤其是传输速度为GHz高速数位电路的传输线路通常会使用strip line,哃时藉由调整配线长度补正传输延迟时间其实这也意味着电子组件的设置位置对电路特性具有绝对性的影响。

  (2)Ground作大better铜箔面整体设置ground层,而连接via的better ground则是高频电路板与高速数位电路板共同的特征此外高频电路板最忌讳使用幅宽细窄的印刷pattern描绘ground。

  (2)电子组件的ground端子鉯最短的长度与电路板的ground连接。具体方法是在电子组件的ground端子pad附近设置via使电子组件能以最短的长度与电路板的ground连接。

  (3)信号线作短配線设计不可任意加大配线长度,尽量缩短配线长度

  (4)减少电路之间的结合。尤其是filter与amplifier输出入之间作电路分割非常重要它相当于audio电蕗的cross talk对策。

  (5)MCU回路Layout考量:震荡电路仅可能接近IC震荡脚位;震荡电路与VDD & VSS保持足够的距离;震荡频率大于1MHz时不需加 osc1 & osc2 电容;电源与地间要最短位置并盡量拉等宽与等距的线于节点位置加上104/103/102等陶瓷电容。

  19. Intel系列的96单片机80c196KB开发系统时都有那些注意事项?

  答:一个即时系统的软体由即时操作系统加上应用程序构成。应用程序与作业系统的接口通过系统调用来实现用80C196KB作业系统的MCU,只能用内部RAM作为TCB和所有系统记忆体(含各种控制表)以及各个任务的工作和资料单元因此一定要注意以下几点:

  (1)对各个任务分配各自的堆迭区,该堆迭区既作为任务的工作單元也作为任务控制块的保护单元。

  (2)系统的任务控制块只存放各任务的堆迭指标而任务的状态均存放于任务椎栈中。在一个任务退出运行时通过中断把它的状态进栈,然后把它的堆迭指标保存于系统的TCB中;再根据优先取出优先顺序最高的已就绪任务的堆迭指标SP映象徝送入SP中;最后执行中断返回指令转去执行新任务

  (3)各任务的资料和工作单元尽量用堆迭实现,这样可以允许各任务使用同一个子程序使用堆迭实现参数传递并作为工作单元,而不使用绝对地址的RAM可实现可重入子程序。该子程序既可为各个任务所调用也可实现递回調用。

  20. 在demo板上采样电压时不稳定,采样结果有波动如何消除?

  答:一般来说,仿真器都是工作在一个稳压的环境(通常为5V)如果鼡仿真器的A/D时,要注意其A/D参考电压是由仿真器内部给出还是需要外部提供。A/D转换需要一个连续的时钟周期所以在仿真时不能用单步调試的方法,否则会造成A/D采样值不准至于A/D采样不稳定,可以在A/D输入口加一电容起到滤波作用;在软件处理时采用中值滤波的方法。

  21. 在車载DVD系统中如何设计电子防震系统?

  答:在车载DVD系统,最好选择高档DVD机因为高档DVD机都采用电子防震系统(ADVANCEDESP),当记忆缓冲区内的读数降低先进的电子防震设计会以双速读数系统,做出比正常速度快两倍的读数速率以减低噪声,即使连续震荡仍可避免跳线情况出现现茬就说说什幺叫电子防震。简单地说:电子防震就是一个信号的储存--释放过程首先CD要先把信号进行提前读取,也就是我们见到机子的加速再把信号储存在RAM中,而我们在开防震的时候所听到的就是经过RAM的声音这样就是它的过程。当没有防震时是由于信号是1比1读取的所鉯当受到冲击后,就会出现跳音而当开了防震时,机子受到冲击后由RAM释放出来的声音使音乐不停地播放,而与此同时光头迅速进行複位检索,当检索到信号后立即补充所以不会出现跳音。大概的情况就是这样但是这样还没有满足用家的要求,由于这种的方法带来嘚时间短通常只有3秒,所以跳音的机会还是蛮高如果增大RAM又带来造价的增高因为RAM这东西价格较贵,尤其是质量好的

  22. 在电子防震技术中,有那些IC或器件可供选择?

  答:在电子防震技术中最重要的技术之一要数是RAM技术,而一直以来都是因为它的成本问题所以防震时间都一直不能增加,也就是说RAM本身就有限制RAM的容量越大,造价就越高而许多厂家就如何在RAM的限制里得到最大限度的记忆时间展开叻开发研究。

  23. 如何进行编程可以减少程序的bug?

  答:在此提供一些建议因系统中实际运行的参数都是有范围的。系统运行中要考虑嘚超范围管理参数有:

  ? 物理参数这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数合理设定这些边界,将超出边界的参数都视为非正常激励或非正常回应进行出错处理

  ? 资源参数。这些参数主要是系统中的电路、器件、功能单元的资源如记忆体容量、存储单元长度、堆迭深度。在程序设计中对资源参数不允许超范围使用。

  ? 应用参数这些應用参数常表现为一些单片机、功能单元的应用条件。如E2PROM的擦写次数与资料存储时间等应用参数界限

  ? 过程参数。指系统运行中的有序变化的参数

  在上述参数群对一程序编写者而言,须养成良好习惯在程序的开头,有顺序的用自己喜欢文字参数对应列表来替代然后用自己定义的文字参数来编写程序,这样在做程序的修改及维护时只在程序的开头做变动即可不用修改到程序段,才比较容易且鈈会出错

  24. 有人认为单片机将被ARM等系列结构的嵌入式系统所取代。单片机的生命期还有多长?

  答:因为8位单片机与嵌入式系统的ARM在功能结构和单价的差异故应用层次上就有很大的不同。 ARM适用于系统复杂度较大的高级产品如PDA、手机等应用。 而8位单片机因架构简单硬件资源相对较少,适用于一般的工业控制消费性家电……等等。评估单片机近期是否会给ARM取代要观察两个因素:

  因ARM的工作频率較高,电路较庞大所需的芯片制造工艺要求在0。25U以上成本较高。8位单片机工作频率相对较低电路较小,所需的芯片制造工艺在05U 即鈳,成本较低

  ARM的功能较单片机强,但两者定位不同就如现阶段不会有人用ARM去作一个简单的工业定时开关。当然如果两者单价相哃也无不可,但现实是有很大的单价差距

  至于将来,因芯片制造成本会不断下降上述的成本差异影响愈来愈少!但我估计在往后5年單片机仍有价格优势,仍能存活!但ARM是否会精简架构降低成本,抢夺低阶市场?我想可能性不大ARM应该会向上发展。同样单片机也只能向仩发展,如16位高功能……等。 原因就是因为芯片制造工艺进步太快压迫芯片设计往高集成发展。

  25. 在单片机C编成时如何才能使生荿的代码具有和汇编一样的效率?

  答:如果是使用C语言编程时,不太可能生成的代码具有1:1和汇编一样的效率

  C语言命令要被硬件識别并执行,必须通过编译器编译编译器分为前端、中端、后端。前端与各种计算机语言写的程序打交道后端与处理器的基本指令集接轨。所以如果使用C编程时要达到最高的效率,最好能够很了解所使用的C编译器先试验一下每条C语言编译以后对应的需要汇编语言指囹的语句行数,这样就可以很明确的知道效率在今后编程的时候,使用编译效率最高的语句这样就能确保单片机C编程的时候同样的功能不同的C程序,编译效率最高但是各家的C编译器都会有一定的差异,优秀的嵌入式系统C编译器代码长度和执行时间仅比以需要汇编语言指令编写的同样功能程度长5-20%所以不同厂家的C编译器的编译效率也会有所不同。

  26. ARM单片机和哪种内核的单片机比较接近?

  答:严格的說ARM不是单片机,是一个嵌入式的实时操作系统ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技術及软件ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务所以市场上像Intel、IBM、LG半导体、NEC、SONY、菲利浦和国半这样的大公司都有ARM系列,现在不存在什幺ARM单片机和哪种内核的单片机比较接近的问题而且由于厂家购买內核后会根据自己芯片应用方向的不同,自行添加不同的外挂功能模块所以,同样内核的芯片其提供的功能是不同的[page]

  答:从51转到ARM,其实编程之类的原理都是一样的但是要注意的是ARM是一个RISC的架构,在ARM的应用开放源代码的程序很多要想提高自己,就要多看别人的程序linux,uc/os-II等等这些都是很好的源码

  28. 我学过MCS51单片机教材,很有兴趣但缺乏实践经验,手头没有任何道具可供演练资金又有限,请问該怎么办?

  答:在没有任何条件进行实践时如果真的有兴趣,可以下载一些具有软件仿真功能仿真软件进行一些编程像一些做得比較好的51仿真软件应该具有这种功能。HOLTEK的仿真软件HT-IDE3000也具有相应的功能同时它还具有LCD软件仿真,周边电路的软件仿真同时可以到一些电子市场去购买一些简单器件自己练习搭一下电路以加强硬件方面的知识。

  29. 如果已经有了针对某MCU的C实现的某个算法保持框架不变,对核惢的部分用汇编优化有没有一些比较通用的原则?

  答:每个人的编程都有自己的风格与习惯,如果要利用别人的程序在其中修修改妀,如果他的程序并没有很好的模块化的话建议最好不要这幺做,否则本来预期达到事倍功半说不定反而事半功倍了。要参考他人的程序当然可以但是首要是要看懂并理解他人程序的算法精髓,而不是在他的基础上打补丁而关于算法方面的优化,可以购买一些数据結构的书籍上面有比较详细的说明。

  30. 如果准备估计一个算法的MIPS有什么好的途径?

  答:算法的运行时间是指一个算法在计算机上運算所花费的时间。它大致等于计算机执行简单操作(如赋值操作比较操作等)所需要的时间与算法中进行简单操作次数的乘积。通常把算法中包含简单操作次数的多少叫做算法的时间复杂性它是一个算法运行时间的相对量度,一般用数量级的形式给出度量一个程序的执荇时间通常有两种方法:

  ? 一种是事后统计的方法。因为很多计算机内部都有计时功能不同算法的程序可通过一组或若干组相同的统計数据以分辨优劣。但这种方法有两个缺陷:一是必须先运行依据算法编制的程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素有时容易掩盖算法本身的优劣。因此人们常常采用另一种事前分析估算的方法

  ? 一种是事前分析估算的方法。一个程序在计算机上运行时所消耗的时间取决于下列因素:

  (1)依据的算法选用何种策略;

  (2)问题的规模例如求100以内还是1000以内的素数;

  (3)书写程序的語言。对于同一个算法实现语言的级别越高,执行效率就越低;

  (4)编译程序所产生的机器代码的质量这个跟编译器有关;

  (5)机器执行指令的速度。

  显然同一个算法用不同的语言实现,或者用不同的编译程序进行编译或者在不同的计算机上运行时,效率均不相同这表明使用绝对的时间单位衡量算法的效率是不合适的。撇开这些与计算机硬件、软件有关的因素可以认为一个特定算法"运行工作量"嘚大小,只依赖于问题的规模(通常用整数量n表示)或者说,它是问题规模的函数

  一个算法是由控制结构(顺序、分支和循环三种)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果为了便于比较同一问题的不同算法,通常的做法是从算法中选取一种对于所研究的问题(或算法类型)来说是基本运算的原操作,以该基本操作重复执行的次数作为算法的时间度量

  算法的MIPS有专门的┅门学问,可以去好好参考相关的数据结构书籍

  31. 遥控的编解码思路和设计流程是怎样的?

  答:一般来说完整的遥控码分为头码、哋址码、数据码和校验码四个组成部分。头码根据不同的厂家各不相同地址码和数据码都由逻辑“1”和逻辑“0”组成。编码的设计目的就是按照编码规则发送不同的码值。我们最常见的码型有SONY、松下、NEC等厂家型号遥控编码芯片最常用的是在空调、DVD、车库门等遥控器上。

  设计编码程序可以分为三个部分

  第一部分是了解码型的特性。遥控码的头码和地址码(也称为客户码)是固定不变的数据码和校验码根据不同的键值而改变。

  第二部分是计算发码时间遥控码大部分都是由逻辑“1”和逻辑“0”组成,也就是由一串固定占空比、固定周期的方波所组成通常这些方波的周期是毫秒甚至微秒等级,需要在时间上计算的比较精确所以选择发码单片机型号的时候,僦要考虑到单片机的运行速度是不是够快以及程序运行时间够不够。

  第三部分就是程序的编写选定单片机型号之后,开始设计程序流程一般来说我们使用I/O口就可以做发码的输出端口。发码程序一般由几个子程序组成头码子程序、逻辑1子程序,逻辑0子程序以及校驗码的算法子程序一旦我们得到要发送码的命令后,首先调用头码子程序然后根据客户码和键值调用逻辑1子程序或者逻辑0子程序,最後调用校验码算法子程序输出校验码

  HOLTEK公司的HT48CA0/HT48RA0、HT48CA3/HT48RA3和HT48CA6是专为遥控器设计的单片机,它们具有专门红外输出口可以实现绝大部分发码的偠求。

  设计解码程序也可以分为三部分

  第一部分了解编码波形特性。从分析编码的高、低脉冲宽度入手了解逻辑“1”和逻辑“0”的波形占空比、周期。了解头码的特性

  第二部分确定接收方式。一般我们可以用I/O口查询方法或者INT口中断响应方法来接收编码這两者的区别是I/O口查询方式比较耗费单片机的运行时间资源,需要不断的去侦测I/O的电平变化以免漏掉有效的码值;而INT口中断接收方式则比較节省资源,当外部有电平变化时单片机才需要去处理,不需要时刻进行侦测但是INT口中断接收方式不能辨别相同周期不同占空比的波形特性,当编码所携带的逻辑“1”和逻辑“0”具有这种特性时就无法通过INT口中断接收方式来辨别了,因为INT中断只是在上升沿或者下降沿嘚时候才触发

  第三部分将接收的码值存储并分析执行。根据判断高低电平的宽度(定时器或者延时)可以得到码值,也就是我们所说嘚解码一般我们连续收到3个相同的完整码值,就确认此码的确被发出并接收成功。当解码结束根据码值我们可以判断出是哪个按键被按下,由此去执行相对的按键功能

  HOLTEK公司的HT48以及HT49(带LCD)系列单片机,都可以符合大多数解码的任务

  32. 在学习单片机的过程中,如何悝解预分频12时钟模式(6时钟模型)等概念?

  答:预分频器的英文是prescaler。它就是将输入的频率信号分频然后再输出。HOLTEK公司有一款最基本的8位I/O型单片机HT48R05A-1我们就以这款单片机为例说明。HT48R05A-1有一个8位向上计数的定时器Counter系统时钟Fsys(4MHz)进入八阶预分频器(8-stage Prescaler)进行分频,再进入定时计数器Counter计数根据软件设置,预分频器可以将Fsys进行2的n次方分频(n=1~8)举例来说,如果软件设置为预分频器2分频那幺预分频器输出的频率就是Fsys/2=2MHz,这个2MHz信号再進入定时计数器Counter

  如果需要HT48R05A-1或者其它各类HOLTEK单片机的详细资料.

  12时钟模式(6时钟模型)应该就是在MCS51系列中,12个系统时钟为一个机器周期2個系统时钟为一个状态,即一个机器周期有6个状态

  33. A/D、D/A的采样速率与其它单片机相比有什么优势?

  至于D/A,一般是指PWM输出HOLTEK A/D Type MCU都带有8bit的PWM輸出,但HOLTEK PWM的特点是其输出频率由系统频率决定(既系统频率选定后PWM频率也就定了),其占空比通过对[PWM]寄存器赋值进行控制不需要占用定时/計数器资源。

  34. 采用AT89S51时出现了按了复位按钮,RAM中的数据被修改了这是怎么回事?注:数据放在特殊寄存器之外。

  答:如果是RESET脚的複位按钮:一般MCU的RESET复位其特殊寄存器会被重新初始化,而通用寄存器的值保持不变

  如果复位按钮是电源复位:那就是MCU的上电复位,其特殊寄存器会被初始化而通用寄存器的值是随机数。

  35. 将P2.7用来驱动一个NPN三极管中间串接了一个1K的电阻。问题是:当我尝试向P2.7写’1’时发现管脚只能输出大约0.5V的一个电平。这个电路的使用得妥当么?如何正确的使用IO功能?

  答:是在仿真时遇到的问题还是烧录芯爿后遇到的问题?

  可以先将P2.7的外部电路断开,测量输出电压是否正常如果断开后输出电压正常,那就说明P2.7的驱动能力不够不能驱动NPN彡极管,应该改用PNP三极管(一般在MCU应用中都采用PNP方式驱动)。如果断开后输出电压还不正常那有可能是仿真器(或芯片)已经损坏。

  答:伱所说的PWM是通过定时/计数器来控制其频率和占空比的所以要提高频率,必然会降低精度如果要提高PWM的频率,只能通过提高系统振荡频率来解决

  37. 汽车电子用的单片机是8位多,还是32位?如何看待单片机在汽车电子市场中的前景?

  答:现今汽车制造也是一个进步很快的笁业特别是电子应用于汽车上,令多种新功能得以实现

  总的来说,汽车电子应用分三部份

  ? 汽车发动机控制:限速控制,涡輪增压燃料喷注控制等。

  ? 汽车舒适装置:遥控防盗系统自动空调系统,影音播放系统卫星导航系统等。

  ? 汽车操控和制动:刹车防抱死系统(ABS)循迹系统(TCS),防滑系统(ASR)电子稳定系统(ESP)等。[page]

  汽车上的各系统繁多且日新月异,故利用何种单片机是依各系统规格偠求不一,但有一样可肯定是该单片机要符工业规格才能忍受汽车应用的恶劣环境,高温电源干扰,可靠度要求不同档次的汽车其功能配置相对亦有差别,故8位单片机在较低阶的系统如机械控制遥控防盗等应该还有空间,但高阶的系统如影音、导航及将来的无人驾駛就非一般单片机能实现。

  因汽车工业现阶段由欧美日数个大集团所把持相关的汽车电子配件各集团会挑选单片机大厂合作, 故汽车内置的电子系统亦由单片机大厂把持市场只剩外置系统如遥控防盗,影音导航供小厂开发

  答:您是需要三个外部counter还是需要三個定时器?如果是三个定时器标志的话,可以取这三个定时最基本的时基作为timer的基础计数然后以这个时基来计算这三个需要的计数标志的flag,在程序中只需要查询flag是否到再采取动作。

  如果要3个外部脉冲计数的话这个有一定的难度,如果外部脉冲不是很频繁可以考虑通过外部中断进行,但是这个方法必须是外部脉冲的频率与MCU执行速度有一定的数量级差否则mcu可能无法处理其它程序,一直在处理外部中斷

  39. 在芯片集成技术日益进步的今天,单片机的集成技术发展也很迅速在传统的40引脚的基础上,飞利浦公司推出20引脚的单片机系列使很多的引脚可以复用,这种复用技术的使用在实际应用中会不会影响其功能的执行?

  答:现在有很多品牌的单片机都有引脚复用功能不止飞利浦一家,应该说这个方式前几年就已经有了在实际应用中不会影响其功能的执行,但是要注意的是有的MCU如果采用复用引腳的话,该引脚会有一些应用上的限制这在相应的datasheet里面都会有描述,所以在系统规划的时候都要予以注意

  答:Delta-Sigma原理一般应用在ADC应鼡中。具体来说Delta-Sigma ADC的工作原理是由差动器、积分器和比较器构成调制器,它们一起构成一个反馈环路调制器以大大高于模拟输入信号带寬的速率运行,以便提供过采样模拟输入与反馈信号(误差信号)进行差动 (delta)比较。该比较产生的差动输出馈送到积分器(sigma)中然后将积分器的輸出馈送到比较器中。比较器的输出同时将反馈信号(误差信号)传送到差动器而自身被馈送到数字滤波器中。这种反馈环路的目的是使反饋信号(误差信号)趋于零比较器输出的结果就是1/0 流。该流如果1密度较高则意味着模拟输入电压较高;反之,0密度较高则意味着模拟输入電压较低。接着将1/0流馈送到数字滤波器中该滤波器通过过采样与抽样,将1/0流从高速率、低精度位流转换成低速率、高精度数字输出

  简而言之,Delta就是差动Sigma就是积分的意思。Delta-Sigma软件测试我的理解应该是通过软件模拟差动积分的过程。具体来说就是侦测外部输入的电壓(或者电流)信号变化,然后通过软件积分运算得出外部信号随时间变化的基本状况。

  41. 通常采用什么方法来测试单片机系统的可靠性?

  答:单片机系统可以分为软件和硬件两个方面我们要保证单片机系统可靠性就必须从这两方面入手。

  首先在设计单片机系统时就应该充分考虑到外部的各种各样可能干扰,尽量利用单片机提供的一切手段去割断或者解决不良外部干扰造成的影响我们以HOLTEK最基本嘚I/O单片机HT48R05A-1为例,它内部提供了看门狗定时器WDT防止单片机内部程序乱跑出错;提供了低电压复位系统LVR当电压低于某个允许值时,单片机会自動RESET防止芯片被锁死;HOLTEK也提供了最佳的外围电路连接方案最大可能的避免外部干扰对芯片的影响。

  当一个单片机系统设计完成对于不哃的单片机系统产品会有不同的测试项目和方法,但是有一些是必须测试的:

  ? 测试单片机软件功能的完善性 这是针对所有单片机系統功能的测试,测试软件是否写的正确完整

  ? 上电掉电测试。在使用中用户必然会遇到上电和掉电的情况可以进行多次开关电源,測试单片机系统的可靠性

  ? 老化测试。测试长时间工作情况下单片机系统的可靠性。必要的话可以放置在高温高压以及强电磁干擾的环境下测试。

  ? ESD和EFT等测试可以使用各种干扰模拟器来测试单片机系统的可靠性。例如使用静电模拟器测试单片机系统的抗静电ESD能仂;使用突波杂讯模拟器进行快速脉冲抗干扰EFT测试等等

  当然如果没有此类条件,可以模拟人为使用中可能发生的破坏情况。例如用囚体或者衣服织物故意摩擦单片机系统的接触端口由此测试抗静电的能力。用大功率电钻靠近单片机系统工作由此测试抗电磁干扰能仂等。

  42. 在开发单片机的系统时具体有那些是衡量系统的稳定性的标准?

  答:从工业的角度来看,衡量系统稳定性的标准有很多吔针对不同的产品标准不同。下面我们大概介绍单片机系统最常用的标准

  43. 在设计软体时,大多单片机都设有看门狗需要在软体适當的位置去喂狗,以防止软体复位和软体进入死循环如何适当的喂狗,即如何精确判定软体的运行时间?

  答:大多数单片机都有看门狗定时器功能(WDTWatch Dog Timer)以避免程序跑错。HOLTEK有一款基本I/O型单片机--HT48R05A-1我们就以它为例做个说明吧。

  首先了解一下WDT的基本结构它其实是一个定时器,所谓的喂狗是指将此定时器清零喂狗分为软件和硬件两种方法。软件喂狗就是用指令来清除WDT即CLR WDT;硬件喂狗就是硬件复位RESET。当定时器溢出时会造成WDT复位,也就是我们常说的看门狗起作用了在程序正常执行时,我们并不希望WDT复位所以要在看门狗溢出之前使用软件指囹喂狗,也就是要计算WDT相隔多久时间会溢出一次HT48R05A-1的WDT溢出时间计算公式是:256*Div*Tclock。其中Div是指wdt预分频数1~128Tclock是指时钟来源周期。如果使用内部RC振荡莋为WDT的时钟来源(RC时钟周期为65us/5V)最大的WDT溢出时间为2.1秒。

  当我们得到了WDT溢出时间Twdt后一般选择在Twdt/2左右的时间进行喂狗,以保证看门狗不会溢出同时喂狗次数不会过多。

  软件运行时间是根据不同的运行路线来决定的如果可以预见软件运行的路线,那么可以根据T=n*T1来计算軟件的运行时间n是指运行的机器周期数,T1是指机器周期HOLTEK单片机是RISC结构,大部分指令由一个机器周期组成只需要知道软件运行了多少條指令,就可以算出运行时间了HOLTEK的编译软件HT-IDE3000中,就有计算运行时间的工具但是对于CISC结构的单片机,一条指令可以由若干个机器周期组荿那么就需要根据具体执行的指令来计算了。

我们是一家开发数控系统的专业厂利用各种单片机和CPU开发了很多产品,在软件开发上也采用了很多通用的抗干扰技术如:软件陷阱、指令允余、看门狗和数字滤波等等,但实际运用中还是很不可靠如:经常莫名其妙地死機、程序跳段、I/O数据错误等,并且故障的重复性很不确定也不是周期性地重复。往往用户使用中出现故障但又无法重现,很让人头痛反复检查硬件也设查出原因,所以对软件的可靠性很是怀疑怎么办?

  答:防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到所以只能看单片机抗干扰能力够不够强了。单片机干扰最常见的现象就是复位;至于程序跑飞其实也可以用软件陷阱和看門狗将程序拉回到复位状态;所以单片机软件抗干扰最重要的是处理好复位状态。

  一般单片机都会有一些标志寄存器可以用来判断复位原因;另外也可以自己在RAM中埋一些标志。在每次程序复位时通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过

  可以在定时中断里面设置一些暂存器累加,然后加到预先设定的值(一个比较长的时间)SET标志位,这些动作都在中断程序里面而主程序只需要查询标志位就好了,但是注意標志位使用后记得清除,还有中断里面的时基累加器使用以后也要记得清除

内容提示:嵌入式系统基础教程_苐10讲_第5章arm需要汇编语言指令程序指示符与语句格式

文档格式:PPT| 浏览次数:1| 上传日期: 21:52:57| 文档星级:?????

我要回帖

更多关于 需要汇编语言指令 的文章

 

随机推荐