IARAVR相关资料.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
d1.IAR‐AVR 不让用位定义? 在OPTIONS/sys/勾选EN_BIT。 2.不能C 语言和汇编同步仿真? 在Linker ‐ Output ‐ Format 中选择Debug information for C‐SPY,然后勾选其下的两个选项即 可。 3. IAR 头文件修改使用? IAR 的iomacro.h 文件里定义了I/O 寄存器。我们就可以进行位书写。 /user1/1306/archives/2007/43702.html 4 在c 语言里对位的操作如一般如下: PORTB|=(12);//置PORTB 的第2 位=1 PORTB=~(12);//置PORTB 的第2 位=0 PORTB^|=(12);//取反PORTB 的第2 位 While(PORTB(12));//判断1 While(!(PORTB(12)));//判断为0 IAR 编译器对位的支持更强大,除了上面的方法外还有以下更简单的操作方法: PORTB_ Bit2=1; //置PORTB 的第2 位=1 PORTB_ Bit2=0; //置PORTB 的第2 位=0 PORTB_ Bit2=~ PORTB_ Bit2;//取反PORTB 的第2 位 While(PORTB_ Bit2);或者while(PORTB_Bit2==1);//判断1 while(PORTB_ Bit2==0);//判断0 PORTC_Bit4=PORTB_Bit2;//把PORTB 的第2 位传送到PORTC 的第4 位 5. 位变量定义? 由于iar 使用了扩展语言,它对位域的支持变为最小为char 类型,我们可以很方便地用来定 义位变量。 采用结构体来定义位变量: struct { unsigned char bit0:1; unsigned char bit1:1; unsigned char bit2:1; unsigned char bit3:1; unsigned char bit4:1; unsigned char bit5:1; unsigned char bit6:1; unsigned char bit7:1; }t; 然后就可以用以下位变量了。 t.bit0=1; t.bit0=~t.bit0; 但是采用以上结构体做出来的位变量只可以访问t 的位,不能够直接访问变量t,和标准的 IAR 位操作也不一样。采用联合体来定义效果更佳。 #i ncludeiom8.h union { unsigned char t; struct {unsigned char t_bit0:1, t_bit1:1, t_bit2:1, t_bit3:1, t_bit4:1, t_bit5:1, t_bit6:1, t_bit7:1; }; }; void main(void) { t_bit0=1;//访问变量t 的位 t_bit0=~t_bit0; PORTB=t;//直接访问变量t } 位变量也可以直接定义在工作寄存器里。 6. bool 数据类型在C++语言里是默认支持的? 如果你在C 代码的头文件里包含stdbool.h, bool 数据类型也可以使用在C 语言里。也可以使 用布尔值 false 和 true。不过是占用8 位1 个字节。 #i ncludeiom8.h #i ncludestdbool.h bool y=0;//定义位变量 void main(void) { y=!y;//取反位变量 PORTB_Bit3=y;//传递位变量 } 5 和6 出自/user1/4580/archives/2008/44786.html 7. 死循环建议用: for(;;) do { }while(1); 避免用: while(1) { } 8.杂 1.在使用__EEPUT();__EEGET();函数的时候,一定要引用头文件inavr.h”。 2.使用__delay_cycles(8000);//8M 晶振下的ms 级的延时函数,同样要调用 头文件inavr.h。 3.全局中断的使能函数:__enable__interrupt(); 4.全局中断的禁止函数:__disable__interrupt(); 9.IAR 建立库文件 如何在IAR 下把已经写好的程序以库的形式封装起来,减少多次编译的代码量 1.options-general options-output-output file,选library; 2-library confi-library,选择none 3.点OK,并且编译. 之后生成的.r90(obj 文件)就可以在别的地方调用了. 10 iar 头文件问题 IAR 的iomacro.h 文件里定义了I/O 寄存器。我们就可以进行位书写。

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档