单片机菜鸟成长日记1之基础和武器篇(汇编于C语言终极PK)

吻花者 2012-01-06 04:32:58
单片机菜鸟成长日记1

————基础和武器篇(汇编与C语言终极PK)

不知不觉5年了,我从一个单片机的门外汉到菜鸟,再到现在算是比较熟悉和掌握单片机了吧。回想起来,听不容易的,尤其是在我刚接触单片机的时候还有没这么多的开发板和网络,只有我的老师和书,只能在看课本和开发产品的时候给老师打下手的同时自己学习(那个时候很羡慕老师可以轻松的调试单片机,编写代码,我看了就像听天书啊。无语…),学习进度之慢和学习之痛苦不堪回首啊。不说了,现在进步了,网络化了,学习也比以前轻松了,作为一个过来人(不能说我是成功者),我就说说我的经验吧,不能说一定帮助你们,但是可以作为借鉴是可以的。
首先说下学习单片机的基础(以下本人的所有文章的观点都是个人认为的,您认为对的,就认同;认为错的,就可以不用再看了,就不要看完再骂俺了,俺的心理承受能力有限),模电和数电要有一定的基础,虽然现在有了单片机的出现,只需要少量的外围电路加单片机就可以实现我们的要求,但是记住是少量的外围电路,不是没有,把一块单片机按上就可以工作了,当然有的朋友说我没有模电和数电也可以学单片机的,是的,可以学,这是您的自由和权利,我是管不着的。我想说的是单片机是不可以自己工作的,包括单片机和他的外围电路,那就是模电和数电,您要是啥也不懂的话,估计您将寸步难行啊!!!同情!!所以在学习单片机之前还是先学习下模电数电吧。我看了下您要是没学过的或者学过的然后都还给老师的可以自己去看看书,最好再坐下实验和仿真(注意:我个人认为实验比仿真重要,仿真就是仿真,不是真实的模电,最后你还是要自己搭电路,进行真正的调试的)我就简单说下吧,模电包括:基本元件(电阻、电容、二极管、三极管等都要熟悉的)、电源(这个很重要的,单片机没有电源可是不干活的)、运放(根据自己的情况适当熟悉下基本的就可以了);数电包括:门电路(与、或、非)、555(这个是数电最基本的集成电路)等,把这些看完,弄明白就差不多了,最起码可以进行学习和最基本的调试了,至于开发产品那还早着呢,不要着急!
学会看上面的基础就要选择单片机了,没啥好说的51系列是您的首选,这是必须的,说下原因吧,其实这个去百度大神问下就都知道了,现在的百度大神可是无所不能了,嘿嘿,可能还有不会用的,我这儿就普及下百度知识吧,例如你想学习单片机,不知道选择啥型号的,就在www.baidu.com后输入“初学单片机改选择什么型号”,然后回车就ok了,多简单点事呢。不说废话了。原因1 :51单片机简单,IO口就是普通的IO口,不用定义不用配置(这个等你以后学到高级的单片机就明白了,例如:PIC、AVR等),而且寄存器少;原因2 : 51单片机开发板多而起便宜,教材和学习的资源也多,例程啊、实验啊、成品的源代码啊都很多的,这个还是去找大神。综上所述,学习单片机的入门还是选择51系列好,老少皆宜啊。但是我认为51单片机也仅仅是入门的芯片了,以后你学会了就尽量不要再用的51系列了,原因自己就思考吧!!!
好了,单片机也选择完了,改选择武器了,也就是学习单片机到底是用汇编语言还是C语言呢?我想光这个话题就可以在论坛里面打上一年多的口水仗,也分不出个胜负来,我这儿就我个人的想法说道说道吧!
他俩的优劣详细的还是去问大神吧。我简单说下,汇编是单片机的基础语言,入门简单,编译起来占用资源少,在单片机发展的初期(Flash比较小的时候),是开发单片机的必备,但是他调试麻烦,可读性差,可移植性更差、各个单片机的通用性等于零,尤其是做大的项目的时候,团队合作开发的时候,基本不用的;C语言呢算是一种高级语言了,应该说算是汇编的升级版吧,他是可以嵌套汇编的,但是由于早期的Flash比较小,他编译起来占用资源多,经常不够用的,但是现在Flash都上百K了,这个问题就不存在了,他的可读性、可移植性、比汇编都好的没法比的了,尤其是各个单片机可以通用,只是在定义的时候注意下就可以了。由此一看,那就直接把汇编丢弃吧,还讨论他干啥啊,这是现在网络的普遍的说法,也是一种趋势(伪),尤其是你可以仔细观察下,现在用汇编的基本都是80前的了,甚至是70前的,用比较流行的一句话说,都是一群快入土的人了(嘿嘿,不是搞人身攻击,我也用汇编,但是我也喜欢用C语言)。我觉得C语言确实比汇编语言要好用,但是我觉得汇编语言仍然是学习单片机的入门语言。注意:我的观点就要登场了,初学单片机的一定要学汇编语言,必须要学,当你能用汇编语言完成51单片机的几个小的项目或实验的编写代码和调试的时候了,也就是你的单片机小有大成时,可以再学习下C语言,而不要一开始就用C语言。
举一个简单的例子吧,这样会生动些!我觉得汇编语言就是是冷兵器(刀、剑、枪都可以);C语言能就像是热兵器(三八大盖、AK47、M16、马克沁也行)。可能看到这儿,百分之99的都不会去选择刀剑了,我也会选择AK47啊,多简单啊,杀人越货之必备啊,而起效率还高,我相信没有回相信一个扛着AK47的打不过一个那个刀剑的(武侠和玄幻小说里面的牛人例外)。但是要注意一个问题,就是刀剑是个人都会用,就是用的好还是坏的问题,而AK47呢,首先你有子弹吗?有多少发子弹?再就是你会开枪吗?枪法准吧?等诸多问题出现了。到了这儿你还会认为那个AK47一定能干掉拿着刀剑的,不需要什么九阴真经了。这就是关键了,汇编语言学习的时候不需要任何基础(初中以上学历即可),而C语言之前你必须得先学会用C语言,而不能使简单的学会,一定要熟练,最好是精通,这才有助于你更高的学习单片机。就像刀剑,是个人就会用,区别就是用的好好的问题,是个人就能用刀剑砍人,区别就是谁砍死谁的问题;而AK47呢,你没有子弹他还不如刀剑,有子弹不会开枪结果是一样的,会开枪你枪法不好,等敌人都跑到跟前了,你的AK47就和刀剑一样了。明白了吧,武器好好不是胜负的唯一绝对,决定的是使用他的人。
说了这么些了,相信对你的选择会有一个基本的判断了,我的观点 :就是学习单片机用汇编语言,基础是:模电、数电、51单片机;而用C语言就得再加上一本书,谭浩强的C语言程序设计(不是广告,而是没发现比他更好的书),一选择就我肯定选择前面的汇编了,少看一本书呢,再说谭老师的那本书实在是有点深奥,不是很好看的,再说以后的事情还早呢,我能不能学到哪儿还不一定呢(这个观点很多,但是我不建议,选择单片机之前一定要慎重,但是既然选择了就不要随便退出,一定要学会坚持)。
另外还要说些汇编的一个好处,我前面说了汇编就是单片机的基本的语言,其实C语言最后也是编译成汇编的,只不过都放在后台处理了,咱们看不见而已,一开始你要是直接用C语言学习的话,想什么A寄存器,什么堆栈啊,什么R0_R7寄存器啊,就基本和你说88了,甚至你学完51单片机就不知道还有这些个东西呢,而汇编呢,就要要你用这个寄存器,熟悉并使用这个寄存器来编写和调试代码的。另外用汇编的另外一个好处是锻炼你的思维,其实我发现刚学单片机的容易犯的错误就是重复赋值和跳转错误,而这两点只有在汇编里面出现,当你在汇编里面客服这一个错误的同时,你再用C的时候,对于变量的定义也会应用的比较合理了!
回到刚才的例子上面了,我总结下我的结论吧 :在一开始先用刀剑吧,入门简单,要求也低,好歹也是把武器了,也能杀人了,而起还可以锻炼身体,在用着刀剑杀人的同时可以再练习下枪法,整点子弹,机会合适了就扔掉刀剑换上AK47,给敌人也给自己一个惊喜吧!不要盲目的追求先进,适合的才是最好的了!
结论:单片机学习基础,也是必备的几本书:模电、数电、51单片机。高级武功秘籍:C语言。先把模电数电学习下几本,再用汇编语言学习单片机,到小有所成时再学习C语言,进行升级,以致终有大成啊!!!! 到了这儿了,抓紧看看你有上面的3本书了吗,有的抓紧看模电、数电,没有的抓紧去买吧。至于51单片机可以先看看基本的部分,就是单片机的组成和他的基本指令部分,其他的就不要多看了,看多了容易走火入魔的,说实话,我认为就是看看而已,也需要太了解,也不需要太明白,更不需要记住。等看的差不多了,再去买块开发板(用proteus也可以的,不推荐),从跑马灯开始练习吧,买不起开发板的建议放弃吧,一点投资也没有还想学本领?
至于如何学习单片机的具体呢,我认为还是通过一个一个不停的做实验,做项目再反过来看书、调试、看书、调试,才能学好单片机,单纯的看书是学不好单片机的(天才除外)。
先写到这儿吧!老规矩了,预知后事如何,窃听下回分解(嘿嘿,其实我还没想好呢,只是有个构思,不知道我能够坚持多久,希望你们赐予我力量吧)!!!


吻花者
2012年元月6日
...全文
707 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
吻花者 2013-11-12
  • 打赏
  • 举报
回复
时光如梭,又是一年了,去年的一点感慨,差点夭折了,今天发现了,继续下去吧!!!
QSXG_xwzj 2012-09-23
  • 打赏
  • 举报
回复
辛苦辛苦,感受中!
nomo012000 2012-09-22
  • 打赏
  • 举报
回复
唉,我只会汇编,感觉C好难呀,一层层的花括号看的我头都晕了
C_ROOKIES 2012-02-01
  • 打赏
  • 举报
回复
计划赶不上变化,书只是别人总结的经验,凡事还是自己体验,鄙人觉得不浮躁,学习基本上没必要啥子汇编过后C,直接找东西做,一点点的来就可以,学会,如果不浮躁的话,几年就能大成。说难听点等把那些书看完,时间不晓得花了多少,看了都不晓得忘了多少。 不浮躁+时间=没有什么能阻挡你了。(菜鸟学习单片机的一点感悟,言语不恰请见谅)
overmind 2012-01-28
  • 打赏
  • 举报
回复
有道理,谢谢!
吻花者 2012-01-28
  • 打赏
  • 举报
回复
自己顶下祝大家新年快乐!
吻花者 2012-01-08
  • 打赏
  • 举报
回复
厉害了,谭老师的书竟然上新闻联播了,我再声明下,我不是推荐他的书的,我是分享下学习单片机的基础以及在汇编和c之间摇摆的新手的!!!
woshi_ziyu 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lbing7 的回复:]

而用C语言就得再加上一本书,谭浩强的C语言程序设计(不是广告,而是没发现比他更好的书)

----------

介个是改错练习。
[/Quote]
++

确实是如此 好书呢
吻花者 2012-01-07
  • 打赏
  • 举报
回复
呵呵,确实是个写作新手,哦错误之处请指出,不胜感激;
这篇文章只是在告诉你学单片机之前需要做什么准备,有什么基础,至于你能不能学好,不是看了这篇文章就能顿悟的,没那么神,什么 都行都是要靠自己动手,自己领悟的,至于8楼有啥不懂的可以问大神,也可以问我,尽吾之所能告之。
至于谭老师的C语言,仁者见仁智者见智吧!!!
ga6840 2012-01-07
  • 打赏
  • 举报
回复
新闻联播说了 谭浩强的C语言程序设计
lck524046406 2012-01-06
  • 打赏
  • 举报
回复
现在入手 该知道的 基本都懂吧 就是实行力不强哦
mimixi666 2012-01-06
  • 打赏
  • 举报
回复
虽然我也是新手,但是怎么说呢,感觉不到你的强大。。。
不知道是不是你的文笔的问题,形容的不够好。。。
durant 2012-01-06
  • 打赏
  • 举报
回复
模电、数电之前必须看电路基础

很多人没有怎么看过电路基础就去看模电、数电,然后是基础问题各种不懂
AnYidan 2012-01-06
  • 打赏
  • 举报
回复
谭浩强的C语言程序设计(不是广告,而是没发现比他更好的书),

首次见到如此评价 (没看过)
aydf1 2012-01-06
  • 打赏
  • 举报
回复
我现在会点汇编,想学习C,请大家推荐一些学C的好书!
aydf1 2012-01-06
  • 打赏
  • 举报
回复
我买了一本谭浩强的《C程序设计》第3版,不知和楼主讲的《C语言程序设计》内容有什么区别。 我看了几页,感觉对学习单片机不太适合,并且有不少错误。是否应该买《C语言程序设计》这本书,才是适合单片机的,请大家指点指点?
leiiiii 2012-01-06
  • 打赏
  • 举报
回复
搞笑了。[Quote=引用 1 楼 lbing7 的回复:]

而用C语言就得再加上一本书,谭浩强的C语言程序设计(不是广告,而是没发现比他更好的书)

----------

介个是改错练习。
[/Quote]
palleexu 2012-01-06
  • 打赏
  • 举报
回复
谭浩强的C语言程序设计
这个我上大学时候老师用的就是这个教材,确实讲的很基础,很通俗易懂。
lbing7 2012-01-06
  • 打赏
  • 举报
回复
而用C语言就得再加上一本书,谭浩强的C语言程序设计(不是广告,而是没发现比他更好的书)

----------

介个是改错练习。

27,383

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧