内容简介本书全面讲述基于AVRGCC的AVR单片机C语言程序设计。首先根据不同编译器对单片机存储器操作上的不同,详细介绍AVRGCC的操作存储器方法;随后以大量的实例程序演示AVR单片机内部集成功能模块的C语言程序设计方法。多数示例程序均基于ATmega8单片机,并在实际硬件上调试通过,对掌握和编程其他AVR器件具有较高的参考价值。本书适合于有一定单片机和C语言基础知识的工程技术人员、高等院校相关专业师生使用。前言首先,建议读者访问本书的网站http://www.chipart.net,从网站可下载本书中示例程序的源代码和一些补充内容,并可查看勘误表等信息。希望读者以网站上的联系方式提出对本书的建议并指出内容中存在的错误,作者将设法保证网站的必要更新。2004年10月作者用“芯艺”署名,在网上发布了一个标题为《AVR单片机与GCC编程》的PDF格式文档,之后得到了广大网友的认可和支持,他们提出了很多宝贵的意见和建议。本书正是在此基础上完成的,感谢这些网友的支持。真正撰写本书是在北京航空航天大学出版社胡晓柏编辑的鼓励和支持下开始的,在整个出版过程中他给予了很大的帮助,在此表示衷心的感谢。本书为AVR单片机GCC开发者提供了有价值的信息,内容包含众多完整的示例程序供参考,尽可能地采用简单而直接的方式描述问题。本书的读者假设为具有良好的C语言基础和单片机知识的设计人员。建议读者在学习过程中努力创造硬件环境。作者认为,每当一个单片机按预先编好的程序正确运行时,都会带来一种成就感,使人对此产生更大的兴趣,激励自学。AVR单片机的硬件开发可以做到非常廉价,以致于在校学生都可以接受。书中多数示例选用的单片机为ATmega8。ATmega8是ATMEL公司在2002年推出的一款AVR单片机,它内部集成了AVR系列单片机的多数功能,并且价格低廉,在国内的应用较广,因此比较适用于学习。如果示例程序没有特殊说明,均使用版本WinAVR20040720编译,随着AVR不断地推出新款单片机,WinAVR的更新也较快,目前的最新版本为WinAVR20050214。之所以更新那么快,是为了支持更多新器件,所以不论哪个版本,只要支持所用到的器件,都是可以用的。本书的结构是按尽可能最好地解释和描述“AVR单片机GCC开发”的方式来编排的。全书共包含12章。第1章描述了AVR单片机及GCC的总体情况,并以一个简单示例的方式介绍了用WinAVR编译一个AVR应用程序的整个过程;还介绍了学习本书内容时所用到的软硬件环境和作者用于测试本书示例的实验板CAM8。第2章详细描述了AVR单片机内部各种存储器的组织结构及在C语言程序中的操作方法。第3章主要讨论了单片机程序结构问题,相信这对于初学者会有所帮助。第4章介绍了AVR单片机内部功能模块及其编程操作方法,并为每个模块的应用列举了相应示例。第5章详细叙述了异步串行通信模块的应用技术。之所以把UART单独列入一章,是因为在作者的观点中UART对单片机系统非常重要。第6章介绍了一种用AVR单片机实现的AT89S52编程器。实际上,它是一个AVR单片机最基础的应用示例。第7章举例介绍了AVR单片机内部集成的两线串行接口模块(TWI)及其编程。第8章举例介绍了AVR单片机BootLoader功能。第9章介绍了AVRGCC对汇编语言的支持,其中包括在C语言程序中嵌入汇编、独立的汇编语言支持及C语言与汇编语言混合编程等方面。第10章介绍了AVRGCC对C++语言的支持。第11章详细叙述了三个应用实例,分别是“双基色LED屏控制”、“工作小时计的制作”和“电话远程控制系统”,它们包括了单片机应用中的各个方面,对于设计开发人员具有很高的参考价值。第12章主要介绍了AVR单片机上一个自由操作系统AVRX。它能运行于大多数AVR单片机。以上各章节是按循序渐进的方式编排的,作为初学者,应从第1章开始阅读,并努力做好书中每一个实验,这将有助于加深印象。尽管一开始觉得写这本书有些挑战,但每次读者的认可和建议让作者意识到了它的价值所在,希望我们共同努力的结果能在本书的内容中得以体现。再次感谢提出过建议的网友,也感谢购买本书纸版的读者。你们的建议将是对作者最大的鼓励,你们的认可将是给作者带来的最大快乐。另外,为本书的编写提供帮助的还有范士勇、庆格勒图、宋艳楷、姚国珍、满都胡、张翼、张华、周坤、陆新志、李虎林、安强、乔飞和杨勇等,在此表示衷心的感谢。作者2005年10月于内蒙古包头