|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
! [' U' i( S. r. z% A
1 ^9 c9 J! k# g" T3 Q. K, ~. C4 g( {$ L, d1 ~
(1)很难记住繁杂的寄存器?
" @& q: t0 F3 ^! {. v! d$ z" {; W) Q" }$ q: v9 M. f7 y( D% }
寄存器不用死记硬背,做了那么久单片机项目的开发,连一个寄存器都记不住。
# f, ]8 @" q2 n. C! R7 K! T8 \2 V% J8 }7 o9 b
需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄存器是最最下策。
1 b( E2 F8 @4 p9 C. y
! v: f1 T) O9 l$ I( l# ^- ^0 }5 X2 o' c+ r; ^/ O* s/ c. W
(2)很难记住繁杂的汇编语言指令?4 Z1 }' ^3 k4 k7 z) Q( d4 x
4 \" K1 ?4 l5 o' u- j除非是在校学生要应付考试或者少数工作中绕不开汇编,否则学汇编就是浪费时间。从来就没有用汇编帮客户做过一个项目。
3 U7 N$ H) n$ X; x* m1 K [" J$ _2 y$ k2 Y6 _
$ q9 m2 }+ O/ F5 X! U; Y
(3)C语言很难学?
2 R2 N( |" m! H, C
; m7 z5 b. \( U9 \% ^6 z3 N你不用学指针,你不用学带形参的函数,你不用学结构体,你不用学宏定义,你不用学文件操作,你也不用死记繁琐的数据类型。
. k3 c$ ]/ u$ h7 W
0 e4 H# X( i7 x+ ]9 |/ s你只要会:6 P# n+ K1 C- U/ m
0 x) s/ h: n5 V w8 r) S
5条指令语句switch语句,if else语句,while语句,for语句,=赋值语句。
3 z9 x* g$ q- `7个运算符+,-,*,/,|,&,!。
) V) N- U% \6 d) |' \4个逻辑关系符||,&&,!=,==.
9 k7 Y& A! X- S6 p3个数据类型unsigned char, unsigned int, unsigned long。
8 N# M7 ` i. W/ x3个进制相互转化,二进制,十六进制,十进制。
& y! U1 @. c C- R* [1个void函数。 ! Q1 G0 b# @: E
1个一维数组code(或const) unsigned char array[]。2 ]( H6 K$ g: ~9 _8 D4 h& j4 \
那么世界上任何一种逻辑功能的单片机软件你都能做出来。8 M& @2 ~$ |" C* R% M
我当年刚毕业出来工作的时候才知道可以用C语言开发单片机,一开始只用if语句就把项目做出来了,没有用指针,没有用带形参的函数等复杂的功能。+ p9 s( y0 v/ l& k6 C/ {5 h5 m
- s" g; e3 }* u) r9 W) s9 K) Y1 T0 R
再到后来才慢慢开始用C语言其他的高级功能,但是我发现C语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编译后的机器码都大同小异。% U% C7 l& y4 n+ H4 U' Z
6 G9 p& m. V9 o# p所以不会指针等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。. [. k5 P& m2 R: `- [" \. m! Q% g
. e3 h) D) J, O- L9 i当你裸机跑的程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操作系统来玩玩。6 h! v, b/ O1 u( }7 S: ?/ |/ {
8 @5 k% h5 @" j' q, Y$ N
7 l4 M9 q( S" o& j: O6 F1 |" T(4)很难记住精确时间的计算公式?3 ?* F1 v, x% ]
3 [' g4 u7 ] l+ _" Y9 I2 v9 l
经常看到时间公式等于晶振,时钟周期,执行指令次数他们之间的乘除关系式。
' p; E V3 b/ I4 n: m4 j: N0 i- n9 b9 E: K! p; m6 {
我认为这些都是浮云,不用纠结也不用去记,大概了解一下就可以了。不管你对公式掌握得有多精确,你都不可能做出非常精确的时间。
& i1 m$ X* V9 z5 A* q2 }8 N) u5 ~& z9 T9 G9 M: r
想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。
6 P; }# c' }* m; |; u/ C' R, t7 S8 E" ?
真想做一个比较精确的时间,应该用外围时钟芯片或者FPGA和cpld,而不是单片机。
$ ^2 {9 x$ m% [. F" I* \4 A. b
4 U' O/ `# k% |' z; d! ~
$ ~% c% d7 h' I0 c(5)很难记住繁杂的各种通信协议?
p/ ]* I2 E s4 I% f
4 X3 w9 _% e2 b0 g什么IIC,SPI,232串口通讯,CAN,USB等等。
9 [4 k* |4 M* V8 [+ E: @9 W9 x. B+ v9 |: w8 `! c
这些都是浮云,你不用记那么多,你只要理解两种通讯方式就够了,那就是串行通讯方式和并行通讯方式。. t1 t5 I; b' z5 I
& S2 ^4 z8 z! j. l' j" a* h不管世界上有多少种通讯协议,物理世界上只有这两种通讯方式,其他各种名称的通讯协议都基于此两种方式演变而来。
8 q- x9 t' K* R- V& v# ]5 c3 I8 w) F+ t0 _& Z: m8 n
+ R' e# ^$ @. q* W(6)很难写短小精悍的程序?
4 L ~0 k3 E# B
0 N L2 {. p) C, b8 E# j6 h初学者不要纠结于此。做项目开发,程序容量不是刻意追求的目标,程序多一点少一点没关系。7 r- l; D/ G$ j
, u+ |: z7 b i% E3 |现在大容量的单片机品种非常多,容量不会是寸土寸金的事情,我们更加要关注程序的运行效率,可读性和可修改性。* m( w% Q& l6 ^$ W) D7 f+ p
|
) a- y2 R& U" a: p% }$ ]
. Q+ i: Q$ |, Q0 Y
$ n e& ~; D8 ~6 _) G1 @ |
/ k& K5 B! C T* x% n# b5 V2 z7 u
- @" b. M E3 Z) Y |
|