本帖最后由 宇宙飞船 于 2010-7-27 02:17 编辑
单片机在中国的大流行经历了几代,由MCS-48-->MCS-51-->pic-->avr-->arm
目前,MCS-48已经完全退出了历史,竟争存活下来的就是后面几种。
现代学校的单片机教学主要是以C语言为主,目前市面上写单片机的书也是以C语言为主导,使得单片机自学者对于汇编的系统深入学习变得越来越困难。不客气地讲,现代的单片机自学者,就算是有心学习汇编,也不知道该如何去学习。
俺飞船这一代人是非常的幸运,除了经历过以上的几代单片机,也经历过比其还前的Z80单板机时代。
单片机的主流教学在AVR与ARM之间就出现了分水岭,C语言在单片机上的使用就在此期间流行开来。使用C语言解放了编程人员的大量重复劳动,比如不再需要了解:数制转换,多字节定点数运算,多字节浮点数运算,正弦,余弦,对数,开平方等这些数值计算的汇编算法。
在Z80年代的前辈,这些基本算法是编写进大学本科教材中去,并要系统深入地学习考试。因此,老一辈们的计算机学科基础是非常的扎实。他们不但有能力编写出一个C编译器。而且在某些特定性价比极高的应用中,能使MCU的处理能力下降一个数量级的要求,反应到产品上,就是节省了可观的成本。
假若真是想精通这些编程算法的现代人,应该如何去学习?这是一个值得让人深思和忧虑的问题!
这里涉及到初学者对单片机的选型问题,51应该是首选吗?资料非富,随便都一大把。对,51的确是一个不错的选择。PIC又如何?对于单片机汇编算法自学者,俺飞船要告诉大家的是,虽然AVR与PIC都是精简指令集的MCU,两者都是汇编算法学习的好机型,但是俺更倾向于选择AVR,其中的理由非常的明显,就是AVR有PIC和51的优点。
例如:使用51就只能学会用CPL来取反IO口,但是当使用AVR或PIC,因为没有这条指令,就不得不强逼学习到另一种更万能高效的IO取反设置方法。又例如:AVR或PIC中没有DA指令,因此就能学习到另一种更原始,更原汁原味高效简洁的多字节乘除算法。这些都是MCS51,16位机,32位机中没法学到的通用算法技术。
若果你的意志力够坚定,能幸运选中一款合适的MCU深入学习,那么,不久的将来,中国的计算机技术接班人必定是阁下。 |