AVR单片机开发工具介绍
1.1 概述
单片机应用系统开发包括硬件(电路)系统开发和软件系统开发,硬件系统的开发一般包括电路原理设计,PCB(印刷电路板)设计制作两个部分,使用Protel等软件实现。由于现在单片机系统的一个未来的发展趋势就是外围电路最简化,最终实现单片系统,某些高档单片机已经集成了很多的外部设备的功能,如AVR单片机集成了ROM、RAM、RC震荡电路、PWM波输出功能、AD转换器功能、模拟比较器功能等,如ATmega8单片机,所以单片机的外围电路变得非常的简单,简单的单片机系统只要一片单片机便足够了,所以对单片机的硬件系统开发,我们在此不在进行详细的讲解。典型单片机应用系统框图如图6-1。
图6-1 典型单片机应用系统框图
1.2 单片机软件系统开发流程
开发单片机软件系统,一般来说都要经历以下的过程:
编写代码—〉编译器编译—〉仿真器仿真—〉烧写器烧写/在线下载。
对于AVR系列单片机,可以使用汇编编程,也可以使用C语言和BASIC语言开发,我们选择C语言编程开发,Atmel公司和它的合作伙伴提供了一整套开发工具:
C语言编写: ICCAVR 仿真软件: AVR Studio 下载软件: PONYPROG(或用ICCAVR直接烧写FLASH) 开发流程大致如图6-2(括号中所注为所使用的软件名)。
图6-2 单片机软件系统开发流程
1.3 编程:C语言编程环境
1.3.1 AVR单片机编译软件ICCAVR简介
1、ImageCraft 的ICCAVR 介绍
ImageCraft 的ICCAVR 是一种使用符合ANSI 标准的C 语言来开发微控制器MCU 程序的一个工具。它有以下几个主要特点:
ICCAVR 是一个综合了编辑器和工程管理器的集成工作环境IDE,其可在以下系统 WINDOWS9X/NT中应用,源文件全部被组织到工程之中。文件的编辑和工程的构筑也在这个环境中完成,编译错误显示在状态窗口中,并且当你用鼠标单击编译错误时,光标会自动跳转到编辑窗口中引起错误的那一行。
2、ICCAVR 中的主要文件类型及其扩展名
文件类型是由它们的扩展名决定的。IDE 和编译器可以使用以下几种类型的文件: .c 扩展名----表示是C 语言源文件 .h 扩展名----表示是C 语言的头文件
.prj 扩展名----工程文件,这个文件保存由IDE 所创建和修改的一个工程的有关信息; .hex扩展名----INTEL HEX 格式文件,器件目标文件,这个文件可被大多数的编程器所支持,用于下载程序到芯片中去使得单片机上电开始执行。
.cof扩展名----AVRStudio仿真文件格式,在AVRStudio的仿真时使用;
1.3.2 ICCAVR使用方法
打开ICCAVR主界面,在主窗口中选择打开、编辑、查找、视图、工程、RCS、工具、终端、帮助等菜单,进入相应的子菜单。其中保存、打开、关闭文件等的操作都在打开菜单中。
1、打开工程或者新建工程。在工程中创建文件。
图6-3 新建工程
2、建立源文件。
建立源文件可以用两种方式,一种是自己编写全部代码,另外一种是使用应用程序向导建立初始化代码,而后添加自己的代码,这样可以省去查阅寄存器的麻烦,而且格式比较好。下面介绍第二种方式:
点击
(应用程序向导)打开器件初始设置窗口,这里包括CPU设置,I/O端口初
始设置,Timer0、Timer1、Timer2设置窗口,UART设置窗口以及同步串行口SPI和模拟比较器设置窗口。
在这里选择M8 在这里填写11.0592晶振频率
在这里修改IO口数据方向
图6-4 设置器件初始参数
样例:
建立好的代码如下: 说明部分:
//ICC-AVR application builder : 2005-3-7 é??? 10:27:19 // Target : M8
// Crystal: 11.059Mhz 头文件包含: #include
PORTC = 0x7F; //m103 output only DDRC = 0x00; PORTD = 0xFF; DDRD = 0x00; }
定时器初始化设置:
//TIMER0 initialisation - prescale:Stop // WGM: Normal // desired value: 1Hz
// actual value: Out of range void timer0_init(void) { TCCR0 = 0x00; //stop
TCNT0 = 0x00 /*INVALID SETTING*/; //set count TCCR0 = 0x00; //start timer }
定时器中断入口函数:
#pragma interrupt_handler timer0_ovf_isr:10 void timer0_ovf_isr(void)
{ TCNT0 = 0x00 /*INVALID SETTING*/; //reload counter value //插入中断处理代码处 }
初始化函数:
//call this routine to initialise all peripherals void init_devices(void)
{ //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); timer0_init();
MCUCR = 0x00; GICR = 0x00;
TIMSK = 0x01; //timer interrupt sources SEI(); //re-enable interrupts
//all peripherals are now initialised }
主函数
void main(void) { init_devices();
//插入主函数代码处 }
3、向工程中添加文件。
图6-5 向工程中增添文件
图6-6 添加完毕
4、编译工程,生成目标文件。 工程编译设置:
在Project\\Options…中选择器件型号、输出文件类型、保存目录。在显示的主界面中完成程序编制或者修改,保存所做的工作。
选择器件我们选择ATMega8 库目录 输出文件保存格式选择COF/HEX
图6-7 工程编译设置
编译: 单击
或者按下图使用菜单操作。*.hex这种文件可以被PonyProg下载软件识别并通
过烧写器或者下载线,在线下载入单片机的程序FLASH ROM中。另外生成的.cof文件可以
被AVR Studio打开进行仿真。