维修网

 找回密码
 注册

QQ登录

只需一步,快速开始

微信扫码 , 快速开始

查看: 209|回复: 0

单片机开发中速成的几个基本技巧

[复制链接]

classn_11

发表于 2010-1-29 21:12:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机开发中应掌握的几个基本技巧$ ~9 R. j! I5 g$ N3 j$ w. B0 p
* k4 z% h; P, h6 E$ U

  ^& O, k+ M3 z* D7 v在单片机应用开发中,代码的使用效率问题、单片机抗干扰性和可靠性等问题仍困扰着工程师。为帮助工程师解决单片机设计上的难题,《电子工程专辑》网站特邀Holtek香港分公司工程部处长邓宏杰先生担任《单片机应用编程技巧》专题 的嘉宾,与广大设计工程师交流单片机设计开发经验。现根据论坛中的 归纳出单片机开发中应掌握% B* {% N8 Q& B+ L' G
的几个基本技巧。
+ N9 P  U' Z# C1 d9 s- Q' t8 N  |( y! ^
" J8 ~% B% @. o3 M  J
一、 如何提高C语言编程代码的效率
+ T$ F, J$ ~+ @% S* ]
% _4 X2 e. t0 p0 O( L9 d$ d/ C$ C" U# g# k2 B' v9 g" G. a. S
邓宏杰指出,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。他强调:“如果使用C编程时,要达到最高的效率,最好熟悉所使用的C编译器。先试验一下每条C语言编译以后对应的汇编语言的语句行数,这样就可以很明确的知道效率。在今后编程的时候,使用编译效率最高的语句。”
2 A8 k  R4 ^4 \% L" _& ~  A4 }  ^
& q0 q, _$ u2 t* c* E
$ y/ z! Q( [7 ^+ k, ]3 o他指出,各家的C编译器都会有一定的差异,故编译效率也会有所不同,优秀的嵌入式系统C编译器代码长度和执行时间仅比以汇编语言编写的同样功能程度长5-20%。他说:“对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求你对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言,但由于不同的MCU厂家其C语言编译系统是有所差别的,特别是在一些特殊功能模块的操作上。所以如果对这些特性不了解,那么调试起来问题就会很多,反而导致执行效率低于汇编语言。”( O, W( @0 a5 L% A. I3 w0 a( G
$ `% e) y3 ]* V) I$ X
# X- [6 d7 z: i& e4 B0 R$ y; m
二、 如何减少程序中的bug?
- F' t* `% a9 H' ^2 @& k8 g( ~6 x6 E, y8 o3 c2 i7 q
7 t* ~9 ?- ]# x
对于如何减少程序的bug,邓宏杰给出了一些建议,他指出系统运行中应考虑的超范围管理参数有:
1 R6 Y8 f+ l; C5 a" G1 z2 H- {( n/ l$ d2 K9 ?% Z% X
6 d5 @& O' b# Q5 t4 G; W% E
1.物理参数。这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数。合理设定这些边界,将超出边界的参数都视为非正常激励或非正常回应进行出错处理。
$ z1 g9 v" L3 R7 v0 y: E. @( D4 h' f2 W) P% \- c' t

8 b. U$ ?9 m: @5 Y3 j8 z2.资源参数。这些参数主要是系统中的电路、器件、功能单元的资源,如记忆体容量、存储单元长度、堆叠深度。在程式设计中,对资源参数不允许超范围使用。# v6 j7 Y  j1 K) C0 `+ X0 j: p) f
# t9 z6 ?: u" y( @! g  ?/ Y4 S

7 `. \0 `) B6 E6 [6 y  k( N2 P+ v3.应用参数。这些应用参数常表现为一些单片机、功能单元的应用条件。如E2PROM的擦写次数与资料存储时间等应用参数界限。6 _1 b: c, T' k8 H) D$ L1 [) D
: S' ~' [! C" G) u; N
) f6 X* H& i) R# w" _
4.过程参数。指系统运行中的有序变化的参数。
) m' ?5 C( r; d. w+ }4 e- w. D5 d6 R" j' B( @8 J& }
; q7 [  ]" T& J9 ^. Y! r
三、如何解决单片机的抗干扰性问题
8 B& Q4 d/ [- v: U0 y! n
3 `# V4 B5 a. k7 e0 k2 @! R2 R" F, P; r+ l$ G8 Y
邓宏杰指出:防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了。单片机干扰最常见的现象就是复位;至于程序跑飞,其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干 扰最重要的是处理好复位状态.一般单片机都会有一些标志寄存器,可以用来判断复位原因;另外你也可以自己在RAM中埋一些标志。在每次程序复位时,通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序。这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过。$ a5 T. X. {3 A$ ]; ]
8 C4 K3 U+ v* V2 a2 I8 ]9 _

3 A6 |! H% t" t+ v四、 如何测试单片机系统的可靠性9 M. d" P7 [1 C9 k$ R

- m  }0 X+ ^* p4 S5 |, o2 g
+ F, c) H& m+ J+ s/ u6 S& Z! g- b有读者希望了解用用什么方法来测试单片机系统的可靠性,邓宏杰指出:“当一个单片机系统设计完成,对于不同的单片机系统产品会有不同的测试项目和方法,但是有一些是必须测试的:+ V( q- ^' I4 ^

5 J4 [$ m0 C, z  t; e! g0 w) e- f) E9 J
1.测试单片机软件功能的完善性。这是针对所有单片机系统功能的测试,测试软件是否写的正确完整。
4 V& s% z/ g* `+ @& N! {" E& s, K& J/ R0 I( b
6 O% I0 U, |/ @; J  x
2.上电、掉电测试。在使用中用户必然会遇到上电和掉电的情况,可以进行多次开关电源,测试单片机系统的可靠性。
& d4 _& ^$ v! |* {8 H& J% R# U
( t; |: |% W4 P1 E) e2 K' R: I' ]# o9 z6 V: Q6 a% a" d0 E1 Q# z
3.老化测试。测试长时间工作情况下,单片机系统的可靠性。必要的话可以放置在高温,高压以及强电磁干扰的环境下测试。4 p/ d" e' N* T/ [
* k) f. i5 u" q5 R
3 A$ h! b1 v9 Q; V0 p$ Z
4、ESD和EFT等测试。可以使用各种干扰模拟器来测试单片机系统的可靠性。例如使用静电模拟器测试单片机系统的抗静电ESD能力;使用突波杂讯模拟器进行快速脉冲抗干扰EFT测试等等。1 c# f7 D; h) H4 h

4 a5 J2 x: j" H' `. D1 p! r
8 }- I" e: q9 d; M5 h% Z# @邓宏杰强调:“还可以模拟人为使用中,可能发生的破坏情况。例如用人体或者衣服织物故意摩擦单片机系统的接触端口,由此测试抗静电的能力。用大功率电钻靠近单片机系统工作,由此测试抗电磁干扰能力等。”

手机扫码浏览
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|手机版|小黑屋|最新贴|维修网 ( 粤ICP备09047344号

GMT+8, 2024-6-1 14:02 , Processed in 0.703365 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表