调了一天STC12C5410AD的AD转换,结果始终不对,转换结果要么是00要么是FF,我用到了AD0-AD2,对结果我只使用了高8位。代码如下望指点,谢谢 void initADC() { P1M0 = 0x07; //0000,0111用于A/D转换的P1.x口,先设为开漏 P1M1 = 0x07; //0000,0111P1.0--P1.2先设为开漏。断开内部上拉电阻 ADC_CONTR = ADC_CONTR|0x80; //1000,0000打开A/D转换电源 Delay(10000); }
uchar Ad_Change(uchar channel) { uchar temp1,temp2; ADC_CONTR = ADC_CONTR&0xE0; //1110,0000 清ADC_FLAG,ADC_START位和低3位 ADC_CONTR = ADC_CONTR|(channel&0x07); //设置当前通道号
ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,启动转换
while((ADC_CONTR & 0x10)==0); //0001,0000等待A/D转换结束
ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换
temp1= ADC_DATA; temp2= ADC_LOW2; return temp1; } |