1在ME300上演示AVR实验入门教程作者:伟纳电子(www.willar.com)网站Sauwa原文发表在伟纳电子论坛:。本文以一个流水灯程序(C代码,实现8只LED的跑马灯程序)为例子,介绍AVR单片机开发的基本流程及如何在ME300上烧写和实验。1.硬件准备实验系统:ME300全系列单片机开发板实验芯片:ATmega8515L或Atmega8515,该芯片的引脚与89S51/52系列单片机完全兼容,只是其复位电平不一样而已,ME300系列开发板在监控CPU的控制下可正常复位AVR芯片,无需改动硬件2.软件准备:AVR的开发语言与工具很多,常用的是C,有许多不同的开发工具(如ICCAVR,CodeVersion,IAR,GCC..),彼此不兼容。其中WinAVR(即GCC,完全免费)是全球开发AVR使用人数最多的软件,国外最大的AVR资源网站avrfreaks也是推荐使用这个软件。我们使用它进行C代码的编写与编译。WinAVR下载地址:。在ME300的配套光盘的工具软件中也收录有这个软件!3.AVRC语言学习环境的建立3.1安装WinAVR,按默认安装即可3.2在硬盘上建立一个文件夹,专门用来放项目文件,例:在D盘上建立一个名为AVR_LED的文件夹3.3运行WinAVR的ProgrammersNotepad[WinAVR]开启程序编缉器,键入以下代码,保存在前面建立的AVR_LED文件夹中,并命名为LED.C#includeavr/io.hstaticvoidio_init(void){PORTA=0xff;DDRA=0xff;}voidmDelay(uint16_tDelayTim){uint16_ti;for(;DelayTim0;DelayTim--){for(i=0;i;40000;i++){;}for(i=0;i;39000;i++){;}}}2intmain(void){uint8_ti=0;io_init();while(1){if(++i=8)i=0;PORTA=~(0x01;;i);//改为0x80i可改变流水灯方向mDelay(500);}}3.4运行WinAVR->MFile[WinAVR],编缉Makefile,开启之后,即有一个makefile的模板,如图1所示。图1Makefile的模板点击菜单Makefile-Mainfilename…即出现如图2所示的对话框,通常不需要更改此选项,最终产生的hex文件即main.hex。图2设置主文件名3接着点击Makefile-Mcutype,设定所用单片机的型号,如图3所示。图3设置单片机型号我们选择ATmega8515为我们所用的型号。3.5点击:Make--DebugFormat:可选择输出的调试文件格式,应选择最后一项:ELF/DRARF-2(AVRStudioELF,GDB[experimental]),这样可以由产生供AVRstudio4以上版本调试用的ELF格式的文件。3.6点击:Make--C/C++SourceFiles……出现选择文件名的对话框,如图4所示,请用“Choosefile…”钮选择你所要编译的文件,注意,一定要将Includemain.c前面的勾去掉,除非你的确有一个名为main.c的文件。图4选择主文件4其他的项一般可以不必改动。3.7更改后用File--Saveas…将该makefile文件保存至刚才所建文件夹中;3.8编译(MakeAll):回到ProgrammerNotepads中,点击:Tools-MakeAll,即可对该文件进行编译、链接等处理,有关信息在output窗口中呈现。如有错误,单击错误行,即可定位,以便对此进行修改,直到编译、链接完全正确为止。此时,output窗口显示:ProcessExitCode:0(图5)图54.烧写程序/演示4.1连接好ME300,设置ME300相关跳线到LED位置,锁紧座上放入一片ATmega8515L或Atmega8515,开启电源4.2运行ME300软件(V3.1或以上版本)4.3ME300软件中选择相应的芯片型号,器件配置选项中按图6设置5图六ME300时钟源配置这里只设置第0页即可,其中的“时钟源选择”(熔丝位)选项中,选中表示0,不选中表示1。时钟源的选择非常重要,请参考附表说明。如上图中设置的CKSEL3..0的值为:0100,按上图设置并编程后,单片机即使用内部RC振荡器,工作频率8MHz注意:熔丝位配置错误将会锁死芯片导致再编程失败。4.4加载编译的文件main.hex4.5烧写程序,正常即可观查到流水灯效果!附表:Atmega8515/L的熔丝配置说明(详细资料请参考官方Datasheet)表1.时钟源选择6默认时钟源:芯片在出厂时CKSEL=“0001”,SUT=“10”。默认时钟源为有最长启动时间的内部RC振荡器(频率1M)。默认设置可以保证用户通过系统内或并行编程得到他们期望的时钟源。标定的片内RC振荡器提供了固定的1.0、2.0、4.0或8.0MHz的时钟。这些频率都是5V、25°C下的标称数值。这个时钟也可以作为系统时钟,只要按照表2对熔丝位CKSEL进行编程即可。表2.片内标定的RC振荡器工作模式