您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > AVR单片机综合开发板实验讲义
AVR单片机综合开发板实验讲义AVR与虚拟仪器编写AVR与虚拟仪器·2·目录实验一ICCAVR集成开发环境............................................................................3实验二AVRStudio调试环境..............................................................................25实验三IO口实验................................................................................................66实验四七段数码管显示实验..............................................................................70实验五键盘实验..................................................................................................72实验六定时器实验..............................................................................................75实验七PWM........................................................................................................78实验八ULN2803输出实验................................................................................82实验九模数转换(AD)实验............................................................................85实验十看门狗复位实验......................................................................................90实验十一HC164驱动8×8点阵显示实验.............................................................92实验十二SPI实验...................................................................................................97实验十三Nokia5110LCD显示实验.....................................................................101实验十四ST7920控制器系列中文图形液晶模块显示实验..............................104实验十五USART通信实验..................................................................................108实验十六DS18B20测温实验...............................................................................112实验十七简单DAQ采集卡的设计.....................................................................116实验十八TWI通信实验.......................................................................................118实验十九EEPROM实验......................................................................................122实验二十Bootloader实验....................................................................................125附录一ATmega16指令集概述.........................................................................126附录二ICCAVR6.26C支持的库函数介绍.....................................................131附件三:2005级单片机课程设计题目一览.......................................................142附件四:2005级单片机课程设计作品一览.......................................................145AVR单片机综合开发板实验讲义·3·实验一ICCAVR集成开发环境1.1ICCAVR编译器的特点1.1.1ICCAVR编译器简介ICCAVR是一种使用ANSI标准C语言来开发微控制器(MCU)程序的一个工具,它有以下几个主要特点:a).ICCAVR是一个综合了编辑器和工程管理器的集成工作环境(IDE),是一个纯32位的程序,可在Windows95/Windows98/WindowsME/WindowsNT/Windows2000/WindowsXP下运行。b)源文件全部被组织到工程之中,文件的编辑和工程的构筑也在IDE的环境中完成。编译错误在状态窗口中显示,用鼠标单击编译错误时,光标会自动跳转到编辑窗口中引起错误的那一行。这个工程管理器还能直接产生INTELHEX格式文件的烧写文件和符合AVRStudio的调试文件(COFF格式)。c).ICCAVR是一个32位的程序,支持长文件名。d)ICCAVR提供了全部的库源代码及一些简单的应用实例供初学者参考,特别是提供库源代码,对于用户理解库函数的参数及返回值等是非常有益的,并且用户能够根据库源代码对ICCAVR提供的库函数进行剪裁和扩充。1.1.2ICCAVR中的文件类型及扩展名文件类型是由它们的扩展名决定的,ICCAVR的IDE和编译器可以使用以下几种类型的文件:1.输入文件类型.c扩展名,表示是C语言源文件;.s扩展名,表示是汇编语言源文件;.h扩展名,表示是C语言的头文件;.prj扩展名,表示是工程文件,这个文件保存由IDE所创建和修改与整个工程的有关信息;.a扩展名,表示是库文件,它可以由几个库封装在一起,也可以创建或修改自定义的库。2.输出文件类型.s扩展名,对应每个C语言源文件,由编译器在编译时产生的同名汇编输出文件;.o扩展名,汇编产生的同名目标文件,多个目标文件可以链接成一个可执行文件;.hex扩展名,INTELHEX格式文件,其中包含了程序的全部可执行代码;.eep扩展名,INTELHEX格式文件,包含了EEPROM的初始化数据;.cof扩展名,COFF格式输出文件,用于在ATMEL的AVRStudio环境下进行程序调试;.1is扩展名,列表文件,列举出了源文件中的全部语句对应的汇编代码,但变量和代码没完成绝对定位。说明:如果使用文件编译方式,则生成该文件的.lis文件,如果对整个工程进行编译,则每一个源文件均生成一个与该源文件同名的.lis文件。.1st扩展名,列表文件,列举了含启动文件一起编译生成的全部汇编代码,是整个工程绝对定位后的完整列表文件。说明,如果使用文件编译方式,则生成该文件的.lst文件,如AVR单片机综合开发板实验讲义·4·果对整个工程进行编译,则只生成一个与工程同名的.lst文件。.mp扩展名,内存映像文件,它包含了程序中有关符号及其所占内存大小的信息;.cmd扩展名,NoICE2.xx调试命令文件;.noi扩展名,NoICE3.xx调试命令文件;.dbg扩展名,ImageCraft调试命令文件。1.1.3AVR存储器的使用ICCAVR共包含三种不同类型的存储器空间,下面分别对其进行介绍。1.程序存储器(Flash)程序存储器是用于保存程序代码以及常数表和数据的初始值等的空间。ICCAVR编译器可以生成一个对应程序存储器映像的输出文件(INTEXHEX文件),大部分编程器均支持用这个格式的文件对芯片编程。由于AVR中的X、Y、Z指针为16位,有效的访问空间为64KB,因此在ICCAVR编译器中使用普通的C程序不能直接访问大于64KB的程序存储器,为了访问64KB以上的存储器(如在Mega128中),应选中“UseRAMPZ/ELPM”(Project-Option-Target)前的复选框,并且在设定RAMPZ寄存器后直接调用ELPM指令来访问Flash存储器。编译器生成代码分配到不同的区域“areas”,区域按照程序存储器地址增高的顺序被使用,共分为以下区域:interruptvectors:这个区域包含中断向量func_lit:函数表区。这个区的每个字保存了函数入口的地址,为了与代码压缩完全兼容,所有间接的函数索引必须进行额外对准。如果在C中通过函数指针调用函数,编译器可自动完成对准的操作。在汇编中,这个对准必须在用户程序中进行,举例如下:areafunc_lit;假设_foo是函数的名称PL_foo;word_foo;创建函数表入口areatext;ldiR30,PL_foo;ldiR31,PL_foo;rcallxicall;编程人员应把函数表入口地址先送入R30、R31寄存器后,才可以使用库函数xicall间接调用这个函数。lit:这个区域包括了整型数和浮点数常量。idata:全局变量和字符串的初始值保存在这个区域,在启动时,由程序复制到数据存储器的data区。text:这个区域包括程序代码。2.内部数据存储器(SRAM)这个数据存储器是用于保存变量、堆栈和动态内存分配的堆,通常它们不出现在输出文件中,但在程序运行时被使用。一个没有使用外部扩展数据存储器的程序使用数据内存如图6.7所示,在该图中,从地址0开始的96个字节(Ox6O}是CPU寄存器和I/0寄存器,编译器从96往上放置全局变量和字符串,在变量区域的顶部是用户可以利用的分配动态内存,在高端地址,硬件堆栈开始于SRAM的昀高字节,在它的下面是软件堆栈,硬件堆栈和软件堆栈均为向下生长型。要求程序员在设计程序时要确保硬件堆栈不生长进软件堆栈,而软件堆栈不生长进已分配数据的动态分配区中,否则将会导致意外的结果。AVR单片机综合开发板实验讲义·5·图1.1数据内存的使用编译器生成数据分配到不同的区域“areas”区域按照数据存储器的地址增高的顺序使用。共分为以下区域:data:是包含全局变量、静态变量和字符串的数据区域。全局变量和字符串的初始值保存在程序存储器的“idata”区域内,在启动时被复制进data数据区的。Bss:这个区域包含未初始化的C全局变量,按ANSIC标准这些变量在启动时将初始化为0。3.外部数据存储器(SRAM)如果选择带有外部SRAM(32KB或64KB)的目标器件,那么堆栈是放置在内部SRAM的顶部并且朝低端内存地址生长,数据内存(即图6.7中的动态分配内存区域)是开始于硬件堆栈的顶部(即外部SRAM的底部)并且向上生长,这样分配的原因是在多数场合访问内部SRAM比访问外部
本文标题:AVR单片机综合开发板实验讲义
链接地址:https://www.777doc.com/doc-23859 .html