首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Codewarrior中怎么定义位变量

Codewarrior中怎么定义位变量

bit flag;好像编译不通过的
看看每个芯片的。h文件吧,
作个朋友
是不是这样操作?

//---        位变量定义        ---       
union FLAG
{
        byte Byte;
   struct
   {
                byte F0       :1;
           byte F1       :1;
           byte F2       :1;
           byte F3       :1;
           byte F4       :1;
           byte F5       :1;
           byte F6       :1;
           byte F7       :1;   
        }Bits;
};
union FLAG flag1;

实际使用中flag1.Bits.IF?为一个位变量?
这是实参,函数的参数应该为形参,又如何来处理呢?
对,看看用CW生成的C语言工程中该芯片的头文件怎么定义的。
比如定义PTDA,可以这样写
typedef union {
  byte Byte;
  struct {
    byte PTAD0   :1;                                       /* Port A Data Register Bit 0 */
    byte PTAD1   :1;                                       /* Port A Data Register Bit 1 */
    byte PTAD2   :1;                                       /* Port A Data Register Bit 2 */
    byte PTAD3   :1;                                       /* Port A Data Register Bit 3 */
    byte PTAD4   :1;                                       /* Port A Data Register Bit 4 */
    byte PTAD5   :1;                                       /* Port A Data Register Bit 5 */
    byte PTAD6   :1;                                       /* Port A Data Register Bit 6 */
    byte PTAD7   :1;                                       /* Port A Data Register Bit 7 */
  } Bits;
  struct {
    byte grpPTAD :8;
  } MergedBits;
} PTADSTR;

extern volatile PTADSTR _PTAD @0x00000000;

#define PTAD _PTAD.Byte
#define PTAD_PTAD0 _PTAD.Bits.PTAD0
#define PTAD_PTAD1 _PTAD.Bits.PTAD1
#define PTAD_PTAD2 _PTAD.Bits.PTAD2
#define PTAD_PTAD3 _PTAD.Bits.PTAD3
#define PTAD_PTAD4 _PTAD.Bits.PTAD4
#define PTAD_PTAD5 _PTAD.Bits.PTAD5
#define PTAD_PTAD6 _PTAD.Bits.PTAD6
#define PTAD_PTAD7 _PTAD.Bits.PTAD7
#define PTAD_PTAD _PTAD.MergedBits.grpPTAD

这样PTAD_PTAD0就是一位。
这个我知道了,
就是不知道函数的形参如何定义,比如对8051可以这样定义函数:

bit fun1(bit flag1)
{
    bit a;
    //处理程序
    return a;
}

这里函数的返回值和传入参数都是bit形的,在CW中应该怎么来实现呢?
这个没有遇到过,在CW中好象不能把函数定义成位的形式。
返回列表