iar-avr c编译器简要指南

上传人:第*** 文档编号:33889975 上传时间:2018-02-18 格式:DOC 页数:8 大小:113.50KB
返回 下载 相关 举报
iar-avr c编译器简要指南_第1页
第1页 / 共8页
iar-avr c编译器简要指南_第2页
第2页 / 共8页
iar-avr c编译器简要指南_第3页
第3页 / 共8页
iar-avr c编译器简要指南_第4页
第4页 / 共8页
iar-avr c编译器简要指南_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《iar-avr c编译器简要指南》由会员分享,可在线阅读,更多相关《iar-avr c编译器简要指南(8页珍藏版)》请在金锄头文库上搜索。

1、IAR-AVR C 编译器简要指南1数 据 类 型 大 小 范 围 对 齐bool 8 bits 0 to 1 1char 8 bits 0 to 255 1signed char 8 bits -128 to 127 1unsigned char 8 bits 0 to 255 1signed short 16 bits -32768 to 32767 1unsigned short 16 bits 0 to 65535 1signed int 16 bits -32768 to 32767 1unsigned int 16 bits 0 to 65535 1signed long 32 b

2、its -231 to 231-1 1unsigned long 32 bits 0 to 232-1 1signed long long 64 bits -263 to 263-1 1unsigned long long 64 bits 0 to 264-1 1bool 数 据 类 型 在 C+语 言 里 是 默 认 支 持 的 。 如 果 你 在 C代 码 的 头 文 件 里 包 含 stdbool.h, bool数 据 类型 也 可 以 使 用 在 C语 言 里 。 也 可 以 使 用 布 尔 值 false和 true。数 据 类 型 大小 Range (+/-) Exponent M

3、antissafloat 32 bits 1.18E-38 to 3.39E+38 8 bits 23 bitsdouble * 32 bits (default) 1.18E-38 to 3.39E+38 8 bits 23 bitsdouble * 64 bits 2.23E-308 to 1.79E+308 11 bits 52 bitslong double * 32 bits 1.18E-38 to 3.39E+38 8 bits 23 bits long double * 64 bits 2.23E-308 to 1.79E+308 11 bits 52 bitsIAR-AVR C

4、 编译器简要第一章 数据类型(编译器支持 ISO/ANSI C 基 本 数 据 类 型 和 一 些 附 加 数 据 类 型 。 )1 1 整 型 数 据 :1 2 浮 点 数 据 类 型 :1 3 指 针 类 型 : 指 针 有 数 据 指 针 和 函 数 指 针 。1 3 1 数 据 指 针 : 数 据 指 针 的 大 小 为 8位 , 16位 , 24位 。 定 义 为 : 在 整 型 数 据 类型 后 加 ”*”符 号 。 如 :char *p;整 型 数 据 没 有 24位 , 具 体 定 义 指 针 见 后 面 扩 展 关 键 字 章 节 。1 3 2 函 数 指 针 : 函 数 指

5、 针 的 大 小 为 16位 , 24位 。指 针 定 义 : 在 函 数 类 型 后 加 ”*”符 号 。 具 体 定 义 指 针 见 后 面 章 节 。IAR-AVR C 编译器简要指南2 用 于 数 据 存 储 空 间 ,控制指针和变量的类型和存放:_tiny, _near, _far, _huge, and _regvar 用 于 EEPROM 存 储 空 间 , 控制指针和变量的类型和存放:_eeprom 用 于 flash 代 码 存 储 空 间 , 控制指针和变量的类型和存放:_tinyflash, _flash, _farflash, and _hugeflash 用 于 I/

6、O存 储 空 间 , 控制指针和变量的类型和存放:_ext_io, _io 特 别 指 示 能 够 访 问 所 有 的 数 据 和 代 码 空 间 :_generic 其 它 的 对 象 特性:_root _no_init. 关 键 字 控 制 函 数 的 存 放 和 类 型 。 这 组 关 键 字 必 须 在 函 数 声 明 和 定 义 的 时 候 指 定 :_nearfunc and _farfunc. 关 键 字 控 制 函 数 的 类 型 。 这 组 关 键 字 必 须 在 函 数 声 明 和 定 义 的 时 候 指 定 :_interrupt, _task, _version_1.

7、关 键 字 仅 仅 控 制 有 定 义 的 函 数 :_root, _monitor, _noreturn.第 二 章 扩 展 关 键 字可 以 用 来 解 决 数 据 , 函 数 的 存 放 等 。 有 了 它 我 们 就 可 以 定 义 变 量 存 放 在 EEPROM, FLASH中 。 定义 中 断 函 数 , 指 针 等 等 。2 1 数 据 扩 展 关 键 字 : 用 于 控 制 数 据 的 存 放 类 型 和 对 象 属 性 。2 2 函 数 扩 展 关 键 字 : 用 于 控 制 数 据 的 存 放 类 型 和 对 象 属 性 。23其它特别的关键字: , 用于变量的绝对地址定

8、位。也可以用#pragma location命令#pragma vector, 提供中断函数的入口地址。#pragma预编译里有很多命令,用在数据操作上都有直接的简单关键字代替,如上面提到的用 #pragma location 命令和用 来对变量绝对地址定位效果一样。IAR-AVR C 编译器简要指南3第三章 常用类型的具体操作方法根据第一和第二章节的内容,我们可以对IAR的数据进行具体的定义31EEPROM区域数据存储。 (用关键字 _eeprom控制来存放, _eeprom关键字写在数据类型前后效果一样)_eeprom unsigned char a;/定义一个变量存放在EEPROM空间u

9、nsigned char _eeprom a;/效果同上_eeprom unsigned char p;/定义一个数组存放在EEPROM空间对于EEPROM空间的变量操作同SRAM数据空间的操作方法一样,编译器会自动调用 _EEPUT(ADR,VAL), _EEGET(VAR, ADR)宏函数来对EEPROM变量的操作。例:#include_eeprom unsigned char p;_eeprom unsigned char a;void main(void)p1+;/ EEPROM变量的操作a+;/ EEPROM数组的操作定义常数在EEPROM空间,只要给变量赋与初值就可以了。由于常数在

10、EEPROM空间的地址是随机分配的,读取变量才可以读取到常数值。_eeprom unsigned char a=9;/定义一个常数存放在EEPROM空间_eeprom unsigned char p=1,2,3,4,5,6,7,8;/ 定义一个组常数存放在EEPROM空间例:#include_eeprom unsigned char p=1,2,3,4,5,6,7,8;_eeprom unsigned char a=9;void main(void)PORTB=a;/读取EEPROM空间值9PORTC=p0; /读取EEPROM空间值EEPROM空间绝对地址定位:_eeprom unsigne

11、d char a 0x8;/定义一个变量存放在EEPROM 空间0X08单元_eeprom unsigned char p 0x22/定义一个数组存放在EEPROM 空间,开始地址为0X22单元_eeprom unsigned char a 0x08=9;/定义一个常数存放在 EEPROM空间0X08单元_eeprom unsigned char p 0x22=1,2,3,4,5,6,7 ,8;/定义一个组常数存放在EEPROM空间开始地址为0X22单元由于常数在EEPROM空间的地址是已经分配的,读取EEPROM空间值可以用变量和地址。32与 _eeprom有关的指针操作。 _eeprom关

12、键字控制指针的存放和属性3.2.1指向eeprom空间的指针EEPROM指针(控制属性)unsigned char _eeprom *p;/定义一个指向EEPROM空间地址的指针,8位指针本身存放在SARM中。unsigned int _eeprom *p;/定义一个指向EEPROM空间地址的指针,16位指针本身存放在SARM中。unsigned char _eeprom *p;/定义一个指向EEPROM空间地址的指针,指针本身存放在SARM中。P的值代表EEPROM的空间的某一地址。*p表示EEPROM空间某一地址单元存放的内容。例:假定p=10,表示EEPROM空间地址10单元,而EEPR

13、OM空间10单元的内容就用*p来读取。IAR-AVR C 编译器简要指南4例:#includechar _eeprom t 0x10 ;char _eeprom *p ;void main(void)PORTB=*p;/读取EEPROM空间10单元的值PORTB=*(p+3) ;/读取EEPROM空间13单元的值3.2.2存储于eeprom空间的指针数据指针(就象存储与EEPROM空间的数据一样)控制存储_eeprom unsigned char *p; /定义一个指向SARMM空间地址的指针,指针本身存放在EEPROM中。33控制数据和指针存放的 _eeprom定义必须是全局变量,控制属性(

14、好像只有指针)可以是局部变量。#include_eeprom unsigned char p;/控制存放void main(void)unsigned char _eeprom *t;/控制属性PORTB=p;PORTB=*t;34 _root关键字:告诉编译器未使用的代码也要编译。定义存放在eeprom空间的数据在程序编译时会自动生成.eep文件以供烧录。对于程序没有使用也要求编译的数据必须加关键字 _root限制。例:#include_root _eeprom unsigned char p 0x10 =0x56;void main(void)程序没有使用P变量,编译也会生成.eep文件的

15、。:020000020000FC:010010005699:0400000300000000F9:00000001FF35EEPROM操作宏取函数:在comp_a90.h intrinsics.h头文件里有详细说明。_EEPUT(ADR,VAL);/向指定 EEPROM空间地址(ADR)中写入数据( VAL) 。_EEGET(VAR,ADR);/从指定 EEPROM空间地址(ADR)中读取数据( VAL) 。实际上两种函数的原形如下:#define _EEPUT(ADR,VAL) while (EECR EEAR = (ADR); EEDR = (VAL); EECR = 0x04; EECR = 0x02;#define _EEGET(VAR, ADR) while (EECR EEAR = (ADR); EECR = 0x01; (VAR) = EEDR;对于定义为EEPROM空间的变量操作同SRAM数据空间的操作方法一样,编译器会自动调用 _EEPUT(ADR,VAL), _EEGET(VAR, ADR)宏函数来对EEPROM变量的操作。例:nt

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号