本例实现红绿灯不断闪烁的效果。
如果你还没有配置好开发环境,请首先看:
avr 开发环境配置 【icc + AVRStudio】
http://www.avrvi.com/bbs/read.php?tid-1-page-e.html
第一步:运行iccavr,运行project>>new,新建一个工程,保存为main.prj,保存在新文件夹avr_first下。
第二步:运行Tools>>Application Builder 建立工程的工具。
看到如下图的设置界面。
icc建立avr工程属性设置

将Targat CPU 改为M16,因为我们使用的芯片是mega16
将Xtal speed 改为1.0000 ,我们使用内部晶振,内部晶振频率为1Mhz。
切换到Ports选项,作如下图所示的更改。
Ports选项

意思是使用单片机的端口A,使用0和1两个脚输出高电平,因为我们所用二极管是低电平驱动的。
其他项不做更改,点OK完成。
第三步:File>>Save as 保存到你刚才第一步建立的工程的文件夹中。注意:保存的文件名必须输入后缀名,形式如main.c。
第四步:右键>>add to project
你将看到如下效果: 工程建立完成

第五步:在编辑区添加如下程序代码,
void Delay(void)
{
unsigned char i,j;
for(i=200;i>0;i--)
{
for(j=200;j>0;j--)
;
}
}
void main(void)
{
init_devices(); //初始化
while(1)
{
PORTA = 0x02; //1脚为高,0脚为低,0脚灯亮
Delay(); //延时
PORTA = 0x01; //0脚为高,1脚为低,1脚灯亮
Delay(); //延时
}
}
其中Delay为延时程序,main为主程序,保存程序。
第六步:Project>>options ,将Device configuration改为ATmega16,其他不变,点击ok,如下图
编译器环境配置

第七步:Project>>rebuild all 或者直接使用快捷键 shift +f9 ,编译工程。
成功即可看到下图所示的样子。
编译完成

在状态区看到这样的代码:
D:\Program Files\icc\bin\imakew -f main.mak
iccavr -c -ID:\PROGRA~1\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced D:\桌面\avr_first\main.c
iccavr -o main -LD:\PROGRA~1\icc\lib\ -g -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @main.lk -lcatmega
Device 0% full.
Done.
第八步:此时打开第一步建立工程的文件夹,可以看到如下文件。
文件列表

至此,在ICC AVR下的工作完成,请继续下一步,
ICC avr 编译成功后会生成很多文件,对我们普通用户以及新手,有用的只有一个文件,*.cof 调试用,*.hex 机器码。
首先看图:

- main._c main.c修改并保存时,程序自动备份的文件,如果确认main.c没有问题了,可以删除。
- main.c 主程序文件
- main.cof COFF 格式输出文件用于在ATMEL 的AvrStudio 环境下进行程序调试 <记住这个文件>
- main.dbg ImageCraft 调试命令文件
- main.dp2
- main.hex INTEL HEX 格式文件其中包含了程序的机器代码
- main.lis
- main.lk
- main.lst 列表文件在这个文件中列举出了目标代码对应的最终地址
- main.mak
- main.mp 内存映象文件它包含了您程序中有关符号及其所占内存大小的信息
- main.o 由汇编文件汇编产生的目标文件多个目标文件可以链接成一个可执行文件
- main.prj 工程文件
- main.s 表示是汇编语言源文件
- MAIN.SRC 工程配置记录
- main_cof.aps 使用AvrStudio调试后保存的调试环境相关信息。
下一步,要把程序写到芯片里面去了: