请教各位一个小问题

时间:2021-07-31 17:34:31
大家看看我的程序,

原来的是这样的:
BOOL DR_SingleAD(void)   //单次A/D转换
{
  //PORTACFG=0x01;
  read1543(channel_13);   // A/D读函数

  EP0BUF[0]=0xA1;
  EP0BUF[1]=CHDataL;
  EP0BUF[2]=CHDataH;
  EP0BCH=0;
  EP0BCL=3;
  EP0CS |= bmHSNAK;
  return(TRUE);
}

就是AD转换后进行赋值,把低位赋给EP0BUF[1],高位赋给EP0BUF[2]
现在需要进行200次A/D转换后取平均值再分别赋给低高位
我改成如下,但结果还是不正确,请问哪里出问题了呢?


BOOL DR_SingleAD(void)   //单次A/D转换
{
  uint i,X,Y,S2=0;
  //PORTACFG=0x01;

for(i=0;i<200;i++)

  read1543(channel_13);
  X=CHDataL;
  Y=CHDataH;
  S2=X+Y<<8;
}
  Y=S2/200;

  EP0BUF[0]=0xA1;
  EP0BUF[1]=Y&0xff;
  EP0BUF[2]=(Y&0xff00)>>8;
  EP0BCH=0;
  EP0BCL=3;
  EP0CS |= bmHSNAK;
  return(TRUE);
}

2 个解决方案

#1


该回复于2009-06-08 14:14:13被版主删除

#2


应当是for循环中,没有对S2变量进行累加导致。可以再确认一下

#1


该回复于2009-06-08 14:14:13被版主删除

#2


应当是for循环中,没有对S2变量进行累加导致。可以再确认一下