找回密码
 立即注册
查看: 306|回复: 4

STC-ISP范例程序ADC程序问题

[复制链接]
  • TA的每日心情
    开心
    昨天 00:02
  • 签到天数: 87 天

    [LV.6]常住居民II

    5

    主题

    39

    回帖

    544

    积分

    高级会员

    积分
    544
    发表于 2023-11-26 08:24:21 | 显示全部楼层 |阅读模式
    STC-ISP(V6.92F)范例程序ADC程序,下面程序来源于STC-ISP(V6.92F)范例程序
    int ADCRead()
    {
        int res;

        ADC_CONTR |= 0x40;                          //启动AD转换
        _nop_();
        _nop_();
        while (!(ADC_CONTR & 0x20));                //查询ADC完成标志
        ADC_CONTR &= ~0x20;                         //清完成标志
        res = (ADC_RES << 8) | ADC_RESL;            //读取ADC结果

        return res;
    }
    请问: res = (ADC_RES << 8) | ADC_RESL; ADC_RES << 8是否会发生数据溢出,ADC_RES是char类型,ADC_RES<< 8是不是永远=0;
    截图202311260824096884.jpg
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-5 08:35
  • 签到天数: 143 天

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2144

    积分

    荣誉版主

    积分
    2144
    发表于 2023-11-26 09:54:20 | 显示全部楼层
    ADCRES 是高8位
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 22:41
  • 签到天数: 175 天

    [LV.7]常住居民III

    17

    主题

    371

    回帖

    1375

    积分

    荣誉版主

    积分
    1375
    发表于 2023-11-26 12:43:05 | 显示全部楼层
    请问: res = (ADC_RES << 8) | ADC_RESL; ADC_RES << 8是否会发生数据溢出,ADC_RES是char类型,ADC_RES<< 8是不是永远=0;

    答:因res为16位变量,编译器会对参与运算的8位变量进行数值提升。
      还可以查看编译后的汇编代码进行确认。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3058

    回帖

    6895

    积分

    超级版主

    积分
    6895
    发表于 2023-11-27 11:55:44 | 显示全部楼层
    请问: res = (ADC_RES << 8) | ADC_RESL; ADC_RES << 8是否会发生数据溢出,ADC_RES是char类型,ADC_RES<< 8是不是永远=0;
    ================================

    为了避免异常,建议如下:
    res = ( (u16)ADC_RES << 8)  +  ADC_RESL;
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:13
  • 签到天数: 117 天

    [LV.6]常住居民II

    0

    主题

    81

    回帖

    662

    积分

    高级会员

    积分
    662
    发表于 2023-11-30 08:46:14 | 显示全部楼层
    向高手学习
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-22 00:04 , Processed in 0.066525 second(s), 47 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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