下面是我写的ADS8341的读取检测结果的程序,你帮忙看一下,问题出在哪里,谢谢。
void ADS8341_GetData(unsigned char ChanleNumber) { unsigned char i; unsigned char iCount; unsigned char ControlBYTE; unsigned char Bit01 = 0x01; unsigned char BitFE = 0xFE; ControlBYTE = 0x00; ControlBYTE = ControlBYTE | ADS8341_S; //开位 ControlBYTE = ControlBYTE | ChanleNumber; //通道 ControlBYTE = ControlBYTE | ADS8341_SD; //四通道独立 ControlBYTE = ControlBYTE | ADS8341_PD0; //全功耗模式 ControlBYTE = ControlBYTE | ADS8341_PD1;
i=8; iCount = 0; //初始化时钟
ADS8341_SDI = 0; ADS8341_CLK = 0; ADS8341_CS = 0;
//向ADS8341发送控制字 while(i--){ ADS8341_CLK = 0; ADS8341_SDI = (bit)(ControlBYTE & 0x80); ADS8341_CLK = 1; ControlBYTE <<= 1; }
NOP; ADS8341_CLK = 0;
//读取数据 for(i=0;i<8;i++) { //高8位 ADS8341_CLK = 1; // NOP;
ADS8341_CLK = 0; if(ADS8341_SDO==0) Buffer[2] = Buffer[2] & BitFE; else Buffer[2] = Buffer[2] | Bit01; Buffer[2] = _cror_(Buffer[2],1); // Buffer[2]=Buffer[2]>>1 }
for(i=0;i<8;i++) { //低8位 ADS8341_CLK = 1; // NOP;
ADS8341_CLK = 0; if(ADS8341_SDO==0) Buffer[3] = Buffer[3] & BitFE; else Buffer[3] = Buffer[3] | Bit01; Buffer[3] = _cror_(Buffer[3],1); // Buffer[3]=Buffer[3]>>1 } for(i=0;i<8;i++) { //Zero Filled...(LSB) ADS8341_CLK = 1; // NOP;
ADS8341_CLK = 0; if(ADS8341_SDO==0) Buffer[4] = Buffer[4] & BitFE; else Buffer[4] = Buffer[4] | Bit01; Buffer[4] = _cror_(Buffer[4],1); // Buffer[4]=Buffer[4]>>1 } ADS8341_CS = 1; NOP; }
|