打印
[应用相关]

转来的:单片机初学者的误区(非常接地气)

[复制链接]
1749|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿起书本|  楼主 | 2014-4-24 15:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1)很难记住繁杂的寄存器?
寄存器不用死记硬背,我做了那么久单片机项目的开发,连一个寄存器都记不住。
需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄存器是最最下策。


(2)很难记住繁杂的汇编语言指令?
除非是在校学生要应付考试或者少数工作中绕不开汇编,否则学汇编就是浪费时间。我从来就没有用汇编帮客户做过一个项目。


(3)C语言很难学?
你不用学指针,你不用学带形参的函数,你不用学结构体,你不用学宏定义,你不用学文件操作,你也不用死记繁琐的数据类型。
你只要会:
5条指令语句switch语句,if else语句,while语句,for语句,=赋值语句。
7个运算符+,-,*,/,|,&,!。
4个逻辑关系符||,&&,!=,==.
3个数据类型unsigned char, unsigned int, unsigned long。
3个进制相互转化,二进制,十六进制,十进制。
1个void函数。
1个一维数组code(或const) unsigned char array[]。
那么世界上任何一种逻辑功能的单片机软件你都能做出来。

我当年刚毕业出来工作的时候才知道可以用C语言开发单片机,一开始只用if语句就把项目做出来了,没有用指针,没有用带形参的函数等复杂的功能。
再到后来才慢慢开始用C语言其他的高级功能,但是我发现C语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编译后的机器码都大同小异。
所以不会指针等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。
当你裸机跑的程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操作系统来玩玩。


(4)很难记住精确时间的计算公式?
经常看到时间公式等于晶振,时钟周期,执行指令次数他们之间的乘除关系式。
我认为这些都是浮云,不用纠结也不用去记,大概了解一下就可以了。不管你对公式掌握得有多精确,你都不可能做出非常精确的时间。
想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。
真想做一个比较精确的时间,应该用外围时钟芯片或者FPGA和CPLD,而不是单片机。


(5)很难记住繁杂的各种通信协议?
什么IIC,SPI,232串口通讯,CAN,USB等等。
这些都是浮云,你不用记那么多,你只要理解两种通讯方式就够了,那就是串行通讯方式和并行通讯方式。
不管世界上有多少种通讯协议,物理世界上只有这两种通讯方式,其他各种名称的通讯协议都基于此两种方式演变而来。


(6)很难写短小精悍的程序?
初学者不要纠结于此。做项目开发,程序容量不是刻意追求的目标,程序多一点少一点没关系。
现在大容量的单片机品种非常多,容量不会是寸土寸金的事情,我们更加要关注程序的运行效率,可读性和可修改性。

沙发
mmuuss586| | 2014-4-24 21:18 | 只看该作者
谢谢分享

使用特权

评论回复
板凳
tubei| | 2014-4-25 14:38 | 只看该作者
说得很轻松啊。

使用特权

评论回复
地板
bobo5650| | 2014-4-25 18:17 | 只看该作者
所以不会指针等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。
-->我可以针对这句话粗口吗?
诚然,只用简单的条件判断等操作就可以写出能实现各种功能的代码,但是代码的可维护性、可扩展性、可重用性呢?

使用特权

评论回复
5
电子无聊大神| | 2014-4-25 19:19 | 只看该作者
对啊,对于C语言那几句看法就完全不同意了。
指针,带参数的函数很复杂?你别吓死我

使用特权

评论回复
6
hithms| | 2014-4-25 20:49 | 只看该作者
bobo5650 发表于 2014-4-25 18:17
所以不会指针等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了 ...

赞同

使用特权

评论回复
7
拿起书本|  楼主 | 2014-4-26 20:49 | 只看该作者
程序这个东西,要看人家的,取其精华,不要闭门造车,看得多了,思路自然就开阔了,C的精华就是结构体和指针。

使用特权

评论回复
8
yanxinboy| | 2014-4-26 22:37 | 只看该作者
完全不同意

使用特权

评论回复
9
善水盈渊| | 2014-4-27 10:58 | 只看该作者
这是 侃单片机 那边的?大神又回来了……不过楼主说得好  要取其精华,其他扔掉

使用特权

评论回复
10
nuaabob| | 2014-4-28 17:08 | 只看该作者
想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。——这个绝对不能同意,以51为例,自动重装初值+定时中断,为什么不能作出精准的定时?除非晶振本身不准。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4194

帖子

31

粉丝