' {$STAMP BS2} ' {$PBASIC 2.5} '[Declarations] adcBits VAR Byte v VAR Byte r VAR Byte v2 VAR Byte v3 VAR Byte n VAR Byte '[Initialization] CS PIN 0 CLK PIN 1 DataOutput PIN 2 DEBUG CLS 'Start display. DEBUG CLS, "DAC Values", CR DEBUG "Decimal Binary DVM", CR ' [Main Routine] FOR n = 0 TO 255 GOSUB DAC GOSUB ADC_Data GOSUB Calc_Volts GOSUB Display NEXT STOP '[Subroutines] DAC: DIRH = 255 OUTH = n RETURN RETURN ADC_DATA: LOW CLK LOW CS PULSOUT CLK, 210 SHIFTIN DataOutput,CLK,MSBPOST,[adcBits\8] HIGH CS RETURN Calc_Volts: v=5*adcBits/255 r=5*adcBits//255 v2=100*r/255 v3=100*r//255 v3=10*v3/255 IF (v3>=5) THEN v2=v2+1 IF (v2>=100) THEN v=v+1 v2=0 ENDIF RETURN Display: DEBUG DEC3 n, " ", BIN4 n, " " DEBUG DEC1 v, ".", DEC3 v2, " Volts", CR RETURN