摘要: SARM空间是AVR单片机最重要的部分,所有的操作必须依赖该部分来完成。变量在SARM空间的存储模式有tiny,small,large 三种,也就是对应于__tiny, __near,__far三中存储属性。一旦选择为哪种存储模式,对应的数据默认属性也就确定了,但可以采用__tiny, __near,__far关键字来更改。 对于程序中的局部变量,编译器会自动处理的,我们也不可能加什么储存属性,但IAR提供了强大的外部变量定义。IAR编译器内部使用了部分工作寄存器,留给用户的只有R4-R15供12个寄存器供用户使用,要使用工作寄存器必须在工程选项里打开锁定选项。 例: 定义两个变量使用工作寄存 阅读全文
posted @ 2011-12-01 23:35 云说风轻 阅读(2147) 评论(0) 推荐(0) 编辑
摘要: 1.扩展关键字:用于控制数据和指针 __eeprom 用于EEPROM 存储空间, 控制数据存放,控制指针类型和存放 __tinyflash, __flash, __farflash, __hugeflash 用于flash 存储空间, 控制数据存放,控制指针类型和存放 __ext_io, __io 用于I/O存储空间, 控制数据存放,控制指针类型和存放 __regvar 放置一个变量在工作寄存器中2.函数扩展关键字: __nearfunc __farfunc 用于控制数据存放,这组关键字必须在函数声明和定义的时候指定 __interrupt. 关键字控制函数的类型。这组关键字必须在函数声明. 阅读全文
posted @ 2011-12-01 23:23 云说风轻 阅读(5041) 评论(0) 推荐(0) 编辑
摘要: 整型类型:bool 数据类型在C++语言里是默认支持的。如果你在C代码的头文件里包含stdbool.h, bool数据类型也可以使用在C语言里。也可以使用布尔值 false和 true。char型是无符号型还是有符号型,可以在工程设置中选择。浮点类型: 阅读全文
posted @ 2011-12-01 23:20 云说风轻 阅读(4101) 评论(0) 推荐(0) 编辑
摘要: Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement运算符两边都是volatile变量的警告这警告有意义.用volatile修饰的变量一般不直接参与运算,volatile就以为着这个变量在运算过程中有可能已经改变了例如:想计算a * b 要这样:volatile unsigned char a;volatile unsigned char b;unsigned char x,y;x = a;y = b;return (x * y);建议使用另外一个变量参 阅读全文
posted @ 2011-12-01 22:04 云说风轻 阅读(28450) 评论(0) 推荐(1) 编辑
摘要: 今天在编译ata5790的程序就没mtk600那么顺利了,当然那也不叫顺利,也是悲剧的很,说白了,对于IAR这个编译器我佩服的五体投地。不是一般的强大,不是一般的复杂,不是一般的难用。好了,好了,回归正题。编译报错是这样的:Error[Pa043]: the keyword "__regvar" is not available with the current settings. Registers must be locked with --lock_regs before __regvar can be used C:\Users\pang123hui\Desktop 阅读全文
posted @ 2011-12-01 18:58 云说风轻 阅读(1857) 评论(0) 推荐(0) 编辑