INTERFACE PARALELA Área: Eletrônica Nível de conhecimento necessário: básico
Tópicos abordados: ¾ ¾ ¾ ¾
O que é a interface paralela? Quantas entradas e saídas ela possui? Construindo a interface Manipulando no Pascal
Autor:
Guilherme Lopes Soledade Técnico em Eletrônica formado pelo Liceu de Artes e Ofícios Email:
[email protected] Portfólio online: www.robotic.com.br/guilherme Criação: Dezembro/2002
O QUE É A INTERFACE PARALELA? Quando iniciamos o estudo da informática aprendemos que o computador possui saídas e entradas. A Porta Paralela nada mais é do que um dispositivo de entrada e saída paralelo. Oras, mas o que é paralelo? Há duas formas de se transmitir dados. Uma delas é a forma serial. Serial, como o cognato indica, é transmitir em série, ou seja, um bit após o outro. Transmitir de forma paralela é transmitir vários bits ao mesmo tempo. Em uma primeira impressão, a transmissão paralela pode parecer a mais apropriada. Porém, devemos lembrar do conceito de multiplexação. Tal conceito, que no momento não precisa ser estudado a fundo, se baseia no fato de comutar vários bits de forma tão rápida que eles são transmitidos por um único fio, ou seja, de forma serial. Para quem tem raciocínio rápido, fica fácil compreender: pela forma serial a limitação de bits é dada pela velocidade com que transmissor e receptor se chaveiam, enquanto que na paralela, a limitação é física e dada pelo número de fios. Aplicações da porta paralela A porta paralela, por não possuir uma alta velocidade de transmissão, tem, atualmente, sua aplicação limitada a impressoras e scanners. Atualmente, em caso de transmissões rápidas, se utiliza a interface USB (Universal Serial Bus), que atinge taxas de transmissão bem maiores. Na Eletrônica, a porta paralela pode servir para controlar qualquer tipo de processo. Pode, por exemplo, fazer a interface entre o PC e um sensor. O sensor, ao ser acionado, mandaria tal informação para a porta paralela e o PC procederia ao disparo de sirenes, conectadas as saídas da porta paralela. Devemos lembrar que a corrente de saída da porta paralela não é alta, sendo suficiente para, no máximo, acender LEDs. Para circuitos que necessitem de maior potência, devemos utilizar buffers ou amplificadores de correntes transistorizados. Endereço de memória A maioria dos PCs atuais possui uma porta paralela. Cada registrador desta porta paralela possui um endereço de memória. Por padrão, temos que: Entrada: 379H Saída: 378H No caso de termos duas portas paralelas, teremos dois endereços de saída e dois endereços de entrada.
QUANTAS ENTRADAS E SAÍDAS ELA POSSUI? Observe o esquema:
ENTRADA = Bits: D7 D6 D5 D4 D3 D2 D1 D0 SAÍDA = Bits: S7 S6 S5 S4 S3 Pois bem, tendo identificado os bits de saída/entrada, procederemos à idealização da Interface Didática. A Interface Didática possui 5 bits de entrada e 8 bits de saída. Os bits de entrada são controlados por meio de chaves seletoras que estão conectadas ao terra (nível lógico 0) e ao VCC (nível lógico 1). Já os bits de saída terão como indicador um LED, que acenderá ao haver nível lógico 1 e ficará apagado ao haver nível lógico 0.
CONSTRUINDO A INTERFACE Circuito de saída O circuito de saída é composto por 8 leds, com corrente limitada por 8 resistores, que estarão dispostos da seguinte forma:
Um resistor na faixa de 180 a 560 é o suficiente para verificar o acendimento do LED. São necessários 8 resistores e 8 leds. O terminal mais comprido de cada LED deverá estar conectado ao pino 18, estando o menor conectado a um resistor e o resistor conectado à saída. Para saber quais são os pinos de saída, verifique o esquema na página anterior. Circuito de entrada O circuito de entrada é composto de cinco chaves. O terminal comum da chave (normalmente, o do meio) deve ser conectado a uma das entradas (verificar esquema) e qualquer um dos outros dois deve ser conectado ao terra. Quando a entrada estiver conectada ao terra teremos nível 0. Quando estiver em aberto, teremos nível 1.
MANIPULANDO NO PASCAL Relembrando o que foi aprendido no início desta apostila: Endereço $378 $379
Função Saída Entrada
Escrevendo para a saída Não é possível simplesmente mudar o status de um dos bits de saída. É necessário enviar todo um byte (conjunto de 8 bits) para a saída. Suponhamos que, por exemplo, você queira que o bit D4 assuma nível 1, permanecendo os demais em nível 0. Você deverá enviar o byte 00010000 (D7-D0), ou, em hexadecimal, $10. E se quiséssemos que D2 e D5 fiquem em nível alto? Devemos enviar 00100100, ou, em hexadecimal, $24. ¾
No Pascal:
O Pascal possui uma array chamada port que lhe dá acesso direto as portas do computador. Assim sendo, podemos, por exemplo, usar: Port[$378]:=$FF; O dado (byte) a ser enviado deve ser, necessariamente, informado em hexadecimal. Caso você queira enviar direto uma variável para a porta paralela, lembre-se que ela deve ser do tipo byte. ¾
No Delphi:
O Delphi, infelizmente, não possui a array port. Porém, existem diversos componentes que fazem tal interface e ainda, é possível, fazê-la por meio de instruções em ASM, supondo que a variável b (de tipo byte) contenha o dado a ser enviado: asm mov dx,$378 mov al,b out dx,al end;
Lendo da porta paralela O procedimento de leitura inclui um passo a mais. O mascaramento. Pois bem, suponhamos que queremos criar um sistema que lê a porta paralela e emite um beep caso o bit S3 esteja acionado. Simplesmente comparar se a entrada vale $08 não é o suficiente pelo simples fato de que a entrada só assumirá tal valor caso APENAS S3 esteja acionado. Como proceder, então? Basta utilizarmos o mascaramento com a função lógica AND (A AND B será 1 caso A e B sejam 1). Observe: Bit de exemplo $08
01001010 00001000
Resultado:
00001000
¾
Assim sendo, temos, em Pascal:
B:=Port[$379]; If (B AND $04 = $04) then ... E, na variável B (do tipo byte), teremos o valor lido. ¾
E em Delphi, utilizando ASM:
asm
mov dx, PortaLpt in al,dx mov dado,al
end; if (dado AND $04 = $04) then … E teremos, na variável dado (do tipo byte), o valor lido.
REPRODUÇÃO E DISTRIBUIÇÃO AUTORIZADAS DESDE QUE MANTIDOS OS DEVIDOS CRÉDITOS.