求C语言宏指令实现位寻址

2019-03-23 19:45发布


目前有一个应用,使用的是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,#1SetB(256)    目标码                bset     _stemp+32,#0
求三个宏定义的实现#define  SETB(bitaddr)   //  将某一位置位#define  CLRB(bitaddr)  // 将某一位复位#define  GETB(bitaddr)  //   取得某一位状态  1或者0 此帖出自小平头技术问答
0条回答

一周热门 更多>