EDA365电子工程师网

标题: 单片机初学者的误区(非常接地气) [打印本页]

作者: 奋斗者    时间: 2015-2-16 11:08
标题: 单片机初学者的误区(非常接地气)

! r  q6 ^1 B2 j( u# `2 j3 D3 E

' N5 j$ V- a0 m  }: A

7 I; _7 u# L: y2 g% G
(1)很难记住繁杂的寄存器?  U- ~) h2 T0 Z. m

5 X2 _, D' G0 u7 ^- q1 b3 [寄存器不用死记硬背,做了那么久单片机项目的开发,连一个寄存器都记不住。; [* ^- Y( Z  T
4 `  b4 [  Z& W; n: `
需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄存器是最最下策。% M/ {" g* M( Z% r

* P) X6 L& Y/ J3 `6 p2 E) _+ j3 _0 `/ @( _: a
(2)很难记住繁杂的汇编语言指令?- b0 v, {5 b3 R1 y' ?+ u1 ]
7 ~7 O( J- e6 T4 k
除非是在校学生要应付考试或者少数工作中绕不开汇编,否则学汇编就是浪费时间。从来就没有用汇编帮客户做过一个项目。# [7 p' ?) ^( u( f$ i
! P* S- S  p" T( i

* {- `: f( K2 J, R(3)C语言很难学?+ G+ G7 M/ z: u( g, `6 v8 w. B
8 K6 o2 u6 ~5 D" T6 \3 x! ^* G
你不用学指针,你不用学带形参的函数,你不用学结构体,你不用学宏定义,你不用学文件操作,你也不用死记繁琐的数据类型。' _( `2 T. h7 F, u3 ?9 E

$ F1 f) R8 v1 A& q4 U你只要会:
+ G0 g+ q' p: u) u6 J, r
' ^2 a. F# T$ c( |4 T5条指令语句switch语句,if else语句,while语句,for语句,=赋值语句。
$ O& l" T; `: T5 i6 Z5 @2 O6 ?7个运算符+,-,*,/,|,&,!。
( X$ s! ^5 c* I3 n- d4个逻辑关系符||,&&,!=,==.
8 A7 w+ o8 _1 w/ B# I6 h9 Y3个数据类型unsigned char, unsigned int, unsigned long。6 M* W; _0 a0 m0 Z4 `( }
3个进制相互转化,二进制,十六进制,十进制。
. d: S9 w2 v2 k. [! v/ N7 z! h1个void函数。 - M7 z& I' ]" c7 p
1个一维数组code(或const) unsigned char array[]。
% a' v! D7 n. M! f9 V那么世界上任何一种逻辑功能的单片机软件你都能做出来。
1 @* y* N- z" H. e" f我当年刚毕业出来工作的时候才知道可以用C语言开发单片机,一开始只用if语句就把项目做出来了,没有用指针,没有用带形参的函数等复杂的功能。# ^; S  x  ~/ o5 R, D
9 l4 p+ B) N: h: [
再到后来才慢慢开始用C语言其他的高级功能,但是我发现C语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编译后的机器码都大同小异。
/ e, r3 y" Z5 B+ q  x! ~" ?  K* e# j) M; @% J' `% w
所以不会指针等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。5 r% q8 _! t1 \7 t( R- ~! ~% n+ q6 X

5 s. F$ L+ s2 Z7 Q' f/ n! K当你裸机跑的程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操作系统来玩玩。
3 d/ d6 U7 w# h/ V2 q/ E' ^9 S: r" M/ _

7 U. n1 p; Y: u) d' m5 w0 X(4)很难记住精确时间的计算公式?! @" p" ~$ n! W( P! M7 ~& p
6 ]* o" e! T) ~3 V0 R
经常看到时间公式等于晶振,时钟周期,执行指令次数他们之间的乘除关系式。
& E0 `, `- M8 t8 s) n/ h+ C' o2 i# g9 y
我认为这些都是浮云,不用纠结也不用去记,大概了解一下就可以了。不管你对公式掌握得有多精确,你都不可能做出非常精确的时间。
! c- S. L4 F: O. A6 p/ _
3 z# i! b5 F' i想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。/ w% _% e4 @8 H. C; \6 n
. Z1 r9 b# {3 H
真想做一个比较精确的时间,应该用外围时钟芯片或者FPGA和CPLD,而不是单片机。- ]3 o) G& G% N; _7 _* h- e9 P

2 \1 @# z/ r% `! I6 i' A
/ \0 `; T) s4 B2 W% J(5)很难记住繁杂的各种通信协议?
1 l3 I7 x4 G" B. v* e# J5 k. `  L# h' u0 ~8 P: Q
什么IIC,SPI,232串口通讯,CAN,USB等等。
% j7 d6 V3 R1 E" ^! H
- a) N; I9 n5 t8 H* U* k2 s/ ~" d: H这些都是浮云,你不用记那么多,你只要理解两种通讯方式就够了,那就是串行通讯方式和并行通讯方式。, {( ^3 \* X' t# l: k$ S
. p) z, ~% i+ k- R- H+ _. j
不管世界上有多少种通讯协议,物理世界上只有这两种通讯方式,其他各种名称的通讯协议都基于此两种方式演变而来。. t8 o8 `7 M. p

" L6 M, g7 ~% w0 w
8 h0 {# b: Z1 W! H! e4 H(6)很难写短小精悍的程序?# ^6 {* d' y8 g2 ]

% f8 F; T" ~" x) L" C, t初学者不要纠结于此。做项目开发,程序容量不是刻意追求的目标,程序多一点少一点没关系。
: @! N/ n# f8 E0 n" T0 G8 m9 r# [/ ]/ f  g. ^
现在大容量的单片机品种非常多,容量不会是寸土寸金的事情,我们更加要关注程序的运行效率,可读性和可修改性。* {& x/ ]$ c) u1 n% \( H
& L0 S8 k" T" x! z: i. v# J0 p, b7 P

. K2 w! `& Z  s& y3 _# ]0 Z
6 X; B* W. k! D3 f3 M+ P

- t3 S7 ^( n6 E4 e# r

/ |: N+ u% z  o) }, a! O2 M$ i5 ]8 H' l7 I$ @5 r, p/ b

作者: 15167890278    时间: 2015-3-7 09:35
哥  我是单片机初学者,你的描述太震撼我了,能方便加个QQ以后讨教你几招吗
作者: jimmyvivi    时间: 2015-4-19 21:57
说在点上了
作者: finastic    时间: 2015-4-20 11:20
精辟啊
作者: seawolf1939    时间: 2015-4-20 15:29
对的!!!每一句话都戳心坎!/ R+ x5 M% x. ^
做了那么多项目,至今不会用指针,结构体。。。因为发现汇编出来的机器指令都差不多!
作者: tomhawk    时间: 2015-5-1 11:05
说的好, 全新开发一个project 不如先用现成来改
作者: wbr972    时间: 2015-6-9 10:10
只能说楼主,水平一般....
作者: 1136524314    时间: 2015-6-17 11:04
精辟,好!
作者: 独孤无剑心    时间: 2015-6-19 11:42
虽然刚了解单片机,但楼主说的精髓一定要收藏,感谢!$ T) f8 g% T; j' i7 b/ G" ]) R

作者: SHUZHEN    时间: 2015-7-16 18:18
说的太精辟了
作者: tuzhiquan    时间: 2015-7-20 16:50
说得非常好啊,我也是二年的初学者了,我也不是很懂C,我真的就像楼说的一样,我只会几条语句
作者: cartman    时间: 2015-8-28 11:46
学起单片机好费劲,我觉得自己还没开窍
作者: visualzz    时间: 2015-9-1 09:48
那需要记的是啥呢
作者: 电子-爱好者    时间: 2015-9-6 11:29
谢谢分享.............
作者: zpf    时间: 2015-9-15 17:50
有点意思!
作者: zsl    时间: 2015-11-5 16:24
被震撼了
作者: wangwo    时间: 2015-12-23 09:51
楼主发帖辛苦了,谢谢分享!!!!!!!!
作者: k2316314075    时间: 2018-7-10 22:02
谢谢分享
作者: V-zhong    时间: 2018-7-14 08:41
真说得那么简单就好咯
作者: zhaoxiyao5210    时间: 2018-7-14 09:07
学习




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2