|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
% C9 z9 F9 f: x) U z) ?
0 E+ s/ d4 @8 G
4 a; k ~3 [% ~(1)很难记住繁杂的寄存器?
]+ _' m' g$ `; V( y0 U$ P- O* s4 O% A
寄存器不用死记硬背,做了那么久单片机项目的开发,连一个寄存器都记不住。( {) K# w9 L; d6 Y: D3 ]
! U1 f. a9 f1 ]需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄存器是最最下策。
: k3 V# A( U0 b1 c$ n; X$ {6 S9 _, k# I- W* S
- |7 r# a) |+ ^2 ^: t2 Z5 V u) ~(2)很难记住繁杂的汇编语言指令?) F+ R" A8 c& a; R2 c. R
+ N5 _* L; V% Y. `8 H: y( w
除非是在校学生要应付考试或者少数工作中绕不开汇编,否则学汇编就是浪费时间。从来就没有用汇编帮客户做过一个项目。
) f3 H6 X# v. K/ A' a. N& [8 M1 o9 u2 n6 e4 L
# ~+ k3 V' D; q% [" c P(3)C语言很难学?# L; W' N2 R- l X6 h
% d, Q! Q3 l0 Q6 G
你不用学指针,你不用学带形参的函数,你不用学结构体,你不用学宏定义,你不用学文件操作,你也不用死记繁琐的数据类型。
# r3 M8 ^3 {! A) Q& E. M; A0 P/ r. h+ A
你只要会:
3 I6 C, r/ j; }: b0 d5 L+ R2 |5 @1 b; s7 F$ M
5条指令语句switch语句,if else语句,while语句,for语句,=赋值语句。
. g( S* M* m. Q9 _* q) I7个运算符+,-,*,/,|,&,!。/ f- M4 q5 E/ V5 f5 Z( R
4个逻辑关系符||,&&,!=,==.6 U9 w! M2 |2 T {; |. e! K- A
3个数据类型unsigned char, unsigned int, unsigned long。
! |2 t8 A+ I4 b/ T! G+ X" C: p' }3个进制相互转化,二进制,十六进制,十进制。
9 _$ s0 t& j0 |% ]+ P7 V1个void函数。 , z$ Q8 p1 A4 h
1个一维数组code(或const) unsigned char array[]。
+ h/ Q! [4 x4 p" b7 D9 B那么世界上任何一种逻辑功能的单片机软件你都能做出来。
& J u; h5 p$ a5 D7 \我当年刚毕业出来工作的时候才知道可以用C语言开发单片机,一开始只用if语句就把项目做出来了,没有用指针,没有用带形参的函数等复杂的功能。
2 _0 F1 H% w4 {9 _! {6 Z/ d' p8 |- `" J2 ^2 v7 P3 Y& S
再到后来才慢慢开始用C语言其他的高级功能,但是我发现C语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编译后的机器码都大同小异。
2 r* U6 M3 h/ C+ F6 |
8 \# E, d0 `( m7 t3 _) r i. w所以不会指针等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。$ A) u* d. E0 O- ]+ I6 M, r/ d
, _$ d; Q: L8 V( h5 r! C( H8 Y; I当你裸机跑的程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操作系统来玩玩。! ~* |- i! ]/ {5 A4 g& F9 g" e( ?9 m
5 y1 {% |7 o& H) f2 k" X
+ `5 {. Q ~9 y' Z
(4)很难记住精确时间的计算公式?. ~/ r/ @5 P5 W$ j5 e5 L
% S. i! d: Z* X2 s7 [" m/ k& X经常看到时间公式等于晶振,时钟周期,执行指令次数他们之间的乘除关系式。# m! ~! x- ]9 c
* @+ g0 w, q( E& h7 h3 a4 S我认为这些都是浮云,不用纠结也不用去记,大概了解一下就可以了。不管你对公式掌握得有多精确,你都不可能做出非常精确的时间。
9 j" F! T# C, }8 x6 P$ J. x7 b5 i+ \; l- p
想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。7 m7 i) w/ n3 F6 ~
1 x- C& ~! Z0 L$ R6 G8 a7 u真想做一个比较精确的时间,应该用外围时钟芯片或者FPGA和CPLD,而不是单片机。* K6 r& x+ F( a6 F- K! N! i# n
8 B' t- P% `7 @; u$ R. S
$ c" n8 B# |! d i* [6 X(5)很难记住繁杂的各种通信协议?+ c% { ^8 r% L9 ~$ v2 n
, C2 L! U1 W; a" @" Q; h
什么IIC,SPI,232串口通讯,CAN,USB等等。
- \# W$ N0 l" a3 U3 r9 l
# G) m) B f! C# {- w8 e' |这些都是浮云,你不用记那么多,你只要理解两种通讯方式就够了,那就是串行通讯方式和并行通讯方式。# |% t8 S S; G
* p" m2 m! \( G* P @1 D不管世界上有多少种通讯协议,物理世界上只有这两种通讯方式,其他各种名称的通讯协议都基于此两种方式演变而来。# \# x# l) E* }; q1 h) u" |' }
- p) W. f; [1 E+ z6 s% @9 @$ b, O( `; x
(6)很难写短小精悍的程序?7 }- r5 n/ S0 T4 l* T
, K- k) i/ s" z- }) V初学者不要纠结于此。做项目开发,程序容量不是刻意追求的目标,程序多一点少一点没关系。
( ^+ O2 p) G! J; Y; F
/ D2 P+ R6 |' G# O现在大容量的单片机品种非常多,容量不会是寸土寸金的事情,我们更加要关注程序的运行效率,可读性和可修改性。
( r9 D2 y6 h+ ]0 N9 T0 {* Y |
+ m# q7 Q+ g8 [: R0 u' d8 @2 s$ G+ P; C( j+ G- ]5 f. `/ V
% l: o; g% O. S6 I | 3 R s4 n0 e, K3 e6 r
9 J- r7 O; O; C4 |
+ k3 A1 c2 p9 K2 a) ?% C
|
|