WinAVR开源且免费 开发必备Word下载.docx

上传人:b****6 文档编号:20019812 上传时间:2023-01-15 格式:DOCX 页数:22 大小:308.62KB
下载 相关 举报
WinAVR开源且免费 开发必备Word下载.docx_第1页
第1页 / 共22页
WinAVR开源且免费 开发必备Word下载.docx_第2页
第2页 / 共22页
WinAVR开源且免费 开发必备Word下载.docx_第3页
第3页 / 共22页
WinAVR开源且免费 开发必备Word下载.docx_第4页
第4页 / 共22页
WinAVR开源且免费 开发必备Word下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

WinAVR开源且免费 开发必备Word下载.docx

《WinAVR开源且免费 开发必备Word下载.docx》由会员分享,可在线阅读,更多相关《WinAVR开源且免费 开发必备Word下载.docx(22页珍藏版)》请在冰豆网上搜索。

WinAVR开源且免费 开发必备Word下载.docx

这也是个非常大的问题,如果你一点都不懂软件,请也找本计算机编程的书看看吧。

三、开始AVRGCC编程吧

好了,下面我们来看一个简单的程序吧。

在WinAVR的ProgrammerNotePad2中的图:

图2

执行MakeAll后,生成HEX文件(本例中的文件名2.HEX)。

以下是它的全过程。

>

"

make.exe"

all

--------begin--------

avr-gcc(GCC)3.4.1//告知avr-gcc的版本号

Copyright(C)2004FreeSoftwareFoundation,Inc.//编译器所属于公司及其版权信息

Thisisfreesoftware;

seethesourceforcopyingconditions.ThereisNO

warranty;

notevenforMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.

//这是ELF文件的一些信息,ELF文件用于调试。

Sizebefore:

//转换前的ELF文件信息

2.elf:

sectionsizeaddr

.text2080

.data08388704

.bss08388704

.noinit08388704

.eeprom08454144

.stab7800

.stabstr14690

Total2457

ConvertingtoAVRExtendedCOFF:

2.cof//将ELF文件转换成AVRStudio能够接受的格式

avr-objcopy--debugging--change-section-address.data-0x800000--change-section-address.bss-0x800000--change-section-address.noinit-0x800000--change-section-address.eeprom-0x810000-Ocoff-ext-avr2.elf2.cof

Discardinglocalsymboloutsideanycompilationunit:

.do_copy_data_start

.do_copy_data_loop

.do_clear_bss_start

.do_clear_bss_loop

Sizeafter:

//转换后的文件信息。

Errors:

none//编译过程中产生的错误数

--------end--------//编译结束

ProcessExitCode:

0//avr-gcc结束信息,0表示正常结束

接下来用AVRISP程序将2.hex文件下载后AVR单片机中,观看效果。

(可以考虑买个双龙的试验器SL_AVRAD)。

下面我们来看看avr-gcc的IDE吧。

主窗口(图3)

这是非常标准的WindowsStyle窗口。

当然它由于不是专为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。

修改成下图所示

修改mfile.tcl为图中选中的部分并保存(图12)

6、设置ISPProgrammer工具

ISP串行下载器的设置(图13)

按下F4后运行的结果(图14)

7、到现在,我想你对PN有了一些了解了吧。

看看下面几个图吧!

几个快捷键及其对应工具的设置(图15)它们用着实在是方便啊

Makefile执行后的图(图16)

这是PN对大项目、大工程管理的超强部分了(图17)

到此,ProgrammerNotePad设置完成。

四、Avr-gcc简易入门

1、对端口的操作:

A、如果我想将PORTB端口设置为输出口(8位),则在gcc中用如下方式

DDRB=0xFF;

注意:

0xFF=0B11111111表示全为1,代表了输出。

如果你改上式为:

DDRB=0x01;

//即0B00000001,则表示,你将PORTB的第0位(PB0)设置为输出,其它PB1-7为输入。

DDRB为AVR的端口设置寄存器。

B、从端口PORTB中读入状态,用如下方式:

UnsignedChara=PINB;

//读入端口PORTB的状态。

若端口PORTB的状态如下:

PB0为高电平1

PB1为低电平0

PB2为高电平1

PB3为高电平1

PB4为高电平1

PB5为低电平0

PB6为低电平0

PB7为高电平1

则有a=0b10011101=0x9D

C、向端口PORTB写状态(设置状态):

若要装PORTB第0位和第2位置1(高电平)。

DDRB=0;

//PORTB全部为输出。

PORTB=0x03;

//0b00000101

D、而更多的情况,我们是要将端口的某一位改变状态,而不是对整个端口操作。

或只想知道端口的某一位的状态如何的?

那么如何来做呢?

例如:

将PB4置1,PORTB=PORTB|0x10;

//0x10=0b00010000

将PB4置0,PORTB=PORTB&

0xEF;

//0xEF=0b11101111

将PB4置翻转,PORTB=PORTB^0x10;

//0x10=00010000

检验PB4的状态,chara=PINB&

0x10;

//如果PB4为1,是a>

0,否则a=0

当然,上面写法对C语言来说,简直就是垃圾代码了。

C语言有它自己的方式,

PORTB|=0x10;

PORTB&

=0xEF;

PORTB^=0x10;

If(PINB&

0x10){你的语句;

}

是否感觉到比较简洁啊?

E、当然avr-gcc也提供了两个函数对操作位,如:

sbi(PORTB,4);

cbi(PORTB,4);

分别将PB4置1和清零。

2、变量的类型

char

unsignedchar

short

unsignedshort

int

unsignedint

long

unsignedlong

longlong

unsignedlonglong

float

double

void

等等等等,这就请读者自己看资料了。

3、程序控制语句,C语言提供了非常丰富的程序流程控制语句。

i.循环语句

A、For(;

;

)语句,如:

for(i=0;

i<

8;

i++){

循环体;

}//本例循环8次。

注意!

for语句是先比较后加减的。

B、While(exp)语句,如:

i=0;

While(i<

8){

i++;

也是先比较后执行循环体的。

C、Dowhile语句,如:

do{

}while(x<

8);

//本例循环7次,因为它是先执行后比较的语句。

因为i++在第一次比较时i已经是1了。

ii.分支语句。

A、if语句,大名鼎鼎语句了,几乎所有编程软件都有它的身影。

没什么好说的。

B、switch语句。

好了,这些就不说下去了,因为如果你连这些都不清楚。

你该做的是找本C教程吧。

4、中断服务控制(SIGNAL)

voidUART_Init(void){//中断初始化函数//

UART_Ready=1;

UART_ReceivedChar=0;

pUART_Buffer=0;

outp(BV(RXCIE)|BV(RXEN),UCR);

//允许串行接收中断//

outp((u08)UART_BAUD_SELECT,UBRR);

//设置UART波特率//

sei();

//打开全局中断//

}

SIGNAL(SIG_UART_RECV){//串口接收完成中断服务进程(子程序)//

UART_ReceivedChar=1;

//指示已经接收到一个字符//

UART_RxChar=inp(UDR);

//将收到的字符存储起来//

其中SIGNAL标示了下面的语句由中断来调用。

五、实例设计与编程

试验电路图(图18)

好了,写了这么多,让我们也看个实例先吧,硬件电路图如图18。

软件编程如下:

软件在PN中编写的结果如上图。

其中第1、2行为预编译语句,它们告诉编译器一些重要的信息。

如单片机内的寄存器名称对应的向量等.DDRB、PORTB就在io.h内定义的(其实它在本例中是在iom16.h中定义的,io.h是所有AVR单片机公共定义,它从makefile中提取单片机类型,来从include\avr下取出对应的实际io*.h文件)。

第4行为C语言的主函数,特别要注意的是,avr-gcc的主函数类型必须为int类型。

否则出现警告错误warning:

returntypeof'

main'

isnot`int'

第5行定义了三个无符号字符型变量:

i,j,k。

第6行定义了端口PORTB全部为输出。

第7行在端口PORTB中输出高电平。

第8行到第18行为一个无限循环语句。

第9行开始到第17行也是一个循环。

用它的目的是将端口PORTB的某一位置低,让LED点亮。

第10行是向端口的某一位(由变量k指定),其中十分重要的是~(1<

<

0b0000后变为0001,k="

2,执行1<

第11行到第15行由两个for循环构成的延时部分,它可以使LED移动的速度放慢,好让我们的肉眼能看到。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1