297
Figure 16. Microsoft qbasic Program to Load Evaluation Board with Desired Codes.
SP9841.BAS
'This program accepts an address (1 through 8) and data (0 through 255)
'in decimal and sends them to the DAC. Addresses 1 through 8 will
'correspond to converters A through H respectively. The appropriate
'output will be: Vout-(data/128)*VREF volts.
'We found that for our IBM PC/AT the LPT1 port address was 378H (Data
'Register 378H and control register 37AH) while for our IBM PC/XT the
'LPT1 port address was 3BCH (Data Register #BCH and control register 3BEH).
DIM lsb AS INTEGER
DIM msb AS INTEGER
DIM datareg AS INTEGER
DIM contrlreg AS INTEGER
DIM n AS INTEGER
CLS
DO
INPUT "Enter type of PC, AT or XT: ", type$
IN UCASE$(type$) = "AT" OR UCASE$(type$) = "XT" THEN
EXIT DO
ELSE PRINT "Please enter either AT or XT.": PRINT
END IF
LOOP
IF UCASE$(type$) = "AT" THEN datareg = &H378: cntrlreg = &H37A
IF UCASE$(type$) = "XT" THEN datareg = &H3BC: cntrlreg = &H3BE
CLS
n=0
DO
WHILE n=0
DO
test$ =""
INPUT "Enter Address (1 through 8): ", lsb
IF lsb < 1 or lsb> 8 THEN test$ = "false"
IF test$ = "false" THEN PRINT "Please enter a valid address.": PRINT
LOOP UNTIL test$ <> "false"
DO
test$ = ""
PRINT
INPUT
IF msb < 0 or msb > 255 THEN test$ = "false"
IF test$ = "false" THEN PRINT "Please enter valid data.": PRINT
LOOP UNTIL test$ <> "false"
"Enter Data (0 through 255 in decimal): ", msb
OUT cntrlreg, $H3
OUT datareg, &H0 + msb
OUT cntrlreg, &H2
'set both latch clocks low
'send most significant byte to port
'clock U1
OUT datareg, &H0 + lsb
OUT cntrlreg, &H0
OUT cntrlreg, &H4
'send least significant byte to port
'clock U2
'enable U7, set U1 & U2 to serial out mode
PRINT :
PRINT "Strike spacebar to enter new data or Q to quit."
DO
X$ = INKEY$
IF UCASE$(X$) = "Q" THEN n=1
LOOP UNTIL X$ = " " OR UCASE$(X$) = "Q"
LOOP
END