IAR的想法不错,把汇编的头文件和C的头文件融合在一起,通过__IAR_SYSTEM_ASM__的宏定义来区分;
我们定义一个SFR(特殊功能寄存器)在汇编和C的代码里面是一样的:
SFR_B(TEST_B,0x10)
SFR_W(TEST_W,0x20)
但在使用过程中发现有个小问题: 在IAR的汇编手册里提到了sfrw是可以实用的,但在实际使用AT90CAN的
过程中发现汇编只支持sfrb而不支持sfrw.导致出现一些问题,因此如下是不对的:
ASMSFRW MACRO sfrw \1 = \2 sfrb \1L = (\2+0) sfrb \1H = (\2+1) ENDM
|
参考IAR 5.11 的标准定义如下:
ASMSFRW MACRO sfrb \1L = (\2+0) sfrb \1H = (\2+1) ENDM
|
希望IAR在以后的版本中能够考虑到这个小Bug!
阅读(1377) | 评论(1) | 转发(0) |