|
|
20黑幣
- //驅(qū)動程序
- 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);這句,請教如何解決
- */
復(fù)制代碼 |
-
TM7707
-
stc15w204s
最佳答案
查看完整內(nèi)容
數(shù)值穩(wěn)定,那是不是你分壓網(wǎng)絡(luò)或2.5v基準(zhǔn)的誤差沒計算調(diào)節(jié)好,采集計算時乘上一個誤差系數(shù)就可以了吧
|