安照官网ADC例程 编译报错
本帖最后由 飞龙在天 于 2024-7-16 10:18 编辑用STC8051U-8bit安照数据手册例程 编译报错 希望那位大神帮忙一下!!!!!!!!! 我怎么记得ADC_POWER 是个宏定义呢? 给宏定义赋值当然要出错了
而且下面那个注释掉的ADC_START 也是一个宏定义,,,
要想操作ADC 应该要给这个寄存器赋值。
虽然是STC8H的参考例程,,,但是STC8051U在8bit模式下 这部分代码也能参考。 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;
}
看来,看数据手册和头文件也是学习单片机的一部分啊。 你将宏定义(常量)当做变量使用了,所以出错。 不错解释很清楚
页:
[1]
2