#include "ADC0832.h"
#include "intrins.h"
/*********************************************
讀取ADC
**********************************************/
uchar ADC1(uchar ch)//通道ch 1,2
{
uchar temp0,temp1,i;
CS1=0;
temp0=0;
temp1=0;
_nop_();
_nop_();
DI=1;//開始位
_nop_();
_nop_();
CLK=1;
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
DI=0;
_nop_();
_nop_();
//選擇通道0
DI=1;
_nop_();
CLK=1;//上升沿DI=1
_nop_();
CLK=0;//1個(gè)下降沿DI=1
_nop_();
if(ch==1)
DI=0;
if(ch==2)
DI=1;
_nop_();
CLK=1;
_nop_();
CLK=0;//第3個(gè)上升沿DI=0
_nop_();
DI=1;
//********通道選擇結(jié)束開始讀取轉(zhuǎn)換后的二進(jìn)制數(shù)****
//下降沿讀數(shù),一下進(jìn)行判斷和處理,共8次
for(i=0;i<8;i++)
{
temp0=temp0<<1;
CLK=1;
if(DO)
temp0++;
_nop_();
CLK=0;
}
for(i=0;i<8;i++)
{
temp1=temp1>>1;
CLK=1;
if(DO)
temp1=temp1 +0x80;
_nop_();
CLK=0;
}
CS1=1;
return temp0;
}
/*********************************************
讀取ADC
**********************************************/
uchar ADC2(uchar ch)//通道ch 1,2
{
uchar temp0,temp1,i;
CS2=0;
temp0=0;
temp1=0;
_nop_();
_nop_();
DI=1;//開始位
_nop_();
_nop_();
CLK=1;
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
DI=0;
_nop_();
_nop_();
//選擇通道0
DI=1;
_nop_();
CLK=1;//上升沿DI=1
_nop_();
CLK=0;//1個(gè)下降沿DI=1
_nop_();
if(ch==1)
DI=0;
if(ch==2)
DI=1;
_nop_();
CLK=1;
_nop_();
CLK=0;//第3個(gè)上升沿DI=0
_nop_();
DI=1;
//********通道選擇結(jié)束開始讀取轉(zhuǎn)換后的二進(jìn)制數(shù)****
//下降沿讀數(shù),一下進(jìn)行判斷和處理,共8次
for(i=0;i<8;i++)
{
temp0=temp0<<1;
CLK=1;
if(DO)
temp0++;
_nop_();
CLK=0;
}
for(i=0;i<8;i++)
{
temp1=temp1>>1;
CLK=1;
if(DO)
temp1=temp1 +0x80;
_nop_();
CLK=0;
}
CS2=1;
return temp0;
}
資料借鑒于此紛傳
閱讀全文