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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    变量:  G; }) g+ b% L; W! x* S
    volatile bdata Hall_val,DRV_val;% E& h; }0 r2 r5 D
    sbit ha=Hall_val^2;
    4 _, ]7 J( B6 O4 @5 |* \9 csbit hb=Hall_val^1;
    . \$ r7 Y- ^9 R% d. Y& usbit hc=Hall_val^0;
    ; a, a8 J- Q  D* |' i# C3 H
    7 F/ }' ~4 y! e) L2 ~9 Y# d$ I拼合:  M+ W6 i9 `; Z
    ha=Ha;hb=Hb;hc=Hc' w* \: a6 K! ?! ^  R' I) Z
    屏蔽未用的位:# h, t2 H* n& S( o
    Hall_val&=0x0f;
      [4 V& T8 j+ E; D使用:" ?+ d* k( k' A/ R. X
    DRV_val=hal_drv[Hall_val];
    1 Z1 C: K4 J8 ]* m% D/ k8 \. X$ ~- y7 @% L
    结果,Hall_val的值总是0.
    " X+ v+ z1 o2 x' d8 {' C查汇编,发现不能理解% M% S1 F' z& y9 [+ P: X+ g1 W

    * ]8 K3 L& r+ K$ s8 w1 g# a6 A   151:                         ha=Ha;hb=Hb;hc=Hc;; Y5 m: W7 \* Z8 N$ E1 v
    C:0x0389    A2B6     MOV      C,Ha(0xB0.6)
    4 u1 b4 F1 [, F; J- vC:0x038B    9212     MOV      ha(0x22.2),C
    7 ^+ v4 p& S9 A# B8 p1 VC:0x038D    A2B3     MOV      C,Hb(0xB0.3); _9 z8 V; b4 c/ \% ^/ o+ E. E" N& J
    C:0x038F    9211     MOV      hb(0x22.1),C! @( J+ `- O" x5 ^
    C:0x0391    A2B2     MOV      C,Hc(0xB0.2)
    ) B1 z1 H# a  t- o6 f) \C:0x0393    9210     MOV      hc(0x22.0),C
    1 L% e: n* P! y3 n! x1 Z( G$ G9 _4 {   152:                         Hall_val&=0x0f;
    ! ^0 n( T% O/ Q; {4 b: rC:0x0395    53230F   ANL      0x23,#0x0F
    % B! p# S) o3 w7 j3 |, zC:0x0398    752200   MOV      Hall_val(0x22),#0x00) E4 Z4 Y" t# n. O% t1 [
       153:                         DRV_val=hal_drv[Hall_val];# ]3 c8 W9 i0 X0 ?  |

      S# f5 B9 F& f. r( h这个各位有什么经验分享指导一下吗?8 ~8 R) p( B1 w+ 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-7-17 16:50 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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