#include"STC12C4052AD.h"
typedefstruct
{
BOOLRun;//BOOL量作为定时采样标志,比如每隔3秒,置位一
次该标志
BYTECurch;//当前通道
BYTEtempCvData[6];//转换结果临时缓冲
BYTECvTimes;//采样次数采样4次,去最大最小,保留4个取平均值
BYTEADData[MAX_ADCH];//MAX_ADCH保存各通道最终采样数据
}STADC;
STADCADC;
voidInitADC()
{
Uint16i;
ADC_CONTR=0xC0;//ADC模块加电,420周期转换一次
for(i=0;i<20000;i++);//ADC电源开启后,延时
//设置P口外AD模式
P1M0=0x03;//ADC0/1高阻输入
P1M1=0x00;
EADC_SPI=1;//开放ADCSPI总中断
ADC_DATA=0;
AUXR=EADCI;//开放ADC中断
MEMSet(&ADC,0,sizeof(STADC));
//启动0号通道
ADC.Curch=0;
ADC_CONTR|=ADC.Curch;//设置下一通道
ADC.Run=TRUE;//标志ADC正在转换
ADC_CONTR|=ADC_START;//启动AD转换器
}
voidADCISR()interrupt