|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 yxlk 于 2019-1-23 10:43 编辑 " y6 v$ K2 k9 J& P! `7 H7 A: t
/ u1 y# c- C* J+ z$ a5 o6 s7 f$ }. l
51单片机四大误区怎么破?
, l5 t; A* |+ Z/ I5 [51指MCS-51系列单片机,CICS指令集。由Intel公司开发,其结构增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(CMP)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源,内有128个RAM单元及4K的rom。其代表型号是ATMEL公司的A系列,它广泛应用于工业之中。目前国内的51单片机市场主要为国产的产品STC系列其号称,稳定与廉价的。% L2 j; V1 j, T5 e2 X6 @. t
5 S; X9 j- S, B' g学习51单片机的误区: O) `4 m' Z& V, _- v z
7 e! q3 ?; U5 B1 r# U
误区1:51单片机是学习的基础
1 k" R8 V I+ q F5 |1 T7 e
! e7 U# u! b1 H“51单片机是学习的基础”这句话本身并没有错。在我读本科的时候,当时它无疑是学习的基础——毕竟那时没有更高级的单片机可以供使用,国内更没有更高级的教材供参考,老师的水平也是参差不齐,而51单片机正符合这样的需求,不仅有大量的成型的教材,示例,当时工作的实际项目也是51单片机为主,于是51单片机理所当然的成为当时的学习基础。要知道笔者读本科的时候是2004年,即10年前的东西。按照莫尔,行业每18个月更新换代,10年前的技术现在已经更新了6代了——事实也确实如此。- _/ A( U3 x* x; i" v/ E- H& a
" N* ~9 |( `* Q! A& n
目前32位Crtex-M系列单片机的各种教程已经普及,其学习的难度不断降低。以公司的F系列单片机来说,意法在推广产品初期大量赠送了核心板。免费赠送的核心板不仅有流行的32位Cortex-M系列微,更在板上集成在线调试器。随机附赠的光盘或者链接更是提供了大量的示例源代码。我们只需要安装开发环境即可直接编译与下载调试。这时,如果再说51单片机是学习的基础肯定是不合时宜了。
& N' V- P0 b( J1 |3 u: J- B* T, F
误区2:51单片机可以学习的操作
0 P, {3 S m: v$ Q# }( _# g: M$ j+ ^5 x7 A/ |0 q
51单片机可以学习寄存器的操作,这一点儿是不容置疑的。我们分析一下其更深层的原因。在MSC-51单片机的编程环境中,最初是以汇编语言为主要编程语言。要知道汇编语言就是直接操作寄存器的,汇编语言是无法做到C语言的函数调用与的。如果说51单片机是以操作寄存器为优点,我觉得更应该说51单片机操作寄存器是一种无奈,是只有一个选项的选择题。" p2 h6 z0 M0 d4 P4 G& j
& R: b% |; ?# \" o j/ q5 n我们现在的Cortex-M系列单片机就无法学习寄存器了吗?显然不是。在中,硬件的操作方式就是寄存器的操作,但是其实现却是可以不同。各微处理器提供的C语言库函数包其实质就是将操作寄存器的指令进行了C语言环境下的封装。我们这里用ST官方库函数举一个示例:" z+ \6 e) k; V/ r) ?. J
void USART_Init (USART1, *USART_InitStruct);//实现1的初始化,简单明了,无需注释
. e i; z! d+ B! M+ ]% m. J( K% n/ Q1 @9 x( X: N
笔者在这里也想举一个示例来说明寄存器操作的步骤,但是操作寄存器实在是太复杂了,笔者不想去浪费时间去整理了。
1 g: _* k; H9 W, @2 C# F- h+ j4 T5 r+ T+ L5 `2 v
通俗易懂的C语言,方便移植的C语言与硬件平台相对应的联合,就能完成硬件的操作。有了简单、方便的方式,我们为什么还要考虑繁琐,复杂的汇编语言与寄存器操作呢?8 l! G4 M1 _5 v0 F( a) g ]
" Q' x: x3 G, N, \+ {. e9 G1 v" f+ Z. q2 c8 q5 g
|
|