我编写了一个用STC15F2K60S2单片机用两个通道采集工频电压信号和电流信号的程序,一个工频周期采样12个点,用定时器定时1.667ms,定时结束后先采P10口再采P11口,发现寄存器中存放两个通道模数转换结果数组里的值是一样的,h[]数组跟k[]数组里的值是一样的,个人分析是转换AD通道的程序出错了,部分程序如下,请各位高手帮我纠正一下,谢谢。
/*-----------------
定时中断服务程序
----------------------------*/
void timer0() interrupt 1
{
ch=0;
ADC_CONTR|=(ADC_START|ch);
}
/*----------------------------
初始化ADC
----------------------------*/
void InitADC()
{
P1ASF = 0xff; //设置P1口为AD口
CLK_DIV&=~0x20; //高8位加低两位的形式
ADC_RES = 0; //清除结果寄存器
ADC_CONTR = ADC_POWER | ADC_SPEEDHH | ch; //选择ch口作为AD输入来用
Delay(2);
IE=0xa0; //ADC上电并延时
}
/*----------------------------
初始化T0定时器
----------------------------*/
void InitT0() //初始化定时器0
{
AUXR|=0x80;
TMOD&=0xF0;
TH0=0x27; //定时1.667ms
TL0=0xF5;
TF0=0;
TR0=1;
IE|=0x82;
} |