|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 _) F. F+ {) o6 k c2 ]
2 ?1 [9 ]* p- U7 L* q- p/ r, A
3 T# J! x) l( | q$ ]4 _6 `(1)很难记住繁杂的寄存器?
) J; E8 [+ w$ ]5 R1 P4 x& ^$ @ z5 D% E0 q
寄存器不用死记硬背,做了那么久单片机项目的开发,连一个寄存器都记不住。
+ s: P# ], G) ^+ @& a1 u
6 T7 W% f) s; L- `3 c' v需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄存器是最最下策。
* t% G1 U2 A! _+ o# j9 j" x9 u
3 @. L$ [( g% [+ l+ U, j8 Q! k! n6 Q
(2)很难记住繁杂的汇编语言指令?: t! Y5 S. N4 r/ _2 q% Y% F2 [
1 C. s, K5 Q& h2 {# r除非是在校学生要应付考试或者少数工作中绕不开汇编,否则学汇编就是浪费时间。从来就没有用汇编帮客户做过一个项目。. e9 e5 u1 ^) D+ E0 q# J1 C
) |; c9 c' \) q. k- n' R8 t6 I$ d+ d: X& ~8 A9 s( i5 `
(3)C语言很难学?
' w+ B. v- t2 n, G7 J- I
- O' p8 O: t& H6 w2 j" o你不用学指针,你不用学带形参的函数,你不用学结构体,你不用学宏定义,你不用学文件操作,你也不用死记繁琐的数据类型。
+ u; J+ y" ^& m [- H! _/ |4 y+ r. K$ z% ~
你只要会:
3 p7 ?/ u" F5 ]
' L8 A6 W: o; L% b$ f5条指令语句switch语句,if else语句,while语句,for语句,=赋值语句。- G7 T( O n7 P; ]( F
7个运算符+,-,*,/,|,&,!。
8 u8 ], l# ~. K q+ u4个逻辑关系符||,&&,!=,==.* q3 i W7 q3 Z# N
3个数据类型unsigned char, unsigned int, unsigned long。
7 |" s! g; r$ M3个进制相互转化,二进制,十六进制,十进制。
. w! m0 v7 s9 X" f# D4 v" `% o1个void函数。
, H5 g' K1 b! S; K0 x0 C3 I' h1个一维数组code(或const) unsigned char array[]。
" i( A! d6 ^# Z, L- l% S1 S6 u那么世界上任何一种逻辑功能的单片机软件你都能做出来。8 N# Z5 ?/ ]7 q. \1 D9 }% @7 D
我当年刚毕业出来工作的时候才知道可以用C语言开发单片机,一开始只用if语句就把项目做出来了,没有用指针,没有用带形参的函数等复杂的功能。; w4 f3 b# h7 H
9 o& R: o3 `% P0 L再到后来才慢慢开始用C语言其他的高级功能,但是我发现C语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编译后的机器码都大同小异。: a5 P0 g8 @' {, F
# D3 Q: `; z8 G. D
所以不会指针等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。
^; C0 O, a# g' y- Y5 l) Y0 k$ M8 \. x6 u$ {) J0 l
当你裸机跑的程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操作系统来玩玩。
8 A( U- }! N# _# C7 K: v) C! e. t. A# S; \6 A j
% z- G2 [0 i) q7 P(4)很难记住精确时间的计算公式?; l* N' g9 n: b5 d: x# s8 u
7 w; i" R7 m+ T. U6 ^* j经常看到时间公式等于晶振,时钟周期,执行指令次数他们之间的乘除关系式。
! [) ]! n9 g1 V+ `! F+ y0 K |
/ x/ V& o# O2 |9 D) L. p/ s8 Y我认为这些都是浮云,不用纠结也不用去记,大概了解一下就可以了。不管你对公式掌握得有多精确,你都不可能做出非常精确的时间。
" U" G+ U( O" Y8 ]# y4 S" L. s. r4 ^
. p1 I* p5 [; Q& l, }想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。
7 ?2 v$ _% K2 r8 `: f- P+ u0 X3 e8 x0 r3 q t$ m
真想做一个比较精确的时间,应该用外围时钟芯片或者FPGA和CPLD,而不是单片机。
8 [' K, `3 }& o6 N. m7 N# J; A" h1 t
5 C. {0 s7 E4 f7 r$ D: t
(5)很难记住繁杂的各种通信协议?
9 Y c' V" r! E9 }, b$ R B8 P: G
) ~5 u. h3 p3 O+ ]! L: w什么IIC,SPI,232串口通讯,CAN,USB等等。1 I# W0 z5 Z) W F7 _6 b+ b. Y
4 F8 u1 O0 |2 o4 j5 ]7 `这些都是浮云,你不用记那么多,你只要理解两种通讯方式就够了,那就是串行通讯方式和并行通讯方式。9 X- ^6 I- f: q' s
9 k* w* a( A/ \1 H
不管世界上有多少种通讯协议,物理世界上只有这两种通讯方式,其他各种名称的通讯协议都基于此两种方式演变而来。/ L; `# F. W9 k: ]8 j- Q9 K, E9 U/ a
0 f! w5 G1 a$ l$ u; N$ n: }7 ^9 |7 T6 M) c% {* W+ m0 j" i
(6)很难写短小精悍的程序?
3 i A& |0 _4 n5 e& @( t+ l+ ~/ A. C f% |3 [# \) h+ A
初学者不要纠结于此。做项目开发,程序容量不是刻意追求的目标,程序多一点少一点没关系。
$ h2 } x C z- ~
. i1 K2 q% `7 C现在大容量的单片机品种非常多,容量不会是寸土寸金的事情,我们更加要关注程序的运行效率,可读性和可修改性。) n& s( F6 `) i4 R$ t# Y+ P
|
. z, r; w, a( `( m
, Q6 A8 E( N& r6 U9 r
$ g; m2 G' E+ D/ M" N+ ] | $ o; g; V A0 ?( |' R$ U
9 l3 [. ^1 u3 U% ^ Z% A1 V; d$ b5 ]0 T/ w3 J' U* h1 |/ D) P1 R
|
|