我这里正常,sum为0x0007FF80,最终Get_ADCResult_128返回值为0x0FFF:
- u16 Get_ADCResult(u8 channel)//chamnel=0 15
- {
- u16 adc;
- channel=channel;
- adc=4095;
- return adc;
- }
-
- #define SAMPLE_128_SHIFT 7
- static u16 Get_ADCResult_128(u8 ch)
- {
- u32 sum=0;
- u8 i = 0;
- for(i=0;i< 128;i++)//你原来的单次采样函数
- sum += Get_ADCResult(ch);
-
- u1tx(0x66);
- u1tx(sum>>24);
- u1tx(sum>>16);
- u1tx(sum>>8);
- u1tx(sum);
- return(u16)(sum>>SAMPLE_128_SHIFT);
- }
- void main(void)
- {
- u16 v;
- EAXFR=1;//使能访问XFR
- CKCON=0x00;//外部数据总线等待时间,置0就好
- WTST=0x00;//读取程序等待时间控制,置0最快
- init_devices();
-
- u1tx(0xAA);
- u1tx(0x55);
-
- //while(1)
- {
- P11=~P11;
- delayms(100);//38ms
- v=Get_ADCResult_128(0);
- u1tx(0x55);
- u1tx(v>>8);
- u1tx(v);
- }
- while(1);
- }
复制代码
|