欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    AVR单片机C语言编译器.pdf

    • 资源ID:73511795       资源大小:414.08KB        全文页数:8页
    • 资源格式: PDF        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    AVR单片机C语言编译器.pdf

    AVR 单片机 C 语言编译器 Win-AVR 是流行的 GNU 编译器在 AVR 平台上的移植。安装完毕后会在桌面上出现一下七个快捷方式,它们的作用如下:Programmers Notepad 源文件的编辑软件,可提供应用程序接口 AVR Insight GDB Debug 的前端工具,用于仿真调试 TKInfo GNU 超文本格式的图形浏览器,用于浏览各种说明文档 Avr-libc Manual AVR-GCC 编译器的 C 语言函数库 GNU Manuals Online GNU 在线帮助手册 MFile Makefile 编辑软件 README WinAVR 的 readme 文件 IDE(Integrated Development Environment)集成开发环境 ICE(In Circuit Emulator)在线仿真器 JTAG(Joint Test Action 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 语言规定的位运算共有一下几种:&按位与|按位或 按位异或(XOR)10=1 11=0 取反 右移 位翻转:令其和一个相应位为 1,其他位位 0 的常量做异或运算。位置一:令其和一个相应位为 1,其他为为 0 的常量做或运算。PORTA|=(17)位置零:令其和一个相应位为 0,其他位为 1 的常量做与运算。PORTA&=(17)一般的变量和数组均存储在系统的 RAM 中,AVR-GCC 还支持存储在 ROM 的数组和字符串,该字符串使用 PROGMEM 关键字进行声明。如:Const char str PROGMEM=”hello”;/声明了一个存储在 ROM 中的字符串 字符串是不能在程序中用赋值符直接赋值的,但可以借助循环语句,一个变量一个变量的进行拷贝,如下:char a5=”hello”;char b5;b=a;/*这样的操作是非法的*/for(i=0;isex=M;student31.sex=M;student32.score=95.5;共同体:共同体的所有成员都占有相同的空间,共同体占用的空间的大小等于共同体占用空间最大的变量所占用的空间。共同体类型声明形式如下:union 共同体名 数据类型 成员名 1;数据类型 成员名 2;数据类型 成员名 n;共同体的变量声明形式为:union 共同体名 共同体变量名 共同体变量引用的形式为:共同体变量.名成员;注意共同体的数据是存储在一个存储空间的,因此共同体变量所存储的值等于最后一次对共同体变量所赋的值。不能对共同体变量名赋值,也不能在定义共同体变量时对其初始化,对共同体的操作必须指明其成员。不能把共同体变量作为函数的参数和返回值。例如:union length_union Unit16_t word;Unit8_t byte2;length;/定义了一个共同体,有两个成员,一个是 16 位的无符号整数,另外一个是一个包含两个无符号 8 位整数的数组,二者共用存储空间。在上例中,如果按照 length_union.word 来操作时,则作为一个 16 位无符号整数,如果作为 length_union.byte0和 length_union.byte1操作,则访问的是该存储空间的低位字节和高位字节。枚举类型 如果变量只有几个可能的取值,则可以用枚举类型表示该变量。枚举类型定义形式为:enum 枚举类型标识符 枚举列表;枚举变量的定义为:enum 枚举类型 枚举变量名;例如:enum color red,green,blue;C 语言将枚举类型中的枚举元素定义为常量,因此枚举元素是有值的,C 语言自动按照值的顺序定义值为 0,1,2,枚举元素的值可以改变 enum colorred=5,green,blue;/red 代表 5,后面的未定值依次加一 例如:enum colorred,green,blue;enum color crt;crt=red;crt=2;/错误 crt=(enum color)2;/将枚举元素中的值为 2 的元素赋值给 crt 变量,强制转换。枚举变量的赋值必须用枚举元素,如果直接用整数赋值是不行的,必须采用强制转换。用户自定义类型 用户可以对已存在的 C 语言类型名重新进行定义,从而方便使用,用户定义类型一般为:typedef 类型名 标识符 使用这些自定义类型是,必须包含 inttypes.h 头文件。例如:#include typedef signed char int8_t /八位有符号数 (无分号)typedef unsigned char uint8_t /八位无符号数 预处理 C 语言的预处理功能主要有一下三方面:宏定义 文件包含 条件编译 宏定义 宏定义的作用是用指定的标识符代表一个字符串,宏可以参数,也可以不带参数,不带参数的宏定义的一般形式为:#define 标识符 字符串 带参数的宏定义声明形式为:#define 宏名(参数表)字符串 例如:define S(a,b)a*b /定义了一个带参数的宏 int main(void)int i;i=S(5,6);/该语句与 i=5*6 完全一样 return 0;文件包含 文件包含的作用是将一个文件的容包括到另一个文件之中,文件包含的形式为:#include“文件名”#include 第一种首先在当前文件的所在目录中寻找包含的文件,如果找不到再到系统指定的包含文件的目录去寻找,第二种则直接在系统指定的包含目录中去寻找,一般为了保险起见,尽量使用双引号形式的 include 指令。条件编译 条件编译可以根据用户定义的不同条件,选择使用不同的语句,这在编写可移植的程序时特别有用。条件编译有以下几种形式:第一种#ifdef 标识符 程序段 1#else 程序段 2#endif 该语句的作用是,如果在此语句前用“#define 标识符”定义了标识符,则只在程序中包含程序段 1,否则只包含程序段 2.第二种#ifndef 标识符 程序段 1#else 程序段 2#endif 该语句的作用是,如果在此语句前没有用“#define 标识符”定义了标识符,则只在程序中包含程序段 1,否则只包含程序段 2 第三种#if 表达式 程序段 1#else 程序段 2#endif 该语句的作用是,如果表达式的值为真,则值在程序中包含程序段 1,否则,若表达式的值为 0,则只在程序中包含程序段 2.AVR-LIBC 的中断处理函数 对于不同的编译器有不同的方法处理中断,这是因为 C 语言的目标就是与处理器的细节无关,因此每个编译器的作者都不得不使用自己的方法为编译器添加对中断的支持。在 AVR-LIBC 的环境中,中断向量表已经预先固定指向具有特定名字的函数,这些函数用来执行中断操作。使用这些特殊名字的函数可在相应中断发生时被调用。AVR-LIBC 中,对中断处理函数进行了封装,通过使用两个参数的宏 INTERRUPT()和 SIGNAL(),程序可正确的处理不同的中断操作。#include“avr/signal.h”INTERRUPT(SIG_ADC)/用户代码 或者为#include“avr/signal.h”SIGNAL(SIG_ADC)/用户代码 全局中断标志操作函数:#define sei()_asm_ _volatile_(“sei”:)使用中断处理函数,必须加入下面的包含语句:#include sei();/设置全局中断标志位允许全局中断#define cli()_asm_ _volatile_(“cli”:)使用中断处理函数,必须加入下面的包含语句:#include cli();/清楚全局中断标志位来禁止全局中断 上面的两个函数实际上只生成一条汇编指令,不会增加用户程序的负担。使用算术运算函数 avr-libc 提供了算术运算函数,使用数学的数学运算函数请在程序的头部加入包含语句:#include“math.h”为了使用数学运算函数,需要库 libm.a,通常该库是不到用户的程序中的,为了库,请在自己的 GCC 编译选项的结尾加入-lm 选项。即用 PN 打开 makefile 文件的第 130 行,MATH_LIB=lm 特殊功能寄存器的操作方式:在单片机系统中,经常要对寄存器或者外围设备进行操作,这些操作都是通过一组特殊功能寄存器的操作实现的。AVR 单片机中,提供了两种方法完成操作。一种是独立的 I/O 地址空间,通过特殊的 I/O 操作指令,可以利用特殊的 I/O 指令操作部分或全部的 I/O 空间。另外一种是 I/O地址也被映射到单片机的存空间中,因此也可以用通常的存操作指令完成 I/O 的控制,I/O 地址加上 0 x20 的偏移量就是 I/O 映射到存空间中的地址。AVR 单片机支持这两种操作,一般使用后者,而且这些操作已经封装好,不需要编程者干预。因此,编程者可以使用特殊函数如 outb()操作 I/O。#include outb(PORTA,0 x33);或者直接向存中映射的地址写数据 PORTA=0 x33;编译器会选择合适的指令生成操作代码访问 I/O 端口,与编程人员书写的代码无关。因此,即使编程者使用存映射的方式书写 C 代码,例如:PORTA|=0 x44,编译器也会在优化时自动使用直接 I/O 地址访问的方式生成汇编代码,并且尽量可能使用位操作方式(如 sbi 指令)。使用存映射方式操作特殊功能寄存器,可以使 C 程序更方便地移植到其他 AVR 的 C编译器中,同时也可以部分提高程序的可读性。在不优化大的情况下,编译器按照表达式的形式生成存映像方式的代码,但是在打开编译器优化的选项后,编译器会根据操作的容自动使用更快的 in/out 指令生成代码。

    注意事项

    本文(AVR单片机C语言编译器.pdf)为本站会员(ylj18****41534)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开