IAR使用notice

1、IAR中无法程序跳转问题

  在工程的C编译器选项里的预编译添加$TOOLKIT_DIR$\inc解决,需要clean一下工程再make即可。($TOOLKIT_DIR$这个语法表示包含文件的路径在 IAR 安装路径的 8051文件夹下,也就是说 IAR安装在C盘中,它就表示包含文件指向 C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\8051\inc)

 
2、IAR不支持位定义怎么实现位访问
   IAR for 51中位定义如下,与keil对比如下,e.g.PSW_bit.P = 1;IAR位访问格式。
 在IAR位定义
在keil中位定义
 
3、IAR与keil中断函数区别
  中断函数是如下形式
  在keil中:
  void Timer0_isr(void) interrupt 1
  {
          //code
  }
  而在IAR中:
  #pragma vector=timer0
  __interrupt void Timer0_isr(void)
  {
          //code
  }
  在io8051.h系统头文件中自定义timer0
  #define timer0 0x0B /* Timer 0 Interrupt */
  这里 __interrupt 表示Timer0_isr()是一个中断函数;#pragma vector 说明该中断函数的入口地址。
 
4、code和const 
  只需要吧code关键字替换为const就行了。但是编译报错,说定义的常量数组太大,这是为什么。打开工程的option选项,首页右下角有个关于常量位置的设置,选择将常量放到代码空间即可。
 
5、IAR的Linker错误问题
   Error[e12]: Unable to open file 'C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.0\8051\LIB\DLIB\dl-pli-nlxd-2e16x01n.r51'
  解决问题方式,更改配置如下所示:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/smy87/p/7878618.html