原创 单片机应用编程技巧100问

2008-3-21 22:24 3944 8 11 分类: MCU/ 嵌入式

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,有什幺好的途径?



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


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



事前分析估算的方法。


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


① 依据的算法选用何种策略;


② 问题的规模。例如求100以内还是1000以内的素数;


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


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


⑤ 机器执行指令的速度。


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


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


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

文章评论3条评论)

登录后参与讨论

xucun915_925777961 2008-4-13 12:25

顶 好东西呀

用户1354280 2008-4-2 12:47

谢谢,学习了。。。

用户115867 2008-3-22 12:29

很实用,顶!!!
相关推荐阅读
用户391860 2008-06-20 10:31
基于神经网络的电子鼻肺癌早期诊断系统
作者:江苏大学 赵景波 赵德安 蒋春彬 肺癌是目前全世界最常见的恶性肿瘤之一,其发病率和死亡率不断上升。究其原因是肺癌病因不明,发病时间短、转移快、恶性程度高,早期不易诊断,到中、晚期失去了手术机会,...
用户391860 2008-06-20 10:24
怎样应对医疗电子设备日益复杂的设计挑战?
作者:苏宇 医疗电子设备要从微弱而复杂的人体电信号中采集有效信息,并根据这些信息进行监控、显示和疾病诊断,同时还要避免医疗电子设备对人体造成伤害,因此技术人员在医疗电子设 备的开发过程中面临诸多挑战。...
用户391860 2008-06-20 10:23
医学研究中的统计技术
人与人之间普遍存在着个体差异,所以医学研究中的变异无处不在,再加上外在因素的影响,医学现象更显得变化无常。         例如,某种疾病的发生或流行是什么因素所致?可能涉及的多种因素中哪些是无关紧要...
用户391860 2008-06-20 10:22
RFID有效追踪药品和医疗管理
药品是特殊商品,如果给病人用错药,用假药、劣药或者过期药品,将给人民的身体健康及生命带来威胁。  近些年来,药品安全问题频频发生,2006年我国就发生了几起药品叫停事件:卫生部紧急叫停欣弗、国家食品药...
用户391860 2008-06-20 10:22
酸度计的使用方法
酸度计简称pH计,由电极和电计两部分组成。使用中若能够合理维护电极、按要求配制标准缓冲液和正确操作电计,可大大减小pH示值误差,从而提高化学实验、医学检验数据的可*性。 一、 正确使用酸度计的使用方法...
用户391860 2008-05-22 17:36
虚拟仪器概念
       虚拟仪器( VI - Virtual Instrumentation )是指通过应用程序将通用计算机与功能化硬件结合起来,用户可通过友好的图形界面来操作这台计算机,就像在操作自己定义、自...
我要评论
3
8
关闭 站长推荐上一条 /2 下一条