文章分类

当前位置:首页>技术文章>单片机应用编程技巧

单片机应用编程技巧

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

而且一些单片机厂家也不一定能提供 C 编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在单片机开发中,我们还是建议采用汇编语言比较好。 如果对单片机 C 语言有兴趣,HOLTEK 的单片机就有提供 C 编译器,可以到 HOLTEK 的网站(www.holtek.com.cn)免费下载使用。

2. C 或汇编语言可以用于单片机,C++能吗?答:在单片机开发中,主要是汇编和 C,没有用 C++的。

3. 搞单片机开发,一定要会 C 吗? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的 CPU,其汇编语言可能有所差异,所以不易移植。 对于目前普遍使用的 RISC 架构的 8bit MCU 来说,其内部 ROM、RAM、STACK 等资源都有限,如果使用 C 语言编写,一条 C 语言指令编译后,会变成很多条机器码,很容易出现 ROM 空间不够、堆栈溢出等问题。

而且一些单片机厂家也不一定能提供 C 编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什么动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在资源较少单片机开发中,我们还是建议采用汇编语言比较好。 而 C 语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C 语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。

C 语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C 语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用 C 语言进行程序设计已成为软件开发的一个主流。用 C 语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。 综上所述,用 C 语言进行单片机程序设计是单片机开发与应用的必然趋势。

所以作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的 C 语言编程。

4. 当开发一个较复杂而又开发时间短的项目时,用 C 还是用汇编开发好?答:对于复杂而开发时间紧的项目时,可以采用 C 语言,但前提是要求对该 MCU 系统的 C 语言和 C 编译器非常熟悉,特别要注意该 C 编译系统所能支持的数据类型和算法。虽然 C 语言是最普遍的一种高级语言,但不同的 MCU 厂家其 C 语言编译系统是有所差别的,特别是在一些特殊功能模块的操作上。如果对这些特性不了解,那调试起来就有的烦了,到头来可能还不如用汇编来的快。

5. 在教学中要用到 8088 和 196 芯片单片机教材,请问那里可以找到关于这方面的书或资料?答:有关这方面的教材,大学里常用的一本是《IBM-PC 汇编语言程序设计》清华大学出版社出版的,在网上以及书店都是可以找到的,另外网上还可以搜索到很多其他的教材如:《微机原理及汇编语言教程》(杨延双张晓冬等编著)和《16/32 位微机原理、汇编语言及接口技术》(作者: 钟晓捷陈涛,机械工业出版社出版)等,可以在较大型的科技书店里查找或者直接从网上订购。

6. 初学者到底是应该先学 C 还是汇编?答:对于单片机的初学者来说,应该从汇编学起。因为汇编语言是最接近机器码的一种语言,可以加深初学者对单片机各个功能模块的了解,从而打好扎实的基础。

7. 我是一名武汉大学电子科技大 3 的学生,学了电子线路、数字逻辑、汇编和接口、C 语言,但是总是感觉很迷茫,觉好象什么都不会。怎么办?答:大学过程是一个理论过程,实践的机会比较少,往往会造成理论与实践相脱节,这是国内大学教育系统的通病,不过对于学生来说切不可好高骛远。一般从大三会开始接触到一些专业课程,电子相关专业会开设相关的单片机应用课程并且会有简单的实验项目,那么要充分把握实验课的机会,多多地实际上机操作练习。

平时可以多看看相关的电子技术杂志网站,看看别人的开发经验,硬件设计方案以及他人的软件设计经验。有可能的话,还可以参加一些电子设计大赛,借此机会 2--3 个人合作做一个完整系统,会更有帮助。到了大四毕业设计阶段,也可以选择相关的课题作些实际案例增长经验。做什么事情都有个经验的积累过程,循序渐进。

8. 请问作为学生,如何学好单片机?答:学习好单片机,最主要的是实践,在实践中增长经验。在校学生的话,实践机会的确会比较少,但是有机会的话,可以毕业实习选择相关的课题,这样就可以接触到实际的项目。而且如果单片机微机原理是一门主课的话,相信学校会安排比较多的实践上机机会。有能力的话,可以找一些相关兼职工作做做,会更有帮助。而且单片机开发应用需要软硬件结合,所以不能只满足于编程技巧如何完美,平时也要注意硬件知识的积累,多上上电子论坛网站,买一些相关杂志。

可能的话,可以到电子市场去买一些小零件,自己搭一个小系统让它工作起来。HOTLEK 的单片机是 RISC 结构的 8 位单片机,它可以广泛应用在家用电器、安全系统、掌上游戏等方面。大概来说可以分成 I/O 型单片机、LCD 型单片机、A/D 型单片机、A/D with LCD 型单片机等等。这些单片机的中文资料我们都公开在 HOLTEK 网站 www.holtek.com.cn。 HOLTEK 各类单片机的使用手册下载地址: http://www.holtek.com.cn/referanc/htk_book.htm HOLTEK 单片机软件/硬件应用范例下载地址: http://www.holtek.com.cn/tech/appnote/appnote.htm HOLTEK 单片机支持工具下载地址: http://www.holtek.com.cn/tech/tool/tool.htm

9. 如何才能才为单片机的高手啊?答:要成为单片机高手,应该多实践,时常关注单片机的发展趋势;经常上一些相关网站,从那里可以找到许多有用的资料。

10. 女性是否适合单片机软件编程这个行业?答:要根据自己的兴趣,配合自己对软件编程的耐性,男女皆适合这个行业。

11. Holtek 的数据手册在哪里下载? 答:如果对 Holtek 的 IC 感兴趣的话,相应的数据手册可以到网站上 http://www.holtek.com.cn/products/index.htm 去选 IC 资料下载。

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 接口的应用知识,这在于周边应用电路及各种元器件的使用,须配合自己所学的电子学及电路学等。

14. 符合 44PIN 的 80 系列 8 位单片机的 MCU 有哪些? 答:符合 44PIN 的 80 系列 8 位单片机有 Z8674312FSC、Z86E2112FSC、Z86E2116FSC。

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

l STANDBY 电流测试:测量 IC 处于 HALT 模式时即每一个接点(PAD)在 1 态 0 态或 Z 态保持不变时的漏电流是否符合最低之规格。l 耗电测试:整颗 IC 的静态耗电与动态耗电。l 输入电压测试:测量每个输入接脚的输入电压反应特性。l 输出电压测试:测量每个输出接脚的输出电压位准。l 相关频率特性(AC)测试,也是通过外灌一定频率,从 I/O 口来看输出是否与之匹配。l 为了保证 IC 生产的长期且稳定品质,还会做产品的可靠性测试,这些测试包括 ESD 测试,LATCH UP 测试,温度循环测试,高温贮存测试,湿度贮存测试等。

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

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 位单片机工作频率相对较低,电路较小,所需的芯片制造工艺在 0。5U 即可,成本较低。 功能定位 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 单片机和哪种内核的单片机比较接近的问题。

而且由于厂家购买内核后会根据自己芯片应用方向的不同,自行添加不同的外挂功能模块,所以,同样内核的芯片其提供的功能是不同的。

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

28. 我学过 MCS51 单片机教材,很有兴趣,但缺乏实践经验,手头没有任何道具可供演练,资金又有限,请问该怎么办?答:在没有任何条件进行实践时,如果真的有兴趣,可以下载一些具有软件仿真功能仿真软件进行一些编程,像一些做得比较好的 51 仿真软件应该具有这种功能。HOLTEK 的仿真软件 HT-IDE3000 也具有相应的功能,同时它还具有 LCD 软件仿真,周边电路的软件仿真。有兴趣的话,也可以去免费下载使用:http://www.holtek.com.cn/tech/tool/ide.htm。同时可以到一些电子市场去购买一些简单器件自己练习搭一下电路以加强硬件方面的知识。

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 单片机的详细资料,可以在如下地址下载:http://www.holtek.com.cn/referanc/htk_book.htm。

12 时钟模式(6 时钟模型)应该就是在 MCS51 系列中,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]寄存器赋值进行控制,不需要占用定时/计数器资源。

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 方式驱动)。如果断开后输出电压还不正常,那有可能是仿真器(或芯片)已经损坏。

36. 在做充电管理的时候,提高 pwm 的频率往往以牺牲精度为代价,如果用的 AT90S4433(avr)、78P458(elan)频率分别做到 16kHz(8bit)和 32kHz(8bit),而希望做到的是 100kHz(8bit 以上),诸如 atiny15 那样。怎么办?答:你所说的 PWM 是通过定时/计数器来控制其频率和占空比的,所以要提高频率,必然会降低精度。如果要提高 PWM 的频率,只能通过提高系统振荡频率来解决。

37. 汽车电子用的单片机是 8 位多,还是 32 位?如何看待单片机在汽车电子市场中的前景?答:现今汽车制造也是一个进步很快的工业,特别是电子应用于汽车上,令多种新功能得以实现。总的来说,汽车电子应用分三部份。 汽车发动机控制:限速控制,涡轮增压,燃料喷注控制等。 汽车舒适装置:遥控防盗系统,自动空调系统,影音播放系统,卫星导航系统等。 汽车操控和制动:刹车防抱死系统(ABS),循迹系统(TCS),防滑系统(ASR),电子稳定系统(ESP)等。

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

38. 在使用三星的 s3c72n4 时,觉得它的 time/counter 不够用。现在要同时用到 3 个 counter,该怎么办?答:您是需要三个外部 counter 还是需要三个定时器?如果是三个定时器标志的话,可以取这三个定时最基本的时基作为 timer 的基础计数,然后以这个时基来计算这三个需要的计数标志的 flag,在程序中只需要查询 flag 是否到,再采取动作。如果要 3 个外部脉冲计数的话,这个有一定的难度,如果外部脉冲不是很频繁,可以考虑通过外部中断进行,但是这个方法必须是外部脉冲的频率与 MCU 执行速度有一定的数量级差,否则 mcu 可能无法处理其它程序,一直在处理外部中断。

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

答: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. 在开发单片机的系统时,具体有那些是衡量系统的稳定性的标准?答:从工业的角度来看,衡量系统稳定性的标准有很多,也针对不同的产品标准不同。下面我们大概介绍单片机系统最常用的标准。 电试验(ESD)参考标准: IEC 61000-4-2 本试验目的为测试试件承受直接来自操作者及相对对象所产生之静电放电效应的程度。 空间辐射耐受试验(RS) 参考标准:IEC 61000-4-3 本试验为验证试件对射频产生器透过空间散射之噪声耐受程度。

测试频率:80 MHz~1000 MHz 快速脉冲抗扰测试(EFT/B) 参考标准:IEC 61000-4-4 本试验目的为验证试件之电源线,信号线(控制线)遭受重复出现之快速瞬时丛讯时之耐受程度。 雷击试验(Surge) 参考标准: IEC 61000-4-5 本试验为针对试件在操作状态下,承受对于开关或雷击瞬时之过电压/电流产生突波之耐受程度。 传导抗扰耐受性(CS)参考标准:IEC 61000-4-6 本试验为验证试件对射频产生器透过电源线传导之噪声耐受程度。

测试频率范围:150 kHz~80 MHz Impulse 脉冲经由耦合注入电源线或控制线所作的杂抗扰性试验。

43. 在设计软体时,大多单片机都设有看门狗,需要在软体适当的位置去喂狗,以防止软体复位和软体进入死循环,如何适当的喂狗,即如何精确判定软体的运行时间?答:大多数单片机都有看门狗定时器功能(WDT,Watch Dog Timer)以避免程序跑错。HOLTEK 有一款基本 I/O 型单片机--HT48R05A-1,我们就以它为例做个说明吧。首先了解一下 WDT 的基本结构,它其实是一个定时器,所谓的喂狗是指将此定时器清零。

喂狗分为软件和硬件两种方法。软件喂狗就是用指令来清除 WDT,即 CLR WDT;硬件喂狗就是硬件复位 RESET。当定时器溢出时,会造成 WDT 复位,也就是我们常说的看门狗起作用了。在程序正常执行时,我们并不希望 WDT 复位,所以要在看门狗溢出之前使用软件指令喂狗,也就是要计算 WDT 相隔多久时间会溢出一次。HT48R05A-1 的 WDT 溢出时间计算公式是:256*Div*Tclock。其中 Div 是指 wdt 预分频数 1~128,Tclock 是指时钟来源周期。

如果使用内部 RC 振荡作为 WDT 的时钟来源(RC 时钟周期为 65us/5V),最大的 WDT 溢出时间为 2.1 秒。 当我们得到了 WDT 溢出时间 Twdt 后,一般选择在 Twdt/2 左右的时间进行喂狗,以保证看门狗不会溢出,同时喂狗次数不会过多。 软件运行时间是根据不同的运行路线来决定的,如果可以预见软件运行的路线,那么可以根据 T=n*T1 来计算软件的运行时间。n 是指运行的机器周期数,T1 是指机器周期。

HOLTEK 单片机是 RISC 结构,大部分指令由一个机器周期组成,只需要知道软件运行了多少条指令,就可以算出运行时间了。HOLTEK 的编译软件 HT-IDE3000 中,就有计算运行时间的工具。但是对于 CISC 结构的单片机,一条指令可以由若干个机器周期组成,那么就需要根据具体执行的指令来计算了。

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

怎么办?答:防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了。单片机干扰最常见的现象就是复位;至于程序跑飞,其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干扰最重要的是处理好复位状态。一般单片机都会有一些标志寄存器,可以用来判断复位原因;另外也可以自己在 RAM 中埋一些标志。在每次程序复位时,通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序。

这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过。 可以在定时中断里面设置一些暂存器累加,然后加到预先设定的值(一个比较长的时间),SET 标志位,这些动作都在中断程序里面。而主程序只需要查询标志位就好了,但是注意标志位使用后,记得清除,还有中断里面的时基累加器使用以后也要记得清除。

45. 在单片机的应用方面应注重哪几个方面的学习?答:学习的过程基本上可分四个阶段: 第一阶段是先浏览教科书里的硬体部分,大至了解单片机的硬体结构。如 ROM、RAM、地址、I/O 口等,以及看一些厂家的 Data Sheet 如 HOLTEK 网站有提供简体版各项 MCU 资料,来加强 IC 所提供各项资源的印象。 第二阶段就是了解二进位数字、十六进位数和软体方面的内容。尽管有很多高阶语言可用于单片机的编程,但我觉得初学还是以组合语言为好(即汇编语言),更有利于和硬体结合,掌握硬体结构。

知道组合语言、机器语言、 指令、程式、根源程式、目的程式等概念后,就从 MOV 指令开始,学习组合语言和编程,在此如 HOLTEK 的 MCU 组合语言系统有 63 条指令,简单又好理解它们怎样和硬体联系,更有助于一般学习单片机的指令整合与运用.因此其方法可先了解几条基本的 MOV 指令和它的机器语言,大致建立起单片机的硬体和软体概念,来知道单片机的硬体是由指令控制指挥的。 第三阶段按照编程器的使用手册,熟悉使用编程器。

现在的编程器一般都和电脑相连,只要具备基本电脑知识的人都可很快掌握操作步骤。如果初学者想要快点熟悉使用单片机的开发系统,HOLTEK 有提供单片机开发系统详细操作资料,可上 HOLTEK 网站(www.holtek.com.cn) 来 Download HT-IDE3000 使用手册。第四阶段是依靠实验板,学习掌握单片机的组合语言指令系统和简单编程。同时和前面所学硬体知识结合组装,起到主学软体,巩固硬体的双重作用。

开始时可用别人编的简单程式在实验板上进行验证、分析,主要是熟悉该学习方法,在应用方面主要针对单片机 I/O 各项介面的使用,如 A/D,D/A,PWM 输出口的应用,LCD 与 VFD 的控制,以及如何规范各项串列输出入口的通讯协定等,对其所控制的各项元器件须先分析驱动能力,如电流电压问题等。

46. 当今世界单片机的应用与发展有什么不同?答:对于应用与发展是一体两面,是以市场为导向,当有市场需求时,在其应用层面的规划和分析,而引导单片机朝此方面的发展。

47. 在中国,单片机在哪方面有较好的前景?答:观察之前几年以来各家厂商的销售地区比重,可以发现中国大陆市场比重逐渐提升,台湾与北美市场则逐渐衰退,主要原因在于多项产品制造基地转移至大陆,MCU 在大陆的需求也随之提升。销货至大陆的 MCU 产品,多应用于电话、Caller ID、玩具与 LCD 等产品,预计在未来,销货至大陆的比重仍将持续增加。在中国产品应用领域可分为五大项目,包括电脑周边(高速 Modem、DSC、NB 中的电源管理等)、通讯产业、消费性产品(家电、冷气等)、车用市场(定速器、控制器、防盗器)及工业上的应用。

有部份厂家将特别瞄准消费性产品市场跨入,如 Audio 方式将朝多媒、MP3 解决方案前进,另外在 PC 连结应用上,包括无线、网路及标准应用产品,都会有一系列产品推出。另外在电源系统应用方面,在 UPS(不断电系统)、Server Power(伺服器电源)、Charger(充电器)等应用上;以及周边应用领域方面,针对 Game Device、记忆卡、读卡机、及 Pen Drive(随身碟)等应用上。

逻辑 IC 包括微处理器(MPU)、微控制器(MCU)、特殊应用 IC(ASIC)、可程式逻辑元件(PLD)以及一般的标准应用 IC(ASSP)等,不同的逻辑 IC 有其发展方向,而 MCU 产品则朝向整合型产品发展,希望能在单一的 IC 中加入更多的功能,以降低使用者在系统设计上的困难度与成本。

48. 虽然 16 位也很多,但是真正低端用户还是用 4,8 位。高性能要求的现在可以选用 32 位单片机。而 16 位只能是充当一个过渡的角色。这样认为对吗? 答:基本上可以这样说,微控制器历经 4 位元、8 位元、16 及 32 位元等开发过程,投入厂商众多,亦无所不在地应用于各种生活领域,只要与操作介面有关的范围,都能发现 MCU 的踪迹,MCU 的使用数量,在国外甚至成为评估收入、经济状况的指标之一。由于汽车、家电和消费电子产品的销售稳健,因此将使 2003 年 MCU 市场充满活力。

32 位元 MCU 市场之中,成长最快的领域仍属因汽车、可上网手机、PDA、印表机、数位相机、高速 MODEM 和其它应用对其需求较大,市场机构预估 2003 年将成长 30%、2004 年上升 38%。虽然 32 bit 市场成长潜力雄厚,不过目前能以 32 bit 为主力的厂商毕竟少数,而无论是国内外的 IC 供应商,现阶段的产品发展策略重心仍摆在 8 bit 领域的市场之中,而 8 bit 及 32 bit MCU 也成为厂商跨入发展的对象,至于 16 bit MCU 产品虽然速度比 8 bit 快,但由于 16 bit 介于 8 与 32 之中尴尬位置,且 32 bit 价格也逼近 16 bit,因此对于业者对于 16 bit 产品的着墨程度相较之下少了许多。

49. 将原来的 51 系统过渡到 ARM 系统,需要注意哪些事情以及如何入手?答:51 系统转为 ARM 系统是比较困难的。ARM 提供一系列内核、体系扩展、微处理器和系统芯片方案,并且现在已经发展了好几种内核了,现在主要有以下几种: ARM7:小型、快速、低能耗、集成式 RISC 内核 ARM7TDMI(Thumb):它将 ARM7 指令集同 Thumb 扩展结合在一起,减少了内存容量和系统成本;而且还利用嵌入式 ICE 调试技术,简化了系统设计;并且有 DSP 增强扩展改进了性能。

ARM9TDMI:采用 5 阶段管道化 ARM9 内核,同时配备 Thumb 扩展、调试和 Harvard 总线。如果只是想学习上手的话,建议先做个最小系统板,根据硬件写一个能够启动的小代码包括初始化端口,屏蔽中断,把程序拷贝到 SRAM 中;完成代码的重映射;配置中断句柄,连接到 C 语言入口。其实还是多实践,多点经验,多上上电子网站,吸取他人的开发经验,会对自己的成长有所帮助的。

50. Holtek 的编程语句是否就是 C51 或是相关的,能否介绍有关汽车电子设计的资料或网站地址?答:HOLTEK 的编程语句就汇编指令来说,与 MCS51 是不一样的,但是很多指令比较类似;而 C 语言,每家公司的 C 编译器都会有点差异,但是很多与 TURBO C 相似,所以还是有很大相似性,所以可读性要比汇编语言好得多,但是不同厂家也还是有一定差别,HOLTEK C 语言的介绍请下载 http://www.holtek.com.cn/referanc/ht-ide3k.pdf,第十章有详细介绍。而关于汽车电子设计的资料或网站地址您可以到 GOOGLE 上面去搜索一下,应该有比较多的链接地址。

51. 如何理解如下概念:MTP = Multi-Time Programming (via parallel programmer) ISP = In-System Programming (via serial interface) IAP = In-Application Programming?答:MTP 即指单片机的程序可重复烧写,其程序记忆体(Program ROM)可分以下几种: Window with EPROM:提供使用者更改程式的空间,具视窗式陶瓷包装,利用紫外线灯清除资料,可重复烧写,但包装成本非常高,仅适合小量生产或实验使用。

EEPROM:属于可重复写入/清除之元件,此类记忆体使得程式之内容可加以清除或修改,而无需使用开窗之包装,可节省包装之成本,亦方便重复使用,但生产制程较复杂。 Flash EPROM:当须要清除/写入较大量的非挥发性程式记忆体时,Flash EPROM 比传统式 EEPROM 可提供较好的解决之道,因为 Flash EPROM 较 EEPROM 于清除/写入周期次数及速度上表现更好。利用 Flash ROM 来当作程式记忆体,由于封装上不需要 EPROM 特殊的视窗式陶瓷包装,使用上价格与 OTP(One Time Programming)相差不大,相当合理,又具有多次重复烧写的功能。

ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用 ISP 方式擦除或再编程。ISP 的实现相对要简单一些,一般需要很少的外部电路辅助实现,通用做法是内部的记忆体可以由上位机的软体通过串口来进行改写。对于单片机来讲可以通过 SPI 或其他的串列介面接收上位机传来的资料并写入记忆体中。

所以即使我们将晶片焊接在电路板上,只要留出和上位机介面的这个串口,就可以实现晶片内部记忆体的改写,而无须再取下晶片。ISP 的优点 ISP 技术的优势是不需要编程器就可以进行单片机的实验和开发,单片机晶片可以直接焊接到电路板上,调试结束即成成品,免去了调试时由于频繁地插入取出晶片对晶片和电路板带来的不便。IAP(In-Application Programming)指 MCU 可以在系统中获取新代码并对自己重新编程,即可用程式来改变程式。

IAP 的实现相对要复杂一些,在实现 IAP 功能时,单片机内部一定要有两块存储区,一般一块被称为 BOOT 区,另外一块被称为存储区。单片机上电运行在 BOOT 区,如果有外部改写程式的条件满足,则对存储区的程式进行改写操作。如果外部改写程式的条件不满足,程式指标跳到存储区,开始执行放在存储区的程式,这样便实现了 IAP 功能。IAP 技术是从结构上将 Flash 记忆体映射为两个存储体,当运行一个存储体上的用户程式时,可对另一个存储体重新编程,之后将程式从一个存储体转向另一个。

IAP 的优点 IAP 技术是从结构上将 Flash 记忆体映射为两个存储体,当运行一个存储体上的用户程式时,可对另一个存储体重新编程,之后将程式从一个存储体转向另一个。而 IAP 的实现更加灵活,通常可利用单片机的串列口接到电脑的 RS232 口,通过专门设计的固件程式来编程内部记忆体,可以通过现有的 INTERNET 或其他通讯方式很方便地实现远端升级和维护。

52. 目前市场上单片机开发系统产品型号很多。想开发 51 系列单片机,选用什么型号的仿真器和编程器(每次编一片即可)比较好? 答:正如您所说的现在 51 系列单片机的仿真器产品型号很多,关于选用什么型号的仿真器,因为 HOLTEK 的 IC 不是 51 内核,仿真器都是 HOLTEK 自行开发,故并不能给你非常好的建议。而且市面的 51 仿真器,林林总总 1500--10000 价格不等,所以要选择的话可以在网上 google 一下有关仿真器的论坛,看看其他用户的评价,选择一个性价比最好的仿真器。

53. HOLTEK 的 C 语言是否有关于位操作和读定义的寄存器地址的指令,如果有,它们是什么? 答:HOLTEK 的 C 语言与标准 C 类似,不仅有标准 C 的位操作、&(按位与、按位或)、^(按位异或)、~(取反)、>(右移);还有相应的内建函数实现对整型和长整型的带和不带进位 C 的左移和右移。对已定义变量的地址的操作也与标准 C 相同,可通过指针运算符 * 和 & 来实现。

54. 在完成程序编写运行以后看到的结果是存储器中从 R0 到 R7 都被占用,而我根本就没用到几个,这是为什么?答:要看用的是什么型号的单片机,不同型号的单片机 R0 到 R7 的定义是不同的。如果 R0~R7 是被定义成特殊寄存器的话,那么运行过程中自然会影响到这些寄存器,例如执行运算程序就会影响状态特殊寄存器的值。如果 R0~R7 是被定义成通用寄存器的话,那么可能就是在程序的开头没有初始化,单片机在上电复位时,通用寄存器的值通常是随机的。

55. 请推荐一些比较好的理论及实践教材,以其配套的编译仿真烧录的硬软件? 答:当今单片机市场种类繁多,应用广泛。以 HOLTEK 公司为例。HOTLEK 的单片机是 RISC 结构的 8 位单片机,它可以广泛应用在家用电器、安全系统、掌上游戏等方面。大概来说可以分成 I/O 型单片机、LCD 型单片机、A/D 型单片机、A/D with LCD 型单片机等等。这些单片机的中文资料我们都公开在 HOLTEK 网站 www.Holtek.com.cn。

HOLTEK 各类单片机的使用手册下载地址:http://www.holtek.com.cn/referanc/htk_book.htm;HOLTEK 单片机软件/硬件应用范例下载地址:http://www.holtek.com.cn/tech/appnote/appnote.htm;HOLTEK 单片机支持工具下载地址:http://www.holtek.com.cn/tech/tool/tool.htm。

56. 将 PWM 做到 100kHz(8bit 以上)的方法有哪些?最好是支持 C 编译的。 答:要做到 PWM 频率 100kHz(8bit)以上,单片机的频率要求 100kHz*256=25。6MHz。所以,要实现这种要求的单片机需要满足两个条件:1。单片机有 PWM 输出;2。系统频率达到 25。6MHz,或者单片机内部能自己提供 25。6MHz 的频率(ATtiny15 内部就有提供一个 25。6MHz 的频率做为定时/计数器的时钟)。

57. ARM 董事长认为,医疗电子将成为下一个 10 年推动电子产业增长的动力,EMS 预测医疗电子将成为最大的代工市场。蓝牙使医疗产品移动能力增强将会广泛应用,那么随着医疗电子发展,单片机在这一领域应用会变大吗?医疗电子应用的最多是几位单片机? 答:随着 16/32 位嵌入式 RISC 发展,是会扩大医疗电子领域的应用。一般的电子医疗保健系列产品有如下: 笔式电子体温计、婴儿奶嘴式电子体温计、测温音乐奶瓶、妇女电子体温计,电子血压计等系列产品,在医疗电子仪器有酸碱度测定器,比色计等此类产品可用 8 位单片机来完成。

但从研究制造方面来说,针对医疗电子仪器,目前已有厂商制造心电图机、酸碱度测定器、电子测温计等仪器,仪器中心可自制示波器(oscilloscope)、显微镜等,以及 X 光机、超声诊断仪、电脑断层成像系统、心脏起博器、监护仪、辅助诊断系统、专家系统等,较大型复制的医疗嵌入式系统电子仪器就须用上 16 位,32 位单片机来完成。

58. 普通商业级单片机的使用温度范围为 0-70 度,在低于 0 度和高于 70 度环境中使用会出现什么问题?商业级芯片和工业及芯片除温度范围不同外,在其他方面还有区别吗?(如抗干扰性能) 答:一般单片机根据工作温度可分为民用级(商业级)、工业级和军用级三种:民用级的温度范围是 0℃~70℃,工业级是-40℃~85℃,其 HOLTEK 的 MCU 就属于此项等级,军用级是-55℃~125℃。如果是一般普通商业级单片机,在超规格范围使用 IC 时,就有可能部份 IC 无法工作,或工作运作不正常等发生。

至于抗干扰性能,是属于整个产品的 EMS(电磁杂讯耐受性)检测,它是 EMC(电磁相容)中的一项检测, 另一项是 EMI(电磁辐射干扰)。各国都有其 EMC 认证标准,例如目前在欧洲 EMC 指令下常用的测试规范下,针对其中法规 EN61000-4-2 是做静电试验(ESD),本项试验目的为测试试件承受直接来自操作者及相对物件所产生之静电放电效应的程度,其法规范如下: Air Discharge Leve1 2KV Leve2 4KV Leve3 8KV Leve4 15KV 以上是举个例子,就如抗静电能力,不只跟 IC 性能有关,也跟应用电路及 PCB Layout 有直接关联。

59. 各种各样的输入怎么样与 MCU 进行通讯? 答:首先必须确定此类输入信号是否与 MCU 系统的信号电平兼容,如果不兼容,则需要外接电路或用集成块来完成电平转换。其次就是选择通讯方式,通信的基本方式分为并行通信和串行通信,两者各有其优劣,并行通信速度快,缺点是数据有多少位,就需要多少根传输线。这在位数较多,传输距离又远时就不太适宜;而串行通信与前者相反,传输成本低,但是传送速度较低。最后,为了确保通信的成功,通信双方必须有一系列的约定,即通信协议,它对什么时候开始通信、什么时候结束通信、何时交换信息等问题都必须作出明确的规定。

60. 那种型号的 51 单片机具有两个串口、16KEPROM、512 个字节的 RAM? 答:PHILIPS 半导体的 P87C591 应该能满足此条件,目前生产 51 单片机的半导体厂家有 INTEL、ATMEL、PHILIPS、ANANOG DEVICES、DALLAS 等,可以登陆其网站,查询相应的产品信息。

61. 在嵌入式开发中软件抗干扰有哪些问题?如何解决? 答:关于软件抗干扰问题和策略,如果在实际应用中能很好的遵循这些原则,再配合硬件电路的抗干扰措施,基本上可以消除干扰影响。但有时往往因为程序本身的复杂度和芯片资源的限制,再加上编程人员本身的能力限制,不能做到十分完善。所以我们只能给出一些建议,至于具体的实现,就需要各位在平时的项目实践中不断的摸索和积累经验。以下是之前有关软件抗干扰的问题答复,谨供参考: 防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了。

单片机干扰最常见的现象就是复位;至于程序跑飞,其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干扰最重要的是处理好复位状态。 一般单片机都会有一些标志寄存器,可以用来判断复位原因;另外也可以自己在 RAM 中埋一些标志。在每次程序复位时,通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序。这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过。

62. 语音识别会不会是单片机下个消费热点? 答:语音识别在多年前即开始应用在低阶玩具上,如遥控车的左右前后控制,教育玩具利用发语音方式,依记忆体大少能容纳的长度经压缩编码采集后储存各字词,日后再发相同语音经单片机处理辨识后,即可作出相应动作。 依成本不同,影响相关的 MCU 资源和速度,以及所利用的辨识技术 algorithm (运算法则)的优劣,记忆体大少等,所设计出的产品其辨识率和字词长度亦有很大差异。

此低阶市场在现今芯片价格下降应有可为,就看产品创新应用是否吸引人!高阶的语音识别应用是在 PC(个人计算机)上,有 CPU 等级的资源速度和硬盘大少的记忆容量, 但此市场和硬件(单片机)无关! 另一个语音识别应用是嵌入式系统,如目前的手机大都配备语音辨识电话簿,其实一般的嵌入式系统如 PDA,DSC,MP3……等都有能力 builtin 此功能,就看需占用多少硬件资源和所能作出的效果。产品的功能定位很重要,语音识别是否必需要评估实际使用率!

63. 如何设计实现一个共模范围在 0 - 120V 之间的低成本测量电池组电压的装置? 答:这里所谓高共模输入电压,是指高范围的同相输入电压,下面先说明运放一些概念: 运放有所谓的 dynamic range 是指运放(OP)未饱和时,正常动作时的输出、入电压范围。一般而言 dynamic range 越大,电源电压的有效利用率越高,例如处理同等级的信号时,就不需刻意提高电源电压也获得省能源效应。

尤其是可携式消费性电子产品要求低电压低耗电量的场合,高效率的电源电压始终是备受重视的焦点,尤其是运放的 ground 电位,若是设于 Vcc~VEE 正负电源电压的中点(亦即动作点)时,就可获得极宽广的 dynamic range。有鉴于此设计人员通常会在不减损输出 dynamic range 的前提下,使输入 dynamic range 大于输出 dynamic range。输入信号的电位为 VEE(电源电压)时,有些 OP 它的极性会造成反转,虽然 Output 允许因过大输入造成的饱和,不过大部份的情况却不允许极性反转,所以两单电源用在运放输入信号到达 VEE 之前输出会反转。

需注意的是即使是单电源使用运放,如果超越 VEE 下 0。5V 亦即 VEE-0。5V 时,输出的极性也可能会反转。所谓的同相输入电压范围 VICM(共模输入电压)是指两个输入端子与 ground 之间,可施加的同相电压范围。虽然施加的同相电压超过该范围时,并不会造成元件损坏等问题,不过却会使运放的功能停止


© 星光电子技术工作室 2021 All Rights Reserved.
如有任何问题、建议、业务、合作,请联系手机/微信:13713820066