这几天搞电池电压检测,采用STC12C5201AD。发现ADC_CONTR这个寄存器的第3位(AD转换的启动位)和第5、6位(转换速度选择位)无法写入数据。例如:
#define AD_POWER 0x80;
#define SPEED 0x60;
#define CH 0x06;
#define AD_START 0x08;
unsigned char AD_POWER_temp;
unsigned char AD_START_temp;
unsigned char CH_temp;
unsigned char SPEED_temp;
void AD()
{
ADC_CONTR=AD_POWER|SPEED; //开启ADC电源
_NOP_();
_NOP_();
_NOP_();
_NOP_();
ADC_CONTR=AD_POWER|SPEED|CH|AD_START;//选择转换通道,启动AD转换
_NOP_();
_NOP_();
_NOP_();
_NOP_();
AD_POWER_temp=ADC_CONTR&AD_POWER;
AD_START_temp=ADC_CONTR&AD_START;
CH_temp=ADC_CONTR&CH;
SPEED_temp=ADC_CONTR&SPEED;
}
结果我发现AD_POWER_temp的值为0x80,AD_START_temp的值为0x00,CH_temp的值为0x06,SPEED_temp的值为0x00;这是为什么呀? |