单片机 AVR的编程工具很多,有C,ASM,PASCAL,BASIC等等。除ASM由ATMEL公司免费提供外,其它大多数的工具都是需要收费的。而C编译器更是其中收费最高的编译器。但也有例外,那就是GCC——它不但免费而且功能也几乎是“最强”的。所以我作为入门者,就开始学习它了!
一、 单片机 编程
1、 单片机 与电脑的编程有些许不同,它除一些必要地算法外,更重要的是对端口的操作。如开关量
采集、开关量控制输出、模拟量的输入、通讯的操作、显示器与键的控制等等都需要操作端口。
2、 电脑存储永久数据一般都在硬盘等介质中。而 单片机 则存放在EPROM、EEPROM、FLASH等存储器中。
3、 通讯接口的编程对 单片机 来说是至关重要的,特别在工控、网络等的应用中犹为重要。
4、 单片机 的编程与电脑编程相比有诸多限制。这就要求编程者对单片机硬件有一定的了解。
二、 AVR 单片机 编程
1、 AVR单片的硬件:我们以ATMega 16为例为说明一下AVR 单片机 吧!
这是ATMEGA 16的引脚及其功能图(来自其DataSheet)
A、 从图中我们可以看出有4个8位端口共32个引脚,大多有双重功能。它们分别命名为PORTA、PORTB、PORTC、PORTD。
B、 PORTA具备普通IO口功能外还有AD转换功能,其精度可以达到10位,即采集到的ADC的值最大不超过1023(0-1023),对应外面实际电压值的精度需要一定的简单换算(主要看其参考电压)。如参考电压为2.5V,则有2.5V为1023,则其精度为2.5V/1023就是0.00244V。如参考电压为5V,则有5V/1023也就是0.0049V。
C、 PORTB口除了基本的IO功能外,特别要提的是PB4、5、6、7的功能,它是SPI(同步串行接口),更重要的是,它可以用来下载程序。
D、 其它的暂且不说,必竟不是AVR 单片机 的介绍文章嘛。
2、 AVR 单片机 的软件:
软件当然是用来控控制这些接口的运作及其代表的含义的。这也是个非常大的问题,如果你一点都不懂软件,请也找本计算机编程的书看看吧。
三、 开始AVRGCC编程吧
好了,下面我们来看一个简单的程序吧。
在WinAVR的Programmer NotePad 2中的图:
图2
执行Make All后,生成HEX文件(本例中的文件名2.HEX)。以下是它的全过程。
> "make.exe" all
-------- begin --------
avr-gcc (GCC) 3.4.1 //告知avr-gcc的版本号
Copyright (C)2004 Free SOFtware Foundation,Inc. //编译器所属于公司及其版权信息
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//这是ELF文件的一些信息,ELF文件用于调试。
Size before: //转换前的ELF文件信息
2.elf :
section size addr
.text 208 0
.data 0 8388704
.bss 0 8388704
.noinit 0 8388704
.eeprom 0 8454144
.stab 780 0
.stabstr 1469 0
Total 2457
Converting to AVR Extended COFF: 2.cof//将ELF文件转换成AVR Studio能够接受的格式
avr-objcopy --debugging --change-section-address .data-0x800000 --change-section-address .bss-0x800000 --change-section-address .noinit-0x800000 --change-section-address .eeprom-0x810000 -O coff-ext-avr 2.elf 2.cof
Discarding LOCal symbol outside any compilation unit: .do_copy_data_start
Discarding local symbol outside any compilation unit: .do_copy_data_loop
Discarding local symbol outside any compilation unit: .do_clear_bss_start
Discarding local symbol outside any compilation unit: .do_clear_bss_loop
Size after: //转换后的文件信息。
2.elf :
section size addr
.text 208 0
.data 0 8388704
.bss 0 8388704
.noinit 0 8388704
.eeprom 0 8454144
.stab 780 0
.stabstr 1469 0
Total 2457
Errors: none //编译过程中产生的错误数
-------- end -------- //编译结束
> Process Exit Code: 0 //avr-gcc结束信息,0表示正常结束
接下来用AVRISP程序将2.hex文件下载后AVR 单片机 中,观看效果。(可以考虑买个双龙的试验器SL_AVRAD)。
下面我们来看看avr-gcc的IDE吧。
主窗口(图3)
这是非常标准的Windows Style窗口。当然它由于不是专为avr-gcc设计,所以对它进行设置是必不可少的!下面我就来设置它,以使它成为我们好用的工具吧。(呵呵!可千万别小看它哦)
在设置它之前让我们来看看,我们希望是一个怎样的工具吧。参照其它软件的IDE。
首先,我们得有个工程(项目)管理器,这点PN已有,不需我们去设它。
其次,得方便我们编辑源代码,最好是有关键字(代码)高度显示,以方便我们识别它们。如果能再给我们实时的一些提示就更好了!这方便PN做得非常很好(有人说SI很好,不过我觉得每个人有每个人的习惯,不必强求)。
再次,我们得在不离开IDE的情况下,编辑C语言的makefile文件。生成我“目标代码”(计算机中术语的话叫可执行文件),并且,下载到我们 单片机 中。
好了!来看看我们对它的设置吧!
1、代码高亮设置将它设置成你习惯的模式。步骤如下:打开PN菜单Tools->Options,在Options对话框中选择Style->Schemes,你说看到了如图4、5、6所示的内容了。现在开始你的设置吧。
代码高亮设置1-预编译(图4)
代码高亮设置2-操作符(如+-*/括号等)(图5)
代码高亮设置3-数字(图6)
别小看这点小功能啊,它能帮你找到不少编程错误哦(图7)
想将代码打印出来吗,有帮助的!(图8)
其它高亮设置同上请大家自已动手吧!一定要按自己的习惯哦。
3、 设置PN中的菜单“新建”和工具栏图标 ,点击它新建文件时的文件缺省类型。我们当然希望是C类型文件啦,如下图:
定义新建缺省的文件类型(图9)
4、 下面开始设置的我们的avr-gcc工具菜单吧!
C语文的Make工具设定(图10): 精心的设置可以让你的PN,不必其它工具差哦。
5、 C语言Makefile对于初学者来说太难了,根本不知道它是干嘛的,怎么工作(说的有点夸张)及怎么编写。幸好WinAVR提供给了我们一个非常好用的工具mfile。下面就将它集成到我们的PN中来吧!
Makefile工具在PN中的设定(图11)(注意本工具设置为特殊设置)
Makefile的设置是将C:\WinAVR\bin下的wish84.exe、tcl84.dll、tk84.dll三个文件复制到C:\WinAVR\mfile目录下。并用PN打开C:\WinAVR\mfile\mfile.tcl。修改成下图所示
本文关键字:暂无联系方式AVR单片机,单片机-工控设备 - AVR单片机