DECLARE FUNCTION AskForBaseAddress! (OldOne AS INTEGER) Chan% = 0 DataRead% = 0 TimeOut = 655354 KeyPressed = 0 CLS PRINT " BASIC SAMPLE #6: QSAMPLE6.BAS" PRINT PRINT "This program will read data from channel 0 on the A/D card" PRINT "at the rate input to pin 25 (active low edge to start)" PRINT "Therefore, to use this sample, a signal must be provided to this" PRINT "pin. It is possible to use the output of the counter, or any" PRINT "frequency generator." PRINT Baseaddr% = AskForBaseAddress(&H340) OUT Baseaddr% + 2, Chan% OUT Baseaddr%, &HF4 WHILE (NOT KeyPressed) TimeOut = 655354 WHILE (((INP(Baseaddr% + 2) AND &H80) = &H80) AND (TimeOut > 0) AND (NOT KeyPressed)) TimeOut = TimeOut - 1 KeyPressed = NOT (INKEY$ = "") WEND WHILE (((INP(Baseaddr% + 2) AND &H80) = 0) AND (TimeOut > 0) AND (NOT KeyPressed)) TimeOut = TimeOut - 1 KeyPressed = NOT (INKEY$ = "") WEND Data1% = INP(Baseaddr% + 6) Data2% = INP(Baseaddr% + 7) DataRead% = VAL("&H" + LEFT$(HEX$(Data2%) + HEX$(Data1%), 3)) LOCATE 12 + Chan%, 10 PRINT "Chan "; Chan%; " Data Read: "; DataRead%; " "; IF (TimeOut = 0) THEN PRINT "A/D timeout"; Chan% = Chan% + 1 Chan% = Chan% MOD 8 OUT Baseaddr% + 2, Chan% WEND LOCATE 20, 1 END FUNCTION AskForBaseAddress (OldOne AS INTEGER) Msg$ = "" NewOne% = 0: Success = 0: Dummy% = 0 AddrInputPosX = 0: AddrInputPosY = 0 PRINT "Please enter the Base Address (0000-FFFF) for your card (in hex)" PRINT "or press ENTER for "; HEX$(OldOne%); "." PRINT ">"; AddrInputPosX = POS(0): AddrInputPosY = CSRLIN WHILE Success = 0 LOCATE AddrInputPosY, AddrInputPosX PRINT " " LOCATE AddrInputPosY, AddrInputPosX LINE INPUT Msg$ NewOne% = VAL("&H0" + LEFT$(Msg$, 4)) Success = 1 Dummy% = NewOne% ELSEIF (Msg$ = "") THEN LOCATE AddrInputPosY, AddrInputPosX PRINT HEX$(OldOne%) Success = 1 Dummy% = OldOne% END IF WEND AskForBaseAddress = Dummy% END FUNCTION