logo资料库

AVR单片机GCC程序设计.pdf

第1页 / 共172页
第2页 / 共172页
第3页 / 共172页
第4页 / 共172页
第5页 / 共172页
第6页 / 共172页
第7页 / 共172页
第8页 / 共172页
资料共172页,剩余部分请下载后查看
AVR单片机GCC程序设计
目录
前言
第一章 概述
1.1 AVR单片机GCC开发概述
1.2 一个简单的例子
1.3 用MAKEFILE管理项目
1.4 开发环境配置
1.5 实验板CA-M8
第二章 存储器操作
2.1 AVR单片机存储器组织结构
2.2 I/O寄存器操作
2.3 SRAM变量使用
2.4 在程序中访问FLASH程序存储器
2.5 EEPROM数据存储器操作
2.6 AVR-GCC段与再定位
2.7 外部RAM的使用
2.8 堆应用
第三章 GCC C编译器的使用
3.1 编译基础
3.2 生成静态连接库
第四章 功能模块编程示例
4.1 中断服务程序
4.2 定时器/计数器应用
4.3 看门狗应用
4.4 UART 应用
4.5 PWM功能编程
4.6 模拟比较器
4.7 A/D转换模块编程
4.8 数码管显示程序设计
4.9 键盘程序设计
4.10 蜂鸣器控制
第五章 使用C语言标准I/O流调试程序
5.1 avr-libc标准I/O流描述
5.2 利用标准I/O流调试程序
5.3 最小化的格式化打印函数
第六章 CA-M8 上实现AT89S52下载编程器
6.1 编程原理
6.2 LuckyProg2004概述
6.3 AT89S52 ISP 功能简介
6.4 下位机程序设计
第七章 硬件TWI端口编程
7.1 TWI模块概述
7.2 主控模式操作实时时钟DS1307
7.3 两个Mega8间的TWI通信
第八章 BootLoader 功能应用
8.1 BootLoader功能介绍
8.2 avr-libc对BootLoader的支持
8.3 BootLoader应用实例
8.4 基于LuckyProg2004的BootLoader程序
第九章 汇编语言支持
9.1 C代码中内联汇编程序
9.2 独立的汇编语言支持
9.3 C与汇编混合编程
第十章 C++语言支持
附录1 命令avr-gcc选项
附录2 Intel Hex 文件格式描述
感谢支持-芯艺
芯 艺 作 品 AVR 单片机 GCC 程序设计 芯 艺 2005-01-01
芯 艺 作 品 请到 http://www.chip-art.net 或 http://chipart.17kl.net 下载最新版本和示例程序 问题反馈: E-mail : chipart@chip-art.net changfutong@sina.com OICQ : 27796915 感谢您的支持!
芯 艺 作 品 前言 第一章 概述 目 录 1.1 AVR 单片机 GCC 开发概述 1.2 一个简单的例子 1.3 用 MAKEFILE 管理项目 1.4 开发环境的配置 1.5 实验板 CA-M8 第二章 存储器操作编程 2.1 AVR 单片机存储器组织结构 2.2 I/O 寄存器操作 2.3 SRAM 内变量的使用 2.4 在程序中访问 FLASH 程序存储器 2.5 EEPROM 数据存储器操作 2.6 avr-gcc 段结构与再定位 2.7 外部 RAM 存储器操作 2.8 堆应用 第三章 GCC C 编译器的使用 3.1 编译基础 3.2 生成静态连接库 第四章 AVR 功能模块应用实验 4.1 中断服务程序 4.2 定时器/计数器应用 4.3 看门狗应用 4.4 UART 应用 4.5 PWM 功能编程 4.6 模拟比较器 4.7 A/D 转换模块编程 4.8 数码管显示程序设计 4.9 键盘程序设计 4.10 蜂鸣器控制 第五章 使用 C 语言标准 I/O 流调试程序 5.1 avr-libc 标准 I/O 流描述 5.2 利用标准 I/0 流调试程序 5.3 最小化的格式化的打印函数 第六章 CA-M8 上实现 AT89S52 编程器的实现
芯 艺 作 品 6.1 编程原理 6.2 LuckyProg2004 概述 6.3 AT989S52 isp 功能简介 6.4 下位机程序设计 第七章 硬件 TWI 端口编程 7.1 TWI 模块概述 7.2 主控模式操作实时时钟 DS1307 7.3 两个 Mega8 间的 TWI 通信 第八章 BootLoader 功能应用 8.1 BootLoader 功能介绍 8.2 avr-libc 对 BootLoader 的支持 8.3 BootLoader 应用实例 8.4 基于 LuckyProg2004 的 BootLoader 程序 第九章 汇编语言支持 9.1 C 代码中内联汇编程序 9.2 独立的汇编语言支持 9.3 C 与汇编混合编程 第十章 C++语言支持 附录 1 avr-gcc 选项 附录 2 Intel HEX 文件格式描述
芯 艺 作 品 前 言 2000 年在学校我第一次接触 Linux,那时在班里学习做网页的气 氛较浓,我也是为了学习 PHP 才认识 Linux 的。PHP 解析器的安装 过程让我多多少少对 GCC 有了些认识,不过当时我并没有意识到它 还可以用于嵌入式系统编程上,至于 Linux 、认为用处只在于架构一 个免费的 WEB 站点。 2002 年在公司我第一次接触了 AVR,当时公司只有一个 ICC 序列 号,导致我和一个同事经常抢用一台机器,不过这种状况没有持续多 久,我在浏览双龙的数据光盘时发现一个叫“如何使用 AVR-GCC” 的 PDF 文档,上面没有署名,我想我应该感谢该文的作者。我发现 这个免费的编译软件远比 ICC 好用。 今天,我把使用 AVR-GCC 两年来的体会写在这里,愿更多的人 了解和使用 GCC 及自由软件。 水平有限,错误和缺陷在所难免,请广大读者批评指正。 作者:芯 艺 2004-12-13 于内蒙古包头 5
芯 艺 作 品 声明: 1.内容中所有的示例均在硬件上调试通过 2.请不要编辑内容和示例程序,发现错误 和作者联系 3.所有的引用请注明出处 4.对使用本软件后的一切后果,本人不负 任何责任 6
芯 艺 作 品 第一章 概 述 1.1 AVR 单片机 GCC 开发概述 一 AVR 单片机介绍 诞生: 1997 年 ATMEL 公司挪威设计中心的 A 先生和 V 先生出于市场需求的考虑推出了全新 配置的 8 位精减指令集微处理器(RISC-Reduced Instrction Sot CPU)。起名为AVR。 系列和主流: AVR是一种指令内核的统称,它内部又分ATtiny、AT90S和ATmega三大系列,分别对 应AVR的低、中、高档产品。Attiny系列中常用的有Attiny15、Attiny2313等产品,AT90S 系列中常用的有AT90S2313、AT90S8535、AT90S8515等。AT90S2313引脚兼容AT89C2051, 而AT90S8515的引脚则兼容51单片机,在设计中很容易的替代51单片机。但是到目前,AT90S 系列的绝大部分已停产,当某一个AT90S系列芯片停产时ATMEL通常会在ATMega或ATtiny 系列中推出一个新的替代产品,替代产品往往在引脚兼容的基础上内部资源和性能得到加 强。例如Attiny2313作为AT90s2313的替代产品在AT90S2313的基础上增加了片内标定振荡 器、增强型上电复位、可编程的掉电检测等等多种功能。类似的ATMega8515和ATMega8535 分别作为AT90S8515和AT90S8535的替代产品继承了很多Mega系列的特性。 ATMega48/88/168、ATMega8、ATMega16、ATMega32、ATMega64 和 ATMega128 是 ATMega 系列的主流产品。值得关注的是 ATMega8 这一款单片机,它以丰富的片内资源、 低廉的价格深受广大设计人员的喜爱,并在国内得到了较好的推广。然而 ATMega48/88/168 作为它的兼容产品,为用户提供更多功能的选择。 ATMega16 也是个用量较多的器件,它的引脚兼容 AT90S8535,可以取代产品中的 8535 芯片。相对 ATMega8 它除了 I/O 引脚多之外内部集成了 ATMega8 两倍(16K)的 FLASH 程序存储器。 随着国内 AVR 用户的增多,ATMEL 也开始了主流器件数据手册的中文翻译工作。从网 络上可以找到 Attiny2313、ATMega48/88/168、ATMega8、ATMega16、ATMega32、ATMega64 等器件的官方翻译中文数据手册。这对学习和使用 AVR 器件提供了很大的帮助。 硬件结构: 有关 AVR 硬件结构,各功能模块的描述请参考数据手册或相关的书籍。 开发工具: 更适合采用高级语言开发是 AVR 单片机最初设计时的目的之一。目前 AVR 单片机高级 语言发发工具主要有 IAR C、WINAVR、ICCAVR、CodeVision、BASCOM-AVR(BASIC 语 言)。IAR 是与 AVR 内核协同开发的,很多对 AVR 更适合 C 语言开发方面的改进是根据 IAR 开发过程的,它也是 ATMEL 公司推荐的 C 语言编译器,但它的价格几呼让人难以接受,达 到上万元人民币。ICCAVR 是国内 AVR 主要推广单位双龙公司代理的 C 编译器,它价格低 廉,性能也 XX,友好的界面把很多烦琐的项目管理和编译设置隐藏了起来,为此它受部分 开发人员的欢迎。CodeVision 也是个很不错的 C 编译器,目前在国内也有一定数量的用户。 Winavr 是个免费的 AVR 开发程序集,它以著名的自由软件 GCC 为 C/C++编译器。下面所 1
芯 艺 作 品 有章节我都会介绍如何使用 WINAVR 开发 AVR 单片机。 学习 GCC 的意义绝不仅仅是为了 开发 AVR 程序,正如 21ICBBS 上一位网友所说:“如果其它编译器是一棵树,那么 GCC 就 是个树林”,GCC 支持多种处理器,包括 ARM、DSP、X86 等 32 位 CPU。它的历史足以说 明它是个成熟的编译器。 如果不是个业余的程序开发人员,我不会建议你使用 BASIC 编写 AVR 程序,因为我们 在编写与硬件密切相关的单片机程序时通常需要想象编译器是如何将这些代码翻译成汇编 程序的,而 C 更适合我们去这样做。 二 GCC 编译器 UNIX 上最原始的 C 编译器叫 CC(C Compiler C 编译器),源于此 GNU 的 C 编译器 叫作 GCC(GNU C Compiler),然而,随着 GCC 支持语言的增加 GCC 这个缩写的意义已演 变成了 GNU 编译器集合(GNU Compiler Collection),它是 GNU 项目的一个产品,是个开 放源代码软件。 GCC 可编译多种语言,目前支持的语言有 C、C++、Objective-C、Fortran、java 和 Ada。 这些高级语言程序通过编译程序前端(front-end)后产生解析树,之后与器件相关的后 端(back-end)程序将它们解释成实际的可执行指令集。前端与后端是完全分开的,解析树 是它们中间的产物。GCC 这样的设计使得任何一种语言只要通过合适的语法解析器产生符 合格式的解析树,就可以产生 GCC 后端程序所支持的所有器件上的可执行指令集。同样的, 任何一种器件只要将树结构翻译成汇编,就可以使用 GCC 前端所支持的所有语言。 要承认的是,以上描述是理论化的,便于理解,实际操作并没有想象的那么简单。事实 上前端和后端都不是孤立的。幸运的是 AVR 的确得到了 GCC 的支持,它也是 GCC 支持的 唯一一种 8 位处理器。不仅如此,我们还可以在 WINDOWS 平台上安装程序包 WINAVR 来 使用 GCC 的 AVR C/C++编译程序。 WINAVR 是一组开放源代码的程序集,用于 ATMEL 公司 AVR 系列单片机的开发,它 主要包含: 1. GNU 程序包 Binutils GNU Binutils 非常庞大,WINAVR 仅包含与 AVR 相关的部分,有 AVR 汇编器、连 接器以及与机器指令相关的一些工具 2. GNU GCC 的 C 和 C++编译器。 3. AVR-LIBC AVR-LIBC 是 AVR 单片机 C 运行时库, 它是为应用程序提供标准 C 函数的连接时 定位库。 另外 WINAVR 还包含软件调试器、器件编程软件、文件格式转换工具等多个有用工具, 这 里 不 一 一 列 出 , 请 参 考 WINAVR 说 明 文 档 。 WINAVR 项 目 的 WEB 地 址 是 http://sourceforge.net/projects/winavr ,这里可以下载最新的版本,并可订阅邮件组。 邮件组 是获取 WINAVR 相关帮助信息的重要途径。 2
分享到:
收藏