进入21世纪后,由于电子技术及计算机技术的迅猛发展,促使电子产品的更新换代速度越来越快。以单片机为核心的智能化产品具有体积小、功能强、应用面广等优点,正不断取代传统电子线路构成的经典系统。
以前汇编语言是单片机工程师进行软件开发的唯一选择,但汇编语言程序的可读性和可移植性较差,采用汇编语言编写单片机应用系统程序的周期长,而且调试和排错也比较困难。并且不同类型的单片机,必须采用不同的汇编语言来编写,这是因为汇编语言完全依赖于单片机硬件。对开发者而言,如果由于项目的变化而经常变更单片机类型,其开发的难度是可想而知的。因为学习任何一种单片机汇编语言开发,都需要历经学习、探索、实践、提高这样一个过程,该过程少则半年,多则1~2年。随着市场竞争的日益激烈,开发效率已成为电子产品的最重要因素之一。为了提高编制单片机系统和应用程序的效率,改善程序的可读性和可移植性,最好的办法是采用高级语言编程。目前,C语言逐渐成为国内外开发单片机的主流语言。
C语言是一种通用的编译型结构化计算机程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。它支持当前程序设计中广泛采用的由顶向下的结构化程序设计技术。一般的高级语言难以实现汇编语言对于计算机硬件直接进行操作(如对内存地址的操作、移位操作等)的功能,而C语言既具有一般高级语言的特点,又能直接对计算机的硬件进行操作。C语言有功能丰富的库函数、运算速度快、编译效率高,并且采用C语言编写的程序能够很容易地在不同类型的单片机之间进行移植。因此,C语言的应用范围越来越广泛,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。对汇编语言掌握到只要可以读懂程序,在时间要求比较严格的模块中进行程序的优化即可。采用C语言不必对单片机和硬件接口的结构有很深入的了解,编译器可以自动完成变量的存储单元的分配,编程者就可以专注于应用软件部分的设计,大大加快了软件的开发速度。统计资料表明,不同单片机的C语言编译程序80%的代码是公共的,采用C语言可以很容易地进行单片机的程序移植工作,有利于产品中的单片机重新选型。C语言的编译效率也很高,对于同一个问题,用C语言编写的程序生成代码的效率仅比用汇编语言编写的程序低10%~20%,由于现在片上ROM(或Flash ROM)空间做到32/64KB(或更大)的单片机比比皆是,因此代码效率所差的10%~20%已经不是重要问题。至于对开发速度、软件质量、结构严谨、程序坚固等方面进行综合评述的话,那么C语言的完美绝非是汇编语言所能比拟的。
本书在第二版的基础上,又增添了大量实用应用程序及案例,读者可以拿这些实例直接用于产品设计与编程,也可进一步改良升级。
读者对象
本书以初学者为对象,从零开始,循序渐进地讲解当前最热门的AVR单片机的C语言高级程序设计知识,在介绍AVR单片机的各单元部分基本特性的同时,使用入门难度浅、程序长度短且又能马上实践的初级实例,详细介绍了如何使用ATmega16A的片上资源,帮助初学者快速掌握AVR单片机的高效设计。
光盘使用
随书所附的光盘中提供了本书的所有软件设计程序文件,读者可直接复制下来使用,并仿照这些程序进行快速开发。还包括了本书的教学课件(PPT),可作为读者自学本书的参考资料,也可供高校老师教学使用。
联系作者
学习AVR单片机需要一定的学习、实验器材,如读者需书中介绍的实验器材或想参加单片机/电子技术/FPGA/ARM等的设计培训班,可与作者联系,咨询购买事宜。联系方式如下:
地址:上海市闵行区莲花路2151弄57号201室
邮编:201103
联系人:周兴华
致谢
在本书的编写过程中,得到了吕超亚、周济华、沈惠莉、周渊、周国华、丁月妹、周晓琼、钱真、周桂华、刘君礼、邱华锋、胡颖静、吴辉东、冯骏、孔雪莲、方渝、付毛仙和吕丁才等的帮助和支持,编者参考了大量的文献资料,一些资料来自互联网和非正式出版物,参考文献无法一一列出,在此对原作者一并表示诚挚的感谢。
限于作者水平,书中难免存在不少错误或漏洞,诚挚欢迎广大读者提出意见,并不吝赐教。