Application Programs 103
1580 CALL IBWRT( SLOTO%, CMD$ ) ‘ CONVERSION TO SEND REAL NUMBERS OVER THE BUS
1590 IF IBSTA% < 0 THEN GOTO 1960 ‘ AS PART OF THE COMMAND STRING.
1600 ‘
1610 CMD$ = "LIST:STEP AUTO" ‘ DWELL-PACED LIST
1620 CALL IBWRT( SLOTO%, CMD$ )
1630 IF IBSTA% < 0 THEN GOTO 1960
1640 ‘
1650 CMD$ = "INITIATE" ‘ ENABLE TRIGGER TO START LIST
1660 CALL IBWRT( SLOTO%, CMD$ )
1670 IF IBSTA% < 0 THEN GOTO 1960
1680 ‘
1690 ‘ BEFORE TRIGGERING THE MODULE, DETERMINE IF IT IS READY BY CHECKING FOR
1700 ' WAITING FOR TRIGGER' (BIT 5 OF THE OPERATION STATUS REGISTER).
1710 ‘
1720 ‘ YOU COULD ELIMINATE THIS STEP BY SIMPLY INSERTING A PAUSE IN THE PROGRAM. HOWEVER, BY
1730 ‘ CHECKING THE INSTRUMENT STATUS, YOU CAN AVOID TIMING PROBLEMS. ALSO, ANY OTHER OPERATIONS
1740 ‘ THAT TAKE TIME WILL GIVE THE MODULE A CHANCE TO COMPLETE PROCESSING.
1750 ‘
1760 CONDITION.DATA$ = SPACE$(20) ‘ RESERVE SPACE FOR READING IN STRING
1770 ‘
1780 WHILE ( (VAL( CONDITION.DATA$ ) AND 32 ) <> 32)‘ CONTINUE TO LOOP UNTIL BIT 5 (VALUE 32) = TRUE
1790 CMD$ = "STATUS:OPERATION:CONDITION?"
1800 CALL IBWRT( SLOTO%, CMD$ )
1810 IF IBSTA% < 0 THEN GOTO 1960
1820 CALL IBRD( SLOTO%, CONDITION.DATA$ )
1830 IF IBSTA% < 0 THEN GOTO 1960
1840 WEND
1850 ‘
1860 ‘ SEND TRIGGER COMMAND TO START LIST AND GENERATE THE VOLTAGE RAMP
1870 ‘
1880 CMD$ = "TRIGGER:IMMEDIATE" ' THIS IS AN IMMEDIATE TRIGGER, WHICH IS ALWAYS
1890 CALL IBWRT( SLOTO%, CMDS ) ' ACTIVE THEREFORE, IT DOES NOT NEED TO BE
1900 IF IBSTA% < 0 THEN GOTO 1960 ' SELECTED AS A TRIGGER SOURCE.
1910 ‘
1920 STOP
1930 ‘
1940 ‘ GENERAL ERROR HANDLER
1950 ‘
1960 PRINT “GPIB function call error: “
1970 PRINT "IBSTA% =; IBSTA%, "IBERR% =”; IBERR% “lBCNT% = “;IBCNT%
1980 ‘
1990 END