renjun_EMbest 发表于 2013-12-29 00:25:30

为IAR 8051增加结构体操作--简化ISR编写

前言:

    在学习CC2540芯片的时候,觉得某些开发板提供的例程不好
直接移位操作,就是所谓的Hard-Code,完全没有代码风格可言。
另外,写中断函数的时候,IAR的废话太多,比如要写T1的中断ISR
必须这样:

#pragma vector = T1_VECTOR
__interrupt void TimerISR(void)
{
    // 这里是你的代码
}

很蛋疼,所以花了一些时间,为IAR增加两个功能,简化编程


功能介绍:
1)直接使用结构体定义来操作某个位
   比如要置位IEN1寄存器的T1IE位,直接这么写就ok

   S_IEN1.T1IE = 1;
   
   在原有寄存器名字的基础上增加前缀S_,就是结构体类型的寄存器定义
   当你输完寄存器名字后,按下<.>符号,IAR会为你自动提示位名字,非常方便

2)简化中断函数的声明方式
   原有的方式,大家都知道,反.人.类,就不多说了,下面是更简便的方式
   比如,要写T1的中断函数
   ISR(T1, Timer1)
   其中,第一个参数是要定义中断的模块名(请查看头文件中的定义),第二个参数是你自己的中断函数名
   就这么多,好用吧

使用方法:
   将修改后的头文件复制到C:\Program Files\IAR Systems\Embedded Workbench 6.4\8051\inc目录下
   直接覆盖掉IAR安装目录下的默认头文件
   注:如果您不放心,请先将默认头文件重命名,然后再复制


   ^_^ Enjoy Yourself ^_^


附件:



------------------------------------------------------------------------
PS: 关于原理性的说明,后面我会专门开个帖子介绍
如果在使用中有任何疑问,欢迎讨论

QQ: 819280802
Email: xuesong5825718@gmail.com

Cedar@Wuhan

zhangtomcom 发表于 2014-4-23 00:40:00

学习中,谢谢分享!

cnxh 发表于 2014-4-23 07:23:55

学习类,IAR AVR 应该怎么设置,我试着改成644pa的串口,怎么改都是错的

xunke 发表于 2014-6-15 08:56:03

IAR 8051的教程吗?

机器人天空 发表于 2014-6-15 10:09:33

mark..........
页: [1]
查看完整版本: 为IAR 8051增加结构体操作--简化ISR编写