Programmer Notepad的配置与AVRGCC入门.docx
- 文档编号:1130856
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:22
- 大小:410.73KB
Programmer Notepad的配置与AVRGCC入门.docx
《Programmer Notepad的配置与AVRGCC入门.docx》由会员分享,可在线阅读,更多相关《Programmer Notepad的配置与AVRGCC入门.docx(22页珍藏版)》请在冰点文库上搜索。
ProgrammerNotepad的配置与AVRGCC入门
ProgrammerNotepad的配置与AVRGCC入门
作者:
佚名 来源:
不详 录入:
Admin 更新时间:
2008-7-2619:
29:
16 点击数:
3
【字体:
】
单片机AVR的编程工具很多,有C,ASM,PASCAL,BASIC等等。
除ASM由ATMEL公司免费提供外,其它大多数的工具都是需要收费的。
而C编译器更是其中收费最高的编译器。
但也有例外,那就是GCC——它不但免费而且功能也几乎是“最强”的。
所以我作为入门者,就开始学习它了!
一、单片机编程
1、单片机与电脑的编程有些许不同,它除一些必要地算法外,更重要的是对端口的操作。
如开关量
采集、开关量控制输出、模拟量的输入、通讯的操作、显示器与键的控制等等都需要操作端口。
2、电脑存储永久数据一般都在硬盘等介质中。
而单片机则存放在EPROM、EEPROM、FLASH等存储器中。
3、通讯接口的编程对单片机来说是至关重要的,特别在工控、网络等的应用中犹为重要。
4、单片机的编程与电脑编程相比有诸多限制。
这就要求编程者对单片机硬件有一定的了解。
二、AVR单片机编程
1、AVR单片的硬件:
我们以ATMega16为例为说明一下AVR单片机吧!
这是ATMEGA16的引脚及其功能图(来自其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的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
Discardinglocalsymboloutsideanycompilationunit:
.do_copy_data_loop
Discardinglocalsymboloutsideanycompilationunit:
.do_clear_bss_start
Discardinglocalsymboloutsideanycompilationunit:
.do_clear_bss_loop
Sizeafter:
//转换后的文件信息。
2.elf:
sectionsizeaddr
.text2080
.data08388704
.bss08388704
.noinit08388704
.eeprom08454144
.stab7800
.stabstr14690
Total2457
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++;
}//本例循环8次。
也是先比较后执行循环体的。
C、Dowhile语句,如:
i=0;
do{
i++;
循环体;
}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<<
第11行到第15行由两个for循环构成的延时部分,它可以使LED移动的速度放慢,好让我们的肉眼能看到。
上一篇:
马潮老师关于正确配置AVR熔丝位的建议
下一篇:
AVR应用经验(转载
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Programmer Notepad的配置与AVRGCC入门 Notepad 配置 AVRGCC 入门