飞龙在天 发表于 2024-7-16 10:16:09

安照官网ADC例程 编译报错

本帖最后由 飞龙在天 于 2024-7-16 10:18 编辑

用STC8051U-8bit安照数据手册例程 编译报错

飞龙在天 发表于 2024-7-16 10:21:32

希望那位大神帮忙一下!!!!!!!!!

_奶咖君_ 发表于 2024-7-16 10:26:39

我怎么记得ADC_POWER 是个宏定义呢? 给宏定义赋值当然要出错了

_奶咖君_ 发表于 2024-7-16 10:29:18


而且下面那个注释掉的ADC_START 也是一个宏定义,,,

_奶咖君_ 发表于 2024-7-16 10:32:24


要想操作ADC 应该要给这个寄存器赋值。

_奶咖君_ 发表于 2024-7-16 10:34:11


虽然是STC8H的参考例程,,,但是STC8051U在8bit模式下 这部分代码也能参考。

DebugLab 发表于 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;
}

soma 发表于 2024-7-16 11:56:51

看来,看数据手册和头文件也是学习单片机的一部分啊。

梁工 发表于 2024-7-17 09:41:55

你将宏定义(常量)当做变量使用了,所以出错。

haiyang201 发表于 2024-7-23 10:22:36

不错解释很清楚
页: [1] 2
查看完整版本: 安照官网ADC例程 编译报错