ICCAVR中文使用说明Word文档格式.docx
- 文档编号:15047554
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:22
- 大小:40.84KB
ICCAVR中文使用说明Word文档格式.docx
《ICCAVR中文使用说明Word文档格式.docx》由会员分享,可在线阅读,更多相关《ICCAVR中文使用说明Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
和编译器可以使用以下几种类型的文件
输入文件
.c
扩展名----表示是C
语言源文件
.s
扩展名----表示是汇编语言源文件
.h
语言的头文件
.prj
扩展名----表示是工程文件这个文件保存由IDE
所创建和修改的一个工程的有
关信息
.a
扩展名----库文件它可以由几个库封装在一起libcavr.a
是一个包含了标准C
的
库和AVR
特殊程序调用的基本库如果库被引用链接器会将其链接到您的模块或文件中
您也可以创建或修改一个符合你需要的库
输出文件
对应每个C
语言源文件由编译器在编译时产生的汇编输出文件
.o
由汇编文件汇编产生的目标文件多个目标文件可以链接成一个可执行文件
.hex
INTEL
格式文件其中包含了程序的机器代码
.eep
格式文件包含了EEPROM
的初始化数据
.cof
COFF
格式输出文件用于在ATMEL
的AvrStudio
环境下进行程序调试
.lst
列表文件在这个文件中列举出了目标代码对应的最终地址
.mp
内存映象文件它包含了您程序中有关符号及其所占内存大小的信息
.cmd
NoICE
2.xx
调试命令文件
.noi
3.xx
.dbg
3
附注和扩充
#pragma
编译附注
这个编译器接受以下附注
interrupt_handler
<
func1>
:
vector
number>
func2>
vector>
...
这个附注必须在函数之前定义它说明函数func1
func2
是中断操作函数所以编译
器在中断操作函数中生成中断返回指令reti
来代替普通返回指令ret
并且保存和恢复函数
所使用的全部寄存器同样编译器根据中断向量号vector
number
生成中断向量地址
ctask
这个附注指定了函数不生成挥发寄存器来保存和恢复代码它的典型应用是在RTOS
实时操作系统中让RTOS
核直接管理寄存器
text:
name>
改变代码段名称使其与命令行选项相适应
data:
data>
改变数据段名称使其与命令行选项相适应这个附注在分配全局变量至EEPROM
中时必须被使用读者可参考访问EEPROM
的例子
abs_address:
address>
函数与全局数据不使用浮动定位重定位而是从<
开始分配绝对地址这
在访问中断向量和其它硬件项目时特别有用
end_abs_address
结束绝对定位使目标程序使用正常浮动定位
C++
注释
如果你选择了编译扩充(Project->
Options->
Compiler)
你可以在你的源代码中使用C
++
//
类型的注释
二进制常数
你可以使用0b<
1|0>
*
来指定二
进制常数例如0b10101
等于十进制数21
在线汇编
你可以使用asm("
string"
)函数来指定在线汇编代码读者可参考在线汇编
4
代码转换
IAR
或其它ANSI
C
编译系统的代码转换
编译器作为应用于AVR
的第一个C
编译器它有十分丰富的源代码当你从IAR
编译系统转换到ImageCraft
编译系统时绝大多数符合ANSI
C标准的程序代码不需要转
换IAR
中IO
寄存器的定义与ICCAVR
也是相同的
中断操作描述ICCAVR
使用pragma
附注描述中断操作函数而IAR
引入了语法扩
充interrupt
关键字下面是一个对照
在ICCAVR
中
func:
是这个中断的向量号func
为中断处理函数名称
可以使多个中断向量共用一个中断处理函数
在IAR
interrupt
[vector_name]
func()
vector_name
是某一个中断向量的名称IAR
的中
断向量地址使用中断名称来代替以增加程序的可读性
扩充关键字
引入flash
关键字将项目分配进入程序存贮空间FLASH
存贮器ICCAVR
使用
const
关键字来达到相同的目的
过程调用转换
在两个编译系统之间函数参数传递使用的寄存器是不同的这仅影响手工写的汇编函
数
在线汇编宏等IAR
不支持在线汇编符号而ICCAVR
支持在线汇编
ICCAVR中文使用说明
(2)
起步
自你启动IDE
后首先从Project
菜单系统选择Open
命令进入\icc\examples.avr
目
录并且选择并打开led
工程工程管理器显示在这个工程中只有一个文件
led.c
然
后从Project
菜单中选择Options
命令打开工程编译选项在"
Target"
标号下选择目标处理
器然后从Project
菜单中选择Make
Project
命令IDE
将调用编译器编译这个工程文件
并且在状态窗口中显示所有的信息
如果没有错误在与源文件同一个目录在这个例子中是\icc\examples.avr
中输出
一个文件
led.hex
这个文件是INTEL
格式大多数能支持AVR
MCU
的编程器
和模拟器都支持这种格式并且能下载这个程序进入你的目标系统这样就完成了一个
程序的构筑
如果你希望用支持COFF
调试信息的工具来测试你的程序比如AVR
Studio
那么
你需要从Project
命令在编译标签下选择COFF
输出文件格式对
一些常用的功能你也可使用工具条或鼠标右键弹出菜单例如你可以在工程窗口单
击鼠标右键选择编译选项
在工程窗口中双击文件名IDE
将使用编辑器打开这个文件按这个方法打开led.c
作为试验可设置一些错误例如从一行中删除分号现在从Project
首先自动保存已经改变的文件并且开始编译这个文件这时在状态
窗口中会显示错误信息单击状态窗口中错误信息行或单击其左边的错误符号光标
将移到编辑器中错误行的下面一行上基本上所有C
编译器都是这样
开始一个新的工程
从Project
菜单中选择New
命令并且浏览至你希望输出工程文件的目录输出文
件的名称取决于你的工程文件名称例如如果你创建一个名称为foo.prj
的工程那么
输出文件名称为foo.hex
或foo.cof
等
自从创建你自己的工程后你可以开始写你的源代码(C
或汇编格式)
并且将这个
文件加入到工程文件排列中单击工具栏中Build
图标可以很容易地构筑这个工程
IDE
输出与ATMEL
的AVR
完全兼容的COFF
文件你可以使用ATMEL
来调试你的代码
为更容易地使用这个开发工具你可以使用应用程序向导来生成一些使用有关硬件
的初始化代码
程序的剖析
一个C
程序必须定义一个main
调用函数编译器会将你的程序与启动代码和库函
数链接成一个可执行文件因此你也可以在你的目标系统中执行它启动代码的用
途在启动文件中很详细地被描述了一个C
程序需要设定目标环境启动代码初始化这
个目标使其满足所有的要求
通常你的main
例程完成一些初始化后然后是无限循环地运行作为例子让我
们看
\icc\examples
目录中的文件led.c
#include
io8515.h>
/*
为使能够看清LED
的变化图案延时程序需要有足够的延时时间*/
void
Delay()
{
unsigned
char
a,
b;
for
(a
=
1;
a;
a++)
(b
b++)
;
}
LED_On(int
i)
PORTB
~BIT(i);
低电平输出使LED
点亮
*/
Delay();
main()4
int
i;
DDRB
0xFF;
/*定义
B口输出*/
B
口全部为高电平对应LED
熄灭*/
while
(1)
/*LED
向前步进
(i
0;
i
8;
i++)
LED_On(i);
LED
向后步进
>
i--)
跳跃*/
+=
2)
7;
-=
这个main
例程是很简单的在初始化一些IO
寄存器后之后它运行在一个无限循
环中并且在这个循环中改变LED
的步进图案LED
是在LED_On
例程中被改变的
在LED_On
例程中直接写正确的数值到IO
端口因为CPU
运行很快为能够看见图案
变化LED_On
例程调用了延时例程因为延时的实际延时值不能被确定这一对嵌套循
环只能给出延时的近似延时时间如果这个实际定时时间是重要的那么这个例程应该
使用硬件定时器来完成延时
其它的例子8515intr.c
程序很简单但同样清楚地显示了如何用C
写一个中断处理
过程这两个例子可以作为你的程序的起点
四ICCAVR
的IDE
环境
编译一个单独的文件
正常建立一个输出文件的次序是你首先应该建立一个工程文件并且定义属于这个
工程的所有文件然而我们有时也需要将一个文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ICCAVR 中文 使用说明