找回密码
 立即注册
查看: 1317|回复: 13

安照官网ADC例程 编译报错 | 已找到原因

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-06-03 11:14:08

8

主题

40

回帖

350

积分

中级会员

积分
350
发表于 2024-7-16 10:16:09 | 显示全部楼层 |阅读模式
用STC8051U-8bit  安照数据手册例程 编译报错
O3V1[N6{CW{H4)7UR55H}CL.png

MAIN.C

1.21 KB, 下载次数: 130

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-06-03 11:14:08

8

主题

40

回帖

350

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:471
  • 最近打卡:2025-06-27 10:50:20

33

主题

2437

回帖

5186

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:471
  • 最近打卡:2025-06-27 10:50:20

33

主题

2437

回帖

5186

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:471
  • 最近打卡:2025-06-27 10:50:20

33

主题

2437

回帖

5186

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:471
  • 最近打卡:2025-06-27 10:50:20

33

主题

2437

回帖

5186

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:480
  • 最近打卡:2025-06-28 00:00:59
已绑定手机

80

主题

5214

回帖

9305

积分

超级版主

DebugLab

积分
9305
发表于 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
  • 打卡总天数:480
  • 最近打卡:2025-06-29 00:42:32
已绑定手机

19

主题

3233

回帖

5347

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:106
  • 最近打卡:2025-06-28 00:08:16

75

主题

6163

回帖

1万

积分

超级版主

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:354
  • 最近打卡:2025-06-28 07:52:44
已绑定手机

4

主题

404

回帖

1963

积分

金牌会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-29 07:32 , Processed in 0.508327 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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