void InitAD(void) { CLK=0; SAMPLE=0; CAL=1; //reset AD, prepare self calibrating process DelayT0(1); CAL=0; //start cal do{ CLK^=1; #asmline nop; }while(BSY==1); } void ReadAD(void) { unsigned long ad_result=0; //wandler byte's unsigned long hilf; unsigned char i; SAMPLE=0; CAL=0; CLK=0; SAMPLE=1; //start conversion DelayT0(1); //4us SAMPLE=0; for(i=0;i<17;i++){ ad_result<<=1; CLK=1; DelayT0(1); CLK=0; DelayT0(1); //variable um ein bit nach rechst schieben if(SDATA==1){ //wenn das bit vom ad 1 war inkrementieren ++ad_result; } } //hilf=(100000*ad_result)/32768; //umrechnen in V mit einer Vref von 10V AnalogBuf=ad_result; }