Autor Tema: Puerto Paralelo  (Leído 4098 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Kcesar2

  • PIC10
  • *
  • Mensajes: 23
Puerto Paralelo
« en: 06 de Mayo de 2005, 13:23:00 »
estoy tratando de comunicar la PC con el exterior via el  puerto paralelo, en el envio de datos no hay problema,pero en la recepcion me parece que no capta los datos que quiero que lea, estoy usando el turbo c++ para manejar el puerto, a ver si alguien tiene alguna idea, gracias






  Saludos desde lima,Peru

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Puerto Paralelo
« Respuesta #1 en: 06 de Mayo de 2005, 17:57:00 »
Buenas.

No se si lo sabrás, pero los 8 bits del puerto paralelo son sólo de salida. Para leer entradas debes usa los bits de ack, page feed, etc. Éstos bits están en la dirección siguiente a la normal, es decir, 0x379. Aqui te paso un programa que hice para capturar datos por el puerto paralelo y guardarlos en un fichero.

Codigo:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>

int puerto,anterior;
long array[10000];
long i,n;
FILE *fichero;

void main()
{
   n=10;
   clrscr();
   printf("Pulsa una tecla para empezar."Giño;
   getch();
   printf("

Leyendo %d datos....",n);
   for(i=0;i<n;i++)
   {
      puerto=inportb(0x379);
      if(puerto!=anterior)
         {
         array=puerto;
         anterior=puerto;
         }
      else
         i--;
   }
   fichero=fopen("muestreo.txt","wt"Giño;
   for(i=0;i<n;i++)
   {
      fprintf(fichero,"Codigo %d:",i);
      switch(array)
      {
      case 0x3f: fprintf(fichero,"   11
"Giño;break;
      case 0x37: fprintf(fichero,"   10
"Giño;break;
      case 0x27: fprintf(fichero,"   00
"Giño;break;
      case 0x2f: fprintf(fichero,"   01
"Giño;break;
      }
   }
   fclose(fichero);
}


El programa define un array de 10000 muestras y luego las pasa al fichero de salida, así el muestreo se hace más rápido que escribiendo los datos directamente en el archivo.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: Puerto Paralelo
« Respuesta #2 en: 30 de Julio de 2005, 16:09:00 »
PUERTO PARALELO

PUERTO PARALELO

Entradas y Salidas de datos en el puerto paralelo

TABLA  Nº 1

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
Patita     Señal  Función      Conexión     Registro    Bit             Estado              
1STB             StrobeI/O Control0Y
2DOBit 0ODatos0N
3D1Bit 1ODatos1N
4D2Bit 2ODatos2N
5D3Bit 3ODatos3N
6D4Bit 4ODatos4N
7D5Bit 5ODatos5N
8D6Bit 6 ODatos6N
9D7Bit 7ODatos7N
10ACKAcknowledgeIStatus6N
11BSYPrinterBusyIStatus7Y
12PEPaperEndIStatus5N
13SELPrinterSelectIStatus7N
14AUTOLFAutomLineFeedI/OControl4N
15ERRErrorIStatus3N
16INITInicialicePrinterI/OControl2N
17SELINSelectPrinterI/OControl3Y
18 -  25GNDGround    

Los puertos paralelo de las computadoras se llaman por lo general&h378.&h278 y &h3bc

La combinacion de terminales es la siguiente 

TABLA Nº2            

                                                                                                           
Datos  BASEStatus BASE + 1Control BASE + 2
3BCH 3BDH 3BEH 
378H379H        

 

     
37AH
278H279H27AH
                                                               
En la columna registro de la tabla Nº 1 se muestran DATOS - STATUS Y      CONTROL
Podemos observar que en la columna Conexión se indica el trabajo que      puede realizar
Todos los terminales de DATOS son O (output , salida ) de datos
Todos los de CONTROL son I/O (input, output ,entrada.salida) de datos
Todos los de STATUS son I (input,entrada) de datos
En la columna  Estado se muestra como es la tensión en esa pata      sin recibir una orden desde la 
PC 
Las Letras N en la columna Estado indican que no hay tensión, La letra      Y indica que hay tensión

La combinación de letras y números se debe a la forma del conteo Hexadecimal

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  corresponden a

1 2 3 4 5 6 7 8 9  B C D E F G H I etc.

Con este programa  que corre en cualquier Basic podemos ensayar losresultados

CLS

INPUT H

A$ = HEX$ (H)

PRINT H ; "Decimal    " ; A$ ;" Hexadecimal    "

                                       

Las salidas  del puerto paralelo manejan pocacorriente y no se pueden conectar

   

a ningún circuito de potencia sin previamente tomar unaprecaución

   

Las salidas se conectan a el circuito nuevo a través deun opto acoplador

   

Con esto obtenemos la separación eléctrica de lacomputadora con el nuevo circuito y limitamos

   

la corriente de salida de la placa del puerto paralelo a algunos miliamper

   

                       

El diagrama muestra el interior de un opto acoplador , en + tenemos la tensiónde alimentación

   

del transistor de salida, en S la salida y la resistencia de 680 ohms limitala corriente del led

   

del acoplador a 3-8 miliamper

   

ENTRADAS PARA ADQUISICION DE DATOS

                                                                                       

Los terminales del 10 al 12 de Status son      de entrada y se puede comprobar su

   

funcionamiento con el siguiente programa      en qbasic

   

cls

   

do

   

a# = inp (&h379) oel que corresponde  a la PC

   

locate 10,5 : print a# xor &h80

   

sleep 1

   

loop

   

Apoyando un destornillador en      alguna de las patitas indicadas veremos que 

   

aparece un numero que cambia cada      segundo y que el menor coincide con el

   

que indica si conectamos a neutro      esa patita

   

!!!!ATENCIÓN NO HACER CORTOCIRCUITO ENTRELAS PATITAS

                                       

Esto indica que una señal que entra estasiendo leída e impresa en pantalla

   

Leamos los números que nos indica en los tres puertos por ejemplo

   

94-126-222-254

   

En cada pata se leerá un numero mayor y uno menor 

   

Para controlar una salida de datos cambiar el programa al que sigue

   
                                                               

cls

   

do

   

a# = inp (&h379) oel que corresponde  a la PC

   
if a# > xxx then out &h378,5    
if a# < xxx then out &h378,2    

locate 10,5 : print a# xor &h80

   

sleep 1

   

loop

   
                                               

En lugar que las XXX colocar un numeropromedio de los leídos y ejecutar el

   

programa

 

   

Veremos que los led 2 y 5 se encienden y apagan acompañando el valor delnumero 

   

que aparece en pantalla que sera uno mayor y otro menor al colocado 

 

   

Esta es la ejecución de una orden condicionada a un dato, en este casoencendemos

   

en forma alternativa un led según el numero leído en el puerto de entrada

   

 

 

 

 

 

Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Jacko777

  • PIC10
  • *
  • Mensajes: 11
RE: Puerto Paralelo
« Respuesta #3 en: 03 de Diciembre de 2005, 17:42:00 »
holas.. bueno no solo puede enviar datos por los 8 bits de puerto paralelo..si no tambien ..sin tener q usar el otro registro.
te envio un ckto de modo bidirecional..ojala te sirva..el programa esta en C++...
ah tb tienes q configurar el puerto de tu pc en modo epp.
saludos.

parace q no se puede adjuntar el ckto...
este es mi correo:jacko_ebx@yahoo.es..

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Puerto Paralelo
« Respuesta #4 en: 03 de Diciembre de 2005, 18:02:00 »
Escrito originalmente por antoniof
Buenas.
No se si lo sabrás, pero los 8 bits del puerto paralelo son sólo de salida. Para leer entradas debes usa los bits de ack, page feed, etc. Éstos bits están en la dirección siguiente a la normal, es decir, 0x379. Aqui te paso un programa que hice para capturar datos por el puerto paralelo y guardarlos en un fichero.



Hola:

Antonio el puerto de datos tambien puede funcionar como entrada poniendo en 1 el bit 6 (C5) del puerto de control (H37A)...


 

anything