找回密码
 立即注册
查看: 857|回复: 12

安照官网ADC例程 编译报错

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-24 13:36:20

8

主题

39

回帖

342

积分

中级会员

积分
342
发表于 2024-7-16 10:16:09 | 显示全部楼层 |阅读模式
本帖最后由 飞龙在天 于 2024-7-16 10:18 编辑

用STC8051U-8bit  安照数据手册例程 编译报错
O3V1[N6{CW{H4)7UR55H}CL.png

MAIN.C

1.21 KB, 下载次数: 103

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-24 13:36:20

8

主题

39

回帖

342

积分

中级会员

积分
342
发表于 2024-7-16 10:21:32 | 显示全部楼层
希望那位大神帮忙一下!!!!!!!!!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-7-16 10:26:39 | 显示全部楼层
我怎么记得ADC_POWER 是个宏定义呢? 给宏定义赋值当然要出错了
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-7-16 10:29:18 | 显示全部楼层
截图202407161028316748.jpg
而且下面那个注释掉的ADC_START 也是一个宏定义,,,  
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-7-16 10:32:24 | 显示全部楼层
截图202407161031466266.jpg
要想操作ADC 应该要给这个寄存器赋值。
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-7-16 10:34:11 | 显示全部楼层
截图202407161033012425.jpg
虽然是STC8H的参考例程,,,但是STC8051U在8bit模式下 这部分代码也能参考。
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 14:37:11
已绑定手机

77

主题

4849

回帖

8382

积分

超级版主

DebugLab

积分
8382
发表于 2024-7-16 10:44:49 | 显示全部楼层
ADC_POWER 和 ADC_START 是 bit,不是 SFR

你要做的操作是 ADC_POWER=1
但不能这样写,因为 ADC_POWER 所在的寄存器 ADC_CONTR 的地址是 BCH,不可位寻址
所以要这样写 ADC_CONTR|=ADC_POWER


以下供参考



        ADCCFG=ADC_RESFMT;                //设置ADC转换结果右对齐,设置ADC时钟
        ADC_CONTR=ADC_POWER;        //使能ADC
        ADC_CONTR|=5;                        //设置ADC通道为ADC5
        ADC_CONTR|=ADC_START;        //启动ADC
        EADC=1;                                        //使能ADC中断



void ADC_Isr(void) interrupt 5
{
        ADC_CONTR&=~ADC_FLAG;
        ADC_Value=ADC_RES;
        ADC_Value<<=8;
        ADC_Value|=ADC_RESL;
        ADC_CONTR|=ADC_START;
}

DebugLab
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3190

回帖

4870

积分

论坛元老

积分
4870
发表于 2024-7-16 11:56:51 来自手机 | 显示全部楼层
看来,看数据手册和头文件也是学习单片机的一部分啊。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2024-7-17 09:41:55 | 显示全部楼层
你将宏定义(常量)当做变量使用了,所以出错。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:298
  • 最近打卡:2025-05-02 16:41:54
已绑定手机

4

主题

339

回帖

1562

积分

金牌会员

积分
1562
发表于 2024-7-23 10:22:36 | 显示全部楼层
不错解释很清楚
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 17:51 , Processed in 0.124254 second(s), 114 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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