keil c位域联合体 优化

[复制链接]
4582|7
 楼主| wen_hau 发表于 2013-5-19 14:55 | 显示全部楼层 |阅读模式
typedef union
{
   struct {
           //PS2标志
                 BYTE BIT0:1;                 //
                 BYTE BIT1:1;                 //使能
                 BYTE BIT2:1;                 //
                 BYTE BIT3:1;                 //奇偶校验
                 BYTE BIT4:1;                 //
                 BYTE BIT5:1;                 //
                 BYTE BIT6:1;                 //
                 BYTE BIT7:1;                 //

                  } ps2_bool_bit;
   UINT8   ps2_c_flag;
}UNPS2C ;
extern   UNPS2C      BDATA   unps2c;

#define  scaling_f       unps2c.ps2_bool_bit.BIT0
#define  ps2_enable      unps2c.ps2_bool_bit.BIT1
#define  ps2_mode        unps2c.ps2_bool_bit.BIT2
#define  ps2_parity      unps2c.ps2_bool_bit.BIT3
#define  ps2_rx_resolu   unps2c.ps2_bool_bit.BIT4
#define  ps2_rx_samle    unps2c.ps2_bool_bit.BIT5
#define  ps2_id1         unps2c.ps2_bool_bit.BIT6
#define  ps2_id2         unps2c.ps2_bool_bit.BIT7

#define  ps2_bool        unps2c.ps2_c_flag

这是我定义位段  程序里DEBUG后

    45:     }while(ps2_enable==0);    //是否PS2枚举成功
C:0x09A1    AF22     MOV      R7,unps2c(0x22)
C:0x09A3    EF       MOV      A,R7
C:0x09A4    C3       CLR      C
C:0x09A5    13       RRC      A
C:0x09A6    30E0EA   JNB      0xE0.0,C:0993

编译器总是把变量赋值给ACC,然后再把标志移位到ACC的最低位 ACC.0然后判断,这样很浪费指令,请教高手有什么办法优化吗?

我 第一次用keil c和8051核的芯片编写  不太熟,以前一直用精简指令的IC。
mcu5i51 发表于 2013-5-19 15:14 | 显示全部楼层
好像结构体优化不够,自己定义位段变量和位变量操作就好了
 楼主| wen_hau 发表于 2013-5-19 15:35 | 显示全部楼层
mcu5i51 发表于 2013-5-19 15:14
好像结构体优化不够,自己定义位段变量和位变量操作就好了

不太明白你的意思?能说明下具体怎么改吗?
airwill 发表于 2013-5-19 16:02 | 显示全部楼层
用 BDATA 区存储区, 并用 sbit 定义位变量
或者直接用 bit 定义变量.

评分

参与人数 1威望 +1 收起 理由
wen_hau + 1 谢谢!

查看全部评分

 楼主| wen_hau 发表于 2013-5-19 16:43 | 显示全部楼层
airwill 发表于 2013-5-19 16:02
用 BDATA 区存储区, 并用 sbit 定义位变量
或者直接用 bit 定义变量.

谢谢 我知道怎么做了 :)
pang7 发表于 2013-5-20 11:17 | 显示全部楼层
51慎用这种位域操作 直接sbit吧
zuixin2005 发表于 2013-5-20 12:26 | 显示全部楼层
哇塞,都是高手
 楼主| wen_hau 发表于 2013-5-20 12:39 | 显示全部楼层
怎么结贴呀?新人
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

21

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部