找回密码
 立即注册
查看: 303|回复: 5

ADC_RES左移8位后等于多少了

[复制链接]
  • TA的每日心情

    2023-12-25 15:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    39

    主题

    204

    回帖

    651

    积分

    高级会员

    积分
    651
    发表于 2023-6-13 15:52:00 | 显示全部楼层 |阅读模式
    各位大佬,存储ADC高8位数据的寄存器ADC_RES左移8位后等于多少了?谢谢。
    ADC_RES左移8位后等于多少了-1.png
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:54
  • 签到天数: 163 天

    [LV.7]常住居民III

    9

    主题

    310

    回帖

    3785

    积分

    荣誉版主

    积分
    3785
    发表于 2023-6-13 16:06:10 | 显示全部楼层
    左移8位,在数学上与乘以256相同

    Screenshot 2023-06-13 160155.png

    例如12位ADC的结果为0110 1111 0011(0x6F3,1779),则ADC_RES为0000 0110(0x06,6),ADC_RESL为1111 0011(0xF3,243)。ADC_RES左移8位后为0000 0110 0000 0000(0x600,1536),加上ADC_RESL后得到结果0000 0110 1111 0011。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    2023-12-25 15:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    39

    主题

    204

    回帖

    651

    积分

    高级会员

    积分
    651
     楼主| 发表于 2023-6-13 17:23:28 | 显示全部楼层
    kksk 发表于 2023-6-13 16:06
    左移8位,在数学上与乘以256相同

    我没理解您的意思,ADC_RES不是8位的寄存器吗?你左移8位后怎么变成16位的数据寄存器了?

    点评

    这里用的是  详情 回复 发表于 2023-6-13 18:12
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:54
  • 签到天数: 163 天

    [LV.7]常住居民III

    9

    主题

    310

    回帖

    3785

    积分

    荣誉版主

    积分
    3785
    发表于 2023-6-13 18:12:20 | 显示全部楼层
    980578873 发表于 2023-6-13 17:23
    我没理解您的意思,ADC_RES不是8位的寄存器吗?你左移8位后怎么变成16位的数据寄存器了? ...

    这里用的是<<而非<<=,左移后临时放在内存中备用,ADC_RES原始值不变。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    2023-12-25 15:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    39

    主题

    204

    回帖

    651

    积分

    高级会员

    积分
    651
     楼主| 发表于 2023-6-14 14:10:08 | 显示全部楼层

    我还是不明白,假如ADC_RES为0000 0110,ADC_RES<<8 后为:0000 0110 0000 0000,怎么变为16位数了?ADC_RES不是8位的寄存器吗?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 08:14
  • 签到天数: 151 天

    [LV.7]常住居民III

    18

    主题

    534

    回帖

    1298

    积分

    金牌会员

    积分
    1298
    发表于 2023-6-14 17:08:04 | 显示全部楼层
    980578873 发表于 2023-6-14 14:10
    我还是不明白,假如ADC_RES为0000 0110,ADC_RES

    你的adc_val定义的是16位的哦,它是一个16位的临时缓存;ADC_RES确实是8位的,你把ADC_RES的值左移8位后是转存在adc_val里面了,那就是0000 0110 0000 0000了,但是原来的ADC_RES里面的数据还是原来的0000 0110。
    不停地学习
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-19 16:31 , Processed in 0.068237 second(s), 56 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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