//***************************************************************** //funktionen zur ansteuereung einens 16bit ad wandler //der wandler ist vom typ ad677 von analog device //clk,sample,cal,busy,sdata sind direkt ohne externe //pull up widerstände am ad wandler angeschlossen. // //up ds89c420 "dallas" 11.0592Mhz void InitAD(void) { CLK=0; //definierter zustand der steuerleitungen SAMPLE=0; CAL=1; //reset AD, prepare self calibrating process CAL=0; //start cal do{ CLK^=1; //clock erzeugen solange das busy flag des ad wandler 1 ist }while(BSY==1); } void ReadAD(void) { unsigned long ad_result=0; //wandler byte's unsigned long hilf; //variable für umrechnen in volt SAMPLE=0; //definierte zustände der ports CAL=0; CLK=0; SAMPLE=1; //start conversion DelayT1(1); //4us delay SAMPLE=0; //wandlung einleiten do{ ad_result<<=1; //bit der variable um ein bit nach links schieben das erste bit hat keinen wert CLK=1; //clk erzeugen CLK=0; if(SDATA==1) ad_result++; //wenn das bit vom ad 1 war inkrementieren }while(BSY==1); //solange das busy flag gesetz ist sind noch nicht 16bit ausgelesen hilf=(100000*ad_result)/32768; //umrechnen in V mit einer Vref von 10V AnalogBuf=hilf; //speichern }