【学习笔记】在KEIL中stm32移植51代码时位定义变量的替换

网易博客搬迁,原贴时间:2015-02-13

在C51代码中,时常会使用 bdata定义可位定义的变量

如:u8 bdata Status;
sbit IT = Status^0;
......
这是因为:
"51架构的单片机都有一段可位寻址的区域,位于20H~2FH,总共128位。
      在C51中编程时,分配的bit型变量都会定位到这段区域里。 如果某个变量声明其存储
      类型为bdata型,则会分配到这段位寻址RAM内,并按照标准的无符号字符型访问"
当移植代码到stm32,这些定义无效,则可使用位带操作或共用体嵌套结构体的方法解决
方法一:共用体中嵌套结构体
例:typedef union Status_TypeDef
{
u8 a;
struct
{
u8 bit0:1;//":1"表示只占用一个bit位,参考C语言
u8 bit1:1;
u8 bit2:1;
......
u8 bit7:1;
}b;
}Status_TypeDef;
 Status_TypeDef Status;
则原可位定义变量为:Status.a
变量各位为:Status.b.bit0
Status.b.bit1
......
方法二:使用位带操作
参考外设区地址的位带操作
【待更新】


你可能感兴趣的:(单片机)