1、内容提要内容提要随着随着AVR单片机的日益普及,目前有多种编译及下单片机的日益普及,目前有多种编译及下载软件提供对载软件提供对AVR系列单片机的支持。在本章中,系列单片机的支持。在本章中,介绍了介绍了SL-ISP1.518和和PonyProg2000两种下载程序软两种下载程序软件,详细讲解软件的使用方法,说明如何操作软件件,详细讲解软件的使用方法,说明如何操作软件进行单片机软件编写下载。对于进行单片机软件编写下载。对于AVR单片机的编译单片机的编译器也作了详细的介绍,简单描述了如何使用编译器器也作了详细的介绍,简单描述了如何使用编译器建立一个新工程,以及各个功能的使用方法,最后建立一个新工程,
2、以及各个功能的使用方法,最后还介绍一些常用的单片机小工具。还介绍一些常用的单片机小工具。9.1 单片机程序下载及集成开发环境单片机程序下载及集成开发环境 9.1.1单片机下载方式简介单片机下载方式简介 AVR单片机支持普通串口方式、单片机支持普通串口方式、STK500方式、方式、并口(并口(SPI)方式及)方式及USB方式等多种下载方式。方式等多种下载方式。普通串口方式的速度快,但支持的软件不多。普通串口方式的速度快,但支持的软件不多。连连ATmel公司的公司的 AVR Studio 内的内的 AVR pro也也停止了更新。因此,普通串口方式不支持最停止了更新。因此,普通串口方式不支持最新的芯
3、片。新的芯片。STK500下载为下载为ATmel公司官方推荐的下载方式。公司官方推荐的下载方式。与并口下载方式和与并口下载方式和USB下载方式相对比,下载方式相对比,STK500具有速度快,具有速度快,AVR Studio直接支持该下载方式等直接支持该下载方式等优点。优点。并且,只要并且,只要AVR studio 发布新版本,该下载方式发布新版本,该下载方式支持的器件就同步更新,不会发生不支持新器件支持的器件就同步更新,不会发生不支持新器件的情况。的情况。STK500方式也有其缺点:价格较高。方式也有其缺点:价格较高。目前仿造目前仿造ATmel公司的公司的STK500下载线的售价也在下载线的售
4、价也在百元以上。因此,该方法不适合在教学中使用。百元以上。因此,该方法不适合在教学中使用。并口下载方式利用并口下载方式利用PC机的并口(俗称打印口)进行机的并口(俗称打印口)进行程序下载。其下载速度要明显慢于程序下载。其下载速度要明显慢于STK500方式。方式。但在教学应用中,由于选用的芯片但在教学应用中,由于选用的芯片flash容量不大,容量不大,并且对下载速度要求不高,并口下载线是一个很好并且对下载速度要求不高,并口下载线是一个很好的选择。较之串口下载方式和的选择。较之串口下载方式和STK500下载方式,下载方式,并口下载线成本低,有较多软件支持,适合大范围并口下载线成本低,有较多软件支持
5、,适合大范围推广。推广。并口下载线的制作方法有很多,读者可以在网络上并口下载线的制作方法有很多,读者可以在网络上下载到多个版本的原理图。这里,推荐一种简单实下载到多个版本的原理图。这里,推荐一种简单实用的接线方式,其原理图如图用的接线方式,其原理图如图9.1所示:所示:图图9.1 并口下载线原理图并口下载线原理图123456ABCD654321DCBATitleNumberRevisionSizeBDate:6-Jul-2007 Sheet of File:F:ATmega 单片机C语言教程 编书ATmega 单片机编书ATmag图第9章下载线3.DDBDrawn By:11421531641
6、751861972082192210231124122513J1DB25123456J1CON1GNDRESMOSIMISOSCKVCCSCKMOSIRESMISOD1A02A13A24A35A46A57A68A79B018B117B216B315B414B513B612B711E19DIR1GND10VCC2074ALS245VVGND 支持并口下载线的软件很多。比较常用的有支持并口下载线的软件很多。比较常用的有ProgPony及双龙公司的及双龙公司的SL-ISP等。由于对软件的等。由于对软件的支持不足,并口下载软件通常不能像支持不足,并口下载软件通常不能像STK500那样那样对新的器件立即
7、支持。对新的器件立即支持。以以ProgPony为例,作为一个免费的下载软件,为例,作为一个免费的下载软件,ProgPony2000之后还未见新版本出现。但用于教之后还未见新版本出现。但用于教学中的主流芯片,各个版本的并口下载软件均给学中的主流芯片,各个版本的并口下载软件均给予较好的支持。予较好的支持。因此,在教学中,使用并口下载软件和并口下载因此,在教学中,使用并口下载软件和并口下载线是一个较好的选择。线是一个较好的选择。笔者通过对比使用,认为目前较好的并口笔者通过对比使用,认为目前较好的并口下载软件是双龙公司的下载软件是双龙公司的SL-ISP最新版本最新版本SL-ISP1.518。作为一个免
8、费的软件,读者可以。作为一个免费的软件,读者可以到双龙公司的主页:到双龙公司的主页:进行免进行免费下载。费下载。图图9.2为为SL-ISP1.518的主界面。在主界面中,可的主界面。在主界面中,可以设置芯片型号、通信接口、下载速度、程序存以设置芯片型号、通信接口、下载速度、程序存储器文件、数据存储器文件、编程选项、加密模储器文件、数据存储器文件、编程选项、加密模式等。通过主界面还可以对芯片进行擦除、编程、式等。通过主界面还可以对芯片进行擦除、编程、校验、读取等操作。只要在编程选项中进行相应校验、读取等操作。只要在编程选项中进行相应的设置,通过按键便可以实现一键编程,的设置,通过按键便可以实现一
9、键编程,不需每次更改程序后都重载程序。不需每次更改程序后都重载程序。图图9.2 SL-ISP1.518的主界面的主界面 在对在对AVR单片机进行编程的时候,首先要对熔丝单片机进行编程的时候,首先要对熔丝位进行相应的配置。熔丝位的配置决定了单片机位进行相应的配置。熔丝位的配置决定了单片机工作的频率。如果熔丝位配置错误造成单片机工工作的频率。如果熔丝位配置错误造成单片机工作频率与给定频率不一致,会引起单片机工作不作频率与给定频率不一致,会引起单片机工作不稳定甚至锁死的现象发生。稳定甚至锁死的现象发生。SL-ISP1.518版本中,版本中,增添了增添了STK500的熔丝位配置界面,可以不必记忆的熔丝
10、位配置界面,可以不必记忆熔丝位配置组合,直接选定所需的频率范围进行熔丝位配置组合,直接选定所需的频率范围进行熔丝位配置。如图熔丝位配置。如图93所示,在编程选项中的所示,在编程选项中的前打勾,便会弹出前打勾,便会弹出“配置熔丝设置配置熔丝设置”对话框。对话框。图图9.3 配置熔丝位配置熔丝位 配置熔丝设置对话框如图配置熔丝设置对话框如图9.4所示。通过该对话框所示。通过该对话框可以对单片机的熔丝位直接进行设置,也可以点可以对单片机的熔丝位直接进行设置,也可以点击击“设置导航设置导航”按键开启类似按键开启类似STK500的熔丝位设的熔丝位设置界面对熔丝位进行设置。建议初学者选择第二置界面对熔丝位
11、进行设置。建议初学者选择第二种配置方式。种配置方式。图图9.4 配置熔丝设置对话框配置熔丝设置对话框SL-ISP1.518的的STK500的熔丝位设置如图的熔丝位设置如图9.5所示。所示。只需选中相应的配置组合即可。只需选中相应的配置组合即可。目前还有较为流行的一款并口下载软件目前还有较为流行的一款并口下载软件PonyProg2000,同样作为一款免费的软件,同样作为一款免费的软件,读者可以从读者可以从http:/www.LancOS.com下载。下载。该软件操作简单,人机界面比较直观,对该软件操作简单,人机界面比较直观,对于新学者来说比较容易上手,下面具体来于新学者来说比较容易上手,下面具体
12、来介绍下该软件的应用方法。介绍下该软件的应用方法。图图9.6为为PonyProg2000的主界面。在主界面中,与的主界面。在主界面中,与双龙相似,同样可以设置芯片型号、通信接口、双龙相似,同样可以设置芯片型号、通信接口、下载速度、程序存储器文件、数据存储器文件、下载速度、程序存储器文件、数据存储器文件、编程选项、加密模式等。通过主界面还可以对芯编程选项、加密模式等。通过主界面还可以对芯片进行擦除、编程、校验、读取等操作。只要在片进行擦除、编程、校验、读取等操作。只要在编程选项中进行相应的设置,通过按键便编程选项中进行相应的设置,通过按键便可以实现一键编程,不需每次更改程序后都重载可以实现一键编
13、程,不需每次更改程序后都重载程序。程序。图图9.6 PonyProg2000的主界面的主界面 如图所示的打开文件一栏,点击后输入目如图所示的打开文件一栏,点击后输入目标程序地址,再将单片机的类型选择成所标程序地址,再将单片机的类型选择成所用的类型,一般习惯上先擦写一次用的类型,一般习惯上先擦写一次CPU,将原来的程序擦除,再点击图中下载程序将原来的程序擦除,再点击图中下载程序的按键,就可以将程序下载入单片机内了。的按键,就可以将程序下载入单片机内了。这里我们来介绍下一键编程的操作,点击主页面菜这里我们来介绍下一键编程的操作,点击主页面菜单中的功能栏中的键,会出现如图单中的功能栏中的键,会出现如
14、图9.7一键编程的操一键编程的操作界面界面。作界面界面。如图所示,点击阴影命令后会出现右边的界面,用如图所示,点击阴影命令后会出现右边的界面,用来设置一键编程的操作指令,图中所勾选的为一般来设置一键编程的操作指令,图中所勾选的为一般设置的指令,先调取程序、擦除旧程序、写入新程设置的指令,先调取程序、擦除旧程序、写入新程序。设置后,以后再编程时就可以只点击就可以完序。设置后,以后再编程时就可以只点击就可以完成程序的下载工作了,非常简便,推荐读者使用。成程序的下载工作了,非常简便,推荐读者使用。点击会出现如图点击会出现如图9.8所示的界面,可以参照图所示的界面,可以参照图9.5进行进行设置。设置。
15、9.2单片机编译器和集成环境的介绍单片机编译器和集成环境的介绍 作为一种当前应用较广泛的单片机,有多种集成作为一种当前应用较广泛的单片机,有多种集成开发环境支持对开发环境支持对AVR单片机的程序开发。由于单片机的程序开发。由于C语言在单片机设计中具有直观、可读性强、程序语言在单片机设计中具有直观、可读性强、程序移植容易等优点,在本书中,将着重介绍移植容易等优点,在本书中,将着重介绍AVR单单片机基于片机基于C语言的编译器和集成环境。语言的编译器和集成环境。由于由于WinAVR脱胎于脱胎于GCC,因此不可避免的一些,因此不可避免的一些操作会与大部分用户熟悉的操作会与大部分用户熟悉的Windows
16、的操作方式的操作方式有 所 不 同。为 了 解 决 这 个 问 题,晶 士 电 子有 所 不 同。为 了 解 决 这 个 问 题,晶 士 电 子(Atman Electronics)开发了一个基于)开发了一个基于WinAVR的中文集成开发环境的中文集成开发环境AtmanAvr。通过。通过AtmanAvr C IDE用户可以以熟悉的用户可以以熟悉的Windows操作操作界面及操作方式对界面及操作方式对AVR单片机进行开发。读者可单片机进行开发。读者可以 通 过 登 录 晶 士 电 子 的 主 页:以 通 过 登 录 晶 士 电 子 的 主 页:http:/ C IDE除了集成中文的除了集成中文的
17、Windows操作界操作界面外,笔者认为其最大的优点在于其帮助文件。面外,笔者认为其最大的优点在于其帮助文件。在在AtmanAvr C IDE的主界面中,可以通过按的主界面中,可以通过按“F1”键调用该帮助文件。通过该帮助文件,可键调用该帮助文件。通过该帮助文件,可以获取关于以获取关于AtmanAvr C IDE的全部信息,其中甚的全部信息,其中甚至包括至包括C语言的介绍。同时,该帮助文件对每个语言的介绍。同时,该帮助文件对每个函数的用法都以实例演示,方便用户使用。相信函数的用法都以实例演示,方便用户使用。相信读者通过该帮助文件能很快的掌握读者通过该帮助文件能很快的掌握AtmanAvr C I
18、DE的使用。的使用。就就C语言而言,目前常见的集成开发环境有语言而言,目前常见的集成开发环境有WinAVR、AtmanAvr、ICCAVR及及IARAVR等多等多种。其中,种。其中,WinAVR是将是将Unix操作系统中的操作系统中的GCC移植到移植到Windows操作系统中的一个操作系统中的一个AVR单片机的单片机的集成编译环境。集成编译环境。WinAVR是一个一个完全免费的是一个一个完全免费的软件,在软件,在AVR用户中是使用最多的。读者可以通用户中是使用最多的。读者可以通过下面的链接免费下载最新版本的过下面的链接免费下载最新版本的WinAVR集成集成开发环境:开发环境:http:/ 可以
19、直接运行光盘上可以直接运行光盘上setup.exe安装程序进行安装,安装程序进行安装,有以下几种方法:有以下几种方法:方法方法1:(l)打开)打开“我的电脑我的电脑”;(2)打开光盘驱动器所对应的盘符;)打开光盘驱动器所对应的盘符;(3)双击光盘中文件)双击光盘中文件“setup.exe”的图标;的图标;(4)按照屏幕提示选定一个安装路径后进行安装。)按照屏幕提示选定一个安装路径后进行安装。默认的安装路径为默认的安装路径为“C:ATMAN”,一般情况,一般情况选默认的安装位置。选默认的安装位置。方法方法2:(l)在开始菜单中选择)在开始菜单中选择“运行运行”命令;命令;(2)在 运 行 对 话
20、 框 中 输 入)在 运 行 对 话 框 中 输 入“d r i v e :Setupexe;注意,注意,“drive”对应机器中的光盘驱动器盘符,对应机器中的光盘驱动器盘符,如果光盘为如果光盘为F盘,则填入盘,则填入“f:setupexe”;(3)按)按“确定确定”键开始安装;键开始安装;(4)按照屏幕提示,选定一个安装路径后进行安装。)按照屏幕提示,选定一个安装路径后进行安装。方法方法3:由于由于ATMANAVR升级较快,光盘中的安装文件升级较快,光盘中的安装文件并不一定是最新的,可以到晶士公司的网站上并不一定是最新的,可以到晶士公司的网站上(http:/ 电脑屏幕上的图标电脑屏幕上的图标
21、图图9.10 演示版的标题栏演示版的标题栏 按上述方法安装后,在电脑屏幕上生成如图按上述方法安装后,在电脑屏幕上生成如图9.9的的“AtmanAvr.exe”图标。双击后得到的只是一个演图标。双击后得到的只是一个演示版(标题栏如图示版(标题栏如图9.10所示),演示版只能使用所示),演示版只能使用30天,在天,在30天之内没有使用限制(等同于标准天之内没有使用限制(等同于标准版),超过版),超过30天后,要注册才能使用,正版用户天后,要注册才能使用,正版用户还要进行注册才可以得到一个无使用时间限制的还要进行注册才可以得到一个无使用时间限制的正式版。正式版。注意注意:1旧版旧版ATMANAVR有
22、安装路径的限制(即安装有安装路径的限制(即安装路径中不能有空格或中文,否则不能正常编译),路径中不能有空格或中文,否则不能正常编译),在在ATMANAVR5.8.1版及更新的版本中,对安装版及更新的版本中,对安装的路径则没有任何限制,可以安装在任意文件夹的路径则没有任何限制,可以安装在任意文件夹中。中。2如果硬盘上原先已安装过如果硬盘上原先已安装过ATMANAVRATMANAVR演示版且尚演示版且尚未到期(未到期(3030天免费试用期),此时重新安装天免费试用期),此时重新安装ATMANAVRATMANAVR,则软件会自动终止免费试用,因此在,则软件会自动终止免费试用,因此在演示版演示版303
23、0天的有效期内不能重装天的有效期内不能重装ATMANAVRATMANAVR。如果。如果演示版到期后还需要继续使用演示版软件,只要演示版到期后还需要继续使用演示版软件,只要格式化硬盘后重装格式化硬盘后重装WindowsWindows和和ATMANAVRATMANAVR,又可以再,又可以再使用使用3030天。天。9.3 ATMANAVR编译器简介编译器简介 AtmanAvr C 是为是为 Atmel 公司的公司的 AVR 系列单片机应系列单片机应用用 AVRGCC 编译器而开发的集成开发环境编译器而开发的集成开发环境 IDE。包括向导、文本编辑器和调试器等。它有下几个主包括向导、文本编辑器和调试器
24、等。它有下几个主要特点:要特点:1ATMANAVR是一个综合了编辑器和工程管理器的是一个综合了编辑器和工程管理器的集成工作环境(集成工作环境(IDE),是一个纯),是一个纯32位的程序,可在位的程序,可在Windows 95Windows 98Windows MEWindows NTWindows 2000Windows XP下运行。下运行。2源文件全部被组织到工程之中,文件的编辑和工源文件全部被组织到工程之中,文件的编辑和工程的构筑也在程的构筑也在IDE的环境中完成。的环境中完成。3ATMANAVR是一个是一个32位的程序,支持长文件位的程序,支持长文件名。名。4ATMANAVR提供了全部的
25、库源代码及一些简提供了全部的库源代码及一些简单的应用实例供初学者参考,特别是提供库源代单的应用实例供初学者参考,特别是提供库源代码,对于用户理解库函数的参数及返回值等是非码,对于用户理解库函数的参数及返回值等是非常 有 益 的,并 且 用 户 能 够 根 据 库 源 代 码 对常 有 益 的,并 且 用 户 能 够 根 据 库 源 代 码 对ATMANAVR提供的库函数进行剪裁和扩充。提供的库函数进行剪裁和扩充。ATMANAVR中的文件类型及扩展名中的文件类型及扩展名 文 件 类 型 是 由 它 们 的 扩 展 名 决 定 的,文 件 类 型 是 由 它 们 的 扩 展 名 决 定 的,ATM
26、ANAVR的的IDE和编译器可以使用以下几种类和编译器可以使用以下几种类型文件:型文件:1.输入文件类型输入文件类型 .c扩展名,表示是扩展名,表示是C语言源文件;语言源文件;.s扩展名,表示是汇编语言源文件;扩展名,表示是汇编语言源文件;.h扩展名,表示是扩展名,表示是C语言的头文件;语言的头文件;.prj扩展名,表示是工程文件,这个文件保存由扩展名,表示是工程文件,这个文件保存由IDE所创建和修改与整个工程的有关信息;所创建和修改与整个工程的有关信息;.a扩展名,表示是库文件,它可以由几个库封装在扩展名,表示是库文件,它可以由几个库封装在一起,也可以创建或修改自定义的库。一起,也可以创建或
27、修改自定义的库。2.输出文件类型输出文件类型 .s扩展名,对应每个扩展名,对应每个C语言源文件,由编译器在编语言源文件,由编译器在编译时产生的同名汇编输出文件;译时产生的同名汇编输出文件;.o扩展名,汇编产生的同名目标文件,多个目标文扩展名,汇编产生的同名目标文件,多个目标文件可以链接成一个可执行文件;件可以链接成一个可执行文件;.hex扩展名,扩展名,INTEL HEX格式文件,其中包含了格式文件,其中包含了程序的全部可执行代码;程序的全部可执行代码;.eep扩展名,扩展名,INTEL HEX格式文件,包含了格式文件,包含了EEPROM的初始化数据;的初始化数据;.cof扩展名,扩展名,CO
28、FF格式输出文件,用于在格式输出文件,用于在ATMEL的的AVR Studio环境下进行程序调试;环境下进行程序调试;.lis扩展名,列表文件,列举出了源文件中的全部语扩展名,列表文件,列举出了源文件中的全部语句对应的汇编代码,但变量和代码没完成绝对定句对应的汇编代码,但变量和代码没完成绝对定位。说明:如果使用文件编译方式,则生成该文位。说明:如果使用文件编译方式,则生成该文件的件的.1is文件,如果对整个工程进行编译,则每一文件,如果对整个工程进行编译,则每一个源文件均生成一个与该源文件同名的个源文件均生成一个与该源文件同名的.lis文件。文件。.lst扩展名,列表文件,列举了含启动文件一起
29、编译扩展名,列表文件,列举了含启动文件一起编译生成的全部汇编代码,是整个工程组对定位后的生成的全部汇编代码,是整个工程组对定位后的完整列表文件。说明,如果使用文件编译方式,完整列表文件。说明,如果使用文件编译方式,则生成该文件的则生成该文件的lst文件,如果对整个工程进行文件,如果对整个工程进行编译,则只生成一个与工程同名的编译,则只生成一个与工程同名的lst文件。文件。.mp扩展名,内存映像文件,它包含了程序扩展名,内存映像文件,它包含了程序中有关符号及其所占内存大小的信息;中有关符号及其所占内存大小的信息;.cmd扩展名,扩展名,NoICE 2.xx调试命令文件;调试命令文件;.noi扩展
30、名,扩展名,NoICE 2.xx调试命令文件;调试命令文件;.dbg扩展名,扩展名,ImageCraft调试命令文件。调试命令文件。9.4 AVR存储器的使用存储器的使用 ATMANAVR共包含三种不同类型的存储器空间,共包含三种不同类型的存储器空间,下面分别对其进行介绍。下面分别对其进行介绍。1程序存储器(程序存储器(Flash)程序存储器是用于保存程序代码以及常数表和数程序存储器是用于保存程序代码以及常数表和数据的初始值等的空间。据的初始值等的空间。ATMANAVR编译器可以编译器可以生 成 一 个 对 应 程 序 存 储 器 映 像 的 输 出 文 件生 成 一 个 对 应 程 序 存
31、储 器 映 像 的 输 出 文 件(INTEX HEX文件),大部分编程器均支持用文件),大部分编程器均支持用这个格式的文件对芯片编程。这个格式的文件对芯片编程。由于由于 AVR中的中的 X、Y、Z指针为指针为16位,有效的访位,有效的访问空间为问空间为 64KB,因此在,因此在ATMANAVR编译器中,编译器中,使用普通的使用普通的C程序不能直接访问大于程序不能直接访问大于64KB的程序的程序存储器,为了访问存储器,为了访问64KB以上的存储器(如在以上的存储器(如在Megal28中),应选中中),应选中“Use RAMPZELPM”(Project-Option-Target)前的复选框,
32、并且)前的复选框,并且在设定在设定RAMPZ寄存器后直接调用寄存器后直接调用ELPM指令来访指令来访问问Flash存储器。存储器。编译器生成代码分配到不同的区域编译器生成代码分配到不同的区域“areas”,区,区域按照程序存储器地址增高的顺序被使用,共分域按照程序存储器地址增高的顺序被使用,共分为以下区域:为以下区域:interrupt vectors:这个区域包含中断向量:这个区域包含中断向量 func-lit:函数表区。这个区的每个字保存了函数:函数表区。这个区的每个字保存了函数入口的地址,为了与代码压缩完全兼容,所有间入口的地址,为了与代码压缩完全兼容,所有间接的函数索引必须进行额外对准
33、。如果在接的函数索引必须进行额外对准。如果在C中通中通过函数指针调用函数,编译器可自动完成对准的过函数指针调用函数,编译器可自动完成对准的操作。操作。在汇编中,这个对准必须在用户程序中进行,举例在汇编中,这个对准必须在用户程序中进行,举例如下:如下:area func-1it ;假设;假设-foo是函数的名称是函数的名称 PL-foo:Word-foo ;创建函数表入口创建函数表入口 area text;ldi R30,PL-foo;ldi R31,PL-foo rcall xicall;编程人员应把函数表入口地址先送入编程人员应把函数表入口地址先送入R30、R31寄存寄存器后,才可以使用库函
34、数器后,才可以使用库函数xicall间接调用这个函数。间接调用这个函数。lit:这个区域包括了整型数和浮点数常量。:这个区域包括了整型数和浮点数常量。idata:全局变量和字符串的初始值保存在:全局变量和字符串的初始值保存在这个区域,在启动时,由程序复制到数据这个区域,在启动时,由程序复制到数据存储器的存储器的data区。区。text:这个区域包括程序代码:这个区域包括程序代码。2内部数据存储器(内部数据存储器(SRAM)这个数据存储器是用于保存变量、堆栈和动态内这个数据存储器是用于保存变量、堆栈和动态内存分配的堆栈,通常它们不出现在输出文件中,存分配的堆栈,通常它们不出现在输出文件中,但在程
35、序运行时被使用但在程序运行时被使用。图图9.11 数据内存的使用数据内存的使用 一个没有使用外部扩展数据存储器的程序使用数一个没有使用外部扩展数据存储器的程序使用数据内存如图据内存如图9-11所示,在该图中,从地址所示,在该图中,从地址0开始的开始的96个字节个字节(0 x60)是)是CPU寄存器和寄存器和IO寄存器,编寄存器,编译器从译器从96往上放置全局变量和字符串,在变量区往上放置全局变量和字符串,在变量区域的顶部是用户可以利用的分配动态内存,在高域的顶部是用户可以利用的分配动态内存,在高端地址,硬件堆栈开始于端地址,硬件堆栈开始于SRAM的最高字节,在的最高字节,在它的下面是软件堆栈,
36、硬件堆栈和软件堆栈均为它的下面是软件堆栈,硬件堆栈和软件堆栈均为向下生长型。要求程序员在设计程序时要确保硬向下生长型。要求程序员在设计程序时要确保硬件堆栈不生长进软件堆栈,而软件堆栈不生长进件堆栈不生长进软件堆栈,而软件堆栈不生长进已分配数据的动态分配区中,否则将会导致意外已分配数据的动态分配区中,否则将会导致意外的结果。的结果。编译器生成数据分配到不同的区域编译器生成数据分配到不同的区域“areas”,区,区域按照数据存储器的地址增高的顺序使用,共分域按照数据存储器的地址增高的顺序使用,共分为以下区域:为以下区域:data:是包含全局变量、静态变量和字符串的数:是包含全局变量、静态变量和字符
37、串的数据区域。全局变量和字符串的初始值保存在程序据区域。全局变量和字符串的初始值保存在程序存储器的存储器的“idata”区域内,在启动时被复制进区域内,在启动时被复制进data数据区的。数据区的。bss:这个区域包含末初始化的:这个区域包含末初始化的 C全局变量,按全局变量,按 ANSIC标准这些变量在启动时将初始化为标准这些变量在启动时将初始化为0。3外部数据存储器(外部数据存储器(SRAM)如果选择带有外部如果选择带有外部SRAM(32K或或64KB)的目标)的目标器件,那么堆栈是放置在内部器件,那么堆栈是放置在内部SRAM的顶部并且的顶部并且朝低端内存地址生长,数据内存朝低端内存地址生长
38、,数据内存(图图9.8中的动态分中的动态分配内存区域)是开始于硬件堆栈的顶部配内存区域)是开始于硬件堆栈的顶部(即外部即外部SRAM的底部)并且向上生长,这样分配的原因的底部)并且向上生长,这样分配的原因是在多数场合访问内部是在多数场合访问内部SRAM比访问外部比访问外部SRAM的的速度要快,分配堆栈到较快的内存有很多好处。速度要快,分配堆栈到较快的内存有很多好处。EEPROM:这个区域包含:这个区域包含EEPROM数据,数据,ATMANAVR编译器将需要置于编译器将需要置于EEPROM数据写进扩展名为数据写进扩展名为.eep的输出文件中,在对的输出文件中,在对AVR芯片编程时将该文件写入芯片
39、的芯片编程时将该文件写入芯片的EEPROM存储器中。存储器中。4EEPROM存储器存储器9.5启动文件启动文件 在一些特殊的应用中,如用户需判断单片机是上在一些特殊的应用中,如用户需判断单片机是上电复位还是由其他原因引起复位(如看门狗等),电复位还是由其他原因引起复位(如看门狗等),并且针对不同的复位情况采取不同的对策,这时并且针对不同的复位情况采取不同的对策,这时用户可能需要使用自己的启动文件,在用户可能需要使用自己的启动文件,在IAR中需中需要修改相应的要修改相应的XCL文件才能实现改变启动文件的文件才能实现改变启动文件的目的,目的,ATMANAVR和和CodeVsionAVR在工程属性在
40、工程属性窗口中可以直接指定使用外部的启动文件。窗口中可以直接指定使用外部的启动文件。根据目标根据目标MCU的种类和功能,的种类和功能,ATMANAVR编译编译器将从下面默认的启动文件中选择一个。器将从下面默认的启动文件中选择一个。crtavr:o:非非ATmega类芯片默认的启动文件。类芯片默认的启动文件。crtatmega.o:AT mega类芯片默认的启动文件。类芯片默认的启动文件。ATMANAVR也提供了下面四种常用的启动文件,也提供了下面四种常用的启动文件,用 户 可 以 在 工 程 选 项 对 话 框 中(用 户 可 以 在 工 程 选 项 对 话 框 中(P roje c t-OP
41、htions-Target-Non Default startup)指定)指定一个启动文件(或用户自定义的启动文件),应一个启动文件(或用户自定义的启动文件),应注意必须指定启动文件的绝对路径,如果没有指注意必须指定启动文件的绝对路径,如果没有指出启动文件的路径,则默认启动文件位于工程选出启动文件的路径,则默认启动文件位于工程选项 库 路 径 所 指 定 的 目 录 中(默 认 为项 库 路 径 所 指 定 的 目 录 中(默 认 为c:atmanavrlib)。)。crtavrram.c:与:与 crtavr.o相比,增加了初始化外部相比,增加了初始化外部 SRAM。crtatmgaram.
42、o:与:与 crtatmega.o相比,增加了初始化外相比,增加了初始化外部部 SRAM。crtboot.o:与:与crtavr.o相比,增加了相比,增加了bootloader的内容,的内容,只有只有ATmega类的芯片才能选用。类的芯片才能选用。Crtboothi.o:与:与 crtboot。相比,增加了使用。相比,增加了使用ELPMRAMPZ内容,一般在需要读取大于内容,一般在需要读取大于64KB字节存储器中的字节存储器中的常数表格或字符串时才用。常数表格或字符串时才用。上面的非上面的非ATmega类芯片的每一个中断入口地址使用一个类芯片的每一个中断入口地址使用一个字(字(2个字节),而个
43、字节),而ATmega类的每个中断入口地址使用类的每个中断入口地址使用2个字(个字(4个字节),因此两种芯片的启动文件不能混用。个字节),因此两种芯片的启动文件不能混用。启动文件的功能有:启动文件的功能有:1初始化硬件和软件堆栈指针。初始化硬件和软件堆栈指针。2从从idata区复制初始化数据到直接寻址数据区复制初始化数据到直接寻址数据区区data区。区。3将将bss区全部初始化为零。区全部初始化为零。4启动文件定义了一个全局符号启动文件定义了一个全局符号“-start”,它,它是程序的起点。是程序的起点。5调用用户主程序。调用用户主程序。6定义一个退出点,即定义为一个无限循环。定义一个退出点,
44、即定义为一个无限循环。如果主函数如果主函数(main)一旦退出,它将进入这个退)一旦退出,它将进入这个退出点进行无限循环。出点进行无限循环。下面简单介绍如何修改和创建一个新的启动文件:下面简单介绍如何修改和创建一个新的启动文件:使用使用ATMANAVR的的IDE或或UlterEdit32打开需要修打开需要修改的启动文件(改的启动文件(crtavr.s、crtatmega.s或其他文或其他文件),对启动文件进行相应的修改并保存,如果用件),对启动文件进行相应的修改并保存,如果用UlterEdit32软件编辑,应退出软件编辑,应退出UlterEdit32软件并用软件并用IDE调用修改后的启动文件,
45、在调用修改后的启动文件,在IDE中选择中选择“File”菜单的菜单的“Compile File To-Stmp File To Object”,生成相应的目标文件(生成相应的目标文件(crtavr.o、crtatmega.o或其或其他的文件名)。他的文件名)。9.6 ATMANAVR菜单解释菜单解释 本章的菜单是按本章的菜单是按ATMANAVR5.8.1介绍的,其他介绍的,其他版本的菜单可能会与本章介绍的略有不同。在介版本的菜单可能会与本章介绍的略有不同。在介绍某单前,读者应先了解以下关于文件的几种说绍某单前,读者应先了解以下关于文件的几种说法:法:活动的文件:是指打开的当前正在编辑的文件;活
46、动的文件:是指打开的当前正在编辑的文件;打开的文件:是指已调入打开的文件:是指已调入IDE环境中的文件。环境中的文件。可以是活动的文件(正在编辑),也可以可以是活动的文件(正在编辑),也可以 是放在后台的文件;是放在后台的文件;没有打开的文件:是指该文件保存在硬盘上,没有打开的文件:是指该文件保存在硬盘上,没有调入没有调入IDE环境。环境。1、文件、文件 菜单菜单 文件文件 菜单如图菜单如图 9.12 所示。所示。新建新建:创建一个新文件或新工程,使用此命令,创建一个新文件或新工程,使用此命令,会弹出对话框由用户选择是建立文件还是工程,会弹出对话框由用户选择是建立文件还是工程,及文件或工程的类
47、型和创建位置等及文件或工程的类型和创建位置等。打开打开:打开一个已存在的文件,如果是打开一个已存在的文件,如果是.aws 文件,文件,将打开整个工程。将打开整个工程。关闭关闭:关闭当前被打开的文件。关闭当前被打开的文件。打开工作区打开工作区:打开一个已存在的工作区(打开一个已存在的工作区(.aws 文文件)。件)。保存工作区保存工作区:保存当前被打开的工作区。保存当前被打开的工作区。工作区另存为:把当前被打开的工作区另存为一工作区另存为:把当前被打开的工作区另存为一个新的版本保存到一个新的目录,同时打开该新个新的版本保存到一个新的目录,同时打开该新工作区。工作区。关闭工作区关闭工作区:关闭当前
48、被打开的工作区。关闭当前被打开的工作区。保存保存:保存当前文件。保存当前文件。另存为另存为:当前文件另存为新文件。当前文件另存为新文件。全部保存全部保存:保存当前所有打开的文件,包括工作保存当前所有打开的文件,包括工作区。区。打印打印:打印当前文件的全部或选定部分。打印当前文件的全部或选定部分。页面设置页面设置:设置打印文件页面。设置打印文件页面。最近的文件最近的文件:最近打开的文件列表,利于用户查最近打开的文件列表,利于用户查看和重新打开。看和重新打开。最近的工作区最近的工作区:最近打开的工作区列表,利于用最近打开的工作区列表,利于用户查看和重新打开。户查看和重新打开。退出退出:退出退出 A
49、tmanAvr C。2.编辑编辑 菜单菜单 编辑编辑 菜单如图菜单如图 9.13 所示。所示。撤消撤消:撤消上一次编辑操作。撤消上一次编辑操作。重复重复:重复上一次编辑操作。重复上一次编辑操作。剪切剪切:剪切当前选中的文档内容或项目。剪切当前选中的文档内容或项目。复制复制:复制当前选中的文档内容。复制当前选中的文档内容。粘贴粘贴:在当前位置插入剪切板中的内容。在当前位置插入剪切板中的内容。全部选择全部选择:选中当前文档的全部内容。选中当前文档的全部内容。查找查找:在当前文档中查找字符串。在当前文档中查找字符串。在文件中查找在文件中查找:在多个文档中查找字符串。查找在多个文档中查找字符串。查找过
50、程中再次使用此命令可中断当前查找。过程中再次使用此命令可中断当前查找。替换替换:用一个新字符串替换当前文档中的字符串。用一个新字符串替换当前文档中的字符串。书签书签:添加或清除标签。添加或清除标签。到下一个书签到下一个书签:转到下一个标签。转到下一个标签。到上一个书签到上一个书签:转到上一个标签。转到上一个标签。清除所有书签清除所有书签:清除所有标签。清除所有标签。Breakpoints:显示断点对话框。:显示断点对话框。参数提示信息参数提示信息:显示函数参数提示信息。显示函数参数提示信息。完成关键字完成关键字:显示相关关键字的全称。显示相关关键字的全称。3.查看查看 菜单菜单 查看查看 菜单
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。