目前有一个应用,使用的是STM8L系列CPU,编译器是COSMIC ,想用一个整型数(16位)寻址一段地址(固定地址)空间的位地址。如stemp[0].bit0地址为0,stemp[0].bit7的位地址为7,stemp[1].bit1的位地址为9。想实现置位,复位等功能 ,由于具体为固定地址,代码在编译时即可确定,为减少代码长度及运行时间,要求出来的汇编码是使用位寻址指令。
如定义一个 char stemp[200] @0x10 ;
SetB(9) 目标码 bset _stemp+1,#1 SetB(256) 目标码 bset _stemp+32,#0
求三个宏定义的实现 #define SETB(bitaddr) // 将某一位置位 #define CLRB(bitaddr) // 将某一位复位 #define GETB(bitaddr) // 取得某一位状态 1或者0
|