'*********************************************************************** '* PARALELO * '* Programa para ejemplificar el uso de la * '* Interfaz para el Puerto Paralelo IPP01 * '* * '*********************************************************************** '************************************************************** '****** Rutina para seleccionar el port a usar ************** '************************************************************** 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 cuerpo principal del programa **************** '***************************************************************** inicio: OUT salida, 0 ' reseteo salida CLS PRINT "Que deseas hacer ?" PRINT PRINT "1= Leer port" PRINT "2= Escribir port" PRINT "9= salir" INPUT i IF i = 1 THEN GOTO lee IF i = 2 THEN GOTO escribe IF i = 9 THEN END GOTO inicio '******************************************************************** '******* Rutina para leer el puerto de entrada INPUT 0 a 3 ******** '******************************************************************** lee: CLS PRINT "Ingresa el PIN que deseas leer (Valores validos: 0 a 3)" PRINT PRINT "Pulse 9 para salir" PRINT INPUT i SELECT CASE i CASE 0 lectura = INP(entrada) valor = lectura AND 8 '8 = 00001000 en Binario CASE 1 lectura = INP(entrada) valor = lectura AND 16 '16 = 00010000 en Binario CASE 2 lectura = INP(entrada) valor = lectura AND 32 '32 = 00100000 en Binario CASE 3 lectura = INP(entrada) valor = lectura AND 64 '64 = 01000000 en Binario CASE 9 GOTO inicio CASE ELSE GOTO lee END SELECT IF valor <> 0 THEN valor = 1 PRINT PRINT "El PIN "; i; " esta en "; valor PRINT PRINT PRINT PRINT "Presione una tecla para continuar" esperar: IF INKEY$ = "" THEN GOTO esperar 'espero a que se presione una GOTO lee 'tecla '******************************************************************** '***** Rutina para escribir en el puerto de salida TTL 0 a 7 ****** '***** (Recuerde que las salidas 0 a 6 trabajan en conjunto ****** '***** salidas de potencia HP 0 a 6 ) ****** '******************************************************************** escribe: CLS PRINT "Ingresa el PIN que deseas escribir (Valores validos: 0 a 7)" PRINT PRINT "Pulse 9 para salir" PRINT INPUT i IF i = 9 THEN GOTO inicio IF i < 0 OR i > 7 THEN GOTO escribe PRINT "Ingresa el valor deseado: (0 o 1)" INPUT valor PRINT IF valor = 9 THEN GOTO inicio IF valor < 0 OR valor > 1 THEN GOTO escribe SELECT CASE i CASE 0 estadoactual = INP(salida) IF valor = 0 THEN valor = estadoactual AND 254 IF valor = 1 THEN valor = estadoactual OR 1 OUT salida, valor CASE 1 estadoactual = INP(salida) IF valor = 0 THEN valor = estadoactual AND 253 IF valor = 1 THEN valor = estadoactual OR 2 OUT salida, valor CASE 2 estadoactual = INP(salida) IF valor = 0 THEN valor = estadoactual AND 251 IF valor = 1 THEN valor = estadoactual OR 4 OUT salida, valor CASE 3 estadoactual = INP(salida) IF valor = 0 THEN valor = estadoactual AND 247 IF valor = 1 THEN valor = estadoactual OR 8 OUT salida, valor CASE 4 estadoactual = INP(salida) IF valor = 0 THEN valor = estadoactual AND 239 IF valor = 1 THEN valor = estadoactual OR 16 OUT salida, valor CASE 5 estadoactual = INP(salida) IF valor = 0 THEN valor = estadoactual AND 223 IF valor = 1 THEN valor = estadoactual OR 32 OUT salida, valor CASE 6 estadoactual = INP(salida) IF valor = 0 THEN valor = estadoactual AND 191 IF valor = 1 THEN valor = estadoactual OR 64 OUT salida, valor CASE 7 estadoactual = INP(salida) IF valor = 0 THEN valor = estadoactual AND 127 IF valor = 1 THEN valor = estadoactual OR 128 OUT salida, valor CASE ELSE GOTO escribe END SELECT GOTO escribe '****************************** FIN ******************************