UNIBRATEC – Ensino Superior e Técnico em Informática
DHD – Desenvolvimento em Hardware
1
Aula
18 – Porta
Paralela: Introdução
Capítulo
1 – Conceitos
Básicos
Terça-feira,
Terça-feira, 77 de
de Novembro
Novembro de
de 2006
2006
UNIBRATEC – Ensino Superior e Técnico em Informática
DHD – Desenvolvimento em Hardware
Porta Paralela:
Introdução
1.
2.
3.
4.
Introdução
Conector DB25
Endereços
Auto-avaliação
Prof. Frederico Brito Fernandes
[email protected]
2
Aula
18 – Porta
Paralela: Introdução
Capítulo
1 – Conceitos
Básicos
Terça-feira,
Terça-feira, 77 de
de Novembro
Novembro de
de 2006
2006
DHD – Desenvolvimento em Hardware
Prof. Frederico Brito Fernandes
(1) Introdução
• Porta Paralela:
– Interface de comunicação
entre o computador e um
periférico
– Inicialmente criado para
conectar uma impressora
• Porém, surgiram scanners,
câmeras que se conectavam
via porta paralela
• Pode-se controlar qualquer
aparelho que se conheça o
funcionamento
– Conector DB25
Macho
3
Fêmea
Aula 18 – Porta Paralela: Introdução
Terça-feira, 7 de Novembro de 2006
DHD – Desenvolvimento em Hardware
Prof. Frederico Brito Fernandes
(2) Conector DB25 Macho
Finalidade de cada pino: http://www.ctv.es/pckits/tutorial.html
4
Aula 18 – Porta Paralela: Introdução
Terça-feira, 7 de Novembro de 2006
DHD – Desenvolvimento em Hardware
Prof. Frederico Brito Fernandes
(2) Conector DB25 Macho e Fêmea
Fêmea
5
Aula 18 – Porta Paralela: Introdução
Macho
Terça-feira, 7 de Novembro de 2006
DHD – Desenvolvimento em Hardware
Prof. Frederico Brito Fernandes
(3) Endereços
• Endereço padrão da porta paralela:
– Hexadecimal: 378h
• Ou em decimal: 888
– Também conhecido por LPT1
• Algumas máquinas possuem duas portas paralelas
PORTA
Endereço
LPT1
LPT2
378h
278h
• O que aconteceria, se lêssemos do endereço 378h?
int * ptr=0x378h;
printf(“%d”, *ptr);
6
Aula 18 – Porta Paralela: Introdução
Terça-feira, 7 de Novembro de 2006
DHD – Desenvolvimento em Hardware
Prof. Frederico Brito Fernandes
(3) Endereços
• O acesso à porta paralela não pode ser feito diretamente:
– Windows 9.X
• As linguagens de programação, oferecem bibliotecas de acesso à
porta paralela
• Ex: no Turbo C++, pode-se usar as funções inport() e outport() da
biblioteca dos.h
– Windows NT/2000/XP
• O hardware só pode ser acessado via comandos do Sistema
Operacional
• Solução: usar as funções inp32() e oup32() da inpout32.dll
(http://www.logix4u.net/)
– Olhar aplicação exemplo, implementada no DevC++ em:
» http://www.fredbf.com/disciplinas/unibratec/dhd/Aplicacao1.c
• Questionamento:
– Quantos bits serão lidos da DB25, usando essas funções?
7
Aula 18 – Porta Paralela: Introdução
Terça-feira, 7 de Novembro de 2006
DHD – Desenvolvimento em Hardware
Prof. Frederico Brito Fernandes
(3) Endereços
• Endereços e pinagem para acesso da porta paralela:
OBS:
S7, a barra indica
que o pino (no caso
o 11) é lido com
valor invertido
TIPO
PINOS
ENDEREÇO
Dados
2..9
378h
Leitura/Escrita
Status
10,11,12,13 e 15
379h
Leitura
Controle
1,14,16 e 17
37Ah
Leitura/Escrita
378h
LEGENDA
Leitura/Escrita
Leitura
Terra
379h
8
37Ah
Aula 18 – Porta Paralela: Introdução
Terça-feira, 7 de Novembro de 2006
DHD – Desenvolvimento em Hardware
Prof. Frederico Brito Fernandes
(3) Endereços: 378h
• Endereços e pinagem para acesso da porta paralela:
8
– Ligaremos LEDs aos
pinos de dados
– Faremos uma função que
verifica se o LED
passado está aceso ou
apagado
– Ex:
#define LPT1_D 0x378
#define LED1 0
#define LED2 1
...
#define LED8 7
9
Aula 18 – Porta Paralela: Introdução
7
6
5
4
3
2
1
LEDs
378h
int taLigado(int porta, int led){
int entrada = inp32(porta);
return ( (entrada >> led) % 2);
}
main(){
printf(“%d”, taLigado(LPT1_D, LED4) );
}
Terça-feira, 7 de Novembro de 2006
DHD – Desenvolvimento em Hardware
Prof. Frederico Brito Fernandes
(3) Endereços: 379
• Endereços e pinagem para acesso da porta paralela:
– Ligaremos CHAVES aos
pinos de controle
– Podemos usar a mesma
função anterior, exceto
para a chave 5
379h
– Ex:
#define LPT1_S 0x379
#define CH1 0
#define CH2 1
#define CH3 0
#define CH4 1
#define CH5 3
10
Aula 18 – Porta Paralela: Introdução
5
4
3
2
1
CHAVEs
int taPressionada(int porta, int chave){
int entrada = inp32(porta), saida;
saida = (entrada >> led) % 2;
if (chave==CH5) return !saida;
else return saida;
}
main(){
printf(“%d”, taPressionada(LPT1_S, LED4) );
}
Terça-feira, 7 de Novembro de 2006
DHD – Desenvolvimento em Hardware
Prof. Frederico Brito Fernandes
(4) Auto-avaliação
• Considere que você possui 5 chaves conectadas aos
pinos de Status e 8 leds conectados aos pinos de Dados,
de acordo com a figura abaixo.
LEDs
378h
8
7
6
5
4
3
2
1
a) Faça um loop infinito de modo que
ele fique imprimindo na tela qual
tecla foi pressionada
b) Altere o programa anterior, de
modo que, quando pressionada a
chave:
– 4, o programa se encerra
– 6, liga todos os leds
– 5, desliga dos os leds
6
5
7
8
4
CHAVEs
379h
11
Aula 18 – Porta Paralela: Introdução
c) Altere o programa da letra (a), de
modo que, quando pressionada
uma chave, deve-se acender o led
correspondente. Ex: se a chave5
for pressionada, acende-se o led5
Terça-feira, 7 de Novembro de 2006
Download

Aula 18 - Frederico Brito Fernandes