Electronica Manual de practicas de puerto paralelo.pdf

download Electronica Manual de practicas de puerto paralelo.pdf

of 22

Transcript of Electronica Manual de practicas de puerto paralelo.pdf

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    Director de la obra: Ingeniero EDUARDO RINCON

    Autores:

    GONZALEZ ACUA HERNAN

    JIMNEZ PINILLA LUZ ANGELA

    JURADO SALCEDO JAVIER EDUARDO

    MORALES TAVERA MAGDA JUDITH

    VESLIN DIAZ ELKIN YESID

    Es propiedad. Reservados todos los derechos para

    La reproduccin total o parcial de esta obra por

    Cualquier sistema electrnico o mecnico sin

    Autorizacin expresa de los autores.

    MANUAL DE PRACTICAS DE PUERTO PARALELO 1

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    "El cientfico no estudia la naturaleza porque sea til; la estudia

    porque se deleita en ella, y se deleita en ella porque es hermosa.

    Si la naturaleza no fuera bella, no valdra la pena conocerla, y si

    no ameritara saber de ella, no valdra la pena vivir la vida."

    Henri Poincair

    MANUAL DE PRACTICAS DE PUERTO PARALELO 2

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    PREFACIO

    Este libro se enfoca en la enseanza de forma autodidctica sobre el puerto

    paralelo del computador.

    La distribucin temtica de este, esta de tal forma que encontrar

    descripciones de cada elemento a utilizar, ejercicios descritos y propuestos

    que abarcan los temas necesarios para una perfecta utilizacin del puerto.

    El anexo principal de este libro es un diskette donde encontrara los cdigos

    fuentes de las diferentes actividades que se mencionan. este cdigo se

    encuentra en el lenguaje de programacin de c++.

    Es nuestro mas sincero deseo que esta obra sea til en su proceso de

    aprendizaje, hacindolo agradable y emocionante. bienvenido (s).

    PREFACIO 3

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    OBJETIVOS

    Brindar una presentacin clara y lgica de los conceptos y principios bsicos

    de la programacin enfocada en la utilizacin del puerto paralelo de la PC.

    Facilitar la consulta de las diferentes aplicaciones y modos de empleo del

    puerto paralelo en circuitos electrnicos sencillos.

    Al finalizar este curso, aspiramos que usted tenga bases suficientemente

    slidas para manejar datos a traves del puerto paralelo, con las cuales pueda

    desarrollar proyectos que involucren las diferentes lineas disiplinarias de su

    carrera.

    OBJETIVO 5

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    AL ESTUDIANTE

    Consideramos conveniente advertir que nosotros los autores no nos

    hacemos responsables por el uso del material presentado. El libro ha sido

    diseado como una gua de uso de dispositivos electrnicos elementales sin

    involucrar clculos de ninguna naturaleza.

    Los circuitos y programas presentes en este han sido probados y funcionan a

    cabalidad, pero cualquier modificacin o uso comercial de los mismos es

    responsabilidad nica del lector.

    CONCEPTOS Y PRINCIPIOS

    Este proyecto busca unificar los principios bsicos de los temas y sus

    correspondientes aplicaciones del puerto paralelo para que de esta manera

    sirva como herramienta de consulta para los estudiantes que lo requieran.

    Debido a la poca confiabilidad de la referencia disponible en Internet, nos fue

    necesario comprobar en la prctica toda la informacin aqu expuesta, para

    poder dar fe de su veracidad.

    Este texto busca solucionar el mal funcionamiento de los diferentes

    proyectos integradores, los cuales se frustran por el mal aprovechamiento del

    puerto paralelo.

    El texto es parte de un proyecto integrador, que utiliza la estrategia

    implementada en el Semillero de Investigaciones de la Facultad de Ingeniera

    Mecatrnica. Nuestro Semillero hace su aporte al estudio de la ingeniera

    CONCEPTOS Y PRINCIPIOS 7

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    con este trabajo que refleja la unidad del grupo, la reunin de sus

    experiencias y la investigacin cientfica.

    CONCEPTOS Y PRINCIPIOS 8

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    I. MOTORES

    En este captulo, encontraremos cualquier inquietud acerca del movimiento de motores; tanto de corriente continua (motores CD) como de paso (motores PAP). Teniendo en cuenta que se utilizarn conceptos anteriormente estudiados para la aplicacin y desarrollo a lo largo de este tema. La importancia del manejo de estas dos clases de motores radica en una buena interpretacin, analizando como se comportan los motores segn los datos que se le envan al puerto para el movimiento de estos; consiguiendo as un sinfn de aplicaciones que mostraremos a lo largo del captulo.

    OBJETIVO Mover motores CD y PAP, utilizando los programas planteados en el captulo de diversas maneras para lograr un sinnmero de aplicaciones.

    1) LISTA DE MATERIALES 1 Circuito integrado LB1649. 1 Compuerta Negadora CI 74LS04. 2 Motores CD (que necesiten entre 5V y 12 V). Cable para protoboard. 1 Fuente 5v para la negadora. 1 Fuente variable segn el voltaje del motor.

    1. MOTOR PASO A PASO (PAP)

    Los motores paso a paso o simplemente PAP, son un tipo especial de motores que permiten el avance de su eje en ngulos muy precisos y por pasos en las dos posibles direcciones de movimiento, izquierda o derecha. Aplicando a ellos una determinada secuencia de seales digitales, avanzan por pasos hacia un lado u otro y se detienen exactamente en una determinada posicin. Cada paso tiene un ngulo muy preciso, determinado por la construccin del motor.

    A un motor paso a paso se le puede ordenar, que avance cinco o diez pasos hacia delante, luego un determinado nmero de pasos hacia atrs o simplemente que no gire. Este sistema a simplificado enormemente la implementacin de automatismos y las aplicaciones de la robtica.

    PARMON MONITOR DEL PUERTO PARALELO

    9

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    Debido a estas ventajas, tienen una gran variedad de aplicaciones dentro de las cuales se podran mencionar las siguientes: Mquinas herramientas, robots, impresoras para computador, graficadoras (Plotters), mquinas de coser, unidades de disco, registradoras, telefax, manejo de vlvulas, posicionamiento de mecanismos en general, etc.

    FUNCIONAMIENTO DEL MOTOR PASO A PASO

    El funcionamiento de los motores paso a paso se basa en el simple principio de atraccin y repulsin que ocurre entre los polos magnticos. Como ya sabemos, un imn tiene dos polos llamados Norte y Sur. El principio bsico del magnetismo establece que polos iguales se repelen y polos diferentes se atraen.

    En cuanto a la forma de conexin y excitacin de las bobinas los motores PAP se dividen en dos tipos: unipolares y bipolares. En los unipolares hay dos bobinas y tienen toma media, es decir tienen seis terminales. Los bipolares tienen dos bobinas sin toma media, es decir, tienen cuatro terminales.

    LISTA DE MATERIALES

    4 Transistores Ref. TIP 41C. 4 Diodos 1N4001. 4 Diodos emisores de luz. 4 Resistencias de 1K . Una negadora CI7404. Cable para protoboard. Un motor paso a paso de 6 cables (voltaje entre 5 y 14 voltios). 1 fuente de variable 5 voltios para la negadora. 1 fuente para el motor paso a paso.

    PARMON MONITOR DEL PUERTO PARALELO

    10

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    DIAGRAMA ELECTRNICO

    13 12 11 10 9 8 7 6 5 4 3 2 1

    25 24 23 22 21 20 19 18 17 16 15 14

    14

    13

    12

    11

    10

    9

    8

    1

    2

    3

    4

    5

    6

    7

    MOTORPAP

    VCC +VCC

    +VCC

    74LS04

    +VCC

    1 K 1 K 1 K 1 K

    TIP 41CTIP 41CTIP 41CTIP 41C

    Figura N 20

    PARMON MONITOR DEL PUERTO PARALELO

    11

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    PRACTICAS PRACTICA N1. Programa para hacer girar un motor PAP en un solo sentido.

    CDIGO FUENTE (PAP1.CPP) #include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408; /DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto; /*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7; /*00000111*/ paso2 = 11, /*00001011*/ paso3 = 13, /*00001101*/ paso4 = 14; /*00001110*/

    const int retardo=200; int dato,paso;

    void main () /* FUNCION PRINCIPAL */ { clrscr (); printf ("PROGRAMA PARA HACER GIRAR UN MOTOR PAP EN UN SOLO SENTIDO.\n\n"); printf("Presione una tecla para terminar.\n"); paso=1; /*VARIABLE QUE SE ENCARGA DE DEFINIR EL MOVIMIENTO DEL MOTOR*/ do { switch (paso) { case 1: dato=paso1; break; /*CICLO DEL MOTOR*/ case 2: dato=paso2; break; case 3: dato=paso3; break; case 4: dato=paso4; break; } dato=(inportb(DATA)&240)|dato; /*EVITA QUE UN BIT QUE NO NECESITEMOS ESTE ACTIVADO*/ outportb(DATA,dato); /*MANDA EL DATO*/ delay(retardo); /*DETERMINA EL TIEMPO ENTRE PASO Y PASO*/ paso=paso+1; if (paso>4) /*PARA VOLVER A COMENZAR EL CICLO*/ { paso=1; } } while (!kbhit()); outportb(DATA,15); /*DEJA TODAS LAS SALIDAS EN CEROS*/ }

    PARMON MONITOR DEL PUERTO PARALELO

    12

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    PRACTICA N2. Programa para cambiar el sentido de giro de un motor PAP manteniendo una tecla presionada.

    CDIGO FUENTE(PAP2.CPP) #include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408; /* DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto; /*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7; /*00000111*/ paso2 = 11; /*00001011*/ paso3 = 13; /*00001101*/ paso4 = 14; /*00001110*/ const int retardo=5; int dato,paso; char tec; void main () /* FUNCION PRINCIPAL */ { clrscr (); printf ("PROGRAMA PARA CAMBIAR EL SENTIDO DE GIRO DE UN MOTOR PAP\n\n"); printf("Mover a la derecha [D].\n"); printf("Mover a la izquierda [I].\n"); printf("Salir del programa [ESC].\n"); printf("\nPARA CONSERVAR EL MOVIMIENTO DE UN MOTOR MANTENGA LA TECLA PRESIONADA\n"); paso=1; /*VARIABLE QUE SE ENCARGA DE DEFINIR EL MOVIMIENTO DEL MOTOR*/ do { tec=getch(); /*ALMACENA EL VALOR DE LA TECLA PRESIONADA*/ switch(tec) { case 'd': case 'D':paso=paso+1; /*AUMENTA EL PASO*/ if (paso>4) { paso=1; } break; case 'i': case 'I': paso=paso-1; /*DISMINUYE EL PASO*/ if (paso

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    } dato=(inportb(DATA)&240)|dato; /*EVITA QUE UN BIT QUE NO NECESITEMOS ESTE ACTIVADO*/ outportb(DATA,dato); /*MANDA EL DATO*/ delay(retardo); /*DETERMINA EL TIEMPO ENTRE PASO Y PASO*/ } while (tec!=27); outportb(DATA,15); /*DEJA TODAS LAS ENTRADAS EN CEROS*/ }

    PRACTICA N3.Programa para cambiar el sentido de giro de un motor.

    CDIGO FUENTE (PAP3.CPP) #include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408; /* DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto; /*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7, /*00000111*/ paso2 = 11, /*00001011*/ paso3 = 13, /*00001101*/ paso4 = 14; /*00001110*/ const int retardo=200; int dato,paso,inc; char tec; void main () /* FUNCION PRINCIPAL */ { clrscr (); printf("PROGRAMA PARA CAMBIAR EL SENTIDO DE GIRO DE UN MOTOR PAP\n\n"); printf("Mover a la derecha [D]\n"); printf("Mover a la izquierda [I]\n"); printf("Parar el Motor [P]\n"); printf("Salir del programa [ESC]\n"); paso=1; /*VARIABLE QUE SE ENCARGA DE DEFINIR EL MOVIMIENTO DEL MOTOR*/ inc=0; do { if (kbhit()) { tec=getch(); /*ALMACENA EL VALOR DE LA TECLA PRESIONADA*/ } switch(tec) { /*INCREMENTO DEL MOVIMIENTO SEGUN LA DIRECCION*/ case 'd': case 'D' inc=1;break; case 'i': case 'I': inc=-1;break; case 'p': case 'P':inc=0; break; }

    PARMON MONITOR DEL PUERTO PARALELO

    14

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    paso=paso+inc; if (paso>4) { paso=1; /*EVITA QUE EL PASO SEA MAYOR DE LOS LIMITES*/ } else { if (paso

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    printf("DIGITE 0 PARA TERMINAR.\n"); scanf("%d",&n); paso=1; /*VARIABLE QUE SE ENCARGA DEL MOVIMIENTO DEL MOTOR*/ while (n!=0) { cont=0; /*CONTADOR DE LOS PASOS QUE SE PIDEN*/ tec=0; do { switch (paso) /*CICLO DEL MOTOR*/ { case 1: dato=paso1; break; case 2: dato=paso2; break; case 3: dato=paso3; break; case 4: dato=paso4; break; } dato=(inportb(DATA)&240)|dato; /*EVITA QUE UN BIT QUE NO

    NECESITEMOS ESTE ACTIVADO*/ outportb(DATA,dato); /*MANDA EL DATO*/ delay(retardo); /*DETERMINA EL TIEMPO ENTRE PASO Y PASO*/ paso=paso+1; /*AUMENTA EL PASO*/ cont=cont+1; /*AUMENTA EL CONTADOR DE PASOS*/ gotoxy(50,10); /*AJUSTA LA POCISION DEL TEXTO EN PANTALLA */ printf("PASOS= %5d",cont); /*IMPRIME LOS PASOS EN CUANTO LOS VA DANDO*/ if (pa0o>4) /*EVITA QUE SE PASE DEL TOPE*/ { paso=1; } if (kbhit()) /*SI OPRIMIMOS UNA TECLA*/ { tec=getch(); /*SE ALMACENA EN TEC*/ } } while((cont

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    CDIGO FUENTE (PAP5.CPP) #include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408; /*DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto;/*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7, /*00000111*/ paso2 = 11, /*00001011*/ paso3 = 13, /*00001101*/ paso4 = 14, /*00001110*/ paso5 = 112, /*01110000*/ paso6 = 176, /*10110000*/ paso7 = 208, /*11010000*/ paso8 = 224; /*11100000*/ const int retardo=200; int dato,datoa,datob,pasoa,pasob,inc1,inc2; char tec; void main () /* FUNCION PRINCIPAL */ { clrscr (); printf("PROGRAMA QUE CONTROLA DOS MOTORES PAP INDEPENDIENTEMENTE\n\n"); printf("Mover a la derecha el motor 1 pulse [D]\n"); printf("Mover a la izquierda el motor 1 pulse [I]\n"); printf("Parar el Motor 1 [P]\n"); printf("Mover a la derecha el motor 2 pulse [X]\n"); printf("Mover a la izquierda el motor 2 pulse [Y]\n"); printf("Parar el Motor 2 pulse [Z]\n"); printf("Salir del programa [ESC]\n"); printf("DIGITE SU OPCION: "); pasoa=1; pasob=1;/*VARIABLE QUE SE ENCARGA DE DEFINIR EL MOVIMIENTO DEL MOTOR*/ inc1=0; inc2=0; do { if (kbhit()) { tec=getch(); /*ALMACENA EL VALOR DE LA TECLA PRESIONADA*/ } switch(tec) { case 'd': case 'D': inc1=1;break; /*INCREMENTO DEL MOVIMIENTO SEGUN LA DIRECCION*/ case 'i': case 'I': inc1=-1;break; case 'p': case 'P':inc1=0;break; case 'x': case 'X': inc2=1;break; /*INCREMENTO DEL MOVIMIENTO SEGUN LA DIRECCION*/ case 'y': case 'Y': inc2=-1;break; case 'z': case 'Z':inc2=0;break;

    PARMON MONITOR DEL PUERTO PARALELO

    17

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    } pasoa=pasoa+inc1; if (pasoa>4) { pasoa=1; /*EVITA QUE EL PASO SEA MAYOR DE LOS LIMITES*/ } else { if (pasoa4) { pasob=1; /*EVITA QUE EL PASO SEA MAYOR DE LOS LIMITES*/ } else { if (pasob

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    Intente manejar diferentes salidas del puerto para agilizar la comprensin de datos.

    Imagine una grua la cual debe ser muy exacta, tanto al coger como al depositar un objeto en un sitio determinado. Por esto necesitamos disear un programa que desarrolle este proceso en diferentes tiempos predeterminados.

    PRACTICAS DE REFUERZO

    PRACTICA No.1 Programa para hacer girar un motor PAP y un CD constantemente en un solo sentido.

    CDIGO FUENTE (PAPYCD.CPP) #include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408;/*DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto;/*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7, /*00000111*/ paso2 = 11, /*00001011*/ paso3 = 13, /*00001101*/ paso4 = 14; /*00001110*/ const int retardo=200; int dato,paso; void main () /* FUNCION PRINCIPAL */ { clrscr (); printf ("PROGRAMA PARA HACER GIRAR UN MOTOR PAP Y UN CD CONSTANTEMENTE EN UN SOLO SENTIDO\n"); printf("Presione una tecla para terminar.\n"); paso=1; /*VARIABLE QUE SE ENCARGA DEL MOVIENTO DEL MOTOR*/ do { switch (paso) /*CICLO DEL MOTOR*/ { case 1: dato=paso1; break; case 2: dato=paso2; break; case 3: dato=paso3; break; case 4: dato=paso4; break; } dato=(inportb(DATA)&240)|dato; /*EVITA QUE UN BIT QUE NO NECESITEMOS

    ESTE ACTIVADO*/ outportb(DATA,dato); /*MANDA EL DATO DEL PAP*/ dato=dato | 16; /*COMBINA LOS DATOS DEL PAP Y EL CD*/ outportb(DATA,dato); /*MANDA DATO ACTUALIZADO*/ delay(retardo); /*TIEMPO ENTRE PASO Y PASO*/ paso=paso+1; /*AUMENTA EL CONTADOR DE PASOS*/ if (paso>4) /*EVITA QUE SE PASE DEL TOPE*/ { paso=1;

    PARMON MONITOR DEL PUERTO PARALELO

    19

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    } } while (!kbhit()); outportb(DATA,63); }

    PRACTICA N2. Programa para mover un motor CD y un PAP independientemente.

    CDIGO FUENTE (CDYPAP.CPP) include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408;/*DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto;/*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7, /*00000111*/ paso2 = 11, /*00001011*/ paso3 = 13, /*00001101*/ paso4 = 14; /*00001110*/ const int retardo =200; int dato,paso,inc,cd,stop; char tec; void main () /*FUNCION PRINCIPAL*/ { clrscr (); printf("PROGRAMA PARA MOVER UN MOTOR CD Y PAP INDEPENDIENTEMENTE.\n\n"); printf("Para mover el motor PAP a la derecha presione [D].\n"); printf("Para mover el motor PAP a la izquierda presione [I].\n"); printf("Para parar el motor PAP presione [P].\n"); printf("Para mover el motor CD a la derecha presione [X].\n"); printf("Para mover el motor CD a la izquierda presione [Y].\n"); printf("Para parar el motor CD presione [Z].\n"); printf("Para salir presione [ESC].\n\n"); printf("ESCOJA SU OPCION:"); do { if (kbhit()) /*SI SE OPRIME UNA TECLA*/ { tec = getch(); /*LA TECLA PRESIONADA SE ALMACENA EN TEC*/ } switch (tec) { case 'D': case 'd': inc=1;break; case 'I': case 'i': inc=-1;break; case 'P': case 'p': inc=0; break; case 'X': case 'x': cd=16;break; case 'Y': case 'y': cd=32;break; case 'Z': case 'z': cd=0; break; } paso=paso+inc; if (paso>4)

    PARMON MONITOR DEL PUERTO PARALELO

    20

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    { paso=1; /*EVITA QUE EL PASO SEA MAYOR DE LOS LIMITES*/ } else { if (paso

  • MANUAL DE PRCTICAS DE PUERTO PARALELO

    SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA

    CONTENIDO

    I. MOTORES 9

    OBJETIVO 9 1) LISTA DE MATERIALES 9 1. MOTOR CD (CORRIENTE CONTINUA) ERROR! MARCADOR NO DEFINIDO. 2) PRACTICAS ERROR! MARCADOR NO DEFINIDO. 2. MOTOR PASO A PASO (PAP) 9 LISTA DE MATERIALES 10 DIAGRAMA ELECTRNICO 11 PRACTICAS 12

    CONTENIDO

    22