收藏 分享(赏)

单片机应用编程技巧100问.doc

上传人:dreamzhangning 文档编号:2649398 上传时间:2018-09-24 格式:DOC 页数:113 大小:677KB
下载 相关 举报
单片机应用编程技巧100问.doc_第1页
第1页 / 共113页
单片机应用编程技巧100问.doc_第2页
第2页 / 共113页
单片机应用编程技巧100问.doc_第3页
第3页 / 共113页
单片机应用编程技巧100问.doc_第4页
第4页 / 共113页
单片机应用编程技巧100问.doc_第5页
第5页 / 共113页
点击查看更多>>
资源描述

1、单片机应用编程技巧 100 问 1.C 语言和汇编语言在开发单片机时各有哪些优缺点 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言.其主要优点是占用资源少,程序执行效率高.但是不同的 CPU,其汇编语言可能有所差异,所以不易移植. C 语言是一种结构化的高级语言.其优点是可读性好, 移植容易,是普遍使用的一种计算机语言.缺点是占用资源较多,执行效率没有汇编高. 对于目前普遍使用的 RISC 架构的 8bit MCU 来说,其内部 ROM,RAM,STACK 等资源都有限 ,如果使用 C 语言编写,一条 C 语言指令编译后,会变成很多条机器码,很容易出现 ROM

2、 空间不够,堆栈溢出等问题.而且一些单片机厂家也不一定能提供 C 编译器.而汇编语言,一条指令就对应一个机器码 ,每一步执行什幺动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便.所以在单片机开发中,我们还是建议采用汇编语言比较好. 如果对单片机 C 语言有兴趣,HOLTEK 的单片机就有提供 C 编译器,可以到 HOLTEK 的网站()免费下载使用. 2.C 或汇编语言可以用于单片机,C+能吗 答:在单片机开发中,主要是汇编和 C,没有用 C+的. 3.搞单片机开发,一定要会 C 吗 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言.其主要

3、优点是占用资源少,程序执行效率高.但是不同的 CPU,其汇编语言可能有所差异,所以不易移植. 对于目前普遍使用的 RISC 架构的 8bit MCU 来说,其内部 ROM,RAM,STACK 等资源都有限 ,如果使用 C 语言编写,一条 C 语言指令编译后,会变成很多条机器码,很容易出现 ROM 空间不够,堆栈溢出等问题.而且一些单片机厂家也不一定能提供 C 编译器.而汇编语言,一条指令就对应一个机器码 ,每一步执行什么动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便.所以在资源较少单片机开发中,我们还是建议采用汇编语言比较好. 而 C 语言是一种编译型程序设计语言,它兼

4、顾了多种高级语言的特点 ,并具备汇编语言的功能.C 语言有功能丰富的库函数,运算速度快 ,编译效率高,有良好的可移植性,而且可以直接实现对系统硬件的控制.C 语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术.此外,C 语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障.因此,使用 C 语言进行程序设计已成为软件开发的一个主流.用 C 语言来编写目标系统软件,会大大缩短开发周期 ,且明欢迎来到控制中文网http:/ 综上所述,用 C 语言进行单片机程序设计是单片机开发与应用的必然趋势 .所以作为一个技术全面并涉足较大规模的

5、软件系统开发的单片机开发人员最好能够掌握基本的 C 语言编程. 4.当开发一个较复杂而又开发时间短的项目时,用 C 还是用汇编开发好 答:对于复杂而开发时间紧的项目时,可以采用 C 语言,但前提是要求对该 MCU系统的 C 语言和 C 编译器非常熟悉,特别要注意该 C 编译系统所能支持的数据类型和算法.虽然 C 语言是最普遍的一种高级语言,但不同的 MCU 厂家其 C语言编译系统是有所差别的,特别是在一些特殊功能模块的操作上.如果对这些特性不了解,那调试起来就有的烦了,到头来可能还不如用汇编来的快. 5.在教学中要用到 8088 和 196 芯片单片机教材,请问那里可以找到关于这方面的书或资料

6、 答:有关这方面的教材,大学里常用的一本是IBM-PC 汇编语言程序设计清华大学出版社出版的,在网上以及书店都是可以找到的,另外网上还可以搜索到很多其他的教材如:微机原理及汇编语言教程( 杨延双 张晓冬 等编著 )和16/32 位微机原理,汇编语言及接口技术( 作者: 钟晓捷 陈涛 ,机械工业出版社 出版)等,可以在较大型的科技书店里查找或者直接从网上订购 . 6.初学者到底是应该先学 C 还是汇编 答:对于单片机的初学者来说,应该从汇编学起.因为汇编语言是最接近机器码的一种语言,可以加深初学者对单片机各个功能模块的了解,从而打好扎实的基础. 7.我是一名武汉大学电子科技大 3 的学生,学了电

7、子线路,数字逻辑,汇编和接口,C 语言,但是总是感觉很迷茫,觉好象什幺都不会 .怎幺办 答:大学过程是一个理论过程,实践的机会比较少,往往会造成理论与实践相脱节,这是国内大学教育系统的通病,不过对于学生来说切不可好高骛远.一般从大三会开始接触到一些专业课程,电子相关专业会开设相关的单片机应用课程并且会有简单的实验项目,那么要充分把握实验课的机会,多多地实际上机操作练习.平时可以多看看相关的电子技术杂志网站,看看别人的开发经验,硬件设计方案以及他人的软件设计经验.有可能的话,还可以参加一些电子设计大赛,借此机会 2-3 个人合作做一个完整系统,会更有帮助.到了大四毕业设计阶段,也可以选择相关的课

8、题作些实际案例增长经验.做什么事情都有个经验的积累过程,循序渐进. 8.请问作为学生,如何学好单片机 答:学习好单片机,最主要的是实践,在实践中增长经验.在校学生的话,实践机会的确会比较少,但是有机会的话,可以毕业实习选择相关的课题,这样就可以接触到实际的项目.而且如果单片机微机原理是一门主课的话,相信学校会安排比较多的实践上机机会.有能力的话,可以找一些相关兼职工作做做,会更有帮助.而且单片机开发应用需要软硬件结合,所以不能只满足于编程技巧如何完美,平时也要注意硬件知识的积累,多上上电子论坛网站,买一些相关杂志.可能的话,可以到电子市场去买一些小零件,自己搭一个小系统让它工作起来. HOTL

9、EK 的单片机是 RISC 结构的 8 位单片机,它可以广泛应用在家用电器,安全系统,掌上游戏等方面.大概来说可以分成 I/O 型单片机 ,LCD 型单片机,A/D 型单片机,A/D with LCD 型单片机等等.这些单片机的中文资料我们都公开在 HOLTEK 网站 . HOLTEK 各类单片机的使用手册下载地址: http:/ HOLTEK 单片机软件/硬件应用范例下载地址 : http:/ HOLTEK 单片机支持工具下载地址: http:/ 9.如何才能才为单片机的高手啊 答:要成为单片机高手,应该多实践,时常关注单片机的发展趋势;经常上一些相关网站,从那里可以找到许多有用的资料. 1

10、0. 女性是否适合单片机软件编程这个行业 答:要根据自己的兴趣,配合自己对软件编程的耐性,男女皆适合这个行业. 11. Holtek 的数据手册在哪里下载 答:如果对 Holtek 的 IC 感兴趣的话,相应的数据手册可以到网站上http:/ 去选 IC 资料下载. 12. 8 位机还能延续多久! 答:以现在 MCU 产品主力还是在 8 位领域,主要应用于汽车应用,消费性电子,电脑及 PC 周边,电信与通讯 ,办公室自动化,工业控制等六大市场 ,其中车用市场多在欧,美地区,而亚太地区则以消费性电子为主, 并以量大低单价为产品主流,目前 16 位 MCU 与 8 位产品,还有相当幅度的价差,新的

11、应用领域也仍在开发,业界预计,至少在 2005 年前 8 位的 MCU 仍是 MCU 产品的主流. 13. 学习 ARM 及嵌入式系统是否比学习其它一般单片机更有使用前景 对于一个初学者应当具备哪些相关知识 答:一般在 8 位单片机与 ARM 方面的嵌入式系统是有层次上的差别,ARM 适用于系统复杂度较大的高级产品,如 PDA,手机等应用 .而 8 位单片机因架构简单,硬件资源相对较少,适用于一般的工业控制,消费性家电等等.对于一个单片机方面的软件编程初学者,应以 HOLTEK 系列或 8051 等 8 位单片机来做入门练习.而初学者应当具备软件编程相关知识,单片机一般软件编程是以汇编语言为主

12、,各家有各家的语法,但大都以 RISC 的 MCU 架构为主,其中 RISC (Reduced Instruction Set Computer) 代表 MCU 的所有指令.都是利用一些简单的指令组成的,简单的指令代表 MCU 的线路可以尽量做到最佳化,而提高执行速率.另外初学者要具备单片机 I/O 接口的应用知识, 这在于周边应用电路及各种元器件的使用,须配合自己所学的电子学及电路学等. 14. 符合 44PIN 的 80 系列 8 位单片机的 MCU 有哪些 答:符合 44PIN 的 80 系列 8 位单片机有 Z8674312FSC,Z86E2112FSC,Z86E2116FSC. 15

13、. 请介绍一下 MCU 的测试方法 . 答:MCU 从生产出来到封装出货的每个不同的阶段会有不同的测试方法,其中主要会有两种:中测和成测. 所谓中测即是 WA F E R 的测试,它会包含产品的功能验证及 AC,DC 的测试.项目相当繁多,以 HOLTEK 产品为例最主要的几项如下: 接续性测试:检测每一根 I/OPIN 内接的保护用二极管是否功能无误. 功能测试:以产品设计者所提供测试资料(TEST PATTERN)灌入 IC,检查其结果是否与当时 SIMULATION 时状态一样. STANDBY 电流测试:测量 IC 处于 HALT 模式时即每一个接点 (PAD)在1 态 0 态或 Z

14、态保持不变时的漏电流是否符合最低之规格. 耗电测试:整颗 IC 的静态耗电与动态耗电. 输入电压测试:测量每个输入接脚的输入电压反应特性. 输出电压测试:测量每个输出接脚的输出电压位准. 相关频率特性(AC)测试 ,也是通过外灌一定频率,从 I/O 口来看输出是否与之匹配. 为了保证 IC 生产的长期且稳定品质,还会做产品的可靠性测试,这些测试包括 ESD 测试,LATCH UP 测试,温度循环测试,高温贮存测试 ,湿度贮存测试等. 成测则是产品封装好后的测试,即 PACKAGE 测试.即是所有通过中测的产品封装后的测试,方法主要是机台自动测试,但测试项目仍与 WA F E R TEST 相同

15、.PACKAGE TEST 的目的是在确定 IC 在封装过程中是否有任何损坏. 16. 能否利用单片来检测手机电池的充放电时间及充放电时的电压电流变化,并利用一个 I/O 端口使检测结果在电脑上显示出来 答:目前市场上的各类智能充电器,大部分都采用 MCU 进行充电电流和电压的控制.至于要在电脑上显示,好象并不实用,可能只有在一些专门的电池检测仪器中才会用到;对于一般的手机用户来说,谁会在充电时还需要用一台电脑来做显示呢 要实现单片机与电脑的连接,最简单的方式就是采用串口通讯,但需要加一颗 RS-232 芯片. 17. 在 ARM 编程中又应当如何 答:就以嵌入式系统观念为例,一般嵌入式处理器

16、可以分为三类:嵌入式微处理器,嵌入式微控制器,嵌入式 DSP(Digital Signal Processor). 嵌入式微处理器就是和通用计算机的微处理器对应的 CPU.在应用中,一般是将微处理器装配在专门设计的电路板上,在母板上只保留和嵌入式相关的功能即可,这样可以满足嵌入式系统体积小和功耗低的要求.目前的嵌入式处理器主要包括:PowerPC,Motorola 68000,ARM 系列等等. 嵌入式微控制器又称为单片机,它将 CPU,存储器(少量的 RAM,ROM 或两者都有)和其它接口 I/O 封装在同一片集成电路里.常见的有 HOLTEK MCU系列,Microchip MCU 系列及

17、 8051 等. 嵌入式 DSP 专门用来处理对离散时间信号进行极快的处理计算,提高编译效率和执行速度.在数字滤波,FFT(Fast Fourier Transform),频谱分析,图像处理的分析等领域,DSP 正在大量进入嵌入式市场 . 18. MCU 在射频控制时 ,MCU 的时钟(晶振),数据线会辐射基频或基频的倍频,被低噪放 LNA 放大后进入混频 ,出现带内的 Spur,无法滤除.除了用 layout,选择低辐射 MCU 的方法可以减少一些以外,还有什幺别的方法 答:在设计高频电路用电路板有许多注意事项,尤其是 GHz 等级的高频电路,更需要注意各电子组件 pad 与印刷 patte

18、rn 的长度对电路特性所造成的影响 .最近几年高频电路与数位电路共享相同电路板,构成所谓的混载电路系统似乎有增加的趋势,类似如此的设计经常会造成数位电路动作时,高频电路却发生动作不稳定等现象,其中原因之一是数位电路产生的噪讯,影响高频电路正常动作所致.为了避免上述问题除了设法分割两电路 block 之外,设计电路板之前充分检讨设计构想,才是根本应有的手法,基本上设计高频电路用电路板必需掌握下列三大原则: 高质感. 不可取巧. 不可仓促抢时间. 以下是设计高频电路板的一些建议: 印刷 pattern 的长度会影响电路特性 .尤其是传输速度为 GHz 高速数位电路的传输线路,通常会使用 strip

19、 line,同时藉由调整配线长度补正传输延迟时间,其实这也意味着电子组件的设置位置对电路特性具有绝对性的影响. Ground 作大 better.铜箔面整体设置 ground 层,而连接 via 的 better ground 则是高频电路板与高速数位电路板共同的特征 ,此外高频电路板最忌讳使用幅宽细窄的印刷 pattern 描绘 ground. 电子组件的 ground 端子,以最短的长度与电路板的 ground 连接.具体方法是在电子组件的 ground 端子 pad 附近设置 via,使电子组件能以最短的长度与电路板的 ground 连接. 信号线作短配线设计.不可任意加大配线长度,尽量

20、缩短配线长度. 减少电路之间的结合.尤其是 filter 与 amplifier 输出入之间作电路分割非常重要,它相当于 audio 电路的 cross talk 对策 . MCU 回路 Layout 考量:震荡电路仅可能接近 IC 震荡脚位;震荡电路与 VDD 震荡频率大于 1MHz 时不需加 osc1 电源与地间要最短位置并尽量拉等宽与等距的线,于节点位置加上 104/103/102 等陶瓷电容. 19. Intel 系列的 96 单片机 80c196KB 开发系统时,都有那些注意事项 答:一个即时系统的软体由即时操作系统加上应用程序构成.应用程序与作业系统的接口通过系统调用来实现.用 8

21、0C196KB 作业系统的 MCU,只能用内部RAM 作为 TCB 和所有系统记忆体 (含各种控制表)以及各个任务的工作和资料单元.因此一定要注意以下几点:(1)对各个任务分配各自的堆迭区,该堆迭区既作为任务的工作单元,也作为任务控制块的保护单元.(2)系统的任务控制块只存放各任务的堆迭指标,而任务的状态均存放于任务椎栈中.在一个任务退出运行时,通过中断把它的状态进栈,然后把它的堆迭指标保存于系统的 TCB 中;再根据优先取出优先顺序最高的已就绪任务的堆迭指标 SP 映象值送入 SP 中;最后执行中断返回指令转去执行新任务.(3)各任务的资料和工作单元尽量用堆迭实现,这样可以允许各任务使用同一

22、个子程序.使用堆迭实现参数传递并作为工作单元,而不使用绝对地址的 RAM,可实现可重入子程序.该子程序既可为各个任务所调用,也可实现递回调用. 20. 在 demo 板上采样电压时,不稳定,采样结果有波动,如何消除 答:一般来说,仿真器都是工作在一个稳压的环境( 通常为 5V).如果用仿真器的 A/D 时,要注意其 A/D 参考电压是由仿真器内部给出,还是需要外部提供. A/D 转换需要一个连续的时钟周期,所以在仿真时不能用单步调试的方法,否则会造成 A/D 采样值不准. 至于 A/D 采样不稳定,可以在 A/D 输入口加一电容,起到滤波作用;在软件处理时采用中值滤波的方法. 21. 在车载

23、DVD 系统中,如何设计电子防震系统 答:在车载 DVD 系统,最好选择高档 DVD 机,因为高档 DVD 机都采用电子防震系统(ADVANCEDESP),当记忆缓冲区内的读数降低,先进的电子防震设计会以双速读数系统,做出比正常速度快两倍的读数速率,以减低噪声,即使连续震荡仍可避免跳线情况出现,现在就说说什幺叫电子防震.简单地说:电子防震就是一个信号的储存-释放过程,首先 CD 要先把信号进行提前读取,也就是我们见到机子的加速,再把信号储存在 RAM 中,而我们在开防震的时候所听到的就是经过 RAM 的声音,这样就是它的过程 .当没有防震时是由于信号是 1 比 1 读取的,所以当受到冲击后,就

24、会出现跳音.而当开了防震时,机子受到冲击后,由 RAM 释放出来的声音使音乐不停地播放,而与此同时,光头迅速进行复位检索,当检索到信号后立即补充,所以不会出现跳音.大概的情况就是这样.但是这样还没有满足用家的要求,由于这种的方法带来的时间短,通常只有 3 秒,所以跳音的机会还是蛮高,如果增大 RAM 又带来造价的增高因为 RAM 这东西价格较贵,尤其是质量好的. 22. 在电子防震技术中,有那些 IC 或器件可供选择 答:在电子防震技术中,最重要的技术之一要数是 RAM 技术,而一直以来都是因为它的成本问题,所以防震时间都一直不能增加,也就是说 RAM 本身就有限制,RAM 的容量越大 ,造价

25、就越高 .而许多厂家就如何在 RAM 的限制里得到最大限度的记忆时间展开了开发研究. 23. 如何进行编程可以减少程序的 bug 答:在此提供一些建议,因系统中实际运行的参数都是有范围的.系统运行中要考虑的超范围管理参数有: 物理参数.这些参数主要是系统的输入参数,它包括激励参数,采集处理中的运行参数和处理结束的结果参数.合理设定这些边界,将超出边界的参数都视为非正常激励或非正常回应进行出错处理. 资源参数.这些参数主要是系统中的电路,器件,功能单元的资源,如记忆体容量,存储单元长度,堆迭深度.在程序设计中,对资源参数不允许超范围使用. 应用参数.这些应用参数常表现为一些单片机,功能单元的应用

26、条件.如E2PROM 的擦写次数与资料存储时间等应用参数界限. 过程参数.指系统运行中的有序变化的参数. 在上述参数群对一程序编写者而言,须养成良好习惯,在程序的开头,有顺序的用自己喜欢文字参数对应列表来替代,然后用自己定义的文字参数来编写程序,这样在做程序的修改及维护时只在程序的开头做变动即可,不用修改到程序段,才比较容易且不会出错. 24. 有人认为单片机将被 ARM 等系列结构的嵌入式系统所取代.单片机的生命期还有多长 答:因为 8 位单片机与嵌入式系统的 ARM 在功能结构和单价的差异,故应用层次上就有很大的不同. ARM 适用于系统复杂度较大的高级产品,如 PDA,手机等应用. 而

27、8 位单片机因架构简单,硬件资源相对较少,适用于一般的工业控制,消费性家电等等.评估单片机近期是否会给 ARM 取代,要观察两个因素: - 芯片成本 因 ARM 的工作频率较高 ,电路较庞大 ,所需的芯片制造工艺要求在 0.25U以上,成本较高.8 位单片机工作频率相对较低,电路较小,所需的芯片制造工艺在 0.5U 即可,成本较低. - 功能定位 ARM 的功能较单片机强 ,但两者定位不同 .就如现阶段不会有人用 ARM去作一个简单的工业定时开关.当然,如果两者单价相同也无不可,但现实是有很大的单价差距. 至于将来,因芯片制造成本会不断下降,上述的成本差异影响愈来愈少!但我估计在往后 5 年单

28、片机仍有价格优势,仍能存活!但 ARM 是否会精简架构,降低成本,抢夺低阶市场 我想可能性不大,ARM 应该会向上发展.同样,单片机也只能向上发展,如 16 位,高功能等. 原因就是因为芯片制造工艺进步太快.压迫芯片设计往高集成发展. 25. 在单片机 C 编成时,如何才能使生成的代码具有和汇编一样的效率 答:如果是使用 C 语言编程时 ,不太可能生成的代码具有 1:1 和汇编一样的效率. C 语言命令要被硬件识别并执行,必须通过编译器编译 .编译器分为前端,中端,后端.前端与各种计算机语言写的程序打交道,后端与处理器的基本指令集接轨.所以如果使用 C 编程时,要达到最高的效率,最好能够很了解

29、所使用的 C 编译器.先试验一下每条 C 语言编译以后对应的汇编语言的语句行数,这样就可以很明确的知道效率.在今后编程的时候,使用编译效率最高的语句,这样就能确保单片机 C 编程的时候同样的功能不同的 C 程序,编译效率最高.但是各家的 C 编译器都会有一定的差异,优秀的嵌入式系统 C 编译器代码长度和执行时间仅比以汇编语言编写的同样功能程度长 5-20%,所以不同厂家的 C 编译器的编译效率也会有所不同. 26. ARM 单片机和哪种内核的单片机比较接近 答:严格的说,ARM 不是单片机,是一个嵌入式的实时操作系统.ARM(Advanced RISC Machines)是微处理器行业的一家知

30、名企业,设计了大量高性能,廉价,耗能低的 RISC 处理器,相关技术及软件 .ARM 将其技术授权给世界上许多著名的半导体,软件和 OEM 厂商,每个厂商得到的都是一套独一无二的 ARM 相关技术及服务.所以市场上像 Intel,IBM,LG 半导体,NEC,SONY,菲利浦和国半这样的大公司都有 ARM 系列,现在不存在什幺 ARM 单片机和哪种内核的单片机比较接近的问题.而且由于厂家购买内核后会根据自己芯片应用方向的不同,自行添加不同的外挂功能模块,所以,同样内核的芯片其提供的功能是不同的. 27. 从 51 转到 ARM 会有困难吗 答:从 51 转到 ARM,其实编程之类的原理都是一样

31、的,但是要注意的是 ARM是一个 RISC 的架构,在 ARM 的应用开放源代码的程序很多,要想提高自己,就要多看别人的程序,linux,uc/os-II 等等这些都是很好的源码. 28. 我学过 MCS51 单片机教材 ,很有兴趣,但缺乏实践经验,手头没有任何道具可供演练,资金又有限,请问该怎幺办 答:在没有任何条件进行实践时,如果真的有兴趣,可以下载一些具有软件仿真功能仿真软件进行一些编程,像一些做得比较好的 51 仿真软件应该具有这种功能.HOLTEK 的仿真软件 HT-IDE3000 也具有相应的功能,同时它还具有 LCD软件仿真,周边电路的软件仿真.有兴趣的话,也可以去免费下载使用,

32、http:/ 29. 如果已经有了针对某 MCU 的 C 实现的某个算法,保持框架不变,对核心的部分用汇编优化,有没有一些比较通用的原则 答:每个人的编程都有自己的风格与习惯,如果要利用别人的程序,在其中修修改改,如果他的程序并没有很好的模块化的话,建议最好不要这幺做,否则本来预期达到事倍功半,说不定反而事半功倍了.要参考他人的程序当然可以,但是首要是要看懂并理解他人程序的算法精髓,而不是在他的基础上打补丁.而关于算法方面的优化,可以购买一些数据结构的书籍,上面有比较详细的说明. 30. 如果准备估计一个算法的 MIPS,有什幺好的途径 答:算法的运行时间是指一个算法在计算机上运算所花费的时间

33、.它大致等于计算机执行简单操作(如赋值操作,比较操作等)所需要的时间与算法中进行简单操作次数的乘积.通常把算法中包含简单操作次数的多少叫做算法的时间复杂性.它是一个算法运行时间的相对量度,一般用数量级的形式给出.度量一个程序的执行时间通常有两种方法: 一种是事后统计的方法.因为很多计算机内部都有计时功能,不同算法的程序可通过一组或若干组相同的统计数据以分辨优劣.但这种方法有两个缺陷:一是必须先运行依据算法编制的程序;二是所得时间的统计量依赖于计算机的硬件,软件等环境因素,有时容易掩盖算法本身的优劣.因此人们常常采用另一种事前分析估算的方法. 一种是事前分析估算的方法.一个程序在计算机上运行时所

34、消耗的时间取决于下列因素: 依据的算法选用何种策略; 问题的规模.例如求 100 以内还是 1000 以内的素数; 书写程序的语言.对于同一个算法,实现语言的级别越高,执行效率就越低; 编译程序所产生的机器代码的质量.这个跟编译器有关; 机器执行指令的速度. 显然,同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行时,效率均不相同.这表明使用绝对的时间单位衡量算法的效率是不合适的.撇开这些与计算机硬件,软件有关的因素,可以认为一个特定算法“运行工作量“的大小,只依赖于问题的规模(通常用整数量 n 表示),或者说,它是问题规模的函数. 一个算法是由控制结构(顺序,

35、分支和循环三种)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果 .为了便于比较同一问题的不同算法,通常的做法是,从算法中选取一种对于所研究的问题(或算法类型)来说是基本运算的原操作,以该基本操作重复执行的次数作为算法的时间度量. 算法的 MIPS 有专门的一门学问 ,可以去好好参考相关的数据结构书籍. 31. 遥控的编解码思路和设计流程是怎样的 答:一般来说完整的遥控码分为头码,地址码,数据码和校验码四个组成部分.头码根据不同的厂家各不相同,地址码和数据码都由逻辑“1“和逻辑“0“组成.编码的设计目的,就是按照编码规则发送不同的码值.我们最常见的码型有SONY,松下,N

36、EC 等厂家型号.遥控编码芯片最常用的是在空调,DVD,车库门等遥控器上. 设计编码程序可以分为三个部分. 第一部分是了解码型的特性.遥控码的头码和地址码(也称为客户码) 是固定不变的,数据码和校验码根据不同的键值而改变. 第二部分是计算发码时间.遥控码大部分都是由逻辑“1“和逻辑“0“组成,也就是由一串固定占空比,固定周期的方波所组成.通常这些方波的周期是毫秒甚至微秒等级,需要在时间上计算的比较精确.所以选择发码单片机型号的时候,就要考虑到单片机的运行速度是不是够快,以及程序运行时间够不够. 第三部分就是程序的编写.选定单片机型号之后,开始设计程序流程.一般来说我们使用 I/O 口就可以做发

37、码的输出端口.发码程序一般由几个子程序组成 ,头码子程序,逻辑 1 子程序,逻辑 0 子程序以及校验码的算法子程序.一旦我们得到要发送码的命令后,首先调用头码子程序,然后根据客户码和键值调用逻辑 1子程序或者逻辑 0 子程序,最后调用校验码算法子程序输出校验码. HOLTEK 公司的 HT48CA0/HT48RA0,HT48CA3/HT48RA3 和 HT48CA6 是专为遥控器设计的单片机,它们具有专门红外输出口,可以实现绝大部分发码的要求. 设计解码程序也可以分为三部分. 第一部分了解编码波形特性.从分析编码的高,低脉冲宽度入手,了解逻辑“1“和逻辑“0“的波形占空比,周期.了解头码的特性

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

39、的宽度(定时器或者延时),可以得到码值,也就是我们所说的解码.一般我们连续收到 3 个相同的完整码值,就确认此码的确被发出,并接收成功.当解码结束,根据码值我们可以判断出是哪个按键被按下,由此去执行相对的按键功能. HOLTEK 公司的 HT48 以及 HT49(带 LCD)系列单片机 ,都可以符合大多数解码的任务. 32. 在学习单片机的过程中,如何理解预分频,12 时钟模式(6 时钟模型)等概念 答:预分频器的英文是 prescaler.它就是将输入的频率信号分频 ,然后再输出.HOLTEK 公司有一款最基本的 8 位 I/O 型单片机 HT48R05A-1,我们就以这款单片机为例说明.H

40、T48R05A-1 有一个 8 位向上计数的定时器 Counter.系统时钟Fsys(4MHz)进入八阶预分频器(8-stage Prescaler)进行分频,再进入定时计数器 Counter 计数.根据软件设置 ,预分频器可以将 Fsys 进行 2 的 n 次方分频(n=18).举例来说,如果软件设置为预分频器 2 分频,那幺预分频器输出的频率就是 Fsys/2=2MHz,这个 2MHz 信号再进入定时计数器 Counter. 如果需要 HT48R05A-1 或者其它各类 HOLTEK 单片机的详细资料,可以在如下地址下载:http:/ 12 时钟模式(6 时钟模型)应该就是在 MCS51

41、系列中,12 个系统时钟为一个机器周期,2 个系统时钟为一个状态,即一个机器周期有 6 个状态. 33. A/D,D/A 的采样速率与其它单片机相比有什幺优势 答:HOLTEK A/D Tyep MCU 内嵌逐位逼近的 A/D 转换电路,精度有8bit/9bit/10bit,A/D 转换时间最快为 76us. 至于 D/A,一般是指 PWM 输出,HOLTEK A/D Type MCU 都带有 8bit 的 PWM输出,但 HOLTEK PWM 的特点是其输出频率由系统频率决定( 既系统频率选定后,PWM 频率也就定了),其占空比通过对PWM 寄存器赋值进行控制,不需要占用定时/计数器资源.

42、34. 采用 AT89S51 时,出现了按了复位按钮,RAM 中的数据被修改了.这是怎幺回事 注:数据放在特殊寄存器之外. 答:如果是 RESET 脚的复位按钮 :一般 MCU 的 RESET 复位,其特殊寄存器会被重新初始化,而通用寄存器的值保持不变. 如果复位按钮是电源复位:那就是 MCU 的上电复位,其特殊寄存器会被初始化,而通用寄存器的值是随机数. 35. 将 P2.7 用来驱动一个 NPN 三极管,中间串接了一个 1K 的电阻.问题是:当我尝试向 P2.7 写1时,发现管脚只能输出大约 0.5V 的一个电平.这个电路的使用得妥当幺 如何正确的使用 IO 功能 答:是在仿真时遇到的问题

43、,还是烧录芯片后遇到的问题 可以先将 P2.7 的外部电路断开,测量输出电压是否正常.如果断开后输出电压正常,那就说明 P2.7 的驱动能力不够,不能驱动 NPN 三极管,应该改用PNP 三极管( 一般在 MCU 应用中,都采用 PNP 方式驱动 ).如果断开后输出电压还不正常,那有可能是仿真器(或芯片)已经损坏. 36. 在做充电管理的时候,提高 pwm 的频率往往以牺牲精度为代价,如果用的 AT90S4433(avr),78P458(elan)频率分别做到 16kHz(8bit)和 32kHz(8bit),而希望做到的是 100kHz(8bit 以上),诸如 atiny15 那样.怎幺办

44、答:你所说的 PWM 是通过定时/计数器来控制其频率和占空比的,所以要提高频率,必然会降低精度.如果要提高 PWM 的频率,只能通过提高系统振荡频率来解决. 37. 汽车电子用的单片机是 8 位多,还是 32 位 如何看待单片机在汽车电子市场中的前景 答:现今汽车制造也是一个进步很快的工业,特别是电子应用于汽车上,令多种新功能得以实现. 总的来说,汽车电子应用分三部份. - 汽车发动机控制:限速控制,涡轮增压,燃料喷注控制 - 汽车舒适装置:遥控防盗系统,自动空调系统,影音播放系统,卫星导航系统. - 汽车操控和制动:刹车防抱死系统(ABS),循迹系统(TCS),防滑系统(ASR),电子稳定系

45、统(ESP) 汽车上的各系统繁多,且日新月异,故利用何种单片机是依各系统规格,要求不一,但有一样可肯定是该单片机要符工业规格,才能忍受汽车应用的恶劣环境,高温,电源干扰,可靠度要求.不同档次的汽车其功能配置相对亦有差别,故 8 位单片机在较低阶的系统如机械控制,遥控防盗等应该还有空间,但高阶的系统如影音,导航将来的无人驾驶!,就非一般单片机能实现 . 因汽车工业现阶段由欧美日数个大集团所把持,相关的汽车电子配件各集团会挑选单片机大厂合作, 故汽车内置的电子系统亦由单片机大厂把持,市场只剩外置系统如遥控防盗,影音导航供小厂开发. 38. 在使用三星的 s3c72n4 时,觉得它的 time/co

46、unter 不够用.现在要同时用到 3 个 counter,该怎么办 答:您是需要三个外部 counter 还是需要三个定时器 如果是三个定时器标志的话,可以取这三个定时最基本的时基作为 timer 的基础计数 ,然后以这个时基来计算这三个需要的计数标志的 flag,在程序中只需要查询 flag 是否到,再采取动作. 如果要 3 个外部脉冲计数的话,这个有一定的难度,如果外部脉冲不是很频繁,可以考虑通过外部中断进行,但是这个方法必须是外部脉冲的频率与 mcu执行速度有一定的数量级差,否则 mcu 可能无法处理其它程序,一直在处理外部中断. 39. 在芯片集成技术日益进步的今天,单片机的集成技术

47、发展也很迅速,在传统的 40 引脚的基础上,飞利浦公司推出 20 引脚的单片机系列,使很多的引脚可以复用,这种复用技术的使用在实际应用中会不会影响其功能的执行 答:现在有很多品牌的单片机都有引脚复用功能,不止飞利浦一家,应该说这个方式前几年就已经有了.在实际应用中不会影响其功能的执行,但是要注意的是,有的 MCU 如果采用复用引脚的话,该引脚会有一些应用上的限制,这在相应的datasheet 里面都会有描述,所以在系统规划的时候都要予以注意 . 40. Delta-Sigma 软件测量方式,是什么概念 答:Delta-Sigma 原理一般应用在 ADC 应用中.具体来说 ,Delta-Sigm

48、a ADC 的工作原理是由差动器,积分器和比较器构成调制器,它们一起构成一个反馈环路.调制器以大大高于模拟输入信号带宽的速率运行,以便提供过采样.模拟输入与反馈信号(误差信号)进行差动 (delta)比较.该比较产生的差动输出馈送到积分器(sigma)中.然后将积分器的输出馈送到比较器中.比较器的输出同时将反馈信号(误差信号)传送到差动器,而自身被馈送到数字滤波器中.这种反馈环路的目的是使反馈信号(误差信号)趋于零.比较器输出的结果就是 1/0 流.该流如果 1 密度较高,则意味着模拟输入电压较高;反之,0 密度较高,则意味着模拟输入电压较低.接着将 1/0 流馈送到数字滤波器中,该滤波器通过过采样与抽样,将 1/0 流从高速率,低精度位流转换成低速率,高精度数字输出. 简而言之,Delta 就是差动,Sigma 就是积分的意思.Delta-Sigma 软件测试,我的理解应该是通过软件模拟差动积分的过程.具体来说,就是侦测外部输入的电压(或者电流)信号变化,然后通过软件积分运算,得出外部信号随时间变化的基本

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报