encender led

Upload: ulises-macr

Post on 20-Jul-2015

1.342 views

Category:

Documents


2 download

TRANSCRIPT

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 leds 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 tericoPara hablar encendido y apagado de leds 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 versin es de 1987, a la que siguieron las versiones 1.5 y 2.0, de 1989. Fue el compilador ms 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

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

Edicin Compilacin Enlazado Ejecucin

La Edicin de un programa consiste, simplemente, en editar el cdigo fuente del programa, Turbo C incluye un editor para este efecto. La Compilacin del programa consiste en convertir el cdigo fuente en cdigo objeto. El Enlazado consiste en enlazar el cdigo objeto para obtener el cdigo ejecutable. Finalmente, la Ejecucin consiste precisamente en ejecutar el programa.

El entorno de Turbo C

El entorno de Turbo C facilita la edicin, compilacin 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 continuacin se explican las caractersticas ms importantes del entorno...

El editor de Turbo C

El editor de Turbo C es una poderosa herramienta que nos facilita enormemente la edicin de un programa, es como un editor de texto cualquiera, pero, para los que estn 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 combinacin de teclas CTRL+K+B al inicio del bloque que se desea seleccionar, y la combinacin CTRL+K+K al final del mismo. Despus, 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 lxica y sintcticamente bien escrito, puede no dar los resultados correctos, estos resultados pueden deberse a errores comunes de programacin, tales como errores lgicos, comnmente llamados bugs, aunque existen otros tipos de errores, tales como errores en tiempo de ejecucin (tema del que nos ocuparemos ms adelante), el debugger de Turbo C nos ayudar a detectar y corregir dichos errores lgicos. Por ejemplo, si deseamos monitorear en todo momento el valor de una variable (watch) presionaremos la combinacin CTRL+F7, y posteriormente, podremos ejecutar el programa lnea por lnea (F7) o funcin por funcin (F8).

Puerto paralelo.

Vamos a dar ciertos detalles sobre el puerto paralelo:

Un puerto paralelo es una interfaz entre una computadora y un perifrico cuya principal caracterstica es que los bits de datos viajan juntos enviando un byte completo o ms a la vez. Es decir, se implementa un cable o una va fsica para cada bit de datos formando un bus. El cable paralelo es el conector fsico entre el puerto paralelo y el perifrico. En un puerto paralelo habr una serie de bits de control en vas aparte queirn en ambos sentidos por caminos distintos. En contraposicin al puerto paralelo est el Puerto serie, que enva 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 = 0378. LPT2 = 0278 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 configuracin que no tiene conexin al exterior, su direccin en el LPT1 es 0x37A.El registro de estado, se trata de un registro de entrada de informacin de 5 bits, su direccin en el LPT1 es 0379.El registro de datos, se compone de 8 bits, es bidireccional. Su direccin en el LPT1 es 0378.

Conector DB25.

La descripcin de este conector se da a continuacin:

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

Los LEDs.

LED es la abreviatura en lengua inglesa para Light Emitting Diode, que en su traduccin al espaol correspondera a Diodo Emisor de Luz. Un LED consiste en un dispositivo que en su interior contiene un material semiconductor que al aplicarle una pequea corriente elctrica 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 fabricacin 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 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.

ProcedimientoEs recomendable tener unos cuantos leds ms y unas cuantas resistencias ms, 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 conexin 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 ms 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 pequeo programa escrito en el lenguaje de programacin Turbo C++. El circuito que se va armar ser montado sobre una plaqueta, la cual conduce la corriente elctrica, llamada "protoboard". Como nuestro objetivo es controlar los diodos LEDs con la computadora, esto es encenderlos y apagarlos segn 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. El paso siguiente es soldar cable fino UTP a los pines internos del conector. Como los pines estn numerados del nmero 1 al 25, solo usaremos los pines numerados del 2 al 9, tambin se

tiene que soldar un cable al pin 25 (que es el pin de masa o tierra elctrica) para tener una descarga a tierra comn, 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 estn 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 imgenes pueden ayudar a apreciar mejor la conexin del circuito:

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

*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:

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 espaol 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 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 guste 8 resistencias de 220ohm a 1/4W (si, es una para cada led) 1 Protoboard Cables 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

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...

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 encendido Una vez jueguen bastante con el programita y creen qu etodo quedo bien y funciona el montaje podemos pasar a la parte 2 control! JEJEJE

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 Prcticos 14. Ejercicio I 15. Ejercicio II 16. Lectura Pto. Paralelo mediante interrupcin ACK 17. Ejercicio R e f e r e n c i a s(1/17)

Repblica del Saber

Ensamblador: "Puerto Paralelo"

Qu es un puerto?> [Notas] [Ref] [CSS]

Puerto: Es un conjunto de lneas (interfaz) que puede utilizar el CPU para intercambiar informacin con otros dispositivos [1] Puerto Paralelo: Transmite ms 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)

Repblica del Saber

Ensamblador: "Puerto Paralelo"

Qu es un puerto?> [Notas] [Ref] [CSS]

Notas:INICIO:

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

AMARILLO: DEC CX CMP CX,0 JA AMARILLO

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

ROJO: DEC CX CMP CX,0 JA ROJO

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

VERDE: DEC CX CMP CX,0 JA VERDE

JMP INICIO Alumno(s): David Hinojos, Osbaldo Quezada, Hansi Herrera [email protected],[email protected],[email protected] ----- 20/Oct/05 7:13pm ----(2/17)

Repblica del Saber

Ensamblador: "Puerto Paralelo"

Puerto Paralelo> [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 va instrucciones IN/OUT del CPU Las 5 entradas son "steady-state input points" y pueden programarse va instrucciones IN del CPU Las 3 direcciones del puerto (DATA, STATUS, CONTROL) inician comnmente en la 378H (otras direcciones comunes son la 278H y 3BCH) Una de las lneas de entrada es adems una interrupcin (que puede habilitarse va programa) y ademas hay una lnea tipo "power-on reset"

(3/17)

Repblica del Saber

Ensamblador: "Puerto Paralelo"

Buscando Direcciones del Puerto Paralelo> [Ref] [CSS]

Normalmente la PC tiene definidos tres puertos paralelo de impresin: 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 hipottica

Tabla 1. LPT1 se localiza en 378H, LPT2 en 278H y LPT3 no est presente.Dir. Val. 408H 78H 409H 03H 40AH 78H 40BH 02H 40CH 00H 40DH 00H

(4/17)

Repblica del Saber

Ensamblador: "Puerto Paralelo"

Buscando Direcciones del Puerto Paralelo> [Ref] [CSS]

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

Desde DEBUG: Mediante el comando

d 0:408 40d

Desde Windows: Inicio / Configuracin / Panel de Control / Sistema / Administrador de Dispositivos / Puertos (COM y LPT) / Puerto de Impresora / RecursosEnsamblador: "Puerto Paralelo"

(5/17)

Repblica del Saber

Programando el Puerto Paralelo> [Notas] [Ref] [CSS]

Control de Impresora: Se envan datos comandos seguidos de una seal strobe que ocasiona que la impresora lea el puerto y responda por las lneas de status cuando est lista para recibir ms informacin (not bussy) en su defecto, indica si hay algn error Opciones para Controlar el Puerto Paralelo [4]:

Acceso Directo: Usando ensamblador o un lenguaje de programacin, leyendo variables del sistema, manipulando bits y leyendo/escribiendo puertos Via BIOS: La INT 17H del BIOS prove 3 servicios: inicializar, imprimir y status (slo trabajan para LPT1) Via DOS: La INT 21H servicio 05h escribe un caracter y el servicio 40h que trabaja con archivosRepblica del Saber Ensamblador: "Puerto Paralelo"

(5-Notas/17)

Programando el Puerto Paralelo> [Notas] [Ref] [CSS]

Notas:

;port.asm controlar un led por medio del puerto

BITS 16 ORG 0x0100 SECTION .text NL 10,13 PRINT 1 ; PRINT STRING$ MOV AH, 9 MOV DX, %1 INT 21H FOCO 1 MOV AL, %1 MOV DX, 378H OUT DX, AL

PRINT msg FOCO 80H CALL GETCH PRINT VRD FOCO 100B CALL GETCH CALL AMARILLO INT 20H

GETCH ;ESPERA QUE PRESIONES UNA TECLA PARA EL CAMBIO PUSH DX PRINT msg2 MOV AH, 10H INT 16H POP DX RET

AMARILLO ; SIMULA EL CAMBIO DE COLOR EN EL SEMAFORO MOV CX, 10H ; REPETICIONES MOV AL, 80H CICLO: OUT DX, AL XOR AL, 81H PUSH CX CALL DELAY POP CX LOOP CICLO PRINT AMR ROJO: FOCO 1000B PRINT RJ CALL DELAY CALL DELAY CALL DELAY CALL DELAY FOCO 0B PRINT BYE RET

DELAY MOV CX, 10ffH D10: PUSH CX D20: LOOP D20 POP CX LOOP D10 RET

SECTION .data

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)

Repblica del Saber

Ensamblador: "Puerto Paralelo"

Programando en Windows 2000/XP> [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 Solucin: 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

(6-Notas/17)

Repblica del Saber

Ensamblador: "Puerto Paralelo"

Programando en Windows 2000/XP> [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)

Repblica del Saber

Ensamblador: "Puerto Paralelo"

Puerto Paralelo> [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 estn aterrizadasEnsamblador: "Puerto Paralelo"

(8/17)

Repblica del Saber

Conector Puerto Paralelo> [Ref] [CSS]

Fig. 1. Diagrama del conector del puerto paralelo Tabla 2. IBM-PC Parallel Printer Port DB-25 Socket Pin layout

Signal Name Strobe Data Bit 0 Data Bit 1 Data Bit 2 Data Bit 3 Data Bit 4 Data Bit 5 Data Bit 6 Data Bit 7 Acknowledge Busy Paper End Select In Auto Feed Error Initialize Select Ground

Register Bit C0 D0 D1 D2 D3 D4 D5 D6 D7 S6 S7 S5 S4 C1 S3 C2 C3 -

DB-25 Pin 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18-25

I/O Direction Output Output Output Output Output Output Output Output Output Input Input Input Input Output Input Output Output -

(9/17)

Repblica del Saber

Ensamblador: "Puerto Paralelo"

Conector Puerto Paralelo> [Ref] [CSS]

Centronics (standard) - 36 pin connector layout

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

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

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 8 10 O !ACKNLG - Acknoledge: received data 11 O BUSY 12 O PE - Paper End 13 O SLCT - Select 14 I !AUTOLF - Auto Line Feed (XT) 15 - n.c. 16 - 0V 17 - CHASSIS GND - shield 18 - n.c. 19 - GND ... - ... 30 - GND 31 I !INIT - Initialize/Reset 32 O !ERROR - (PE, OFF-LINE, other errors) 33 - GND 34 - n.c. 35 - LOGIC1 - pull-up 3.3k ohm 36 I !SLCTIN - Select input(10/17)

Repblica del Saber

Ensamblador: "Puerto Paralelo"

DATA Port> [Ref] [CSS]

Escritura: Escribe 8-bits de salida que conservarn su estado indefinidamente o hasta la prxima escritura. La salida TTL (0-5v) no debe ser mayor de 2.6mA

y NO debe conectar ninguna de estas terminales a tierra!MOV DX, 378H OUT DX, AL

Lectura: Si no hay carga (dispositivo) regresa el ltimo dato escrito. Si hay carga regresa la operacin OR del ltimo valor escrito y el valor que envi el dispositivo externo (mx. 24mA)MOV DX, 378H IN AL, DX Tabla 3. DATA PortBit Pin

7 9

6 8

5 7

4 6

3 5

2 4

1 3

0 2

Nota: El nivel high/1 va de 2.4-5v; El nivel low/0 va de 00.5v [6]Repblica del Saber Ensamblador: "Puerto Paralelo"

(11/17)

Leyendo STATUS Port> [Ref] [CSS]

379H: Regresa el contenido de los 5bits de statusTabla 4. STATUS PortBit Pin 7 11 6 10 5 12 4 13 3 15 2 1 0 -

Tabla 5. Significado de cada BitBit Bit-2 Bit-3 Bit-4 Bit-5 Bit-6 Bit-7 Name ? ERROR SLCT PE ACK -BUSY Descrip IRQ status Device Error Device Select In Device Out of Paper Printer Acknowledge Printer BusyEnsamblador: "Puerto Paralelo"

(12/17)

Repblica del Saber

CONTROL port> [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 combinacin OR de los 5-bits menos significativos del ltimo dato escrito y el valor enviado por el dispositivoTabla 6. STATUS PortBit Pin 7 6 5 4IRQenable

~3 17

2 16

~1 14

~0 1

Tabla 7. Significado de cada Bit

Bit-0 Bit-1 Bit-2 Bit-3 Bit-4

Strobe (data available=1) Auto Feed (add linefeed=1) Initialize (init printer=0) Select Input (on-line=1) Enable parallel port IRQ (active=1)

Tabla 8. Valores de lectura iniciales del puertoBit Data 7 6 5 4 0 ~3 1 2 0 ~1 1 ~ 0 1Ensamblador: "Puerto Paralelo"

(13/17)

Repblica del Saber

Consejos Prcticos> [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 extensin de un segundo puerto paralelo (LPT2) No conectes o manipules tus circuitos mientras la computadora esta encendida No aterrizes ni sobrecargues las salidas No utilices altos voltajes CD o voltajes de CA a menos de que tengas correctamente aisladas dichas seales, e.g. optoacopladoresRepblica del Saber Ensamblador: "Puerto Paralelo"

(14/17)

Ejercicio I> [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 ctodo a la terminal-19 (tierra) 3. Inicie el programa "debug"

Busque la direccin 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 0Repblica del Saber Ensamblador: "Puerto Paralelo"

(15/17)

Ejercicio II> [Ref] [CSS]

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

BITS 16 ORG 0x0100 SECTION .text

Main mov dx, mov al, out dx, call mov al, out dx, call call xor al, out dx, int 20h

378h ; direccion de DATA-PORT 80h ; led-d7=on (pin-9) al Getch 1 ; led-d0=on (pin-2) al Getch Flash al ; apagar leds al

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

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

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

SECTION .data

Msj db 'Pulse enter para continuar',10,13,'$'(16/17)

Repblica del Saber

Ensamblador: "Puerto Paralelo"

Lectura Pto. Paralelo mediante interrupcin ACK> [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]

BITS 16 ORG 0x0100

IRQ EQU 0FH IRQs

; PARALLEL PORT'S INT THAT ACCEPTS

DATA EQU 378H ; DATA PORT STAT EQU DATA+1 ; STATUS CTRL EQU DATA+2 ; CONTROL

PIC EQU 20H ; PIC ADDRESS PICMASK EQU (1