Apostila Paralela
Apostila Paralela
Apostila Paralela
Tpicos abordados: O que a interface paralela? Quantas entradas e sadas ela possui? Construindo a interface Manipulando no Pascal
Autor:
ENTRADA = Bits: D7 D6 D5 D4 D3 D2 D1 D0 SADA = Bits: S7 S6 S5 S4 S3 Pois bem, tendo identificado os bits de sada/entrada, procederemos idealizao da Interface Didtica. A Interface Didtica possui 5 bits de entrada e 8 bits de sada. Os bits de entrada so controlados por meio de chaves seletoras que esto conectadas ao terra (nvel lgico 0) e ao VCC (nvel lgico 1). J os bits de sada tero como indicador um LED, que acender ao haver nvel lgico 1 e ficar apagado ao haver nvel lgico 0.
CONSTRUINDO A INTERFACE
Circuito de sada O circuito de sada composto por 8 leds, com corrente limitada por 8 resistores, que estaro dispostos da seguinte forma:
Um resistor na faixa de 180 a 560 o suficiente para verificar o acendimento do LED. So necessrios 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 sada. Para saber quais so os pinos de sada, verifique o esquema na pgina 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 nvel 0. Quando estiver em aberto, teremos nvel 1.
MANIPULANDO NO PASCAL
Relembrando o que foi aprendido no incio desta apostila: Endereo $378 $379 Funo Sada Entrada
Escrevendo para a sada No possvel simplesmente mudar o status de um dos bits de sada. necessrio enviar todo um byte (conjunto de 8 bits) para a sada. Suponhamos que, por exemplo, voc queira que o bit D4 assuma nvel 1, permanecendo os demais em nvel 0. Voc dever enviar o byte 00010000 (D7-D0), ou, em hexadecimal, $10. E se quisssemos que D2 e D5 fiquem em nvel 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 varivel para a porta paralela, lembre-se que ela deve ser do tipo byte. No Delphi:
O Delphi, infelizmente, no possui a array port. Porm, existem diversos componentes que fazem tal interface e ainda, possvel, faz-la por meio de instrues em ASM, supondo que a varivel 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 no o suficiente pelo simples fato de que a entrada s assumir tal valor caso APENAS S3 esteja acionado. Como proceder, ento? Basta utilizarmos o mascaramento com a funo lgica AND (A AND B ser 1 caso A e B sejam 1). Observe: Bit de exemplo $08 Resultado: 01001010 00001000 00001000
B:=Port[$379]; If (B AND $04 = $04) then ... E, na varivel B (do tipo byte), teremos o valor lido. E em Delphi, utilizando ASM: mov dx, PortaLpt in al,dx mov dado,al
asm
end; if (dado AND $04 = $04) then E teremos, na varivel dado (do tipo byte), o valor lido.