AVR单片机C语言编译器
Win-AVR是流行的GNU编译器在AVR平台上的移植。安装完毕后会在桌面上出现一下七 个快捷方式,它们的作用如下:
Programmers Notepad
源文件的编辑软件,可提供应用程序接口
AVR In sight
GDB Debug的前端工具,用于仿真调试
TKI nfo
GNU超文本格式的图形浏览器,用于浏览各种说明文档
Avr-libc Ma nual
AVR-GCC编译器的C语言函数库
GNU Manu als On li ne
GNU在线帮助手册
MFile
Makefile编辑软件
README
WinAVR 的 readme文件
IDE (Integrated Development Environment )集成开发环境
ICE ( In Circuit Emulator ) 在线仿真器
JTAG (Joi nt Test Actio n Group)联合测试行为组织
*.hex文件用来向单片机下载的16进制文件
*.cof文件用来利用 AVRstudio进行在线仿真和调试的文件
AVR COFF ( AVR Studio 3.x)
AVR “ Extended ” COFF( AVR Studio 4.07+)
*.hex和*.cof这两个文件不能由 AVR-GCC本身生成,需要其他辅助工具来完成这一步, 这个工具叫 avr-objcopy。
Makefile文件就是一个描述性质的文件,告知make各文件之间的依赖关系,不需要扩
展名。
一般在MFile这个程序中生成对应的 makefile文件,然后将它复制到 PN源文件的文件 夹下,就可以进行 make all的命令来实现对源文件的编译了。一般而言,makefile文件只需
要修改一下几个地方。 Main file name (不要带扩展名)和MCU type 以及Default make target, 然后点file-》save as保存到要编译的文件的文件夹下。
C语言小总结
C语言的标识符是区分大小写的,标识符必须以字母或者下划线开头,下划线开头的标
识符一般是编译器定义的。
一般而言,如果不是需要使用负整数,尽量使用无符号数整数来表示,这样可以减少系
统处理符号的工作,从而提高程序的执行效率。
凡是耳目运算符,都可以和赋值符一起组成复合赋值符,C语言中规定可使用的 10中
复合赋值运算符:+=;-=;*=;/=;%=;<<= ;>>=;&=;八=;| =
逗号运算符是C语言的一种特殊的运算符,其作用是将两个表达式连接起 来,C语言对两个表达式分别计算,并将后一个表达式的值作为逗号表达式 的值。运算优先级最低。例如:a=3*6,4*8;其结果为a=32;
C语言规定了六种关系运算符:<;<=;>;>=;==;!=其中前四个的优先级比较高,后
两个的优先级比较低。
C语言规定的位运算共有一下几种:
& 按位与
| 按位或
A按位异或 (XOR)1A0=1 1A1=0
~取反
<
>>右移
位翻转:令其和一个相应位为位置一:令其和一个相应位为位置零:令其和一个相应位为般的变量和数组均存储在系统的1,其他位位
位翻转:令其和一个相应位为
位置一:令其和一个相应位为
位置零:令其和一个相应位为
般的变量和数组均存储在系统的
1,其他为为0的常量做或运算。PORTAF( 1<<7)
0,其他位为1的常量做与运算。PORTA&=~ ( 1<<7)
RAM中,AVR-GCC还支持存储在 ROM的数组和
字符串,该字符串使用 PROGMEM关键字进行声明。如:
Con st char str[] PROGMEM = ” hello” ; 〃声明了一个存储在 ROM 中的字符串
字符串是不能在程序中用赋值符直接赋值的,但可以借助循环语句,一个变量一个变量
的进行拷贝,如下:
char a[5]= ” hello ” ;
char b[5];
b=a;/*这样的操作是非法的*/
for(i=0;i<5;i++)
{
b[i]=a[i];
}//利用循环语句一个变量一个变量的拷贝
函数的声明用于函数的定义部分在函数实际调用之后,下(必须加分号)
函数返回值类型函数名称(类型名形式参数1,类型名 形式参数2,,,);
例如:int add ( int var1,int var2);
指针变量存储的是地址数据,因此通过指针操作,程序可以对内存等系统中编址的设备
进行控制,尤其是对经常要对外部设备进行操作的单片机系统就显得非常重要。C语言
里,字符串相当于一个字符型数组,作为一个数组,当然能够和指针建立联系,因此, 字符串也能够用指针变量实现。
例如: char string1[ ]= "