|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
- `; H! m; o5 i- _3 \# {( E摘要:无线单片机C语言和汇编语言各有所长。无线单片机内存容量极小,而且不同型无线单# t( ~- n( S4 W1 r3 |$ m7 k* U
片机收/发硬件结构各不相同,因此C语言时常表现出很多不足之处(如C语言良好的可移植性在
1 \3 R L: ~7 r- I/ d$ P) e8 X* N6 b不同无线单片机间并不存在)。首先对无线单片机的汇编语言和C语言进行比较,说明汇编语言具
3 U# n0 w! Q4 V有相当大的优势。接着提出改进汇编语言可交叠式模块编程方法。最后考虑至今软件断点都是极慢& i3 H; m9 u. }* L& s
速的(慢100倍);现有的硬件断点方法需要很贵的硬件来支持,成本很高,为此提出低成本和高- k* b; Q2 L+ r1 N' Y6 C
速的全速软件断点方法。采用cpld芯片实现的nRF24E1外围电路,完成键盘扫描,显示,收发控5 U5 f3 M! x9 V) Y; \$ s+ \5 Z# V* F
制和信息存储。多次并以nRF24E1收发的实验和调试验证了上述方法的正确性。
; Z" x I) K9 X关键词:汇编语言; C语言;无线单片机;全速软件断点
; s5 x0 `" v8 W8 {1 i! w& u0引言
4 X; q. x3 C6 a( F2 ]目前有线单片机编程中越来越趋向使用C语
/ l r* Y6 X( U' Y7 s# @# {2 X言[1-2]而无线单片机开发也用C语言。实际# |4 T' Z `' ~+ z, h% p% o f* P
上C语言有一定的适用范围,很多问题一定要结合
0 J1 t' D2 n1 c) G+ ?) j% ^实践作比较,无线单片机内存容量极小(用于无线传
) i" R& J E: K感器网络节点,希望体积小,尽量利用片内存储器完
+ @% s) ~9 @6 ]成更多的功能) ,C语言对小内存容量和硬件结构不
7 z6 K% R# i3 z; c; C8 o同常表现出很多不足之处。汇编语言编程比C语4 }9 [$ I' s& ~: ]7 ?4 p7 I. S. w
* j/ ^ ?4 a4 o' Z0 t) I% {+ W# M1 k言具有占用存储空间少、运行速度快及代码质量高
2 o8 U k7 s) h! P4 P, K等优点;对硬件进行实时控制或对运行时间和效率
. h* [/ w2 H8 B! N/ x# m. M要求较高的系统软件或应用软件,通常都是用汇编$ @5 {3 x$ E( K# ]0 s* [9 l8 X
语言编写的1-2.81。实际C语言移植良好的优点在
6 w% P! u4 p N) s4 N3 _不同无线单片机间并不成立(如CC1010和nRF24E1- q9 b* o* a5 g
7 A% r8 a: i* [6 d( l的接收/发射硬件结构不同,接收/发射C语言程序2 c/ s( F7 O' x
差别很大,并没有可移植性):,] ,对内存容量充分的
3 v' d+ R4 E8 Z8 ?; \1 ^' n大型程序尽量少用汇编,但相比之,用于无线传感器
+ ~' f7 g: R* F& G! X: ]6 _网络节点,内存容量极小,硬件结构不同,对此汇编0 U* ^8 |+ p9 b" i6 \3 Z% s# t- K
语言却具有很大的优势。实际上在无线单片机C
8 X. W$ G+ N* u语言程序调试中都能看到相应的汇编语言程序,立
9 i( p$ d4 J) Y0 P. N+ x0 U即看出C语言程序极不精炼。另外,在单片机调试* Q1 N2 I; b$ b" \; H
中至今软件断点都是非全速的(慢100倍)9- ;现! I ?) ]" S. U+ M
有的硬件断点方法需要很贵的硬件来支持,成本很8 W& g3 N- T0 D ]* i
高。为克服硬件断点成本很高和软件断点速度很慢# B. B! R1 ?+ b! s# k; K
的缺点,本文提出改进的汇编语言可交叠式模块编
) ^$ Z, w% T- U" _4 p! s程方法,并提出低成本和高速的全速软件断点方法,
7 u. J0 G1 g: m6 ~ b使无线单片机内存空间利用率高。' g: p( p% B l& q) u
1用于无线单片机nRF24E1的汇编3 t# Y1 |' ~& K$ r" Y% a5 ~9 H
语言和C语言的比较
5 a8 h- @* @6 f$ a! t c8 W; W+ y' t在无线单片机nRF24E1中C语言和汇编语言
! s/ f" T5 f& j6 g比较如下:7 `( ]1 p, j% z+ ]% Q8 w" x; G+ k
(1)nRF24E1的程序存储器和数据存储器加在
/ N( D( H5 Q3 N% D# K一起的总和仅仅为4k字节,而C语言编码效率比汇# f: p- @2 |2 {; \2 |' W4 o
编语言低,需要的内存容量较大。普通单片机程序
0 R7 j/ f9 R; g1 Z; M存储器可到64k字节,数据存储器也可到64k字节,
- I/ ^7 u9 ]& }% L5 o总和可到128k字节,所以普通单片机还可用C语
" C. N1 ~* s( T; o: t" e- G' o言,而对总和为4k字节的无线单片机nRF24EI节省, I+ J2 U. R5 X
内存空间十分重要,故汇编语言比C语言具备一定% D+ P, w# I$ l( d1 k: U
优势,为使无线单片机能执行较多的功能,建议采用0 y5 M* q" ]$ G1 R' v
汇编语言。例如:现有用于nRF24E1读和写
0 Q2 e/ V+ w4 q5 \0 n" g( u25AA320(串行EEPROM)的C语言程序约占914字! W6 x: b! `4 H7 j. T0 Q9 v) N
节,占用内存空间较大。本文改用汇编语言编程,只- I* U8 A6 z+ C3 y2 A1 M
约占250字节。又如延迟程序:用C语言需27字
/ G! _: f) }0 Q节,用汇编语言只需13字节。由此可见,用汇编语
8 I2 N5 q1 S9 j+ G# \" e言编程,在4k字节空间可实现更多的功能。; X8 _& M/ G1 R* t0 {5 K( b
(2)无线单片机硬件结构和特殊功能模块差别1 r7 z F& z4 Y5 J* J( J( U f
很大,本来C语言对硬件的控制和运行速度就远远& r3 d2 o% I' r3 ~: L4 B
抵不上汇编语言,现在用C语言设计,必须考虑硬) l" L* ]! s5 C8 c7 D' Q. R2 u- p
件特性,不如汇编语言直接访问硬件方便。C语言
2 @% ~; A) E! ]* }良好可移植性的优点在不同无线单片机间并不存* p# X! N: i6 g& P* f, d( D
在。C语言系统提供的专门的函数库中大部分无线
# O, V' v" R" E# d/ U0 E单片机不需用,修改和调试很烦,往往存在-定盲目- `% v5 \- l; _
性的套用。无线单片机汇编语言每一步执行的动作) P/ E8 b9 a9 U
都很清楚,自主修编改程序汇编语言比较容易。不
9 q: _3 H! R6 ?7 j+ i5 I3 y" k必套用,修改调试方便。' U" C$ k* S- n/ ?3 v5 t% U
& P% G. N: ]+ U/ a- B; ?7 u, I% |6 i7 Y! E- g
. I) G& M; m2 n4 Q+ Q' m+ n
7 n1 h. F) b6 B7 R
附件下载:1 O7 p) ?. k, z; y0 _
2 B2 R- R0 R' e* S/ F, O& D
|
|