|
20黑幣
- //驅動程序
- sbit AD7707_DRDY = P1^0;
- sbit AD7707_DIN = P3^6;
- sbit AD7707_DOUT = P3^7;
- sbit AD7707_SCLK = P1^1;
- void write_byte1(uchar date);
- uchar read_byte1();
- void init1();
- void init2();
- unsigned long read_ch1_result();
- unsigned long read_ch2_result();
- void write_byte1(uchar date)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- AD7707_SCLK=0;
- _nop_();
- if(date&0x80)
- AD7707_DIN=1;
- else
- AD7707_DIN=0;
- AD7707_SCLK=1;
- date<<=1;
- }
- }
- uchar read_byte1( )
- {
- uchar j,b1;
- for(j=0;j<8;j++)
- {
- AD7707_SCLK=0;
- b1=(b1<<1)|AD7707_DOUT;
- AD7707_SCLK=1;
- }
- return b1;
- }
- void init1()
- {
- AD7707_SCLK=1;
- AD7707_DIN=1;
- AD7707_DRDY=1;
- write_byte1(0X10);
- write_byte1(0X40);
- write_byte1(0X50);
- write_byte1(0X00);
- write_byte1(0X20);
- write_byte1(0X0f);
- }
- void init2()
- {
- AD7707_SCLK=1;
- AD7707_DIN=1;
- AD7707_DRDY=1;
- write_byte1(0X11);
- write_byte1(0X40);
- write_byte1(0X50);
- write_byte1(0X00);
- write_byte1(0X20);
- write_byte1(0X0f);
- }
- unsigned long read_ch1_result()
- {
- unsigned long TM_result;
- uchar i,a[3]={1,2,3};
- AD7707_DRDY=1;
- while(AD7707_DRDY);
- write_byte1(0x38);
- for(i=0;i<3;i++)
- {
- a[i]=read_byte1();
- }
- AD7707_DRDY=1;
- TM_result=a[2]+(a[1]*256)+(a[0]*65536);
- return TM_result;
- }
- /*
- 問題:在讀取的時候,程序卡在了while(AD7707_DRDY);這句,請教如何解決
- */
復制代碼 |
最佳答案
查看完整內容
數值穩定,那是不是你分壓網絡或2.5v基準的誤差沒計算調節好,采集計算時乘上一個誤差系數就可以了吧
|