- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AVR单片机开发工具介绍
AVR单片机开发工具介绍
概述
单片机应用系统开发包括硬件(电路)系统开发和软件系统开发,硬件系统的开发一般包括电路原理设计,PCB(印刷电路板)设计制作两个部分,使用Protel等软件实现。由于现在单片机系统的一个未来的发展趋势就是外围电路最简化,最终实现单片系统,某些高档单片机已经集成了很多的外部设备的功能,如AVR单片机集成了ROM、RAM、RC震荡电路、PWM波输出功能、AD转换器功能、模拟比较器功能等,如ATmega8单片机,所以单片机的外围电路变得非常的简单,简单的单片机系统只要一片单片机便足够了,所以对单片机的硬件系统开发,我们在此不在进行详细的讲解。典型单片机应用系统框图如图6-1。
图6-1 典型单片机应用系统框图
单片机软件系统开发流程
开发单片机软件系统,一般来说都要经历以下的过程:
编写代码—编译器编译—仿真器仿真—烧写器烧写/在线下载AVR系列单片机,可以使用汇编编程,也可以使用C语言和BASIC语言开发,我们选择C语言编程开发,Atmel公司和它的合作伙伴提供了一整套开发工具:C语言编写 ICCAVR 仿真软件: AVR Studio
下载软件: PONYPROG(或用ICCAVR直接烧写FLASH)
开发流程大致如图6-2(括号中所注为所使用的软件名)。
图6-2 单片机软件系统开发流程
编程:C语言编程环境
AVR单片机编译软件ICCAVR简介
ImageCraft 的ICCAVR 介绍
ImageCraft 的ICCAVR 是一种使用符合ANSI 标准的C 语言来开发微控制器MCU 程序的一个工具。它有以下几个主要特点:
ICCAVR 是一个综合了编辑器和工程管理器的集成工作环境IDE, WINDOWS9X/NT中应用,源文件全部被组织到工程之中。文件的编辑和工程的构筑也在这个环境中完成,编译错误显示在状态窗口中,并且当你用鼠标单击编译错误时,光标会自动跳转到编辑窗口中引起错误的那一行。ICCAVR 中的文件类型及其扩展名
文件类型是由它们的扩展名决定的。IDE 和编译器可以使用以下几种类型的文件:
.c 扩展名----表示是C 语言源文件
.h 扩展名----表示是C 语言的头文件
.prj 扩展名----工程文件这个文件保存由IDE 所创建和修改的一个工程的有关信息INTEL HEX 格式文件可被大多数的编程器所支持用于下载程序到芯片中去使得单片机上电开始执行。ICCAVR使用方法
打开ICCAVR主界面,在主窗口中选择打开、编辑、查找、视图、工程、RCS、工具、终端、帮助等菜单,进入相应的子菜单其中保存、打开、关闭文件等的操作都在打开菜单中。
打开工程或者新建工程。在工程中创建文件
图6-3 新建工程
点击打开
图6-4 设置器件初始参数
样例:
建立好的代码如下:
说明部分:
//ICC-AVR application builder : 2005-3-7 é??? 10:27:19
// Target : M8
// Crystal: 11.059Mhz
头文件包含:
#include iom8v.h
#include macros.h
I/O口初始化设置:
void port_init(void){ PORTB = 0xFF; DDRB = 0x00; PORTC = 0x7F; //m103 output only DDRC = 0x00; PORTD = 0xFF; DDRD = 0x00;}
定时器初始化设置:
//TIMER0 initialisation - prescale:Stop// WGM: Normal// desired value: 1Hz// actual value: Out of rangevoid 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 peripheralsvoid init_devices(void){ //stop errant interrupts until s
文档评论(0)