AT-mega系列单片机原理及应用第9章-编译器和集成开发环境课件_第1页
AT-mega系列单片机原理及应用第9章-编译器和集成开发环境课件_第2页
AT-mega系列单片机原理及应用第9章-编译器和集成开发环境课件_第3页
AT-mega系列单片机原理及应用第9章-编译器和集成开发环境课件_第4页
AT-mega系列单片机原理及应用第9章-编译器和集成开发环境课件_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内容提要随着AVR单片机的日益普及,目前有多种编译及下载软件提供对AVR系列单片机的支持。在本章中,介绍了SL-ISP1.518和PonyProg2000两种下载程序软件,详细讲解软件的使用方法,说明如何操作软件进行单片机软件编写下载。对于AVR单片机的编译器也作了详细的介绍,简单描述了如何使用编译器建立一个新工程,以及各个功能的使用方法,最后还介绍一些常用的单片机小工具。9.1 单片机程序下载及集成开发环境9.1.1单片机下载方式简介AVR单片机支持普通串口方式、STK500方式、并口(SPI)方式及USB方式等多种下载方式。普通串口方式的速度快,但支持的软件不多。连ATmel公司的AVRS

2、tudio内的AVRpro也停止了更新。因此,普通串口方式不支持最新的芯片。STK500下载为ATmel公司官方推荐的下载方式。与并口下载方式和USB下载方式相对比,STK500具有速度快,AVR Studio直接支持该下载方式等优点。并且,只要AVRstudio发布新版本,该下载方式支持的器件就同步更新,不会发生不支持新器件的情况。STK500方式也有其缺点:价格较高。目前仿造ATmel公司的STK500下载线的售价也在百元以上。因此,该方法不适合在教学中使用。 并口下载方式利用PC机的并口(俗称打印口)进行程序下载。其下载速度要明显慢于STK500方式。但在教学应用中,由于选用的芯片fla

3、sh容量不大,并且对下载速度要求不高,并口下载线是一个很好的选择。较之串口下载方式和STK500下载方式,并口下载线成本低,有较多软件支持,适合大范围推广。并口下载线的制作方法有很多,读者可以在网络上下载到多个版本的原理图。这里,推荐一种简单实用的接线方式,其原理图如图9.1所示:图9.1 并口下载线原理图支持并口下载线的软件很多。比较常用的有ProgPony及双龙公司的SL-ISP等。由于对软件的支持不足,并口下载软件通常不能像STK500那样对新的器件立即支持。以ProgPony为例,作为一个免费的下载软件,ProgPony2000之后还未见新版本出现。但用于教学中的主流芯片,各个版本的并

4、口下载软件均给予较好的支持。因此,在教学中,使用并口下载软件和并口下载线是一个较好的选择。笔者通过对比使用,认为目前较好的并口下载软件是双龙公司的SL-ISP最新版本SL-ISP1.518。作为一个免费的软件,读者可以到双龙公司的主页:进行免费下载。图9.2为SL-ISP1.518的主界面。在主界面中,可以设置芯片型号、通信接口、下载速度、程序存储器文件、数据存储器文件、编程选项、加密模式等。通过主界面还可以对芯片进行擦除、编程、校验、读取等操作。只要在编程选项中进行相应的设置,通过按键便可以实现一键编程,不需每次更改程序后都重载程序。图9.2 SL-ISP1.518的主界面在对AVR单片机进

5、行编程的时候,首先要对熔丝位进行相应的配置。熔丝位的配置决定了单片机工作的频率。如果熔丝位配置错误造成单片机工作频率与给定频率不一致,会引起单片机工作不稳定甚至锁死的现象发生。SL-ISP1.518版本中,增添了STK500的熔丝位配置界面,可以不必记忆熔丝位配置组合,直接选定所需的频率范围进行熔丝位配置。如图93所示,在编程选项中的前打勾,便会弹出 “配置熔丝设置”对话框。图9.3 配置熔丝位配置熔丝设置对话框如图9.4所示。通过该对话框可以对单片机的熔丝位直接进行设置,也可以点击“设置导航”按键开启类似STK500的熔丝位设置界面对熔丝位进行设置。建议初学者选择第二种配置方式。图9.4 配

6、置熔丝设置对话框SL-ISP1.518的STK500的熔丝位设置如图9.5所示。只需选中相应的配置组合即可。目前还有较为流行的一款并口下载软件PonyProg2000,同样作为一款免费的软件,读者可以从http:/www.LancOS.com下载。该软件操作简单,人机界面比较直观,对于新学者来说比较容易上手,下面具体来介绍下该软件的应用方法。图9.6为PonyProg2000的主界面。在主界面中,与双龙相似,同样可以设置芯片型号、通信接口、下载速度、程序存储器文件、数据存储器文件、编程选项、加密模式等。通过主界面还可以对芯片进行擦除、编程、校验、读取等操作。只要在编程选项中进行相应的设置,通过

7、按键便可以实现一键编程,不需每次更改程序后都重载程序。图9.6 PonyProg2000的主界面如图所示的打开文件一栏,点击后输入目标程序地址,再将单片机的类型选择成所用的类型,一般习惯上先擦写一次CPU,将原来的程序擦除,再点击图中下载程序的按键,就可以将程序下载入单片机内了。这里我们来介绍下一键编程的操作,点击主页面菜单中的功能栏中的键,会出现如图9.7一键编程的操作界面界面。如图所示,点击阴影命令后会出现右边的界面,用来设置一键编程的操作指令,图中所勾选的为一般设置的指令,先调取程序、擦除旧程序、写入新程序。设置后,以后再编程时就可以只点击就可以完成程序的下载工作了,非常简便,推荐读者使

8、用。点击会出现如图9.8所示的界面,可以参照图9.5进行设置。9. 2单片机编译器和集成环境的介绍作为一种当前应用较广泛的单片机,有多种集成开发环境支持对AVR单片机的程序开发。由于C语言在单片机设计中具有直观、可读性强、程序移植容易等优点,在本书中,将着重介绍AVR单片机基于C语言的编译器和集成环境。 由于WinAVR脱胎于GCC,因此不可避免的一些操作会与大部分用户熟悉的Windows的操作方式有所不同。为了解决这个问题,晶士电子(Atman Electronics)开发了一个基于WinAVR的中文集成开发环境AtmanAvr。通过AtmanAvr C IDE用户可以以熟悉的Windows

9、操作界面及操作方式对AVR单片机进行开发。读者可以通过登录晶士电子的主页:/下载到最新版本的AtmanAvr的30天试用版本。AtmanAvr C IDE除了集成中文的Windows操作界面外,笔者认为其最大的优点在于其帮助文件。在AtmanAvr C IDE的主界面中,可以通过按“F1”键调用该帮助文件。通过该帮助文件,可以获取关于AtmanAvr C IDE的全部信息,其中甚至包括C语言的介绍。同时,该帮助文件对每个函数的用法都以实例演示,方便用户使用。相信读者通过该帮助文件能很快的掌握AtmanAvr C IDE的使用。就C语言而言,目前常见的集成开发环境有WinAVR、AtmanAvr

10、、ICCAVR及IARAVR等多种。其中,WinAVR是将Unix操作系统中的GCC移植到Windows操作系统中的一个AVR单片机的集成编译环境。WinAVR是一个一个完全免费的软件,在AVR用户中是使用最多的。读者可以通过下面的链接免费下载最新版本的WinAVR集成开发环境:/projects/winavr/1. ATMANAVR编译器的安装可以直接运行光盘上setup.exe安装程序进行安装,有以下几种方法: 方法1: (l)打开“我的电脑”; (2)打开光盘驱动器所对应的盘符; (3)双击光盘中文件“setup.exe”的图标; (4)按照屏幕提示选定一个安装路径后进行安装。默认的安装

11、路径为“C:ATMAN”,一般情况选默认的安装位置。方法2: (l)在开始菜单中选择“运行”命令; (2)在运行对话框中输入“drive:Setupexe; 注意,“drive”对应机器中的光盘驱动器盘符,如果光盘为F盘,则填入“f:setupexe”; (3)按“确定”键开始安装; (4)按照屏幕提示,选定一个安装路径后进行安装。方法3: 由于ATMANAVR升级较快,光盘中的安装文件并不一定是最新的,可以到晶士公司的网站上(/ChineseSite/SoftwareChinese.htm)或国内总代理双龙电子公司网站(http:/.on)下载最新版,将安装文件下载到电脑内一个子目录中再安装

12、。 (1)打开“我的电脑”; (2)打开存放下载升级版的文件夹; (3)双击文件夹中的“atmanAVRdem.exe”的图标;(4)选定一个安装路径后进行安装。图9.9 电脑屏幕上的图标图9.10 演示版的标题栏按上述方法安装后,在电脑屏幕上生成如图9.9的“AtmanAvr.exe”图标。双击后得到的只是一个演示版(标题栏如图9.10所示),演示版只能使用30天,在30天之内没有使用限制(等同于标准版),超过30天后,要注册才能使用,正版用户还要进行注册才可以得到一个无使用时间限制的正式版。 注意: 1旧版ATMANAVR有安装路径的限制(即安装路径中不能有空格或中文,否则不能正常编译),

13、在ATMANAVR5.8.1版及更新的版本中,对安装的路径则没有任何限制,可以安装在任意文件夹中。 2如果硬盘上原先已安装过ATMANAVR演示版且尚未到期(30天免费试用期),此时重新安装ATMANAVR,则软件会自动终止免费试用,因此在演示版30天的有效期内不能重装ATMANAVR。如果演示版到期后还需要继续使用演示版软件,只要格式化硬盘后重装Windows和ATMANAVR,又可以再使用30天。9.3 ATMANAVR编译器简介AtmanAvr C 是为 Atmel 公司的 AVR 系列单片机应用 AVRGCC 编译器而开发的集成开发环境 IDE 。包括向导、文本编辑器和调试器等。它有下

14、几个主要特点: 1ATMANAVR是一个综合了编辑器和工程管理器的集成工作环境(IDE),是一个纯32位的程序,可在Windows 95Windows 98Windows MEWindows NTWindows 2000Windows XP下运行。 2源文件全部被组织到工程之中,文件的编辑和工程的构筑也在IDE的环境中完成。3ATMANAVR是一个32位的程序,支持长文件名。 4ATMANAVR提供了全部的库源代码及一些简单的应用实例供初学者参考,特别是提供库源代码,对于用户理解库函数的参数及返回值等是非常有益的,并且用户能够根据库源代码对ATMANAVR提供的库函数进行剪裁和扩充。ATMAN

15、AVR中的文件类型及扩展名文件类型是由它们的扩展名决定的,ATMANAVR的IDE和编译器可以使用以下几种类型文件: 1. 输入文件类型 .c扩展名,表示是C语言源文件; .s扩展名,表示是汇编语言源文件; .h扩展名,表示是C语言的头文件; .prj扩展名,表示是工程文件,这个文件保存由IDE所创建和修改与整个工程的有关信息; .a扩展名,表示是库文件,它可以由几个库封装在一起,也可以创建或修改自定义的库。2. 输出文件类型 .s扩展名,对应每个C语言源文件,由编译器在编译时产生的同名汇编输出文件; .o扩展名,汇编产生的同名目标文件,多个目标文件可以链接成一个可执行文件; .hex扩展名,

16、INTEL HEX格式文件,其中包含了程序的全部可执行代码; .eep扩展名,INTEL HEX格式文件,包含了EEPROM的初始化数据; .cof扩展名,COFF格式输出文件,用于在ATMEL的AVR Studio环境下进行程序调试; .lis扩展名,列表文件,列举出了源文件中的全部语句对应的汇编代码,但变量和代码没完成绝对定位。说明:如果使用文件编译方式,则生成该文件的.1is文件,如果对整个工程进行编译,则每一个源文件均生成一个与该源文件同名的.lis文件。 .lst扩展名,列表文件,列举了含启动文件一起编译生成的全部汇编代码,是整个工程组对定位后的完整列表文件。说明,如果使用文件编译方

17、式,则生成该文件的lst文件,如果对整个工程进行编译,则只生成一个与工程同名的lst文件。 .mp扩展名,内存映像文件,它包含了程序中有关符号及其所占内存大小的信息; .cmd扩展名,NoICE 2.xx调试命令文件; .noi扩展名, NoICE 2.xx调试命令文件; .dbg扩展名,ImageCraft调试命令文件。9.4 AVR存储器的使用ATMANAVR共包含三种不同类型的存储器空间,下面分别对其进行介绍。 1程序存储器(Flash) 程序存储器是用于保存程序代码以及常数表和数据的初始值等的空间。ATMANAVR编译器可以生成一个对应程序存储器映像的输出文件(INTEX HEX文件)

18、,大部分编程器均支持用这个格式的文件对芯片编程。由于 AVR中的 X、Y、Z指针为16位,有效的访问空间为 64KB,因此在ATMANAVR编译器中,使用普通的C程序不能直接访问大于64KB的程序存储器,为了访问64KB以上的存储器(如在Megal28中),应选中“Use RAMPZELPM”(Project-Option-Target)前的复选框,并且在设定RAMPZ寄存器后直接调用ELPM指令来访问Flash存储器。编译器生成代码分配到不同的区域“areas”,区域按照程序存储器地址增高的顺序被使用,共分为以下区域: interrupt vectors:这个区域包含中断向量 func-li

19、t:函数表区。这个区的每个字保存了函数入口的地址,为了与代码压缩完全兼容,所有间接的函数索引必须进行额外对准。如果在C中通过函数指针调用函数,编译器可自动完成对准的操作。 在汇编中,这个对准必须在用户程序中进行,举例如下: area func-1it ;假设-foo是函数的名称 PL-foo:Word-foo ; 创建函数表入口 area text; ldi R30,PL-foo; ldi R31, PL- foo rcall xicall; 编程人员应把函数表入口地址先送入R30、R31寄存器后,才可以使用库函数xicall间接调用这个函数。 lit:这个区域包括了整型数和浮点数常量。 id

20、ata:全局变量和字符串的初始值保存在这个区域,在启动时,由程序复制到数据存储器的data区。 text:这个区域包括程序代码。2内部数据存储器(SRAM) 这个数据存储器是用于保存变量、堆栈和动态内存分配的堆栈,通常它们不出现在输出文件中,但在程序运行时被使用。图9.11 数据内存的使用一个没有使用外部扩展数据存储器的程序使用数据内存如图9-11所示,在该图中,从地址0开始的96个字节(0 x60)是CPU寄存器和IO寄存器,编译器从96往上放置全局变量和字符串,在变量区域的顶部是用户可以利用的分配动态内存,在高端地址,硬件堆栈开始于SRAM的最高字节,在它的下面是软件堆栈,硬件堆栈和软件堆

21、栈均为向下生长型。要求程序员在设计程序时要确保硬件堆栈不生长进软件堆栈,而软件堆栈不生长进已分配数据的动态分配区中,否则将会导致意外的结果。 编译器生成数据分配到不同的区域“areas”,区域按照数据存储器的地址增高的顺序使用,共分为以下区域: data:是包含全局变量、静态变量和字符串的数据区域。全局变量和字符串的初始值保存在程序存储器的“ idata”区域内,在启动时被复制进data数据区的。 bss:这个区域包含末初始化的 C全局变量,按 ANSIC标准这些变量在启动时将初始化为0。3外部数据存储器(SRAM) 如果选择带有外部SRAM(32K或64KB)的目标器件,那么堆栈是放置在内部

22、SRAM的顶部并且朝低端内存地址生长,数据内存(图9.8中的动态分配内存区域)是开始于硬件堆栈的顶部(即外部SRAM的底部)并且向上生长,这样分配的原因是在多数场合访问内部SRAM比访问外部SRAM的速度要快,分配堆栈到较快的内存有很多好处。 EEPROM:这个区域包含EEPROM数据,ATMANAVR编译器将需要置于EEPROM数据写进扩展名为.eep的输出文件中,在对AVR芯片编程时将该文件写入芯片的EEPROM存储器中。4EEPROM存储器9.5启动文件在一些特殊的应用中,如用户需判断单片机是上电复位还是由其他原因引起复位(如看门狗等),并且针对不同的复位情况采取不同的对策,这时用户可能

23、需要使用自己的启动文件,在IAR中需要修改相应的XCL文件才能实现改变启动文件的目的,ATMANAVR和CodeVsionAVR在工程属性窗口中可以直接指定使用外部的启动文件。 根据目标MCU的种类和功能,ATMANAVR编译器将从下面默认的启动文件中选择一个。 crtavr:o:非ATmega类芯片默认的启动文件。 crtatmega.o:AT mega类芯片默认的启动文件。 ATMANAVR也提供了下面四种常用的启动文件,用户可以在工程选项对话框中(Project-OPhtions-Target-Non Default startup)指定一个启动文件(或用户自定义的启动文件),应注意必须

24、指定启动文件的绝对路径,如果没有指出启动文件的路径,则默认启动文件位于工程选项库路径所指定的目录中(默认为c:atmanavrlib)。 crtavrram.c:与 crtavr.o相比,增加了初始化外部 SRAM。 crtatmgaram.o:与 crtatmega.o相比,增加了初始化外部 SRAM。 crtboot.o:与crtavr.o相比,增加了bootloader的内容,只有ATmega类的芯片才能选用。 Crtboothi.o:与 crtboot。相比,增加了使用ELPMRAMPZ内容,一般在需要读取大于64KB字节存储器中的常数表格或字符串时才用。上面的非ATmega类芯片的每

25、一个中断入口地址使用一个字(2个字节),而ATmega类的每个中断入口地址使用2个字(4个字节),因此两种芯片的启动文件不能混用。 启动文件的功能有: 1初始化硬件和软件堆栈指针。 2从idata区复制初始化数据到直接寻址数据区data区。 3将bss区全部初始化为零。 4启动文件定义了一个全局符号“-start”,它是程序的起点。 5调用用户主程序。 6定义一个退出点,即定义为一个无限循环。如果主函数 (main)一旦退出,它将进入这个退出点进行无限循环。下面简单介绍如何修改和创建一个新的启动文件:使用ATMANAVR的IDE或UlterEdit32打开需要修改的启动文件(crtavr.s、

26、crtatmega.s或其他文件),对启动文件进行相应的修改并保存,如果用UlterEdit32软件编辑,应退出UlterEdit32软件并用IDE调用修改后的启动文件,在IDE中选择“File”菜单的“Compile File To-Stmp File To Object”,生成相应的目标文件(crtavr.o、crtatmega.o或其他的文件名)。9.6 ATMANAVR菜单解释本章的菜单是按ATMANAVR5.8.1介绍的,其他版本的菜单可能会与本章介绍的略有不同。在介绍某单前,读者应先了解以下关于文件的几种说法: 活动的文件:是指打开的当前正在编辑的文件; 打开的文件:是指已调入ID

27、E环境中的文件。可以是活动的文件(正在编辑),也可以是放在后台的文件; 没有打开的文件:是指该文件保存在硬盘上,没有调入IDE环境。1、文件 菜单文件 菜单如图 9.12 所示。新建: 创建一个新文件或新工程,使用此命令,会弹出对话框由用户选择是建立文件还是工程,及文件或工程的类型和创建位置等。打开: 打开一个已存在的文件,如果是 .aws 文件,将打开整个工程。关闭: 关闭当前被打开的文件。打开工作区: 打开一个已存在的工作区(.aws 文件)。保存工作区: 保存当前被打开的工作区。工作区另存为:把当前被打开的工作区另存为一个新的版本保存到一个新的目录,同时打开该新工作区。关闭工作区: 关闭

28、当前被打开的工作区。保存: 保存当前文件。另存为: 当前文件另存为新文件。全部保存: 保存当前所有打开的文件,包括工作区。打印: 打印当前文件的全部或选定部分。页面设置: 设置打印文件页面。最近的文件: 最近打开的文件列表,利于用户查看和重新打开。最近的工作区: 最近打开的工作区列表,利于用户查看和重新打开。退出: 退出 AtmanAvr C。2. 编辑 菜单 编辑 菜单如图 9.13 所示。撤消: 撤消上一次编辑操作。重复: 重复上一次编辑操作。剪切: 剪切当前选中的文档内容或项目。复制: 复制当前选中的文档内容。粘贴: 在当前位置插入剪切板中的内容。全部选择: 选中当前文档的全部内容。查找

29、: 在当前文档中查找字符串。 在文件中查找: 在多个文档中查找字符串。查找过程中再次使用此命令可中断当前查找。替换: 用一个新字符串替换当前文档中的字符串。书签: 添加或清除标签。到下一个书签: 转到下一个标签。到上一个书签: 转到上一个标签。清除所有书签: 清除所有标签。Breakpoints:显示断点对话框。参数提示信息: 显示函数参数提示信息。完成关键字: 显示相关关键字的全称。3. 查看 菜单 查看 菜单如图 9.14 所示。工具栏: 弹出子菜单,显示或隐藏相关工具栏状态栏: 显示或隐藏状态栏。工作区: 显示或隐藏工作区窗口。输出: 显示或隐藏输出窗口。调试窗口:弹出子菜单,显示或隐藏

30、各调试窗口。图 9.144. 工程 菜单 工程 菜单如图 9.15 所示。添加工程: 弹出子菜单,向工程添加相关项目。打开: 打开工程。设置: 设置工程相关属性。添加工程 弹出的子菜单如图9.16所示。如图 9.15如图9.16新建: 创建一个新文件或新工程,使用此命令,会弹出对话框由用户选择是建立文件还是工程,及文件或工程的类型和创建位置等。如果是文件,可以指定是否插入到当前工程中。文件: 添加文件到当前工程中。使用此命令,会弹出对话框由用户选择添加哪些文件,如果某些文件在工程中已存在,则自动滤除。5. 编译 菜单 编译 菜单如图 9.17 所示。编译文件: 编译源代码文件。构件: 编译和连

31、接工程,生成工程属性中指定的输出文件。重建全部: 重新编译和连接工程。开始调试: 弹出子菜单,启动调试器。AVR Studio:调用 AVR Studio 调试。编程: 调用芯片编程程序。如图 9.176. 工具 菜单工具 菜单如图9.18 所示。代码向导: 启动 代码向导,这是一个对工程项目动态维护的工具。AtmanAvr Online:打开 AtmanAvr 主页。用户自定义工具示例。AtmanAvr Update:下载 AtmanAvr C 升级软件包 AtmanAvrUpdate.exe ,升级 AtmanAvr 。用户自定义工具示例。如图9.18AVR Studio: 设定 AVR

32、Studio 的路径。编程工具: 指定芯片编程程序。定制:通过“定制”对话框,用户可以自定义 AtmanAvr C IDE 的界面、菜单、工具栏、快捷键和其他工具软件。AtmanAvr Online 和 AtmanAvr Update 就是两个用户自定义工具的示例,用户最多可以自定义 10 个工具。选择:通过“选择”对话框,用户可以自定义 AtmanAvr C IDE 的界面、窗口字体、格式及操作行为等。7. Window 菜单窗口 菜单如图 9.19 所示。新建窗口: 为当前文件打开一个新窗口。层叠窗口: 以重叠方式显示窗口。横向平铺: 以水平排列方式显示窗口。排列图标: 排列最小化窗口图标

33、。Windows: 显示当前所有打开窗口列表。如图 9.198. 帮助 菜单帮助 菜单如图 9.20 所示。帮助: 显示帮助文件。关于 AtmanAvr: 显示 AtmanAvr C 的版本信息。如图 9.209.7 工程的建立下面将简单介绍使用AtmanAvr C IDE的向导功能建立一个工程的步骤。在AtmanAvr C IDE的菜单栏点击“工程-添加工程-新建”建立一个新的工程。弹出图9.21所示的窗口。图9.21建立新工程界面 在该窗口中选择AVR C语言向导(AVR C Wizard),指工程存放目录及工程名称,点击“确定”进入下一页面。 图9.22新工程设置界面 在如图9.23所示

34、的ProjectWizard-Step 1的“设置MCU”窗口中可以设置芯片的型号、时钟频率及看门狗的设置。在本节中,将以ATmega8单片机为例简要介绍工程向导的使用。其它芯片的设置在参考本设置的基础上,通过阅读AtmanAvr C IDE的帮助文件和芯片的数据手册,可以快速地建立一个AVR单片机的工程。芯片型号、时钟频率及看门狗设置完毕后,单击“下一步”进入下一窗口。 9.23 MCU设置界面9.24 I/O端口设置界面图9.24 所示为第二步:I/O端口的设置。在该窗口中,可以设置I/O端口每位的输入或输出状态、输出电平为高电平或低电平、是否有上拉电阻等参数。AVR单片机的I/O端口配置

35、寄存器的关系可以在各个型号单片机的数据手册中获得.单击“下一步”进入定时器/计数器配置界面如图9.25定时器设置界面. 在第三步定时计数器窗口中,如图9.25所示。可以分别配置定时器/计数器0、定时器/计数器1及定时器/计数器2的状态。可以在“中断”窗口中选择中断的类型。Overflow表示的是定时器溢出中断选择,其中还有比较A中断,比较B中断以及外部时间中断。输入捕获是T1所特有的功能,外部引脚为ICP,可选择上升沿触发中断。下面的输出A,输出B则是你根据要求来设置比较值,当定时器的值等于比较值时,会产生一个比较中断。以定时器溢出中断“Overflow”为例,选中定时器溢出中断后,单击“计算

36、”,可在如图9.26所示的弹出窗口中设置定时器溢出中断的设定值,并将显示实际值和TCNT寄存器的初始值。设置完毕后,单击“确定”并在步骤三的主窗口中单击“下一步”进入下一窗口。9.26 定时器间隔时间溢出设置9.27 外部中断设置界面图9.28所示为步骤五模数转换器的设置窗口。在该窗口中,可对模数转换的相关参数加以设定。通过“时钟频率”的下拉菜单可以选择模数转换的时钟频率。需要注意的是:在“时钟频率”的值改变的同时,“转换时间”中的值也随之改变。当该值为红色时,会造成模数转换错误,应避免该情况的发生。通过“基准电源”的下拉菜单,可以选择模数转换的基准电源。 9.28 ADC设置界面 单击“下一

37、步”进入图9.29所示的模拟比较器配置窗口。通过该窗口可对模拟比较器进行初始化的配置。 9.29 模拟比较器配置界面单击“下一步”进入如图9.30所示的“同步串行接口SPI”的配置窗口。在该窗口中可设置SPI通信的中断方式、主从机模式、时钟速率、时钟相位、时钟极性及数据顺序等参数。 9.30 “同步串行接口SPI”的配置窗口步骤8为“通用串行接口UART”设置窗口,如图9.31所示。在该窗口中可以设置通用串行接口的收发模式、波特率、传输字符位数及是否带有奇偶校验和停止位等参数。同时,在该窗口中还显示出在当前时钟与波特率下的误码率。9.31 “通用串行接口UART”设置窗口单击“下一步”进入如图

38、9.32所示的“双总线串行接口TWI”配置窗口。在该窗口内可以使能TWI及TWI中断、设定SCL频率,并可显示实际的SCL频率。 9.32“双总线串行接口TWI”配置窗口单击“下一步”进入如图9.33所示的“液晶显示器LCD”配置窗口。AtmanAvr C IDE为用户提供了一个液晶显示器控制的头文件,用户可以直接使用该窗口对端口进行配置,利用其提供的液晶控制函数,可以容易的对液晶显示器进行读、写等操作。具体的控制函数及用法可以从AtmanAvr C IDE的帮助文件中获得。9.33“液晶显示器LCD”配置窗口单击“完成”实现对一个工程的初始化配置。在如图9.34所示的资源窗口,显示了经过初始

39、化配置后生成的全部资源文件和头文件。其中,主文件与项目名称相同;其他文件名的自动命名原则为工程名后加对应功能名称。 至此,我们已经完成了一个工程的初始化。 9.34 资源窗口9. 8 ATMANAVR 5.8.1支持的库函数介绍C语言一般都提供很多库函数供用户调用,在ATMANAVR的安装文件夹中有一个LIB文件夹,就提供了标准C库和AVR专用的库供用户调用,用户也可以创建或修改自定义的库。如果一个库中的函数被引用,链接器会将该相关代码链接到模块或生成的输出文件中。 下面对 ATMANAVR 9.8.1所提供的库函数作简单的介绍。9.8.1 C 标准库函数由于 AVR 处理器具有多种存储器空间

40、,因此在应用中要特别注意传递给函数的参数的存储类型。C 库函数仅支持一种存储类型,不能把 EEPROM 和 FLASH 存储空间变量作为操作数。#include 符号常量#define DTOSTR_ALWAYS_SIGN 0 x01 #define DTOSTR_PLUS_SIGN 0 x02 #define DTOSTR_UPPERCASE 0 x04 #define RAND_MAX 0 x7FFF #define RANDOM_MAX 0 x7FFFFFFF abort free abs itoaatoi labs atol ldivbsearch longjmpcalloc ltoa

41、 div mallocdtostre qsortdtostrf rand exit rand_r random strtod random_r strtolsetjmp strtoulsrand ultoasrandom utoa9.8.2数学函数基本数学常数和函数。#include 常数#define M_PI 3.141592653589793238462643 #define M_SQRT2 1.4142135623730950488016887 函数acos isinf asin isnan atan, atan2 ldexp ceil log, log10 Cos modf cosh

42、 pow exp sin fabs sinh floor sqrt fmod square frexp tan inverse tanh 9.8.3字符函数字符函数执行对单个字符的操作。#include isalnum isprint isalpha ispunct isascii isspace isblank isupper iscntrl isxdigit isdigit toascii isgraph tolower islower toupper 9.8.4 字符串函数 字符串函数操作以 NULL 结尾的字符串。如果字符串存储在程序存储器空间,使用程序存储器 API 函数。#incl

43、ude memccpy strcpymemchr strlcat memcmp strlcpymemcpystrlen strchr strlwrstrcmpstrncasecmp Memmovestrncpymemset strnlen strcasecmp strrchrstrcat strrevStrncatstrstr strncmp strupr9.8.5 存储器 API 函数AVR 系列单片机指令与数据使用不同的地址空间。由于寄存器和 RAM 为 8 位,而程序存储器为 16 位,因此操作上要比使用单一地址空间复杂一些。另外,EEPROM 与前两者又处于不同的地址空间。通常指令使用

44、 flash ROM,数据使用 SRAM,如果要访问 EEPROM 或把数据放在 ROM 空间,GCC 提供的存储器 API 函数封装了这些底层操作,可以方便地实现这些目的。1、程序存储器 API把数据放在 ROM 空间的益处在于:数据可以随时使用,不需要在启动时进行初始化,同时不会因为程序运行中的错误而遭到破坏。由于 ROM 处于不同的地址空间,在 ROM 中定义变量使用特别的声明(参见 变量),访问 ROM 中变量可以通过程序存储器 API 函数。#include _ATTR_CONST_, _ATTR_PROGMEM_, _ATTR_PURE_ _elpm_inlinestrcat_P

45、_lpm_inlinestrcmp_Pmemcpy_P strcpy_Ppgm_read_bytestrcasecmp_Ppgm_read_byte_far strlen_Ppgm_read_byte_near strncasecmp_P pgm_read_word strncmp_Ppgm_read_word_far strncpy_Ppgm_read_word_near PSTRPRG_RDB 2、EEPROM APIAVR 系列单片机具有非易失的存储空间 EEPROM,它与静态 RAM 不在同一地址空间。访问 EEPROM 单元需要借助 I/O 寄存器。EEPROM API 函数封装了底

46、层操作功能,使访问 EEPROM 简便易行。使用 EEPROM API 函数,需要包含 eeprom.h 文件。eeprom_is_readeeprom_read_byteeeprom_read_blockeeprom_read_wordeeprom_write_byteeeprom_write_blockeeprom_write_word 9.8.6 中断 API 函数中断 API 函数封装了对中断的控制功能,包括中断的使能或禁止,中断例程的定义等。它们分别定义在 interrupt.h 和 sig-avr.h 文件中。cli enable_external_intINTERRUPTseiS

47、IGNALtimer_enable_int 9.8.7 I/O API 函数I/O API 函数提供高层访问 I/O 寄存器的功能,支持字或字节读写操作,位测试,位操作等。I/O API 函数定义在 io.h ,iomacros.h 和 parity.h 文件中。#include BV loop_until_bit_is_clear bit_is_clear loop_until_bit_is_setbit_is_set outp, outb Cbi outw inp, inb _outw inw outw_atomicinw parity_even_bit inw_atomic sbi 9.8.8看门狗 API 函数看门狗 API 函数封装了对看门狗的操作功能,宏定义在 wdt.h 文件中。#include 符号常量#define WDTO_15MS 0 #d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论