|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 ^3 ^& S3 a6 S' L; [" B
5 D) `1 ?* u4 F. v. A
. {2 c1 x8 ?, m* @ R(1)很难记住繁杂的寄存器?" @# i' H$ F" @5 ]# E9 e
# J/ N/ Z3 ?( z- k' F7 f% v寄存器不用死记硬背,做了那么久单片机项目的开发,连一个寄存器都记不住。
: v8 |( N; Q6 B+ |: o
8 E( F% {- e( g: }- Y+ H需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄存器是最最下策。. ], @8 o9 ^9 [% G: b
0 M9 S, C( B: k8 w7 `* y, i
6 e) Q3 G( H8 R7 L
(2)很难记住繁杂的汇编语言指令?- c p" K) ?5 _$ t7 R$ x. V
6 N# r. [6 ~* N5 E. G f/ d! |/ A/ A* _! r除非是在校学生要应付考试或者少数工作中绕不开汇编,否则学汇编就是浪费时间。从来就没有用汇编帮客户做过一个项目。
6 n- J: I; w- W) @. h* V! Y4 G T! ^9 O* P5 ?
$ T8 G& }5 v0 B7 q+ v6 j(3)C语言很难学?5 D6 q2 i x' [# p3 I: Z8 f2 [ j
: H8 z+ T' S0 r! A. N
你不用学指针,你不用学带形参的函数,你不用学结构体,你不用学宏定义,你不用学文件操作,你也不用死记繁琐的数据类型。' L H/ P& z) w o) J! C
7 Z7 r& Q8 ?) |% D你只要会:
9 c% }( }& {2 ]8 Z/ |* S. P0 ?' Q( \, L- R/ p
5条指令语句switch语句,if else语句,while语句,for语句,=赋值语句。
, O, @1 B" [- J& B7个运算符+,-,*,/,|,&,!。1 c# ~4 U5 ` n" k
4个逻辑关系符||,&&,!=,==.
4 X j4 A. V& Y' I; y3个数据类型unsigned char, unsigned int, unsigned long。% O- d% z2 O) ]$ F
3个进制相互转化,二进制,十六进制,十进制。
: z: z: c9 w7 D9 C1个void函数。
# P3 i- T: W: m& Z+ D; W. ~+ ^% ?1个一维数组code(或const) unsigned char array[]。( G' K* U! }$ |5 o3 Q! @
那么世界上任何一种逻辑功能的单片机软件你都能做出来。% R: a! N" P) B
我当年刚毕业出来工作的时候才知道可以用C语言开发单片机,一开始只用if语句就把项目做出来了,没有用指针,没有用带形参的函数等复杂的功能。
! B' x' U; h, @9 ^6 n j$ ]: Z: z- d
再到后来才慢慢开始用C语言其他的高级功能,但是我发现C语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编译后的机器码都大同小异。1 @6 X. H. E6 o- U0 K" W
7 m1 ?$ J7 P% h7 W2 J- W. [9 y2 j所以不会指针等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。3 Y- g8 V& \. P
) x/ N% L4 ?; S5 h
当你裸机跑的程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操作系统来玩玩。! _& Y' E9 h5 B
( V9 U7 t8 `7 p# Y/ c/ D
, o: v9 T0 l- H" q H8 R# K& q3 k* `(4)很难记住精确时间的计算公式?
6 t1 [# f0 }5 S) d: u0 r& C. v
经常看到时间公式等于晶振,时钟周期,执行指令次数他们之间的乘除关系式。
: H6 E. n- s1 w9 W3 g2 A
( e+ m' X2 ~$ {我认为这些都是浮云,不用纠结也不用去记,大概了解一下就可以了。不管你对公式掌握得有多精确,你都不可能做出非常精确的时间。8 m9 z6 R3 X) }, \
5 k3 w) l6 B/ R' @+ {, ~
想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。
: [ j- X, ~6 Q U
( S* m- u$ p7 d& u7 ?+ X8 l, l7 T' g7 ]真想做一个比较精确的时间,应该用外围时钟芯片或者FPGA和CPLD,而不是单片机。
* G$ t# f8 r3 w9 Z& V9 R% H; C( k% [9 S4 f
& R- k2 w1 h5 B(5)很难记住繁杂的各种通信协议?' q2 O) A7 ~. F/ }4 Y
: n2 y! c5 t6 R. s. o什么IIC,SPI,232串口通讯,CAN,USB等等。/ C& \# t- n! R* `! y
7 g% ?. Y) ]8 c5 B这些都是浮云,你不用记那么多,你只要理解两种通讯方式就够了,那就是串行通讯方式和并行通讯方式。9 ? `" o' W# t& B E7 |
% b; c9 l* j t7 x( Y- P5 ~不管世界上有多少种通讯协议,物理世界上只有这两种通讯方式,其他各种名称的通讯协议都基于此两种方式演变而来。
5 k8 V' G0 K4 G" y/ Z) O. a4 R( r* G+ _! R( W/ ?. u+ r
$ }" a' |: c. e" k# ]
(6)很难写短小精悍的程序?4 @+ a& l# R8 E9 i& L5 B
- Q$ x- R0 u1 \$ q
初学者不要纠结于此。做项目开发,程序容量不是刻意追求的目标,程序多一点少一点没关系。: e8 m# x0 j, E, v2 D9 L
0 O$ V# W5 `# o+ R& V
现在大容量的单片机品种非常多,容量不会是寸土寸金的事情,我们更加要关注程序的运行效率,可读性和可修改性。
% P) z/ ~0 _- z: |/ m |
4 `# ]0 e+ P: ^' O1 M$ i2 E: \; X3 {5 g- n' u
* L e: j( V1 m6 n |
7 b1 B+ K& E4 _5 q7 Z+ Z% y- c; s |* P* t9 N
# x& z Y" a; o7 { S
|
|