'*********************************************************************** '* * '* CONVERSOR ANALOGICO DIGITAL * '* DE 3 CANALES * '* * '*********************************************************************** 'INICIALIZACION DE VARIABLES DIM prendebit(8) DIM apagabit(8) prendebit(0) = 1 '00000001 en binario prendebit(1) = 2 '00000010 en binario prendebit(2) = 4 '00000100 en binario prendebit(3) = 8 '00001000 en binario prendebit(4) = 16 '00010000 en binario prendebit(5) = 32 '00100000 en binario prendebit(6) = 64 '01000000 en binario prendebit(7) = 128 '10000000 en binario apagabit(0) = 254 '11111110 en binario apagabit(1) = 253 '11111101 en binario apagabit(2) = 251 '11111011 en binario apagabit(3) = 247 '11110111 en binario apagabit(4) = 239 '11101111 en binario apagabit(5) = 223 '11011111 en binario apagabit(6) = 191 '10111111 en binario apagabit(7) = 127 '01111111 en binario ' INICIO CUERPO PRINCIPAL DEL PROGRAMA '** Selecciono el port a ser usado (LPT1 o LPT2) ** port: CLS PRINT "Ingrese el port a usar" PRINT PRINT "1= Lpt1 (0x378)" PRINT "2= Lpt2 (0x278)" PRINT "9= salir" INPUT i SELECT CASE i CASE 1 entrada = 889 salida = 888 GOTO inicio CASE 2 entrada = 633 salida = 632 GOTO inicio CASE 9 END CASE ELSE GOTO port END SELECT inicio: CLS LOCATE 10, 22 PRINT "Canal 1 = 0"; LOCATE 12, 22 PRINT "Canal 2 = 0"; LOCATE 14, 22 PRINT "Canal 3 = 0"; LOCATE 20, 15 PRINT "Presione 9 para salir del programa" otraconversion: ' comienza nueva conversion conversion1 = 0 conversion2 = 0 conversion3 = 0 '****************************************************** '* Modificar este valor cuando se desee trabajar * '* con menos bits de resolucion. * '* * '* El valor inicial de bitactual debe ser: * '* cantidad de bits - 1 * '* * '* Por ejemplo: si deseamos tener una resolucion * '* de 6 bits, entonces este valor debe ser igual a 5 * '* * '****************************************************** bitactual = 7 'configurado para 8 bits de resolucion '****************************************************** '****************************************************** otrobit: '** enciendo el bit a ser testeado ** conversion1 = conversion1 OR prendebit(bitactual) conversion2 = conversion2 OR prendebit(bitactual) conversion3 = conversion3 OR prendebit(bitactual) '** Inicio conversion del primer canal ** OUT salida, conversion1 'coloco CONVERSION1 a la salida del 'puerto TTL de la interfaz FOR z = 1 TO 100 ' retrazo para estabilizar se¤ales NEXT z comparador = INP(entrada) 'leo la salida del comprarador leebit = comparador AND 8 'si el bit 3 del port de entrada 'es igual a 1, entonces 'leebit sera igual a 8 'de lo contrario leebit sera igual a 0 ' si la salida del comparador es 1 entonces no me pase, por lo que ' dejo el bit encendido, de lo contrario lo apago IF leebit = 0 THEN conversion1 = conversion1 AND apagabit(bitactual) END IF '** Inicio conversion del segundo canal ** OUT salida, conversion2 'coloco CONVERSION2 a la salida del 'puerto TTL de la interfaz FOR z = 1 TO 100 ' retrazo para estabilizar se¤ales NEXT z comparador = INP(entrada) 'leo la salida del comprarador leebit = comparador AND 16 'si el bit 4 del port de entrada 'es igual a 1, entonces 'leebit sera igual a 16 'de lo contrario leebit sera igual a 0 ' si la salida del comparador es 1 entonces no me pase, por lo que ' dejo el bit encendido, de lo contrario lo apago IF leebit = 0 THEN conversion2 = conversion2 AND apagabit(bitactual) END IF '** Inicio conversion del tercer canal ** OUT salida, conversion3 'coloco CONVERSION3 a la salida del 'puerto TTL de la interfaz FOR z = 1 TO 100 ' retrazo para estabilizar se¤ales NEXT z comparador = INP(entrada) 'leo la salida del comprarador leebit = comparador AND 32 'si el bit 5 del port de entrada 'es igual a 1, entonces 'leebit sera igual a 32 'de lo contrario leebit sera igual a 0 ' si la salida del comparador es 1 entonces no me pase, por lo que ' dejo el bit encendido, de lo contrario lo apago IF leebit = 0 THEN conversion3 = conversion3 AND apagabit(bitactual) END IF bitactual = bitactual - 1 'decremento puntero para afectar 'otro bit IF bitactual = -1 THEN GOTO finconversion 'si ya compare todos los bits 'voy a imprimirlos en pantalla GOTO otrobit 'sino continuo la conversion finconversion: LOCATE 10, 31 'muestro en pantalla los PRINT " " 'resultados de las conversiones LOCATE 10, 31 PRINT conversion1 LOCATE 12, 31 PRINT " " LOCATE 12, 31 PRINT conversion2 LOCATE 14, 31 PRINT " " LOCATE 14, 31 PRINT conversion3 FOR z = 1 TO 100 ' retrazo para leer el teclado NEXT z IF INKEY$ = "9" THEN GOTO salida 'si se presiona el 9 salgo GOTO otraconversion 'sino comienzo otra conversion salida: OUT salida, 0 'dejo en cero las salidas TTL CLS END 'finalizo el programa