【学习笔记】在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
......
方法二:使用位带操作
参考外设区地址的位带操作
【待更新】


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值