找回密码
 注册
关于网站域名变更的通知
查看: 175|回复: 3
打印 上一主题 下一主题

编译器不能理解我用sbit拼合位信息,还是有BUG?

[复制链接]
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-3-11 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    变量:
    / A; s8 p* h5 B6 {; g! X  @' Y; tvolatile bdata Hall_val,DRV_val;% ?2 j: v. s+ O
    sbit ha=Hall_val^2;
    # F( A( |  b" @/ t1 S" h7 msbit hb=Hall_val^1;
    / ^/ L. E- S  A' m9 m. [% B5 |sbit hc=Hall_val^0;
    $ G) G6 [, W8 _- v. U# v9 ]4 z" z. ~! n; w6 I
    拼合:( R$ c1 Z5 o6 t
    ha=Ha;hb=Hb;hc=Hc' j7 C# d3 \  ^- K, W' g# W7 ^
    屏蔽未用的位:- N( {0 |% [, S3 C1 k# @
    Hall_val&=0x0f;" [1 ~  U2 U" g$ a' |" b8 w" e
    使用:
      {+ v% ^2 t* p: w- O$ oDRV_val=hal_drv[Hall_val];" ]& B: x: o7 U/ s7 L
    . d$ ]( Z9 f) c
    结果,Hall_val的值总是0.. Y3 e" d8 ^6 c: w3 u
    查汇编,发现不能理解- f* w3 I5 ?# u! O( [, v4 \

    & o5 r- K( P  l8 ^. W+ \3 k' p: l   151:                         ha=Ha;hb=Hb;hc=Hc;
    1 q: u. N! r) n$ v0 k8 r( E+ vC:0x0389    A2B6     MOV      C,Ha(0xB0.6)
    6 j* w, U6 [" bC:0x038B    9212     MOV      ha(0x22.2),C
    1 n2 v' g5 `3 y% I& G. ]C:0x038D    A2B3     MOV      C,Hb(0xB0.3)( [: O' p$ w9 |1 n$ H) Y4 t; ^/ t
    C:0x038F    9211     MOV      hb(0x22.1),C
    ( m3 G6 J  F1 }; R& H. wC:0x0391    A2B2     MOV      C,Hc(0xB0.2)
    ) v; l. V2 Q6 g5 R: N0 |C:0x0393    9210     MOV      hc(0x22.0),C# ?( [, q6 \$ \
       152:                         Hall_val&=0x0f;; e- `3 t+ m) d: k) A% Q
    C:0x0395    53230F   ANL      0x23,#0x0F& z  Y: N# @( M; P
    C:0x0398    752200   MOV      Hall_val(0x22),#0x006 x8 w. j# I. f6 T1 T
       153:                         DRV_val=hal_drv[Hall_val];% i) Q; A. m$ C+ ^
    0 _" z; M& d7 j3 a
    这个各位有什么经验分享指导一下吗?
    7 M  H" {/ M# F) W: r) o5 I
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-3-11 14:42 | 只看该作者
    sbit定义的是位变量,无论怎么运算结果只有1或0
  • TA的每日心情
    开心
    2022-1-29 15:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    3#
    发表于 2022-3-11 15:02 | 只看该作者
    用结构体定义位,然后用联合体把结构体和位字节定义在同一内存,这样就既可以单独操作位,也可以操作字节,
  • TA的每日心情
    开心
    2022-1-29 15:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    4#
    发表于 2022-3-11 16:25 | 只看该作者
    Ha,Hb,Hc的定义很重要,代码里没有定义,所以看不出具体的问题,你可以用,0,1代替,测试
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-9 05:34 , Processed in 0.140625 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表