这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » gcc,bit,nbsp,nbsp,xxx gcc 中能否做偉變量定義,bit&

共2条 1/1 1 跳转至

gcc,bit,nbsp,nbsp,xxx gcc 中能否做偉變量定義,bit  xxx?

院士
2006-09-17 18:14:16     打赏
gcc,bit,nbsp,nbsp,xxx gcc 中能否做偉變量定義,bit  xxx?



关键词: 能否     做偉     變量     定義    

院士
2006-12-22 22:43:00     打赏
2楼
1: 是否只能用sbi() or cbi()去做了 ? 2: 可以要代码实现// 定义一个寄存器(Register)或端口(Port)的八个位
typedef struct _bit_struct  
{
    unsigned char bit0 : 1 ;
    unsigned char bit1 : 1 ;
    unsigned char bit2 : 1 ;
    unsigned char bit3 : 1 ;
    unsigned char bit4 : 1 ;
    unsigned char bit5 : 1 ;
    unsigned char bit7 : 1 ;
    unsigned char bit6 : 1 ;
}bit_field;

//定义一个宏,用来得到每一位的值
#define GET_BITFIELD(addr) (*((volatile  bit_field *) (addr)))

//定义寄存器或端口的地址(一般已经包含在头文件中了,本步可不做
//  #define PORTB  0x38
//  #define PINB      0x36

//定义每一个位
#define LED GET_BITFIELD(PORTB).bit0
#define BUTTON  GET_BITFIELD(PINB).bit7
3: GCCAVR没有K51一样的bit类型只有按楼上一样,使用结构体,但生成的代码质量不高。 4: 非常感謝! 5: 建议使用C语言开发不要钻这些牛角尖我一直这样用:

volatile uint8_t ucFlag;
#define RCV_OK    0x01
#define RCV_ERR   0x02
#define AD_BGN    0x04
...

if (ucFlag & RCV_OK)
...

ucFlag |= AD_BGN;
...

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]