Você está na página 1de 19

13/01/14

Porta Paralela

Introduo
Porta Paralela

Por: Antnio Rogrio Messias

Pgina 1 de 1

Home ndice

INTRODUO PORTA PARALELA


Para uso particular ou educacional.
Copyright(c) 1999-2006 ROGERCOM.COM Todos os direitos reservados.

Introduo Modelos de Porta Paralela Extenso do Cabo Paralela Endereos da Porta Paralela Registradores O conector DB25 O conector Centronics 36 pinos Lista dos componentes utilizados para desenvolver os circuitos Classes e funes em C/C++, para implementar seus programas Acessando a Impressora atravs da BIOS Ligando e desligando aparelhos externos atravs da Porta Paralela Recebendo sinais externos atravs da Porta Paralela

INTRODUO
A porta paralela uma interface de comunicao entre o computador e um perifrico. Quando a IBM criou seu primeiro PC (Personal Computer) ou Computador Pessoal, a idia era conectar a essa Porta uma impressora, mas atualmente, so vrios os perifricos que utilizam-se desta Porta para enviar e receber dados para o computador (exemplos: Scanners, Cmeras de vdeo, Unidade de disco removvel e outros). Se voc conhece um pouco de eletrnica e domina uma linguagem de programao como: C/C++/C++Builder, Pascal/Delph ou mesmo o Visual Basic, poder desenvolver um programa que controle um aparelho conectado Porta paralela, ou um programa de transferncia de arquivos entre dois computadores, utilizando um cabo paralelo como meio de transmisso. O seu conhecimento de Eletrnica servir para voc desenvolver sua prpria placa Eletrnica, que ser conectada ao DB25 da porta paralela. Est pgina lhe fornecer conhecimentos sobre a porta paralela, que o far compreender e utiliz-la, de uma maneira no convencional, isto , no somente para ser utilizada com uma impressora, mas tambm como qualquer outro aparelho, que o usurio tenha conhecimento sobre seu funcionamento, desejando control-lo atravs de seu Personal Computer, como diz a IBM. Ateno! A Porta Paralela est ligada diretamente placa me de seu computador. Muito cuidado ao conectar circuitos eletrnicos a essa porta, pois, uma descarga eltrica ou um componente com a polaridade invertida, poder causar danos irreparveis ao seu computador, seja coerente.

www.rogercom.com/pparalela/introducao.htm

1/19

13/01/14

Porta Paralela

TERMO DE RESPONSABILIDADE No me responsabilizo por nenhum dano causado tanto no equipamento, como na montagem/instalao inadequada dos circuitos. *** Boa pesquisa...

MODELOS DE PORTA PARALELA


Transmisso unidirecional A porta paralela SPP (Standard Parallel Port) pode chegar a uma taxa de transmisso de dados a 150KB/s. Comunica-se com a CPU utilizando um BUS de dados de 8 bits. Para a transmisso de dados entre perifricos so usado 4 bits por vez. Transmisso bidirecional A porta avanada EPP ( Enhanced Parallel Port ) chega a atingir uma taxa de transferncia de 2 MB/s. Para atingir essa velocidade, ser necessrio um cabo especial. Comunica-se com a CPU utilizando um BUS de dados de 32 bits. Para a transmisso de dados entre perifricos so usado 8 bits por vez. A porta avanada ECP (Enhanced Capabilities Port) tem as mesmas caractersticas que a EPP, porm, utiliza DMA (acesso direto memria), sem a necessidade do uso do processador, para a transferncia de dados. Utiliza tambm um buffer FIFO de 16 bytes.

EXTENSO DO CABO PARALELO


A extenso do cabo para interligar um computador a um perifrico, de no mximo 8m. Na prtica, utiliza-se um cabo com extenso menor. Quanto maior a extenso do cabo, maior a interferncia na transmisso dos dados.

ENDEREOS DA PORTA PARALELA


O seu computador nomeia as Portas Paralelas, chamando-as de LPT1, LPT2, LPT3 etc, mas, a Porta fsica padro de seu computador a LPT1, e seus endereos so: 378h ( para enviar um byte de dados pela Porta), 378+1h (para receber um valor atravs da Porta) e, 378+2h (para enviar dados). s vezes pode est disponvel a LPT2, e seus endereos so: 278h, 278+1h e 278+2h, com as mesmas funes dos endereos da porta LPT1 respectivamente. Nome da Endereo de
2/19

www.rogercom.com/pparalela/introducao.htm

13/01/14

Porta Paralela

Porta LPT1 LPT2

memria 0000:0408 0000:040A

Endereo da Porta 378 hexadecimal 278 hexadecimal 888 decimal 632 decimal

Descrio Endereo base Endereo base

REGISTRADORES
Utilizando a Porta Paralela conectada a uma impressora, os endereos tero nomes sugestivos, como segue abaixo: Nome Registro de Dados Registro de Status Registro de Controle Endereos LPT1 378h 379h 37Ah Endereos LPT2 278h 279h 27Ah Descrio Envia um byte para a impressora Ler o Status da impressora Envia dados de controle para a impressora

O CONECTOR DB25
O DB25 um conector que fica na parte de trs do gabinete do computador, e atravs deste, que o cabo paralelo se conecta ao computador para poder enviar e receber dados. No DB25, um pino est em nvel lgico 0 quando a tenso eltrica no mesmo est entre 0 0,4v. Um pino se encontra em nvel lgico 1 quando a tenso eltrica no mesmo est acima de 3.1 e at 5v. A figura abaixo mostra o conector padro DB25, com 25 pinos, onde cada pino tem um nome que o identifica:
DB25 que fica atrs do Micro

www.rogercom.com/pparalela/introducao.htm

3/19

13/01/14

Porta Paralela

Conector Macho do Cabo Paralelo

Foto do conector DB25 macho do cabo Paralelo

Esquema de funcionamento do DB25 no modo SPP

www.rogercom.com/pparalela/introducao.htm

4/19

13/01/14

Porta Paralela

O CONECTOR MACHO CENTRONICS 36 PINOS


O conector macho Centronics 36 pinos faz parte do cabo da impressora, atravs deste cabo que a impressora conectada ao computador. Quando desenvolvemos uma projeto que utilize uma interface para conectarmos ao computador, poderemos utilizar um conector centronics 36 pinos fmea, isso faz com que nossa interface aproveite o cabo da impressora, onde poderemos conseguir com facilidade em lojas de Informtica. A figura abaixo mostra o conector Centronics 36 pinos e sua descrio:

Significado de cada pino do conector Centronics 36 pinos

Nmero do Pino
1 2 ao 9 10 11 12 13 14 15 ao 18
www.rogercom.com/pparalela/introducao.htm

Descrio Strob
Dados (D0...D7)

Ack Busy Paper End Select Out Auto Feed


No conectato
5/19

13/01/14

Porta Paralela

19 ao 30 31 32 33 34 a 35 36

GROUND

Init Error
GROUND No conectato

Select In

LISTA DOS COMPONENTES UTILIZADOS PARA DESENVOLVER OS CIRCUITOS


Para desenvolver os circuitos, voc precisar adquirir os componentes eletnicos, e poder encontrar em lojas que vendam materiais de Eletrnica, componentes como: cabo Paralelo, resistores, transistores, diodos, LEDs etc.
Lista de alguns componentes utilizados para desenvolver os circuitos

Descrio

Componentes

Cabo Paralelo (o mesmo utilizado pela impressora)

LEDs

Resistores Diodos

Capacitores

Circuitos Integrados

www.rogercom.com/pparalela/introducao.htm

6/19

13/01/14

Porta Paralela

Motor de passo

Transistores

Rel

Foto-transistors e sensores

Matriz de contato

Distplay

Fios para a interligao dos componentes

Ferro de soldar componentes, fonte de alimentao de 0 a 12v, solda, multmetro etc.

www.rogercom.com/pparalela/introducao.htm

7/19

13/01/14

Porta Paralela

CLASSES E FUNES EM C/C++, PARA IMPLEMENTAR SEUS PROGRAMAS


Utilize a classe em C++ abaixo, caso queira desenvolver programas para serem executados nos Sistemas Operacionais Windows. Cdigo fonte em C/C++
Listagem da classe TPorta para ser usada nos compiladores C++ da Borland //Classe TPorta com seus mtodos: Envia e Recebe //Objetivo: Enviar e receber bytes atravs da Porta Paralela //Copyright(c) 1999-2004, ROGERCOM //www.rogercom.com //rogercom@rogercom.com class TPorta { private: public: void Envia(short int iEndPorta,unsigned char iByte); unsigned char Recebe(short int iEndPorta); }; //----------------------------------------------------------------//Envia um byte para a Porta Paralela void TPorta::Envia(short int iEndPorta,unsigned char iByte) { _DX = iEndPorta; _AL = iByte; __emit__ (0xEE);//Instruo da CPU } //----------------------------------------------------------------//Recebe um byte pela Porta Paralela unsigned char TPorta::Recebe(short int iEndPorta) { _DX = iEndPorta; __emit__ (0xEC);//Instruo da CPU return(_AL);//Retorna um byte }

Cdigo fonte em C/C++


Listagem da classe ClasseTBinario para ser usada em programas escritos em C++ // Objetivo: Converter um Byte em uma string binria de caracteres. //www.rogercom.com //rogercom@rogercom.com //--------------------------------------------------------------------------#include "vcl\vcl.h" #include "string.h" #pragma hdrstop
www.rogercom.com/pparalela/introducao.htm 8/19

13/01/14

Porta Paralela

//--------------------------------------------------------------------------class TBinario { public: char * __fastcall IntToStrBin(unsigned short int num); }; //--------------------------------------------------------------------------char * __fastcall TBinario::IntToStrBin(unsigned short int num) { unsigned short int BYTE[8] = { 0x01,0x02,0x04,0x08, 0x10,0x20,0x40,0x80 }; unsigned short int cont,bit=7; static char buf[10]; //para armazenar a string de nmeros binrios. for( cont = 0; cont <= 7; cont++ ) { if( (num & BYTE[cont]) == BYTE[cont] ) buf[bit] = '1'; else buf[bit] = '0'; bit--; } buf[8] = NULL; return(buf); }

J para desenvolver programas no Sistema Operacional MS-DOS, utilize as funes descritas abaixo, encontradas nos compiladores da Borland com: Turbo C e o Borland C++.
Funes para serem compiladas em 16 bits Funes dos compiladores Turbo C ou C++Borland(R) ------------------------------------------------------------------------------Ler um byte de uma Porta do computador: unsigned char inportb(int portid); Onde: portid o endereo da porta que se quer receber um byte. Retorno: O byte lido da porta capturado assim: unsigned char RetByte = inportb(nmero_da_porta_que_se_quer_ler); ------------------------------------------------------------------------------Envia um byte para uma Porta do computador: void outportb(int portid, unsigned char value ); Onde: portid o endereo da porta que se quer enviar um byte. value um byte a ser enviado para a porta.

www.rogercom.com/pparalela/introducao.htm

9/19

13/01/14

Porta Paralela

ACESSANDO A IMPRESSORA ATRAVS DO BIOS


Voc pode acessar a impressora atravs da interrupo de nmero 17h, fornecida pelo BIOS (Basic Input Output System), ou Sistema Bsico de Entrada e Sada, que executa as funes elementares de funcionamento de seu computador. O BIOS fornece trs servios atravs desta interrupo: o servio 00, que tem como objetivo enviar um byte impressora; 01, inicializa a impressora, limpando seu buffer e o 02, retorna ao computador o Status da impressora (um byte codificado em bits), informando seu estado atual, ou seja, se tem papel ou no na bandeja, se est pronta para receber dados do computador e outras informaes de controle. Cdigo fonte em C/C++. O exemplo abaixo mostra duas funes escritas em linguagem C++, utilizando o BIOS para interagir com uma impressora. A primeira funo tem o objetivo de enviar um byte impressora, e a outra, de ler seu status.
//Funes: PrintValor() e StatusPrint() //Objetivo: Acessar a impressora atravs do BIOS //Copyright(c) 1999-2004, ROGERCOM //Todos os Direitos Reservados //--------------------------------------------------------------//Envia um byte para a impressora void PrintValor(unsigned char Valor); { union REGS regs; regs.h.ah = 0; //Servico de impresso regs.h.al = Valor; regs.x.dx = 0; //0 a porta LPT1, 1,a LPT2 int86(0x17,& regs,& regs); //Interrupo da impressora } //Ler o status da impressora unsigned char StatusPrint(void) { union REGS regs; regs.h.ah = 2; //Servio 2 ler o status regs.x.dx = 0; //0 a porta LPT1 int86(0x17,& regs,& regs);//Interrupo da impressora return( regs.h.ah ); //Retorna um byte de status }

LIGANDO E DESLIGANDO APARELHOS EXTERNOS ATRAVS DA PORTA PARALELA


Como j comentado, a Porta Paralela no usada somente com uma impressora, voc pode desenvolver um circuito eletrnico e acopl-lo a essa porta e, atravs de um programa especfico, enviar-lhe sinais digitais para control-lo. Abaixo temos trs circuitos: o circuito-1, o circuito-2 e o circuito-3 que podem ser acoplados Porta Paralela atravs de um cabo Paralelo e, controlados por um programa.
www.rogercom.com/pparalela/introducao.htm 10/19

13/01/14

Porta Paralela

CIRCUITO-1 A princpio o objetivo do circuito-1 de ligar e desligar oito LEDs, conectados atravs de uma cabo Porta Paralela. No esboo abaixo, observe que o terminal do catodo (K) dos LEDs esto ligados aos terminais dos resistores, que estes por si, esto ligados atravs do cabo aos pinos do DB25. Se invertidos, o circuito no funcionar. Observe a enumerao da pinagem do conector DB25. Circuito-1

Lista de componentes: 1 (um) Cabo Paralelo - o mesmo utilizado pela impressora; 8 (oito) Resistores (R1 a R8) todos de 470 ohm (amarelo, violeta e marrom); 8 (oito) LEDs (L1 a L8) comuns de qualquer cor. Geral: fios, fero de soldar, solda etc. Cdigo fonte em C/C++ O programa abaixo pode ser compilado e executado para acender e apagar os LEDs do circuito-1.
//www.rogercom.com //rogercom@rogercom.com //-----------------------------------------------------------------------------------------------------------#include <stdio.h> #include <conio.h> #include <dos.h> #define LPT1 0x378 int main(void) { unsigned char Valor=128; //Em binrio: 10000000 while ( Valor > 0 ) { outportb(LPT1, Valor); // Envia para a Porta LPT1 printf("\nPressione uma tecla para ascender o prximo
www.rogercom.com/pparalela/introducao.htm 11/19

13/01/14

Porta Paralela

LED..."); getch( ); Valor = Valor >> 1; //A cada passagem, o bit 1 movido para a direita } }

Este programa, envia Porta Paralela oito bytes, um a cada vez que o usurio pressionar uma tecla. A sequncia de bytes geradas vista na tabela abaixo:
Decimal Hexadecimal 128 64 32 16 8 4 2 1 80 40 20 10 8 4 2 1 Binrio 10000000 01000000 00100000 00010000 00001000 00000100 00000010 00000001 Pino/Fio ativo (5V) 9 - D7 8 - D6 7 - D5 6 - D4 5 - D3 4 - D2 3 - D1 2 - D0 Cada bit do byte enviado Porta Paralela est relacionado com um pino do DB5, e um fio do cabo paralelo, fisicamente. Ao enviar um byte, que o(s) bit(s) esteja(m) ligado(s) ou desligado(s), os LEDs acende(ro) ou apaga(ro) conforme os estados dos bits. Comentrio

Para saber como o computador agrupa os bits num byte, observe o esquema abaixo: BYTE

No esquema acima observe que cada nibble equivale a 4 bits; e a contagem dos bits feita da direita para a esquerda (0,1,2,3...).

CIRCUITO-2 Com o circuito-2, voc pode controlar atravs da Porta Paralela mais quatro aparelhos eletro/eletrnico, enviando sinais para o registrador 37Ah. Ao enviar um byte para este registrador, mantenha os 4 ltimos bits (nibble alto) inalterados, para no interferir no registrador 378h. Quando for trabalhar com o endereo do registrador 37Ah, tenha sempre em mente que para ativar os sinais Slct In, AutoFeed e Strob, ser necessrio colocar os bits em 0 (zero), porque eles trabalham de forma invetida, 0 (zero) ativa, 1 (um) desativa. Somente o Init trabalha na sua forma normal.
www.rogercom.com/pparalela/introducao.htm 12/19

13/01/14

Porta Paralela

Os bits do byte de CONTROLE tambm so conhecidos como; C3 (Slct In), C2 (Init), C1 (Auto Feed) e C0 (Strob). A letra C significa registrador de CONTROLE, e o nmero significa a posio do bit no byte; juntos, formam um nome sugestivo para os sinais. OBS.: Quando o nome de um bit de Controle estiver com uma linha em cima, indica que o sinal ser ativo com 0 (zero). __ __ __ Ex.: C3 (Slct In), C1 (Auto Feed) e C0 (Strob).
Tabela descritiva dos sinais de CONTROLE

__ __ __ C3 C2 C1 C0 Descrio/nmero dos nenhum pino pinos: relacionado 17 16 14 1 Posio dos bits: Byte em binrio: Byte em Decimal: 7 6 5 4 0 0 0 0 3 1 15 2 1 1 1 0 1

Circuito-2

Lista de componentes: 1 (um) Cabo Paralelo - o mesmo utilizado pela impressora; 4 (quatro) Resistores (R1 a R4) todos de 470 ohm (amarelo, violeta e marrom); 4 (quatro) LEDs (L1 a L4) comuns de qualquer cor. Geral: fios, fero de soldar, solda etc. Cdigo fonte em C/C++. O programa abaixo testa o circuito-2. O seu funcionamento simples. Ao execut-lo, em primeiro lugar ser enviado um byte Porta Paralela que ligar todos os LEDs. Em seguida voc pressionar uma tecla para enviar mais outro byte, agora este ligar somente o LED 1 e assim sucessivamente, at seja enviado o ltimo byte, que apagar todos os LEDs.
//www.rogercom.com //rogercom@rogercom.com
www.rogercom.com/pparalela/introducao.htm 13/19

13/01/14

Porta Paralela

//-----------------------------------------------------------------------------------------------------------#include <stdio.h> #include <conio.h> #include <dos.h> #define BIT0LIGALED1 3 // 0000 1010 #define BIT1LIGALED2 15 // 0000 1001 #define #define #define #define BIT2LIGALED3 9 // 0000 1111 BIT3LIGALED4 10 // 0000 0011 LIGATODOS 4 // 0000 0100 DESLIGATODOS 11 // 0000 1011

int main(void) { outportb(0x37A,LIGATODOS); //Liga todos os LEDs getch(); outportb(0x37A,BIT0LIGALED1); //Liga LED 1 getch(); outportb(0x37A,BIT1LIGALED2); getch(); outportb(0x37A,BIT2LIGALED3); getch(); outportb(0x37A,BIT3LIGALED4); getch(); outportb(0x37A,DESLIGATODOS); //Desliga todos os LEDs }

CIRCUITO-3 A princpio, o objetivo do circuito-3, de ligar e desligar aparelhos eletro/eletrnicos como: motores, portas e portes eltricos, fechaduras eltricas, rdios, televises, etc. Mas voc pode muito bem atravs de um programa de computador controlar braos de robs, temporizadores, controles automticos e muito mais.
Circuito-3

www.rogercom.com/pparalela/introducao.htm

14/19

13/01/14

Porta Paralela

No circuito acima, o chip 74LS541 usado para proteger a Porta Paralela de altas correntes. Ele alimentado com 5v, diferente da outra parte do circuito que controla o rel, que precisa de 12v para ser acionado. Os contatos do rel devem suportar 220v/10A, para que voc possa acionar aparelhos de potncia. Neste circuito voc pode controlar at oito aparelhos simultaneamente, a partir das sadas S1 a S8. Se voc desejar controlar mais que um aparelho, adicione mais circuitos, idnticos ao da sada S1, s demais sadas (S2 a S8). Ateno! O circuito acima trabalha ligado a Rede eltrica 110/220v. Tome muito cuidado ao conectar os componentes, um fio ligado na posio errada fatal, tanto para voc como para seu computador. Seja coerente, se voc no conhece o suficiente de eletro/eletrnica, solicite a ajuda de um profissional. Lista de componentes: 1 (um) Cabo Paralelo - o mesmo utilizado pela impressora; 1 (um) LED verde; 1 (um) diodo 1N4148; 1 (um) Resistor R1: 2,2K ohm (vermelho, vermelho e vermelho); 1 (um) Resistor R2: 470 ohm (amarelo, violeta e marrom); 1 (um) Transstor BD 137; 1 (um) Circuito integrado buffer 74LS541; 1 (um) Rel 12 volts na bobina - cargas at 220v/10A 1 (uma) fonte de alimentao estabilizada de 5 a 12volts; Geral: fios, fero de soldar, solda etc.

RECEBENDO SINAIS EXTERNOS ATRAVS DA PORTA PARALELA

www.rogercom.com/pparalela/introducao.htm

15/19

13/01/14

Porta Paralela

A Porta Paralela, no modo padro, tm cinco entradas. Isso til quando voc precisa capturar sinais do mundo externo para dentro do computador. Como por exemplo, saber se um sensor esta ativo ou no; se um alarme foi disparado, etc. As cinco entradas atravs do conector DB25 so: Ack no pino 10, Busy no pino 11, Paper end no pino 12, Slct out no pino 13 e Error no pino 15. Portanto voc poder enviar para o computador cinco bits de uma s vez. Os bits do byte de STATUS tambm so conhecidos como; S7 (Busy), S6 (Ack), S5 (Paper end), S4 (Slct out), e S3 (Error). A letra S significa registrador de STATUS, e o nmero significa a posio do bit no byte; juntos, formam um nome sugestivo para os sinais. OBS.: Quando o nome de um bit de Status estiver com uma linha em cima, indica que o sinal ser ativo com 0 (zero). __ Ex.: S7 (Busy). Usando as funes inportb() ou Recebe() da classe TPorta, j comentadas nesta pgina, voc poder ler o registrador de Status da Porta Paralela, e saber se o sinal em um determinado pino est alto ou baixo (0-zero ou 1-um) no sistema binrio. As funes inportb() e Recebe() lem um byte atravs da Porta Paralela. Se voc quiser saber se um determinado pino est com o sinal alto ou baixo, ter de converter este byte em binrio para saber o estado do mesmo. Nem todos os bits do byte recebido atravs das funes inportb() ou Recebe() so vlidos, como eu j mencionei, so somente cinco as entradas no registrador de Status da Porta Paralela, e cada entrada est relacionada com um bit. Ao ler o registrador de Status, os bits nas posies 0, 1 e 2 no devem ser levados em conta, porque no esto relacionados com nenhum pino do DB25, mesmo assim far parte do byte recebido. A tabela abaixo mostra o significado de cada bit do byte recebido, atravs das funes inportb( ) ou Recebe( ), usando o Circuito 4 conectado Porta Paralela. Observe que os bits, Ack, Paper end, Slct out e Error, trabalham de maneira normal, diferente de Busy, que s ativado quando tiver um sinal 0 (zero) no pino 11:
Tabela descritiva dos sinais de STATUS

__ S7 S6 S5 S4 S3 Nenhum pino relacionado Descrio/nmero dos nestas pinos: posies do byte 11 10 12 13 15 Byte lido em binrio: Byte lido em Decimal: 0 1 1 1 1 126 1 1 0

CIRCUITO-4 Com o circuito-4 conectado Porta Paralela voc poder enviar sinais para dentro de seu computador atravs das entradas E1 a E 5. Para enviar um bit atravs da entrada E1, ligue-a direto ao negativo da fonte de
www.rogercom.com/pparalela/introducao.htm 16/19

13/01/14

Porta Paralela

alimentao (0v), ou instale um interruptor para ficar mais prtico. Como o circuito abaixo utiliza um Circuito Integrado buffer, que tem o poder de amplificar o sinal recebido, voc poder estender os cabos conectados as entradas (E1 a E5) a mais ou menos 20m de distncia. Faa testes.
Circuito-4

Ateno! Para enviar dados para dentro de seu computador atravs do circuito acima, use as entradas E1 a E5, com tenso eltrica negativa (0V) da fonte de alimentao em uso. Para enviar um bit com valor (1), ligue a respectiva entrada ao negativo. Para enviar um bit com valor (0), desligue a respectiva entrada do negativo. Lista de componentes: 1 (um) Cabo Paralelo - o mesmo utilizado pela impressora; 5 (cinco) Capacitores cermicos de (C1 a C5) todos de 100nF; 1 (um) Circuito Integrado 74LS541 (buffer); 1 (uma) fonte de alimentao estabilizada de 5 volts; Geral: fios, fero de soldar, solda etc. Cdigo fonte em C/C++. O programa abaixo, l a Porta Paralela LPT1 ininterruptamente enquanto nenhuma tecla seja pressionada, e exibe na tela do computador, o valor recebido em decimal.
//www.rogercom.com //rogercom@rogercom.com //-----------------------------------------------------------------------------------------------------------#include <stdio.h> #include <conio.h> #include <dos.h> int main(void)
www.rogercom.com/pparalela/introducao.htm 17/19

13/01/14

Porta Paralela

{ unsigned char RetByte; //Para armazenar o valor recebido da Porta Paralela. while ( ! kbhit( ) ) //Faz enquanto nenhuma tecla for pressionada. { RetByte = inportb(0x379); //Ler um byte da Porta Paralela (0x379)LPT1. printf("%u\n",RetByte); } }

Cdigo fonte em C/C++. O programa abaixo, foi escrito para o Sistema Operacional MS-DOS, mas pode ser adaptado para outros sistemas. Ele l a Porta Paralela LPT1 ininterruptamente enquanto nenhuma tecla for pressionada, e exibe na tela do computador o estado de cada bit do byte recebido a cada ciclo do lao while().
//www.rogercom.com //rogercom@rogercom.com //-----------------------------------------------------------------------------------------------------------#include <stdio.h> #include <conio.h> #include <dos.h> #define BIT0 0x01 // No usado #define BIT1 0x02 // No usado #define BIT2 0x04 // No usado #define BIT3 0x08 // Error #define BIT4 0x10 // Slct out #define BIT5 0x20 // Paper End #define BIT6 0x40 // Ack #define BIT7 0x80 // Busy int main(void) { int x=10, y=5; //Coluna e Linha do vdeo unsigned char Byte; //Para armazenar o byte recebido da Porta Paralela clrscr(); gotoxy(30,1); printf("RECEBENDO SINAIS..."); gotoxy(30,20); printf("Pressione uma tecla para sair..."); gotoxy(x, y); printf("Bit 3 - Error....:"); gotoxy(x,y+1); printf("Bit 4 - Slct out.:"); gotoxy(x,y+2); printf("Bit 5 - Paper End:"); gotoxy(x,y+3); printf("Bit 6 - Ack:.....:"); gotoxy(x,y+4); printf("Bit 7 - Busy.....:"); while ( ! kbhit() ) //Executa enquanto nenhuma tecla for pressionada. { Byte = inportb(0x379); //Ler um byte da Porta Paralela if((Byte & BIT3) == 0){ // Error: 0000-1000 gotoxy(x+20,y); printf("INATIVO"); }else { gotoxy(x+20,y); printf("ATIVO ");
www.rogercom.com/pparalela/introducao.htm 18/19

13/01/14

Porta Paralela

} if((Byte & BIT4) == 0){ // Slct out: 0001-0000 gotoxy(x+20,y+1); printf("INATIVO"); }else { gotoxy(x+20,y+1); printf("ATIVO "); } if((Byte & BIT5) == 0){ // Paper end: 0010-0000 gotoxy(x+20,y+2); printf("INATIVO"); }else { gotoxy(x+20,y+2); printf("ATIVO "); } if((Byte & BIT6) == 0){ // Ack : 0100-0000 gotoxy(x+20,y+3); printf("INATIVO"); }else { gotoxy(x+20,y+3); printf("ATIVO "); } if((Byte & BIT7) == 0){ // Busy: 1000-0000 gotoxy(x+20,y+4); printf("INATIVO"); }else { gotoxy(x+20,y+4); printf("ATIVO "); } } clrscr(); }

http://w w w .rogercom.com Copyright, 1999-200 6 ROGERCOM - Antonio Rogrio Messias - rogercom@rogercom.com Todos os Direitos Reservados - All Rights Reserved.

www.rogercom.com/pparalela/introducao.htm

19/19