Board logo

标题: Codewarrior中怎么定义位变量 [打印本页]

作者: charlie22    时间: 2005-6-9 18:35     标题: Codewarrior中怎么定义位变量

bit flag;好像编译不通过的
作者: libingqiang    时间: 2005-6-9 21:03

看看每个芯片的。h文件吧,
作者: charlie22    时间: 2005-6-10 10:26

是不是这样操作?

//---        位变量定义        ---       
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?为一个位变量?
这是实参,函数的参数应该为形参,又如何来处理呢?
作者: seuafu2005    时间: 2005-6-10 10:44

对,看看用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就是一位。
作者: charlie22    时间: 2005-6-10 11:17

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

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

这里函数的返回值和传入参数都是bit形的,在CW中应该怎么来实现呢?
作者: seuafu2005    时间: 2005-6-10 11:48

这个没有遇到过,在CW中好象不能把函数定义成位的形式。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0