92756796 encender led

78
Que tal amigo, no se si llego tarde pero es muy facil, el puerto paralelo tiene 8 pines de salida (del 2 al 9) 4 pines de control (el 1, 14, 16 y 17), 5 de entrada(del 10 al 13 y el 15) y los demas son tierra. entonces lo que tu va a hacer es conectar las salidas de de datos a los leds antes pasando por una resistencia y el catodo a tierra (eam creo q es ovio jejeje) , tambien puedes usar la salida del control. y puedes chambiar esto con programas ya echos o aste el tuyo, solo que te recuerdo si vas a hacer el tuyo las salidas de control 0, 2 y 3 estan invertidas. te dejo una fotito para que veas como estan los pines. A se me olvidava, tambien puedes llegar mas alla y controlar aparatos y lei q asta 8, ahora genios de la electronica y software, ami me marcaron un proyecto de semestre de echo solo tengo 2 semanas para terminarlo jejeje, trata de usar el puerto paralelo, entonces se me ocurrio usar un line decoder 4 to 16, entonces si saco mis cuentas si uso las salidas de datos y uso los cuatro primero para un line y los 4 restantes para otro line y los uso con comando en forma de plano cartesiano mmm si mis calculos no me fallan puede obtener 256 respuestas mmmm, logicamente puedo controlar 256 aparatos? se imaginan? teniendo una pc viejita y conectada a interted y con la magia del apache podre controlar toda mi casa por internet! y tambien desde el celular, saber que esta ensendido que no , dejenme buscar una cervilleta q mi mente vuela jajaja. voy a ponerlo en practica primero controlando mi cuarto y con activacion de la manija de la puerta electricamente jajajaja. los dejo analicenlo y corrijanme si toi mal. Objetivos Mostrar el armado de un circuito simple mediante el puerto paralelo para encender y apagar led´s de una maqueta (casa). Usar el Turbo c++ u otro programa similar que sea capaz de encender y apagar led`s de una maqueta (casa). Marco teórico

Upload: nery-de-la-cruz

Post on 04-Aug-2015

76 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 92756796 Encender Led

Que tal amigo, no se si llego tarde pero es muy facil, el puerto paralelo tiene 8 pines de salida (del 2 al 9) 4 pines de control (el 1, 14, 16 y 17), 5 de entrada(del 10 al 13 y el 15) y los demas son tierra. entonces lo que tu va a hacer es conectar las salidas de de datos a los leds antes pasando por una resistencia y el catodo a tierra (eam creo q es ovio jejeje) , tambien puedes usar la salida del control. y puedes chambiar esto con programas ya echos o aste el tuyo, solo que te recuerdo si vas a hacer el tuyo las salidas de control 0, 2 y 3 estan invertidas. te dejo una fotito para que veas como estan los pines.

A se me olvidava, tambien puedes llegar mas alla y controlar aparatos y lei q asta 8, ahora genios de la electronica y software, ami me marcaron un proyecto de semestre de echo solo tengo 2 semanas para terminarlo jejeje, trata de usar el puerto paralelo, entonces se me ocurrio usar un line decoder 4 to 16, entonces si saco mis cuentas si uso las salidas de datos y uso los cuatro primero para un line y los 4 restantes para otro line y los uso con comando en forma de plano cartesiano mmm si mis calculos no me fallan puede obtener 256 respuestas mmmm, logicamente puedo controlar 256 aparatos? se imaginan? teniendo una pc viejita y conectada a interted y con la magia del apache podre controlar toda mi casa por internet! y tambien desde el celular, saber que esta ensendido que no , dejenme buscar una cervilleta q mi mente vuela jajaja. voy a ponerlo en practica primero controlando mi cuarto y con activacion de la manija de la puerta electricamente jajajaja. los dejo analicenlo y corrijanme si toi mal.

Objetivos

Mostrar el armado de un circuito simple mediante el puerto paralelo para encender y apagar led´s de una maqueta (casa).

Usar el Turbo c++ u otro programa similar que sea capaz de encender y apagar led`s de una maqueta (casa).

Marco teórico

Para hablar encendido y apagado de led´s mediante el uso del programa del Turbo C++, hay que decir primero.

Turbo C

Turbo C era un entorno de desarrollo integrado y compilador desarrollado por Borland para programar en lenguaje C.

Su primera versión es de 1987, a la que siguieron las versiones 1.5 y 2.0, de 1989. Fue el compilador más popular para desarrollar en C en entornos MS-DOS. Se le considera el primer IDE para C disponible para dicha plataforma.

Fases de un programa en Turbo C

Page 2: 92756796 Encender Led

Las fases de un programa en Turbo C se pueden resumir en:

Edición

Compilación

Enlazado

Ejecución

La Edición de un programa consiste, simplemente, en editar el código fuente del programa, Turbo C incluye un editor para este efecto.

La Compilación del programa consiste en convertir el código fuente en código objeto.

El Enlazado consiste en enlazar el código objeto para obtener el código ejecutable.

Finalmente, la Ejecución consiste precisamente en ejecutar el programa.

El entorno de Turbo C

El entorno de Turbo C facilita la edición, compilación y el enlazado de los programas, ya que incluye un editor y herramientas para compilar y enlazar los programas, para configurar el entorno de Turbo C, primero hay que conocerlo, a continuación se explican las características más importantes del entorno...

El editor de Turbo C

Page 3: 92756796 Encender Led

El editor de Turbo C es una poderosa herramienta que nos facilita enormemente la edición de un programa, es como un editor de texto cualquiera, pero, para los que están acostumbrados a los editores que funcionan bajo Windows, tal vez se encuentren con una forma diferente de editar texto, por ejemplo, para seleccionar un bloque de texto, en el editor de Turbo C, se presiona la combinación de teclas CTRL+K+B al inicio del bloque que se desea seleccionar, y la combinación CTRL+K+K al final del mismo. Después, con ese bloque seleccionado, se pueden hacer diversas cosas, como:

CTRL+K+Y: Elimina el bloque.

CTRL+K+V: Mueve el bloque.

CTRL+K+C: Copia el bloque.

De cualquier forma, es conveniente que se familiaricen con el editor de Turbo C a medida que aprenden a programar, es decir, no es necesario aprendera usar el editor al 100%.

El Debugger de Turbo C

En ocasiones, un programa que está léxica y sintácticamente bien escrito, puede no dar los resultados correctos, estos resultados pueden deberse a errores comunes de programación, tales como errores lógicos, comúnmente llamados bugs, aunque existen otros tipos de errores, tales como errores en tiempo de ejecución (tema del que nos ocuparemos más adelante), el debugger de Turbo C nos ayudará a detectar y corregir dichos errores lógicos. Por ejemplo, si deseamos monitorear en todo momento el valor de una variable (watch) presionaremos la combinación CTRL+F7, y posteriormente, podremos ejecutar el programa línea por línea (F7) o función por función (F8).

Page 4: 92756796 Encender Led

Puerto paralelo.

Vamos a dar ciertos detalles sobre el puerto paralelo:

Un puerto paralelo es una interfaz entre una computadora y un periférico cuya principal característica es que los bits de datos viajan juntos enviando un byte completo o más a la vez. Es decir, se implementa un cable o una vía física para cada bit de datos formando un bus.

El cable paralelo es el conector físico entre el puerto paralelo y el periférico. En un puerto paralelo habrá una serie de bits de control en vías aparte queirán en ambos sentidos por caminos distintos.

En contraposición al puerto paralelo está el Puerto serie, que envía los datos bit a bit por el mismo hilo.

El sistema operativo gestiona las interfaces de puerto paralelo con los nombres LPT1, LPT2 y así sucesivamente, las direcciones base de los dos primeros puertos es:

LPT1 = 0×378.

LPT2 = 0×278

La estructura consta de tres registros: de control, de estado y de datos.

El registro de control es un bidireccional de 4 bits, con un bit de configuración que no tiene conexión al exterior, su dirección en el LPT1 es 0x37A.El registro de estado, se trata de un registro de entrada de información de 5 bits, su dirección en el LPT1 es 0×379.El registro de datos, se compone de 8 bits, es bidireccional. Su dirección en el LPT1 es 0×378.

Conector DB25.

La descripción de este conector se da a continuación:

Page 5: 92756796 Encender Led

El Dataport se usa como salida El Statusport se usa como entrada El Controlport se usa de las dos formas anteriores

Los LED´s.

LED es la abreviatura en lengua inglesa para Light Emitting Diode, que en su traducción al español correspondería a Diodo Emisor de Luz.

Un LED consiste en un dispositivo que en su interior contiene un material semiconductor que al aplicarle una pequeña corriente eléctrica produce luz. La luz emitida por este dispositivo es de un determinado color que no produce calor, por lo tanto, no se presenta aumento de temperatura como si ocurre con muchos de los dispositivos comunes emisores de luz.

El color que adquiera la luz emitida por este dispositivo dependerá de los materiales utilizados en la fabricación de este. En realidad dependerá del material semiconductor, que dará una luz que puede ir entre el ultravioleta y el infrarrojo, incluyendo en el medio toda la gama de colores visibles al ojo humano.

Materiales

5 leds de diferentes colores

1 Protoboard

Page 6: 92756796 Encender Led

Conector macho y hembra (1 metro o metro y medio)

5 resistencias de 1 [k?]

Cables de cobre de diferentes colores

Turbo C++

Maqueta de una casa.

Procedimiento

Es recomendable tener unos cuantos leds más y unas cuantas resistencias más, por si acaso.

Con esos antecedentes ahora vamos a explicar los detalles del circuito:

El Circuito

Donde dice "Pin puerto paralelo" puede ser cualquier Pin del 2 al 9. No olvidar hacer una conexión al pin 25 que es tierra

El circuito consiste en un led con una resistencia, la resistencia se usa para

limitar la intensidad y no pedir más de la que el puerto paralelo es capaz de dar (5 mA). Cuando se active el pin el led se encenderá.

En este proyecto lo que se quiere mostrar es como, con un simple circuito, se puede controlar mediante la computadora una fila de LEDs los que se van a encender en una secuencia que nosotros vamos a controlar con un pequeño programa escrito en el lenguaje de programación Turbo C++.

El circuito que se va armar será montado sobre una plaqueta, la cual conduce la corriente eléctrica, llamada "protoboard".

Como nuestro objetivo es controlar los diodos LEDs con la computadora, esto es encenderlos y apagarlos según como queramos. Los LEDs son diodos que tienen la capacidad de emitir luz cuando circula una corriente por ellos. Esta corriente debe ser del orden de los 10 mA (miliampers). Para limitar la corriente que pasa por los LEDs se usan las resistencias que se oponen al paso de ella.

Para controlar un circuito externo con la computadora se usará el puerto paralelo de ella, para conectar el puerto con el circuito se necesitará el cable paralelo o conector DB-25. 

Page 7: 92756796 Encender Led

El paso siguiente es soldar cable fino UTP a los pines internos del conector. Como los pines están numerados del número 1 al 25, solo usaremos los pines numerados del 2 al 9, también se tiene que soldar un cable al pin 25 (que es el pin de masa o tierra eléctrica) para tener una descarga a tierra común, para nuestro circuito y la computadora.

Una vez construido el cable se lo puede conectar al protoboard.

Solo se deben usar cinco entradas y cinco salidas, ya que son solo cinco LEDs los que controlamos.

Las cinco salidas están conectadas por medio de una resistencia limitadora de corriente a una LED cada una. Estas resistencias son de un valor de 1[k?] y permite que circule una corriente de 10 mA (miliampere) por cada diodo.

Las siguientes imágenes pueden ayudar a apreciar mejor la conexión del circuito:

1. Circuito armado en el protoboard para la prueba inicial.

Page 8: 92756796 Encender Led

*Nota: A fin de que todo funcione bien se recomienda primero solo armar en el circuito con un solo led a fin de que el programa no sea engorroso y fin de verificar el armado de los circuitos y de verificar que la estructura de control este bien hecho.

El siguiente paso es escribir las directivas y comandos en el programa:

Page 9: 92756796 Encender Led

Agradesco a suministros por haber colocado el otro post que me motivo a hacer este tutorial con imagenes y un poco mas "especifico" mucha suerte y espero lo hagan

Primero que todo aclaro que estoy no me lo invente YO, es tomado de varias funetes en internet para poder hacer este tutorial en español y tal vez un poco mas comprensivo al no muy conocedor.

ok lo primero en esete tutorial para que aprendan a y vean lo sencillo que es hacer una interface con el puerto paralelo vamso a cosntuir un circuito de muestra en un Protoboard (elemento muy utilizado por los ingenieros electronicos) ahora no es indispensable montarlo ahi pero pues esto ofrece mucha comodidad y seguridad al armar un circuito por primera vez.

Para aquellos (como yo al principio) que no conocen el puerto paralelo aqui agrego una imagen muy conocida que explica el pinout, osea la equivalencia de cada pin en el puerto paralelo y cual es su funcion. (imagen 1)Al manejar el puerto paralelo tenemos que hablar de lo que se llama LOGICA Binaria, la cual solo tiene dos estados que facilmente se interpretan como 1 y 0, en muchos casos se asocia con encendido y apagado.IMAGEN 1

 

El puerto paralelo esta compuesto por:# 8 Pines de Salida [D0 hasta D7]# 5 Pines de Status [S4 hasta S7 y S3]# 4 Pines de Control [C0 hasta C3]# 8 Pines de Tierra [18 hasta 25]

En este orden de ideas los Pines que tienen una linea superior en su nombre son pines

Page 10: 92756796 Encender Led

inversores, osea en pocas palabras ud indican encendido el pin niega la accion y queda con el estado contrario.En este caso solo usaremos los Pines de Salida osea desde el pin #2(D0) hasta el pin #9(D7)entonces inicialmente vamos a montar un circuito de prueba, no se preocupen que los materiales de este circuito se pueden usar para el de control; los materiales son:

1 cable de impresora (obiamente)8 Leds cualquier color, el que mas les guste8 resistencias de 220ohm a 1/4W (si, es una para cada led)1 ProtoboardCables o caimanes(si no consiguen de 1/4W que es muy raro no conseguir pueden ser de 1/2W solo que son mas grandes)

Ok primero tomamos el cable de impresora y le cortamos el conector que va conectado a la impresora (para reconocerlo es el que no tiene pines, y sobresale una parte rectangular azul) Ver imagen 

Luego desarmamos el conector del puerto pararelo, nos fijamos en el conector en el frente (mirando los pines por donde conecta) y observamos que hay unos numeros escritos. Cojemos papel y lapiz y anotamos el numero del pin y el color del cable que esta soldado al conector.Una vez tengamos la tabla con numero de pin y color del cable nos disponemos a construir este circuito en el protoboard

Page 11: 92756796 Encender Led

Una vez construido en mi caso el circuito se ve asi... Ver imagen 

Ya con el circuito montado podemos pensar en el programa para manejar el puerto.Actualmente el windows XP es ta pero tan seguro (JAJAJAJAJJAJA) que se les ocurrio cerrar el acceso directo a los puertos, asi que para eso toca buscar muy exaustivamente un programa que sirve justo para lo que necesitamos manejar unos relees para encender y apagar cosas, este programa viene con una solucion de timer para organizar eventos por medio del puerto paralelo.Aqui anexo la direccion de donde pueden bajar el programa.

http://electronickits.com/kit/comple...01Software.ZIP

instalenlo con toda tranquilidad y despues reinicien el pc.el programa se ve asi...

Page 12: 92756796 Encender Led

 

Como ven el programa es muy sencillo, se enciende el pin que se quier encendido y listo, no olviden que para que el prograam envie informacion al puerto el botono de Activate debe estar encendidoUna vez jueguen bastante con el programita y creen qu etodo quedo bien y funciona el montaje podemos pasar a la parte 2 control! JEJEJE

Page 13: 92756796 Encender Led

Mapa Conceptual

1. ¿Qué es un puerto?

2. Puerto Paralelo

3. Buscando Direcciones del Puerto Paralelo

5. Programando el Puerto Paralelo

6. Programando en Windows 2000/XP

8. Conector Puerto Paralelo

10. DATA Port

11. Leyendo STATUS Port

12. CONTROL port

13. Consejos Prácticos

14. Ejercicio I

15. Ejercicio II

16. Lectura Pto. Paralelo mediante interrupción ACK

17. Ejercicio

R e f e r e n c i a s

(1/17)   República del Saber Ensamblador: "Puerto Paralelo"

¿Qué es un puerto?

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>   [Notas]  [Ref] [CSS]

Page 14: 92756796 Encender Led

Puerto: Es un conjunto de líneas (interfaz) que puede utilizar el CPU para intercambiar información con otros dispositivos [1]

Puerto Paralelo: Transmite más de un bit a la vez, e.g. 8-bits

Puerto Serie: Transmite un bit a la vez, e.g. RS-232

(1-Notas/17)   República del Saber Ensamblador: "Puerto Paralelo"

¿Qué es un puerto?

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>   [Notas]  [Ref] [CSS]

Notas:

INICIO:

Page 15: 92756796 Encender Led

MOV AL,01MOV DX, 0378OUT DX,ALMOV CX,32

Page 16: 92756796 Encender Led

AMARILLO:DEC CXCMP CX,0JA AMARILLO

Page 17: 92756796 Encender Led

MOV AL,02MOV DX, 0378OUT DX,ALMOV CX,32

Page 18: 92756796 Encender Led

ROJO:DEC CXCMP CX,0JA ROJO

Page 19: 92756796 Encender Led

MOV AL,04MOV DX, 0378OUT DX,ALMOV CX,32

Page 20: 92756796 Encender Led

VERDE:DEC CXCMP CX,0JA VERDE

Page 21: 92756796 Encender Led

JMP INICIOAlumno(s): David Hinojos, Osbaldo Quezada, Hansi Herrera

[email protected],[email protected],[email protected] 20/Oct/05 7:13pm -----

(2/17)   República del Saber Ensamblador: "Puerto Paralelo"

Puerto Paralelo

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

Pto. Paralelo: Originalmente, el puerto paralelo de la PC, fué pensado para conectar impresoras, pero puede ser usado para manejar dispositivos en general

Las 12 salidas TTL (0-5v) usan latches internos y pueden programarse vía instrucciones IN/OUT del CPU

Las 5 entradas son "steady-state input points" y pueden programarse vía instrucciones IN del CPU

Las 3 direcciones del puerto (DATA, STATUS, CONTROL) inician comúnmente en la 378H (otras direcciones comunes son la 278H y 3BCH)

Una de las líneas de entrada es además una interrupción (que puede habilitarse vía programa) y ademas hay una línea tipo "power-on reset"

(3/17)   República del Saber Ensamblador: "Puerto Paralelo"

Page 22: 92756796 Encender Led

Buscando Direcciones del Puerto Paralelo

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

Normalmente la PC tiene definidos tres puertos paralelo de impresión: LPT1, LPT2 y LPT3

LPT: En las localidades 0000:0408H a 0000:040DH de la PC se encuentran las direcciones de cada puerto [5]

EJEMPLO: Sean los siguientes valores de una PC hipotética

Tabla 1. LPT1 se localiza en 378H, LPT2 en 278H y LPT3 no está presente.

Dir. 408H 409H 40AH 40BH 40CH 40DH

Val. 78H 03H 78H 02H 00H 00H(4/17)   República del Saber Ensamblador: "Puerto

Paralelo"

Buscando Direcciones del Puerto Paralelo

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

Puertos del Pto. Paralelo: Podemos localizar la dirección precisa de cada puerto paralelo en una PC de las siguientes formas:

Desde DEBUG: Mediante el comando d 0:408 40d

Page 23: 92756796 Encender Led

Desde Windows: Inicio / Configuración / Panel de Control / Sistema / Administrador de Dispositivos / Puertos (COM y LPT) / Puerto de Impresora / Recursos

(5/17)   República del Saber Ensamblador: "Puerto Paralelo"

Programando el Puerto Paralelo

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>   [Notas]  [Ref] [CSS]

Control de Impresora: Se envían datos ó comandos seguidos de una señal strobe que ocasiona que la impresora lea el puerto y responda por las líneas de status cuando esté lista para recibir más información (not bussy) ó en su defecto, indica si hay algún error

Opciones para Controlar el Puerto Paralelo [4]:

Acceso Directo: Usando ensamblador o un lenguaje de programación, leyendo variables del sistema, manipulando bits y leyendo/escribiendo puertos

Via BIOS: La INT 17H del BIOS provée 3 servicios: inicializar, imprimir y status (sólo trabajan para LPT1)

Via DOS: La INT 21H servicio 05h escribe un caracter y el servicio 40h que trabaja con archivos

(5-Notas/17)   República del Saber Ensamblador: "Puerto Paralelo"

Programando el Puerto Paralelo

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>   [Notas]  [Ref] [CSS]

Notas:

Page 24: 92756796 Encender Led

;port.asm controlar un led por medio del puerto

Page 25: 92756796 Encender Led

BITS 16ORG 0x0100SECTION .textNL 10,13PRINT 1 ; PRINT STRING$MOV AH, 9MOV DX, %1INT 21HFOCO 1MOV AL, %1MOV DX, 378HOUT DX, AL

Page 26: 92756796 Encender Led

PRINT msgFOCO 80HCALL GETCHPRINT VRDFOCO 100BCALL GETCHCALL AMARILLOINT 20H

Page 27: 92756796 Encender Led

GETCH ;ESPERA QUE PRESIONES UNA TECLA PARA EL CAMBIOPUSH DXPRINT msg2MOV AH, 10HINT 16HPOP DXRET

Page 28: 92756796 Encender Led

AMARILLO ; SIMULA EL CAMBIO DE COLOR EN EL SEMAFOROMOV CX, 10H ; REPETICIONESMOV AL, 80HCICLO:OUT DX, ALXOR AL, 81HPUSH CXCALL DELAYPOP CXLOOP CICLOPRINT AMRROJO:FOCO 1000BPRINT RJCALL DELAYCALL DELAYCALL DELAYCALL DELAYFOCO 0BPRINT BYERET

Page 29: 92756796 Encender Led

DELAYMOV CX, 10ffHD10:PUSH CXD20:LOOP D20POP CXLOOP D10RET

Page 30: 92756796 Encender Led

SECTION .data

Page 31: 92756796 Encender Led

msg db \'CONTROLANDO LOS LEDs CON EL PUERTO PARALELO\',NL,\'$\'msg2 db \'Prensa cualquier tecla para continuar\',NL,\'$\'VRD db \'CAMBIA A VERDE\',NL,\'$\'AMR db \'CAMBIO A AMARILLO\',NL,\'$\'RJ db \'CAMBIA A ROJO\',NL,\'$\'BYE db \'Alumnos:\',NL,\'Adriana Escamilla, Cynthia Trevizo, Rafael Rico$\'Alumno(s): Adriana Escamilla, Cynthia Trevizo, Rafael Rico [email protected] 20/Oct/05 7:29pm -----

(6/17)   República del Saber Ensamblador: "Puerto Paralelo"

Programando en Windows 2000/XP

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>   [Notas]  [Ref] [CSS]

Problema: Los sistemas operativos Windows 2000 y XP no permiten que las aplicaciones accesen directamente el puerto paralero,i.e. instrucciones OUT, IN

Solución: Afortunadamente es posible bajar de Internet un driver que permite programar el puerto paralelo como sigue:

1. Consulte Driver, baje y descomprima el archivo ZIP

2. Copie el archivo userport.sys al directorio C:\WINDOWS\SYSTEM32\DRIVERS

3. Ejecute el programa userport.exe (acepte los defaults)

4. Ejecute sus programas de ensamblador

Page 32: 92756796 Encender Led

(6-Notas/17)   República del Saber Ensamblador: "Puerto Paralelo"

Programando en Windows 2000/XP

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>   [Notas]  [Ref] [CSS]

Notas:

Que tal, muy buena la informacion ya la habia utilizado una ocacion y todo habia servido bien, pero segun parece el programa userport no funciona bajo XP SP2, hay alguna forma de solucionar este problema?, gracias.

Alumno(s): [email protected] 20/Oct/2005 9:19pm -----

(7/17)   República del Saber Ensamblador: "Puerto Paralelo"

Puerto Paralelo

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

El puerto paralelo de la IBM-PC original usa un conector de 25 terminales TTL [Fig. 1]: 12 salidas y 5 entradas digitales accedidas por 3 puertos I/O de 8-bits consecutivos [2]

El Puerto DATA (378H): tiene 8 terminales de salida (max 2.5 mA)

El puerto STATUS (379H): tiene 5 terminales de entrada (negadas)

El puerto CONTROL (37AH): tiene 4 terminales de salida (3 de ellas negadas)

Tierra: Las restantes 8 terminales están aterrizadas

(8/17)   República del Saber Ensamblador: "Puerto Paralelo"

Conector Puerto Paralelo

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

Page 33: 92756796 Encender Led

Fig. 1. Diagrama del conector del puerto paralelo

Tabla 2. IBM-PC Parallel Printer Port DB-25 Socket Pin layout

Signal Name Register Bit DB-25 Pin I/O Direction

Strobe ¬C0 1 Output

Data Bit 0 D0 2 Output

Data Bit 1 D1 3 Output

Data Bit 2 D2 4 Output

Data Bit 3 D3 5 Output

Data Bit 4 D4 6 Output

Data Bit 5 D5 7 Output

Data Bit 6 D6 8 Output

Data Bit 7 D7 9 Output

Acknowledge S6 10 Input

Busy ¬S7 11 Input

Paper End S5 12 Input

Select In S4 13 Input

Auto Feed ¬C1 14 Output

Error S3 15 Input

Initialize C2 16 Output

Select ¬C3 17 Output

Ground - 18-25 -

(9/17)   República del Saber Ensamblador: "Puerto Paralelo"

Conector Puerto Paralelo

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

Centronics (standard) - 36 pin connector layout

Page 34: 92756796 Encender Led
Page 35: 92756796 Encender Led

IBM-PC Centronics Parallel Printer Port Female Connector 36-Pin layout ______________________________________________________/ \\\\ 1 2 3 4 ... ... 16 17 18 / \\ / \\ 19 20 21 ... ... 34 35 36 / \\________________________________________________/

Page 36: 92756796 Encender Led
Page 37: 92756796 Encender Led

Direction is relative to printer. I: Host->Printer O: Printer->Host

Page 38: 92756796 Encender Led

pin dir function 1 I !STROBE 2 I DATA0 - Data bit 1 3 I DATA1 - Data bit 2 4 I DATA2 - Data bit 3 5 I DATA3 - Data bit 4 6 I DATA4 - Data bit 5 7 I DATA5 - Data bit 6 8 I DATA6 - Data bit 7 9 I DATA7 - Data bit 810 O !ACKNLG - Acknoledge: received data11 O BUSY12 O PE - Paper End13 O SLCT - Select14 I !AUTOLF - Auto Line Feed (XT)15 - n.c.16 - 0V17 - CHASSIS GND - shield18 - n.c.19 - GND... - ...30 - GND31 I !INIT - Initialize/Reset32 O !ERROR - (PE, OFF-LINE, other errors)33 - GND34 - n.c.35 - LOGIC1 - pull-up 3.3k ohm36 I !SLCTIN - Select input

(10/17)   República del Saber Ensamblador: "Puerto Paralelo"

DATA Port

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

Escritura: Escribe 8-bits de salida que conservarán su estado indefinidamente o hasta la próxima escritura. La salida TTL (0-5v) no debe ser mayor de 2.6mA

Page 39: 92756796 Encender Led

y NO debe conectar ninguna de estas terminales a tierra!

MOV DX, 378HOUT DX, AL

Lectura: Si no hay carga (dispositivo) regresa el último dato escrito. Si hay carga regresa la operación OR del último valor escrito y el valor que envié el dispositivo externo (máx. 24mA)

MOV DX, 378HIN AL, DX

Tabla 3. DATA Port

Bit 7 6 5 4 3 2 1 0

Pin 9 8 7 6 5 4 3 2

Nota: El nivel high/1 va de 2.4-5v; El nivel low/0 va de 0-0.5v [6]

(11/17)   República del Saber Ensamblador: "Puerto Paralelo"

Leyendo STATUS Port

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

379H: Regresa el contenido de los 5-bits de status

Tabla 4. STATUS Port

Bit 7 6 5 4 3 2 1 0

Pin 11 10 12 13 15 - - -

Page 40: 92756796 Encender Led

Tabla 5. Significado de cada Bit

Bit Name Descrip

Bit-2 ? IRQ status

Bit-3 ERROR Device Error

Bit-4 SLCT Device Select In

Bit-5 PE Device Out of Paper

Bit-6 ACK Printer Acknowledge

Bit-7 -BUSY Printer Busy

(12/17)   República del Saber Ensamblador: "Puerto Paralelo"

CONTROL port

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

37AH: Reconoce como salidas los 5-bits menos significativos (algunos de ellos negados). La salida TTL (0.8-5v) no debe exceder los 7mA (estas salidas usan una resistencia interna de 4.7Ω)

37AH: Si no hay carga regresa el último dato escrito (5-bits). Si hay carga regresa la combinación OR de los 5-bits menos significativos del último dato escrito y el valor enviado por el dispositivo

Tabla 6. STATUS Port

Bit 7 6 5 4 ~3 2 ~1 ~0

Page 41: 92756796 Encender Led

Pin - - - IRQenable 17 16 14 1

Tabla 7. Significado de cada Bit

Bit-0 Strobe (data available=1)

Bit-1 Auto Feed (add linefeed=1)

Bit-2 Initialize (init printer=0)

Bit-3 Select Input (on-line=1)

Bit-4 Enable parallel port IRQ (active=1)

Tabla 8. Valores de lectura iniciales del puerto

Bit 7 6 5 4 ~3 2 ~1 ~0

Data - - - 0 1 0 1 1

(13/17)   República del Saber Ensamblador: "Puerto Paralelo"

Consejos Prácticos

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

Consejos: para acoplar circuitos al Puerto Paralelo [7]

Aisla y aterriza correctamente tu circuito, e.g. optoacopladores

Experimenta primero en una computadora vieja, no uses tu laptop o una computadora con puerto paralelo integrado al motherboard

Usa de preferencia que tenga una extensión de un segundo puerto paralelo (LPT2)

No conectes o manipules tus circuitos mientras la computadora esta encendida

No aterrizes ni sobrecargues las salidas

Page 42: 92756796 Encender Led

No utilices altos voltajes CD o voltajes de CA a menos de que tengas correctamente aisladas dichas señales, e.g. optoacopladores

(14/17)   República del Saber Ensamblador: "Puerto Paralelo"

Ejercicio I

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

1. Conecte el cable de impresora (Centronics 36-pin) a la computadora

2. Conecte el anodo de un "led" a la terminal-2 y el cátodo a la terminal-19 (tierra)

3. Inicie el programa "debug"

Busque la dirección del puerto de datos: d 0:408 40d Encienda el led escribiendo un "1" al bit-0 del puerto de datos: o 378 1 Apague el led escribiendo un "0" al bit-0 del puerto de datos: o 378 0

(15/17)   República del Saber Ensamblador: "Puerto Paralelo"

Ejercicio II

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

; pto.asm: Conector Centronics leds en pin-2/pin-19 y pin-9/pin-30; Operación: Enciende pin-9, enter, enciende pin-2, enter, flasher

Page 43: 92756796 Encender Led

BITS 16ORG 0x0100SECTION .text

Page 44: 92756796 Encender Led

Main mov dx, 378h ; direccion de DATA-PORT mov al, 80h ; led-d7=on (pin-9) out dx, al call Getch mov al, 1 ; led-d0=on (pin-2) out dx, al call Getch call Flash xor al, al ; apagar leds out dx, al int 20h

Page 45: 92756796 Encender Led

Flash ; Prende/Apaga "cx" veces ambos leds mov cx, 14h ; repeticiones mov al, 80h ; experimentar con "81h"Fciclo: out dx, al xor al, 81h push cx call Delay pop cx loop Fciclo ret

Page 46: 92756796 Encender Led

Getch ; Espera tecla ENTER push dx ; save port-addr mov dx, Msj mov ah, 9 int 21h mov ah, 10h int 16h pop dx ; restore port-addr ret

Page 47: 92756796 Encender Led

Delay ; Retardo mov cx, 10ffhD10: push cxD20: loop D20 pop cx loop D10 ret

Page 48: 92756796 Encender Led

SECTION .data

Page 49: 92756796 Encender Led

Msj db 'Pulse enter para continuar',10,13,'$'

(16/17)   República del Saber Ensamblador: "Puerto Paralelo"

Lectura Pto. Paralelo mediante interrupción ACK

<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] >>  [Ref] [CSS]

; PPI.ASM: READ PARALLEL PORT WHEN THERE IS AN INTERRUPT; USE: Connect DATA7 (Pin 9) to ACK (Pin 10) on a male DB25 connector; REF: Craig Peacock, Interfacing the Standard Parallel Port, Feb 1998; www.senet.com.au/cpeacock ; Email - [email protected]

Page 50: 92756796 Encender Led

BITS 16ORG 0x0100

Page 51: 92756796 Encender Led

IRQ EQU 0FH ; PARALLEL PORT'S INT THAT ACCEPTS IRQs

Page 52: 92756796 Encender Led

DATA EQU 378H ; DATA PORTSTAT EQU DATA+1 ; STATUSCTRL EQU DATA+2 ; CONTROL

Page 53: 92756796 Encender Led

PIC EQU 20H ; PIC ADDRESSPICMASK EQU (1 << 7) ; PIC'S MASK FOR IRQ 7

Page 54: 92756796 Encender Led

RETARDO EQU 7000H

Page 55: 92756796 Encender Led

%MACRO OUTP 2 ; OUTPUT PORT MOV DX, %1 ; PORT-ADDR MOV AL, %2 ; DATA OUT DX, AL%ENDMACRO

Page 56: 92756796 Encender Led

%MACRO CLRPORT 2 ; CLEAR PORT BITS MOV DX, %1 IN AL, DX AND AL, %2 OUT DX, AL%ENDMACRO

Page 57: 92756796 Encender Led

%MACRO SETPORT 2 ; SET PORT BITS MOV DX, %1 IN AL, DX OR AL, %2 OUT DX, AL%ENDMACRO

Page 58: 92756796 Encender Led

%MACRO WRITE 1 MOV AH, 0EH MOV AL, %1 MOV BX, 0002H INT 10H%ENDMACRO

Page 59: 92756796 Encender Led

%MACRO PRINT 1 MOV AH, 9 MOV DX, %1 INT 21H%ENDMACRO

Page 60: 92756796 Encender Led

SEGMENT .text

Page 61: 92756796 Encender Led

MAIN: JMP LOADER

Page 62: 92756796 Encender Led

INT15: ; NEW INT 0FH CLI ; DON'T DISTURB WRITE ':' ; SMILE FACE WRITE '-' WRITE ')' WRITE 7 ; BEEP OUTP PIC, 20H ; END-OF-INTERRUPT STI ; ACCEPT COMING IRQs IRET

Page 63: 92756796 Encender Led

LOADER: MOV AH, 35H ; READ OLD INT MOV AL, IRQ INT 21H

Page 64: 92756796 Encender Led

MOV [OLDINT+0],BX ; SAVE OLD INT MOV [OLDINT+2],ES

Page 65: 92756796 Encender Led

MOV AH, 25H ; SET NEW INT FOR PP'S IRQ MOV AL, IRQ MOV DX, INT15 ; DS:DX INT 21H

Page 66: 92756796 Encender Led

CLRPORT CTRL, 0DFH ; DATA-OUTPUT MODE CLRPORT PIC+1,0FFH-PICMASK ; UN-MASK PIC SETPORT CTRL, 10H ; ENABLE PARALLEL PORT IRQ

Page 67: 92756796 Encender Led

PRINT MSJ1 ; PRINT 'BEGIN'

Page 68: 92756796 Encender Led

; GENERATE A PULSE IN DATA PORT OUTP DATA, 0FFH ; OUT 1'S CALL DELAY OUTP DATA, 0 ; OUT 0'S CALL DELAY OUTP DATA, 0FFH ; OUT 1'S CALL DELAY

Page 69: 92756796 Encender Led

PRINT MSJ2 ; PRINT 'END'

Page 70: 92756796 Encender Led

CLRPORT CTRL, 0EFH ; DISABLE PP IRQ SETPORT PIC+1, PICMASK ; MASK PIC

Page 71: 92756796 Encender Led

MOV DX, [OLDINT+0]; RESET OLD INT DS:DX MOV AX, [OLDINT+2] MOV DS, AX MOV AH, 25H ; RESET INT 15 MOV AL, IRQ INT 21H

Page 72: 92756796 Encender Led

INT 20H ; EXIT

Page 73: 92756796 Encender Led

DELAY: MOV CX, RETARDOD1: PUSH CXD2: LOOP D2 POP CX LOOP D1 RET

Page 74: 92756796 Encender Led

SEGMENT .data

Page 75: 92756796 Encender Led

OLDINT DW 0,0 MSJ1 DB 'BEGIN..$' MSJ2 DB ' ..END$'