提起本书的写作,还要从我以前写的一份文档《Protues-ATmega8 仿真》说起。上大学时我学的是应用数学专业,因而对硬件了解比较少,在学习单片机时走了很多的弯路。自己学习单片机入门后,就想写点东西,用来帮助和我一样想学单片机但又不知道如何入门的人,于是就有了《Protues-ATmega8 仿真》。也许是当时国内介绍Proteus的书还不多的原因吧,该文档在网上转载了很多,也有不少读者来信索取后续文档,但由于我后来开始学习ARM-Linux系统,就再也没有时间去补充后面的章节了。
今年年初,收到电子工业出版社王敬栋编辑的邀请,问我是否有兴趣写本有关单片机的书。说实话,当时我很是兴奋,一直都是在读别人的书学习,从来没想过自己也能写本书。不过激动归激动,真要开始写书,我还是有些怯!总是怕自己写不好,最后让读者花了银子又浪费时间。后来在王编辑的一再鼓励下,同时想到这几年来那么多读者鼓励、索取资料的信件,我就决定花一段时间,写下这几年来对单片机的认识。
第一次写书,因而筹划书的内容就占用了我不少的时间。其中最难取舍的就是是否要在书中用单独的篇幅讲解C语言。我觉得如果你还不了解单片机,就谈不上会使用汇编语言,那么C语言就是学习单片机最好的工具了。而且如果你有C语言程序设计的基础,就可以轻松地走进单片机的世界,并且可以在这个世界里走得很远。回想《Protues-ATmega8 仿真》的读者群大多是大二、大三的在校生,而我上大学时,大一下学期就开有C语言课程,加之出于书本厚度(价格)的考虑,最后我放弃了C语言篇的讲解。
但是,在这里我还是要强调一下:如果您还没有学习C语言程序设计,我建议您还是先认真地学习一下C语言,有了C语言的基础,您才有希望在嵌入式开发中走得更远。在此推荐两本有关C语言的书:
● 谭浩强老师的《C语言程序设计》
● 林锐老师的《高质量程序设计指南——C++/C语言》
重点推荐林锐老师的《高质量程序设计指南——C++/C语言》,该书可以说是C语言程序设计的规范。即使您学过了C语言程序设计,我也建议您读读该书,因为它能指导您编写更规范的代码,会在以后的工作中给您更多的帮助!
写本书的目的是想用另一种方式来讲述单片机。在我们的大学里都是先讲理论知识,然后再去做实验。用理论指导实验,可以让我们清楚地知道实验现象是怎么发生的,但这种方式的缺点是在我们学习理论时总感觉有些枯燥无味,因而导致的结果是理论学得不是很好,这样实验结果也就有些差强人意。本书就是写给已经有C语言基础,但还没有接触单片机理论的初学者,尤其适合于大二工科学生(电信、计算机、自动化等专业)。通过本书的学习希望大家能对单片机有个初步的认识,最好能培养出学习单片机的兴趣,这样在大三接触单片机理论时就不会感觉那么枯燥了。
我总结单片机编程就是对其寄存器的控制。51 单片机共有 21 个特殊功能寄存器,而我们要重点掌握的只有 6 个(需要熟练掌握对其位的操作),因而我说学习单片机其实很简单:学会 6 个寄存器就学会了单片机程序设计。这样如果我们一天掌握一个寄存器,那么 6 天就能学会单片机。
本书共 3 篇内容,可以说 3 篇内容是独立的。第 1 篇入门篇,是对单片机概念的引入、工具的介绍、单片机基础知识的讲解。学习完第 1 篇内容你会对单片机有个整体的认识,也会知道单片机编程是怎么一回事,如果要深入学习可以看后面的章节,也可以直接选择别的教程进一步研究。第 2 篇提高篇,是在第 1 篇内容的基础上通过扩展外围器件进一步讲解单片机的应用,可以作为扩展内容学习。第 3 篇应用篇,通过实例的形式应用前两篇的学习内容,如果你有一定的单片机基础,也可以直接用来做参考样例。
另外,本书除第18章外,所有的实例都没有提供电子版代码,因为我一直认为学习程序设计,最重要的就是要自己动手。只有自己把代码一个字一个字地敲进去,自己建立工程、编译、仿真,这样才能学到其中的精髓,如果仅仅是运行、仿真一下别人写好的程序,那是没有什么意义的。甚至我认为你不但要学会、看懂、调通书上的例程,而且还要学会将自己的想法融入到实例之中,学会修改、优化代码。正所谓传授者应授人以渔而非授人以鱼,而读者若能做到收人以渔而非收人以鱼,那将是完美的教与学的过程。书中的所有实例都是我一个一个输入计算机做过仿真之后才复制到书中的,如果因为我的描述不清楚或其他原因使您调试不能通过,希望您能给我发邮件,或者直接登录到我的博客(young45.cublog.cn)提问,我会尽快给您答复并给出解决办法。
我的开放环境是Windows XP系统,使用的工具Proteus是 7.5 版本的,Keil C51 是 8.02版的,学习时最好能选择相近的版本。
本书由老杨编著,参加本书编写的还有王路、康磊、李洪国、李楠、李亚军、刘远峰、彭星、韩海洋、仝利锋、许元霄、杨俊杰、赵景丽、周宏云、张占播等。
“学然后知不足,教然后知困。”以前随手写点东西倒也没感觉有什么,现在真要写成书了,才发现自己知识的匮乏。由于本人能力有限,写作过程中难免会出现一些错误,如果您发现错误希望能给我发邮件:young45@126.com。
最后感谢我的家人,特别是我的父母,是他们用辛勤的汗水浇灌了我今天的成长。也感谢在写书的过程中给予我帮助的朋友,是他们的关心和帮助让我完成了本书。特别感谢远在东北的朋友郝云鹏,我们是通过单片机认识的,在近几年的工作和生活中他给我提供了很多的帮助。也感谢电子工业出版社的王敬栋编辑和为本书的编辑、校对付出辛勤劳动的同志,感谢这些年来在工作和学习中给我提供帮助的朋友!
老杨
2011年10月完成于古都·洛阳