O objetivo e ligar e desligar
mais 4 Leds conectados a Porta paralela.
Ao enviar um byte para o registrador 37Ah,
mantenha os 4 últimos bits (nibble alto) zerados,
para não interferir no registrador 378h.
Quando for trabalhar com o registrador
37Ah, tenha sempre em mente que para ativar os sinais Slct
In, AutoFeed e Strob,
será necessário 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.
Tabela descritiva dos sinais
Descrição
Número dos Pinos |
Nenhum
Pino
Relacionado |
Sict
in |
Init |
Auto
Feed |
Strob |
|
| 17 |
16 |
14 |
1 |
Posição
dos Bits: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
| Byte em Binário |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
|
| Byte em Decimal |
15 |

Lista de componentes:
o 1 (um) Cabo Paralelo
- o mesmo utilizado pela impressora;
o 4 (quatro) Resistores (R1 a R4)
todos de 470 ohm (amarelo, violeta e marrom);
o 4 (quatro) LEDs (L1 a L4)
comuns de qualquer cor.
o Geral: fios, fero de soldar,
solda etc.
Software:
O programa a seguir testa o 2° Projeto.
É simples, 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é que seja enviado
o último byte, que apagará todos os LEDs.
//Envia para a Porta Paralela
LPT1 no registro 37Ah:
#include <stdio.h>
#include <dos.h>
#define BIT0LIGALED1 3 // 0000 1010
#define BIT1LIGALED2 15 // 0000 1001
#define BIT2LIGALED3 9 // 0000 1111
#define BIT3LIGALED4 10 // 0000 0011
#define LIGATODOS 4 // 0000 0100
#define 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
}
|