下面是PIC单片机头文件中一个寄存器的代码:
typedef union {
struct {
unsigned IOCIF :1;
unsigned INTF :1;
unsigned TMR0IF :1;
unsigned IOCIE :1;
unsigned INTE :1;
unsigned TMR0IE :1;
unsigned PEIE :1;
unsigned GIE :1;
};
struct {
unsigned :2;
unsigned T0IF :1;
unsigned :2;
unsigned T0IE :1;
};
} INTCONbits_t;
extern volatile INTCONbits_t INTCONbits @ 0x00B;
如果我想只对IOCIF置1其余不动,是不是可以写成
INTCONbits_t.IOCIF=1; ?
我编译了一下,提示出错“no identifier in declaration”
但是写成
INTCONbits.IOCIF=1;
就编译成功
可是仿真时SFR对应数值并不是我设置的那样(我仿真时用的不是这个寄存器,这里只是个示例)。
C语言结构体,联合体对我来说完全是空白,只想求大神告诉我这个应该怎么用,分几种种情况,第一只对某一位赋值,第二对整个INTCON赋值。当然如果写下读取的C语言形式,也不胜感激! |