微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51编程中位域和bit关键字

51编程中位域和bit关键字

时间:10-02 整理:3721RD 点击:
在keil C51中,提供了bdata关键字,用法:
bdata Flag=0x00;
sbit Flag_0=Flag^0;
sbit Flag_1=Flag^1;
sbit Flag_2=Flag^2;

可以实现 位 操作。

另一种方法:
union
{
    uint8  Flag;
    struct
    {
        uint8 Flag_0:1;
        uint8 Flag_0:1;
        uint8 Flag_0:1;
       。
    }
}FlagType;
问题:
1、这两种的效果是一样的,但是本质上(机器实现)有没有什么区别?
2、就使用来说,第二种(面向对象的风格)要方便很多,一个寄存器对象以及该寄存器下的每个位,关系明确,引用方便。但51的头文件都用的sbit的方式,而不是第二种,这里面是不是有什么风险、隐患或者讲究?

SBIT 只适合51  其他单片机用不了的 很多单片机没有位操作  另一个基本通用

1.这是两种实现方法,汇编实现据我所知没有区别.
2.因为你这个是51编译环境,还有sbit关键字,到了ARM或者其他很多类型的编译环境是没有这个关键字的.为了后续发展,推荐使用第二种方法.

ヾ(???ヾ)^?啊咧

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top