Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo recibe la programación del puerto paralelo los datos devueltos?

¿Cómo recibe la programación del puerto paralelo los datos devueltos?

Puerto paralelo

El estándar IEEE 1284 definió 5 modos para transmisión por puerto paralelo en 1994:

1) Modo de compatibilidad Modo de compatibilidad

2 ) Modo Nibble modo de media palabra

3) Modo Byte modo byte

4) Modo de puerto paralelo mejorado EPP

5) Puerto paralelo extendido ECP

p>

El conector de hardware del puerto paralelo es DB25, que se divide en tres grupos, como se muestra a continuación

1) Líneas de datos (bus de datos) líneas de datos

2) Líneas de control Líneas

3) Líneas de estado Líneas de estado

Las líneas de datos se utilizan para transmitir datos, las líneas de control se utilizan para controlar dispositivos periféricos y los dispositivos periféricos devuelven señales de estado a través de líneas de estado. Estas líneas están conectadas a internos. El registro de datos, el registro de control y el registro de estado están conectados.

La señal del pin DB25 es la siguiente:

Nº de pin (DB25)

Nombre de la señal

Dirección

Registro - bit

Invertido

1

nStrobe

Salida

Control-0

2

Dato0

Entrada/Salida

Dato-0

No

3

Dato1

Entrada/Salida

Dato-1

No

4< / p>

Datos2

Entrada/Salida

Datos-2

No

5

Dato3

Entrada/Salida

Dato-3

No

6

Dato4

Entrada/Salida

Dato-4

No

7

Dato5

Entrada/Salida< / p>

Datos-5

No

8

Datos6

Entrada/Salida

Datos -6

No

9

Datos7

Entrada/Salida

Datos-7

No

10

nAck

En

Estado-6

No

11

Ocupado

En

Estado-7

12

Salida de papel

Entrada

Estado-5

No

13

Seleccionar< / p>

Entrada

Estado-4

No

14

Salto de línea

Salida

Control-1

15

nError

En

Estado- 3

No

16

nInicializar

Salida

Control-2

No

17

nSelect-Impresora

Salida

Control-3

18-25

Tierra

-

-

-

Registro de puerto paralelo:

Las líneas de datos, control y estado están conectadas respectivamente a los registros coincidentes dentro de la computadora, por lo que estos registros se pueden operar mediante programación y el puerto paralelo se puede leer y escribir fácilmente a través de 'C' o 'BASIC ' idioma.

Los registros de puerto paralelo estándar son:

1) registro de datos registro de datos

2) registro de estado registro de estado

3) Control Registros de control

Al escribir estos registros, las señales de voltaje correspondientes se transmitirán en las líneas correspondientes, que se pueden medir con un multímetro. Las señales para el puerto paralelo también se pueden leer a través de estos registros. Por ejemplo: escribimos "1" en el registro de datos, Data0 se elevará a un voltaje de +5V, de modo que podamos encender o apagar la línea de datos o la línea de control mediante programación.

¿Dónde están estos registros?

En IBM PC, estos registros están asignados IO y tienen direcciones únicas. En una PC típica, la dirección base de LPT1 es 0x378, la dirección base de LPT2 es 0x278 y la dirección base de LPT3 es 0x3bc. .

El registro de datos está en la dirección base, el registro de estado está en la dirección base +1 y el registro de control está en la dirección base +2 Por lo tanto, una vez que conocemos la dirección base, podemos. calcular las direcciones de otros registros

Registro

LPT1

LPT2

LPT3

registro de datos (dirección base + 0)

0x378

0x278

0x3bc

registro de estado (dirección base + 1)

0x379

0x279

0x3Bd

registro de control (dirección base + 2)

0x37a

0x27a

0x3be

Especificaciones de programación:

Casi todos los lenguajes de programación proporcionan algunas funciones de biblioteca para acceder a puertos paralelos. Por ejemplo: Borland C proporciona funciones "Inportb" y "Outportb" para leer. o escriba la dirección de mapeo IO de dispositivos externos. Este tutorial proporciona ejemplos de VC, pero es fácilmente portátil a otros compiladores como Borland C y TC. VB no proporciona directamente funciones de acceso al puerto paralelo, pero esta función se puede agregar fácilmente a través de DLL. VC proporciona dos funciones para acceder al mapeo de IO de dispositivos periféricos, "_inp" para leer y "_outp" para escribir. Estas funciones están declaradas en "conio.h".

Programa de prueba de hardware simple:

Ejemplo de VC++:

Paso 1: crear un proyecto:

Después de hacer clic en Finalizar, haga clic en el ejemplo .cpp Introduce el código en:

#include "stdafx.h"

#include "conio.h"

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

int main(int argc, char* argv[])

{

datos cortos;

if(argc<2)

{

printf("Uso\n\n ");

printf("partest1.exe ,,\n\n\n");

devuelve 0;

}

if (!strcmp(argv[1],"read"))

{

datos = _inp(atoi(argv[2]));

printf ("Los datos leídos desde el puerto paralelo son ");

printf("%d\n\n\n\n",data);

}

if(!strcmp(argv[1],"write"))

{

_outp(atoi(argv[2]),atoi(argv[3] ));

printf("Los datos escritos en el puerto paralelo son ");

printf("%s\n\n\n\n\n",argv[3] );

}

devuelve 0;

}

Compile este programa y cópielo en "c:\"

¿Cómo probar un programa?

Conecte el hardware, abra el cuadro del símbolo del sistema, cambie a C: Ingrese: partest1.exe escriba 888 255 y presione Enter. Si todo está correcto, entonces LED1-LED8 se iluminará. 0x378, es decir, la dirección base de LPT1 (registro de datos). 255 son los datos escritos en el registro de datos. Si ingresa "partest1 read 888", el programa leerá el valor del registro de datos del puerto paralelo y lo mostrará.