| /*<br />   ADC.C file<br />   The ADC0832 ADC driver  <br />   Created by Computer-lov date: 2005.5.4<br />   Copyright (c) 2005 Computer-lov<br />   version 1.0<br />*/<br /><br />#include "MyType.h"<br />#include "ADC.H"<br />#include "at89x52.h"<br /><br />#define ADC_CS  P2_0<br />#define ADC_CLK P3_6<br />#define ADC_DI  P3_7<br />#define ADC_DO  P3_7<br /><br />/********************************************************************<br />函数功能:读ADC函数。<br />入口参数:ch: 通道。<br />返    回:ADC结果。<br />备    注:无。<br />********************************************************************/<br />uint8 ReadAdc(uint8 ch)<br />{<br /> uint8 i;<br /> uint8 result;<br /><br />//写两条一样的,延时用<br /> ADC_CLK=0;<br /> ADC_CLK=0;<br /> ADC_CS=0;<br /> ADC_CS=0;<br /> ADC_DI=1; //Start bit<br /> ADC_DI=1;<br /> ADC_CLK=1;<br /> ADC_CLK=1;<br /> ADC_CLK=0;<br /> ADC_CLK=0;<br /> ADC_DI=1; //单端<br /> ADC_DI=1;<br /> ADC_CLK=1;<br /> ADC_CLK=1;<br /> ADC_CLK=0;<br /> ADC_CLK=0;<br /> if(ch==0) //通道选择<br /> {<br />  ADC_DI=0;<br />  ADC_DI=0;<br /> }<br /> else<br /> {<br />  ADC_DI=1;<br />  ADC_DI=1;<br /> }<br /> ADC_CLK=1;<br /> ADC_CLK=1;<br /> ADC_CLK=0;<br /> ADC_CLK=0;<br /> ADC_DO=1;<br /> for(i=0;i<8;i++) //读出8位数据<br /> {<br />  ADC_CLK=1;<br />  ADC_CLK=1;<br />  ADC_CLK=0;<br />  ADC_CLK=0;<br />  result<<=1;<br />  if(ADC_DO)result++;<br /> }<br /> ADC_CS=1;<br /> return result;<br />}<br />////////////////////////End of function////////////////////////////// |