独闷闷网
标题:
看了《吴坚鸿谈初学单片机的误区》的真实感受(转载)
[打印本页]
作者:
jianhong_wu
时间:
2014-3-1 10:39
标题:
看了《吴坚鸿谈初学单片机的误区》的真实感受(转载)
今天在其它网站上看到了一位同行在点评我写的一个文章,这个作者还针对我其它很多文章做了点评,在此非常感谢这位朋友对我的关注,现在把他的点评转载分享给大家。
/*-----------------------------------以下是转载原文----------------------------------------*/
吴坚鸿风格的C51程序,今天无意中看到了吴坚鸿的讲解,很有感触,记得自己当时学习的时候不也是这么稀里糊涂的学过来的吗?吴坚鸿在讲解学习
单片机
课程的时候有很多需要注意的细节写得非常的好。所以我便转载过来,让有缘在本论坛查看的朋友也了解下,取其精华,弃之糟粕。
第一节:吴坚鸿谈初学单片机的误区。
(1)很难记住繁杂的寄存器?
寄存器不用死记硬背,鸿哥我行走江湖多年,连一个寄存器都记不住。需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找
芯片
数据手册是中策,死记硬背寄存器是最最下策。
???对于这个误区一我个人也是非常的同意的。因为在我以前学习单片机的时候也老是觉得寄存器不好记,但是后来就不再记这些东西了,比如说中断的,我只需要记住如何开关就可以了。其它的用的时候查一下就OK了。
(2)很难记住繁杂的汇编语言指令?
除非是在校学生要应付考试或者少数工作中绕不开汇编,否则学汇编就是浪费时间。鸿哥我行走江湖多年,从来就没有用汇编帮客户做过一个项目。
???这一点我也有相似的感觉,我之前学习过一点基础的汇编,记得当时是某个老师说汇编入门,C语言提高,汇编精通,那个时候我才学习的编汇,只是到了C语言提高的时候我就把汇编给忘记了。记得在学习C语言提高的课程中,其中有位老师讲过,说是用汇编写延时比较精确,记得当时还在C程序中调用过编汇的子程序来实现通过汇编程序来延时,只是后来个人在写C程序的时候,延时都是利用keil软件来模拟软件运行来查看自己所写的延时是否正确,所以在写程序时,我对延时只有一种理解,那就是差不多。只要延时能让程序正常运行,我就不再去考虑到精确到多少us了,因为大部份的时候并非是要精确到多少us.
(3)C语言很难学?
你不用学指针,你不用学带形参的函数,你不用学结构体,你不用学宏定义,你不用学文件操作,你也不用死记繁琐的数据类型。你只要会:
5条指令语句switch语句,if else语句,while语句,for语句,=赋值语句。
???这几个语句我的确是用得最多的。
7个运算符+,-,*,/,|,&,!。
???这几个运算符也是常用的,的确应该学会
4个逻辑关系符||,&&,!=,==.
???说心里话,这讲得非常的不错,我曾经就是个初学者,这个我肯定学C程序写单片机驱动的,这几个必会。
3个数据类型unsigned char, unsigned int, unsigned long。
???这也是基础,必会的。这些都不难学会。
3个进制相互转化,二进制,十六进制,十进制。
???这也很简单,有很多的相关方面的知识,大家可以了解下,如果不清楚的话,可以加我QQ,我尽可能的帮助大家。我技术有限,但这个我还是能给大家讲一下的
。
1个void函数。
1个一维数组code(或const) unsigned char array[]。
???说句心里话,这一课我觉得是讲得非常的好,因为真的去除了很多用不上的东西,如果说你现在作为一个新手,从这一篇开始看起,我保证你比别人要学习得更轻松。
那么世界上任何一种逻辑功能的单片机软件你都能做出来。
鸿哥我当年刚毕业出来工作的时候才知道可以用C语言开发单片机,一开始只用if语句就把项目做出来了,没有用指针,没有用带形参的函数等复杂的功能。再到后来才慢慢开始用C语言其他的高级功能,但是我发现C语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编译后的机器码都大同小异。所以不会指针不会数组等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。当你裸机跑的程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操作系统来玩玩。
(4)很难记住精确时间的计算公式?
经常看到时间公式等于晶振,时钟周期,执行指令次数他们之间的乘除关系式。鸿哥我认为这些都是浮云,不用纠结也不用去记,大概了解一下就可以了。不管你对公式掌握得有多精确,你都不可能做出非常精确的时间。想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。真想做一个比较精确的时间,应该用外围时钟芯片或者
FPGA
和CPLD,而不是单片机。
???对于上面的这个第4点,个人赞同啊,有些东西真的没有必要去记,也有些东西不要那么去钻牛角尖,因为某些事情你太钻牛角尖了,你就会觉得太累,而且感觉要学习的太多,压力太大,这些都是自己给自己带来的,到了最后你反而无法进行下去了。所以如果非要记的话就记我们必须要记的东西就行了。
(5)很难记住繁杂的各种
通信
协议?
什么IIC,SPI,232串口通讯,CAN,USB等等。这些都是浮云,你不用记那么多,你只要理解两种通讯方式就够了,那就是串行通讯方式和并行通讯方式。不管世界上有多少种通讯协议,物理世界上只有这两种通讯方式,其他各种名称的通讯协议都基于此两种方式演变而来。
???这段话说出了很多的肺腑之言,的确是很多的通信协议都没有必要去记,记住串行通讯方式和并行通讯方式就够了。在很多地方,传输数据的方式虽然有很多,但是这两种几乎就是其中的根本。这个大家当个重点去理解。
(6)很难写短小精悍的程序?
初学者不要纠结于此。做项目开发,程序容量不是刻意追求的目标,程序多一点少一点没关系,现在大容量的单片机品种非常多,容量不会是寸土寸金的事情,我们更加要关注程序的运行效率,可读性和可修改性。
???差不多吧,可以这么说
(7)很难选出适合自己的51单片机学习板?
市场上各种学习板子非常繁多,鸿哥认为最好的学习板是朱兆祺的51单片机学习板。选它只有一个理由:有牛人提供后续一系列的视频和教学资料。如果说鸿哥是牛人,那么朱兆祺就是天才。我比朱兆祺大7岁,但是我现在完全拜倒在朱兆祺的牛仔裤下,成为他团队中的一员,听凭他调遣。他确实有他过人之处,百年一遇的人才。我这个连载的技术贴和以后的视频都是基于朱兆祺的51单片机学习板为硬件平台。朱兆祺本人现在也正在捉紧时间录制视频,分享此学习板的资料。
???对于这个第7点我真的不敢说些什么,因为我毕竟没有玩过朱兆祺的51单片机学习板,但是我想应该也有它不错的地方吧,就以鸿哥这篇文章来看,我想最起码也是有鸿哥个人的心德在里面,所以如果大家没有找到什么好的学习板,也不妨试一下。
既然鸿哥列出了那么多误区,那么什么才是初学者关注的核心?预知详情,请听下回分解----delay()延时实现LED灯的闪烁。
作者:
黑夜之狼
时间:
2014-7-17 16:05
持续关注!!!
作者:
yao1318
时间:
2014-7-21 16:17
这可是个拦路虎呀,它挡了很多单片机初学者,鸿哥带我们绕开它,谢谢你鸿哥!
作者:
jianhong_wu
时间:
2014-7-21 16:31
yao1318 发表于 2014-7-21 16:17
这可是个拦路虎呀,它挡了很多单片机初学者,鸿哥带我们绕开它,谢谢你鸿哥!
不用客气。以后经常来这里分享一点资料。多介绍朋友过来。
作者:
HYC215
时间:
2014-12-17 22:08
谢谢你鸿哥!
欢迎光临 独闷闷网 (http://dumenmen.com/)
Powered by Discuz! X3.2