找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9266|回复: 10
收起左侧

好书推荐:AVR单片机GCC程序设计

  [复制链接]
ID:289177 发表于 2018-3-8 14:20 | 显示全部楼层 |阅读模式
AVR单片机GCC程序设计的目录:
0.png
4.9  键盘程序设计
4.10 蜂鸣器控制

第五章 使用 C 语言标准 I/O 流调试程序
5.1  avr-libc 标准I/O 流描述
5.2  利用标准 I/0 流调试程序
5.3  最小化的格式化的打印函数

第六章 CA-M8 上实现 AT89S52 编程器的实现
0.png
前    言

2000年在学校我第一次接触 Linux,那时在班里学习做网页的气氛较浓,我也是为了学习 PHP 才认识 Linux 的。PHP 解析器的安装过程让我多多少少对 GCC 有了些认识,不过当时我并没有意识到它还可以用于嵌入式系统编程上,至于 Linux 、认为用处只在于架构一个免费的WEB站点。
2002 年在公司我第一次接触了AVR, 当时公司只有一个 ICC 序列号,导致我和一个同事经常抢用一台机器,不过这种状况没有持续多久,我在浏览双龙的数据光盘时发现一个叫“如何使用 AVR-GCC”的 PDF 文档,上面没有署名,我想我应该感谢该文的作者。我发现这个免费的编译软件远比ICC好用。
今天,我把使用 AVR-GCC 两年来的体会写在这里,愿更多的人了解和使用GCC及自由软件。
水平有限,错误和缺陷在所难免,请广大读者批评指正。

作者:芯 艺
2004-12-13   
于内蒙古包头

第一章   概  述

1.1  AVR 单片机 GCC 开发概述
一 AVR 单片机介绍
诞生:
1997 年 ATMEL 公司挪威设计中心的 A 先生和 V 先生出于市场需求的考虑推出了全新配置的 8 位精减指令集微处理器(RISC-Reduced Instrction Sot CPU) 。起名为AVR。

系列和主流:
  AVR是一种指令内核的统称,它内部又分ATt iny、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++编译器。下面所有章节我都会介绍如何使用 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 项目的
0.png

这是一个使接在 PB0 口的 LED 发光管闪烁的程序。有了源程序文件 demo1.c,我们就可以编译它了。通过点击菜单开始->运行  在弹出的对话框中输入  “ command ” ,来打开控制台窗口,并在命令行输入:

avr-gcc  –mmcu=at90s2313  –c  demo1.c     

如图 1-1 所示。

  必需告诉编译器  程序的 MCU 类型,这是我们通过命令行选项-mmcu 来指定的,我们指定的器件为 at90s2313。-c  选项告诉编译器编译完成后不连接。
0.png

由于这里不能上传 大家可以图书馆借阅此书或者从百度获取

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:259979 发表于 2018-3-9 22:45 来自手机 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

ID:91521 发表于 2018-6-15 08:45 | 显示全部楼层
很好的资料,谢谢分享!
回复

使用道具 举报

ID:436702 发表于 2018-12-18 10:13 | 显示全部楼层
好书,谢谢分享!
回复

使用道具 举报

ID:120111 发表于 2019-4-26 05:36 来自手机 | 显示全部楼层
好的资料,谢谢分享
回复

使用道具 举报

ID:156302 发表于 2019-6-11 15:37 | 显示全部楼层
谢谢分享。正需要
回复

使用道具 举报

ID:373720 发表于 2019-6-14 17:35 | 显示全部楼层
谢谢分享。正需要
回复

使用道具 举报

ID:645551 发表于 2019-11-20 09:21 | 显示全部楼层
谢谢分享,。
回复

使用道具 举报

ID:486426 发表于 2019-11-20 16:44 | 显示全部楼层

很好的资料,谢谢分享!
回复

使用道具 举报

ID:517951 发表于 2019-12-14 15:02 | 显示全部楼层

很好的资料,谢谢分享!
回复

使用道具 举报

ID:394041 发表于 2020-3-25 17:03 | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表