Você está na página 1de 16

Perifricos - Jos Alexandre J.

Ribeiro

INTERFACE SERIAL
A comunicao serial de dados tornou-se to popular, que um grupo de fabricantes e companhias
telefnicas, em meados de 1960, formaram a Associao de Indstrias Eletrnicas (EIA) para concordarem
sobre as formas padronizadas de se enviar e receber dados. O padro que se tornou mais usado chamado de
RS-232C.
As portas seriais geralmente utilizam conectores de 25 pinos ou conectores de 9 pinos, chamados de
conectores do tipo De muitas vezes referenciados como DB-9 ou DB25.
Uma porta serial transmite bits individuais um aps os outros sobre uma conexo simples (2 fios
basicamente). Devido a essa caracterstica a velocidade de transmisso, em relao a comunicao paralela,
se torna um incoveniente (baixa).
Dentro do micro os dados esto paralelos, estes so convertidos em serial (placa serial) e mandados
para fora do micro um aps o outro. No outro lado, na recepo, os dados so convertidos de serial (placa
serial) para paralelo (dentro do micro).
Geralmente neste tipo de padro usamos a transmisso padro (assncrona) mostrada abaixo:
MSB

LSB

1, 1.5 ou 2 Stop Bits

Start Bit

5, 6, 7 ou 8 bits de dados

Bit de paridade

Observaes:
* Os dispositivos seriais se dividem em duas categorias: DCE (Data Communication Equipament)
que so os Modems entre outros dispositivos. E temos o DTE (Data Terminal Equipament) que so os
Terminais ou computadores;
* O padro de comunicao o RS232C, que especifica que o conector DTE deve ser do tipo macho,
e o conector DCE do tipo fmea. No passado usava-se muito o conector DB-25, porm hoje em dia usam-se
mais o DB-9.
As tenses so: # Lgica alta : -3V a -15V (com carga) e -25V (sem carga, no mximo)
# Lgica baixa : +3V a +15V (com carga) e +25V (sem carga, no mximo)
# A regio entre -3V e +3VC indefinida
# A corrente da porta no deve exceder os 500mA
Os sinais gerados no PC so de -12V para nvel lgico 1 e de +12V para nvel lgico 0.
SINAIS DO RS-232C
Abaixo nos temos seus pinos e seus respectivos nomes:
1

Perifricos - Jos Alexandre J. Ribeiro

Conector de 25 Pinos

Conector de 9 Pinos

Abreviaao Nome

TD

Transmit Data

RD

Receive Data

RTS

Request To Send

CTS

Clear To Send

DSR

Data Set Ready

SG

Signal Ground

CD

Carrier Detect

20

DTR

22

RI

Data Terminal Ready


Ring Indicator

Abaixo temos a descrio de cada pino:


TXD (Transmisso de dados): Por esse pino feita a transmisso de dados do computador para o perifrico.
Desta maneira, no caso de ligao direta (micro/impressora; mouse/micro, etc.), esse pino dever ser ligado
ao sinal do RXD do perifrico. No caso de transmisso sem protocolo (no utiliza sinais para indicar
chegada dos dados, erros, etc.), essa linha poder ser dispensada quando tivermos um perifrico de entrada
comunicando com o computador (no h necessidade do computador responder a alguma solicitao,
exemplo: a maioria dos mouse).
RXD (Recepo de dados): por essa linha que o computador recebe os dados do perifrico. Ela portanto
deve ser ligada a sada TXD do perifrico.
CTS (Limpa - autorizao, livre - para enviar): pino usado para controle de fluxo (handshaking). Este pino
normalmente utilizado nas ligaes remotas (modem). Indica que o modem esta OK para trocar dados. Em
ligaes diretas (sem modem), este sinal dispensvel ou ento poder ser ligado ao prprio RTS do micro.
RTS (Requisio - solicitao - de envio): um pino usado para controle de fluxo (handshaking). por essa
linha que o computador (UART) informa que est disponvel para receber ou transmitir dados (o RTS
dever ser sempre ativado antes de cada transmisso). Normalmente este pino ser interligado ao pino CTS
do perifrico. No caso de transmisso com protocolo, este sinal somente ser usado caso o perifrico seja
conectado a um MODEM.

Perifricos - Jos Alexandre J. Ribeiro

DTR (Data Terminal ready - Terminal esta pronto): um pino usado em controle de fluxo (handshaking).
o contrrio do pino DSR. um Sinal que indica que o terminal (micro/UART) est pronto para iniciar troca
de informaes. Este sinal tem comportamento anlogo ao sinal RTS, permanecendo em nvel 1 quando a
transmisso se d atravs de protocolos.
DCD (Data Carrie Detec - Deteco do transportador de dados): Sinal de deteco do sinal de portadora Linha telefnica esta ativa (carrier), no caso de ligao com MODEM (se no tiver o MODEM no h por
que usar este pino).
DSR (Data System Ready): usado em controle de fluxo (handshaking). Sinal que indica sistema
(modem/micro) esta pronto (micro ligado, etc). Geralmente ligado ao DTR do micro ou impressora.
GND ou SG: Sinal de terra (referncia) da transmisso
UMA COMUNICAO SIMPLES
Quando um perifrico somente transmite e outro somente recebe, a comunicao necessita apenas de
dois sinais em cada equipamento: O TXD e SG (3 e 5) no que transmite (ex.: micro) e de RXD e SG (2 e 5)
no que recebe os dados (ex.: modem).
COMUNICAO NAS DUAS DIREES
Se cada um dos dois equipamentos interligados podem transmitir e/ou receber dados, no mnimo
temos 3 linhas de cada: TXD, RXD e SG.
As vezes necessrio controlar o fluxo de dados na transmisso, para isto deve-se usar ento as
linhas DSR e DTR em cada equipamento. Se por acaso estas linhas de fluxo no forem suficiente,
deveremos usar ento mais duas linhas extras em cada equipamento: RTS e CTS. Neste modo para se ter
uma comunicao serial nos dois sentidos com 2 linhas de handshaking deveremos ter em cada equipamento
7 linhas de comunicao.
Quando estamos usando MODEM podemos ter ainda mais duas linhas extras: a RI e DCD que
indicam: modem chamando e modem esta pronto (respectivamente). Estas linhas no so muito utilizadas
hoje em dia.
Geralmente em projetos eletrnicos conectados ao micro temos apenas a comunicao simples nas
duas direes sem controle de fluxo, estes devem ser ligados nos respectivos pinos do prprio micro.
Para tais ligaes usamos um cabo chamado de Null modem, que visto abaixo:
3

Perifricos - Jos Alexandre J. Ribeiro

COMPORTAMENTO DOS SINAIS RTS e CTS NA LEITURA/ESCRITA DE DADOS


Nesta explicao usarei somente uma linha de handshaking (RTS, CTS), mas poderamos usar mais
uma outra (DTR e DSR) simultaneamente. Onde RTS equivale a DTR e CTS equivale a DSR.
Tanto o RTS como o CTS devero ser usados apenas quando temos algum tipo de protocolo na
comunicao. Este protocolo pode garantir uma preciso contra erros na transmisso ou na recepo. Abaixo
mostrarei um exemplo de como utiliz-los para uma transmisso ou recepo usando um protocolo simples:
ESCRITA
Ativa RTS; (coloca em nvel lgico 1)
Espera CTS; (aguarda sinal do perifrico, indicando que j pode mandar)
Envia 1 byte; (dado sendo transmitido)
Espera CTS; (aguarda confirmao do perifrico para mandar o 2 byte)
Envia 2 byte; (depois de recebido o CTS, pode-se mandar o 2 byte)
Espera CTS; (aguarda confirmao do perifrico para mandar outro dado)
Envia 3 byte; (depois de recebido um OK em CTS pode-se mandar o 3 byte)
Desativa RTS; (caso j tenha chegado no final da transmisso desative o RTS)
LEITURA
Ativa RTS; (indica que o micro esta pronto para receber o sinal)
Espera CTS; (aguarda confirmao de leitura - sinal vlido)
L dado; (aps ter recebido CTS deve-se ler os dados em RXD)
Desativa RTS; (se no tiver mais dados para receber ento devemos desativar o RTS)
TIPOS DE LIGAES
DTE: Equipamento terminal de dado. Nestes equipamentos os dados chegam e ficam, no continuam como
no caso do modem. Ex.: Micro/Impressora.
DTE - DTE: Interface entre equipamento terminal de dados para equipamento terminal de dados.
DCE: Equipamento de comunicao de dados. Nesses equipamentos os dados chegam e continuam.
Exemplo: Modem.
DTE-DCE: Interface entre equipamento terminal de dados e equipamento de comunicao de dados.
4

Perifricos - Jos Alexandre J. Ribeiro

Agora veremos os modelos de ligaes dos conectores dos micros. Em cada tipo, temos ligao de 3
fios ( 3-wire) ou full conection. A ligao 3-wire usada quando temos uma comunicao sem protocolo, ou
seja, o sinal transmitido diretamente sem que haja controle de erros e verificaes. A full conection para
uma comunicao mais complexa, onde temos o uso de protocolos de verificao de status e erros.
LIGAO DTE-DTE
Abaixo temos uma ligao a 3 fios (micro-mouse):

A principio temos os dois conectores do tipo fmea. No caso de uma ligao entre micro e mouse, o
conector da direita ligado ao micro (macho) e o da direita no existe pois interno ao mouse.
Abaixo temos a ligao full conection (micro-impressora):

A principio temos os dois conectores do tipo fmea. Eles so fmea pois nos DTEs o conector
macho.
LIGAO DTE-DCE
Abaixo temos a ligao a 3 fios:

Perifricos - Jos Alexandre J. Ribeiro

Neste tipo temos conector femea(conector que liga no micro)-macho(conector que liga no modem).
Abaixo temos a ligao full conection:

Neste tipo temos conector femea-macho.


Todos os exemplos acima foram utilizados coenctores DB25 fmea ou macho. Abaixo temos uma
ilustrao real do conector fmea:

Se o conector for macho a numerao invertida, ou seja:

Este desenho do conector pelo lado interno (dentro do conector; aqui que os fios sero soldados).
As ligaes vistas anteriormente servem tambm para conectores do tipo DB9 (macho ou fmea).
Neste caso a numerao vista anteriormente no ir bater, ento abaixo temos os desenho do conector DB9
com os respectivos nomes de cada pino, observando estes nomes voc poder fazer as ligaes anteriores
tranqilamente.

A figura abaixo de um conector DB9 do tipo fmea:


1 - DCD
2 - RxD
3 - TxD
4 - DTR
5 - GND

6 - DSR
7 - RTS
8 - CTS
9 - RI
6

Perifricos - Jos Alexandre J. Ribeiro

Para o conector do tipo macho a numerao invertida, ou seja:

Devemos lembrar novamente que este o lado de dentro do conector, onde os fios devero ser
ligados.
As vezes necessrio fazer a conexo entre conectores diferentes, exemplo um DB25 com um DB9,
abaixo temos uma figura ilustrando esta ligao:

UARTS
Numa comunicao serial usamos um CI especial que transforma os sinais paralelos de dentro do
computador numa seqncia de pulsos seriais. Este CI chamado de Universal Asynchronous
Receiver/Transmitter (Transmissor/Receptor Asscrono Universal), ou UART, este chip aceita 8 linhas de
dados paralela e possui uma sada serial.
Um CI muito utilizado no passado o 8250 (usado em XTs e alguns modems). Logo aps (com a
vinda do AT) foi lanado o UART 16450, uma verso melhorada do 8250, mas ainda compatvel com ele.
Depois veio o UART 16550, de alto desempenho.
Este chip dever ser configurado antes de qualquer transmisso ou recepo. Os elementos de
configurao que devem ser considerados so os seguintes:
TAXA DE TRANSMISSO: a velocidade de transmisso dos dados. Neste caso devemos
observar que os dois equipamentos devem estar com a mesma velocidade. Esta velocidade poder ser de:
110, 150, 300, 600, 1200, 2400, 4800, 9600. Em alguns casos poderemos ter velocidades maiores.
NMERO DE BITS DE DADOS: o nmero de bits que teremos num dado em questo. Este valor
pode ser de 5, 6, 7 ou 8 bits.
PARIDADE: O bit de paridade usado como um simples esquema de deteco de erro. Pode ser
mpar, par ou nenhuma, neste caso no gerado o bit de paridade.
7

Perifricos - Jos Alexandre J. Ribeiro

STOP BIT: O stop bit poder ser configurado como 1, 1.5 ou 2 bits, sendo que na maioria das vezes
usa-se o 1 ou 2.
CONTROLE DE FLUXO (HANDSHAKING)
Para que a comunicao seja corretamente completada (sem erros) necessrio que os equipamentos
estejam na mesma velocidade, e com o mesmo tipo de protocolo de comunicao; caso contrrio dever
ocorrer algum erro de comunicao ou a comunicao no ser completada.
A soluo mais fcil usar um fio especial como linha de sincronizao, de modo que o sistema
receptor possa indicar que est pronto a receber os dados. Como este mtodo exige um hardware modificado
- fio de controle de fluxo - ele chamado de handshaking de hardware.
Alguns canais de comunicao no permitem o uso deste fio extra, exemplo a conexo telefnica.
Neste caso temos caracteres embutidos na transmisso de dados. Como estes caracteres de controle podem
ser acrescentados atravs de programao pelo sistema emissor, esse mtodo costuma ser chamado de
handshaking de software.
Na maioria dos esquemas de controle por soft, o sistema receptor usa dois caracteres diferentes para
sinalizar quando est pronto para receber dados e quando no pode mais aceitar dados, pelo menos
temporariamente (XON/XOFF)
Para que o controle por soft seja eficiente necessrio que os aplicativos possuam estes mtodos de
controle. Caso contrario devemos ter em mos alguns drivers especiais.
AS PORTAS SERIAIS
As portas seriais so ligaes existentes entre o computador e o mundo exterior. Geralmente no
micro temos duas portas seriais: COM1 e COM2. As portas so identificadas para os nossos softs atravs de
2 atributos: um endereo de hardware e uma linha de solicitao de interrupo (IRQ) atribuda porta. O
endereo a localizao onde ficar armazenado o contedo dos registros da UART. A IRQ a maneira de
conseguir a ateno do processador.
Os endereos para a COM1 e COM2 so padronizados.
Endereos das portas seriais:
PORTA

IRQ

ENDEREO

COM1

3F8h

COM2

2F8h

COM3

3E8

COM4

2E8

Perifricos - Jos Alexandre J. Ribeiro

Abaixo temos um programa que retornar na tela as portas seriais que seu micro possui, bem como
seus respectivos endereos.
#include <stdio.h>
#include <dos.h>
void main(void)
{
unsigned int far *ptraddr; /* Pointer to location of Port Addresses */
unsigned int address;

/* Address of Port */

int a;
ptraddr=(unsigned int far *)0x00000400;
for (a = 0; a < 4; a++)
{
address = *ptraddr;
if (address == 0)
printf("Port no encontrado em COM%d \n",a+1);
else
printf("Endereo associado a COM%d o endereo %Xh\n",a+1);
*ptraddr++;
}
}

CONFIGURANDO UMA PORTA


Para fazer a comunicao de um micro com outro, devemos primeiro configur-los de maneira que os
dois possuem a mesma configurao, caso contrrio poder no haver a comunicao. Para tanto podemos
usar o comando MODE do MS-DOS, caso for feita a configurao direta via soft deveremos configurar (no
soft) os mesmos parmetros (do mode). Quando formos fazer um programa de comunicao deveremos
fazer a configurao de dentro do seu soft; em C deveremos usar a BIOSCOM ou _BIOS_SERIALCOM,
para maiores informaes use o HELP do TC e preste bastante ateno!
Caso o seu programa no faa a configurao automtica da porta voc dever fazer via DOS, atravs
do comando MODE, de maneira geral a configurao da porta :
9

Perifricos - Jos Alexandre J. Ribeiro

MODE COM_:Baud, Paridade, Bits de dados, Bits de fim


Sendo:
COM_: Nome da porta serial: COM1, COM2, COM3 ou COM4
Baud: Velocidade de transmisso - 110, 150, 300, 600, 1200, 2400, 4800, 9600
Paridade : Especifica o tipo de paridade da transmisso ou recepo - N (paridade neutra), O
(paridade

mpar), E (paridade par)

Bits de dados: Especifica o tamanho do byte a ser transmitido - 5,6, 7 ou 8 (mais usado 7 e 8)
Bits de parada (stop bit) : Especifica o nmero de stop bits da transmisso - 1 ou 2
Exemplo: C:\>MODE COM1:300,O,8,1
Neste caso estamos configurando a COM1 para 300 baud de velocidade, paridade mpar, com 8 bits a
palavra e 1 stop bit. Lembre-se que quando a velocidade de transmisso for alta, poderemos ter problemas de
sincronismo e a comunicao acaba no sendo efetuada, por isso de praxe que se coloque uma velocidade
menor de transmisso.
CONHECENDO OS REGISTRADORES SERIAIS
Abaixo temos uma tabale com os registrados que podem ser usados numa comunicao/controle
serial.
Endereo Bit DLAB Read/Write

Abr.

Nome do registrador

Write

Buffer de Transmisso

Read

Buffer de Recepo

Read/Write

Parte Baixa do byte de velocidade

Read/Write

IER

Read/Write

Read

IIR

Interruption Identification Register

Write

FCR

Fifo Control Register

Base+3

Read/Write

LCR Line Control Register

Base+4

Read/Write

MCR Modem Control Register

Base+5

Read

LSR

Base+6

Read

MSR Modem Status Register

Base+7

Read/Write

Base

Base+1

Base+2

Interrupt Enable Register


Parte Alta do byte de velocidade

Line Status Register

Scratch Register

10

Perifricos - Jos Alexandre J. Ribeiro

Os registradores mais usados so o Base, Base+1, Base+3 e Base+5. O registrador Base usado para
Transmitir ou receber dados, o Base, o Base+1 e Base+3 usado para configurar a porta e o Base+5 o
status da porta, ou seja, nele que vou verificar se chegou dado ou no.
Para que se possa fazer um programa transmitir/receber, devemos primeiro configurar ambos
equipamentos para a mesma configurao. Caso um deles estejam com configurao errada, a comunicao
no ser feita. Configurar a porta ser ajustar a velocidade, no. de bits de dados, bit de paridade e quantida
de stop bit.
Abaixo, ento, temos a seqncia usada para fazer um programa de comunicao serial usando
liguagem C e outports (podemos usar outros mtodos, porm este acho o mais vivel).
Configurao da Porta: Deve-se configurar 4 itens:
Velocidade
Paridade
N de Bits da palavra de dado
N de Stop Bit
Para configurar a velocidade devemos primeiro setar o BIT 7 em 1 no registrador LCR. Este
registrador acessado pelo endereo base + 3. Por exemplo: Endereo Base = 3F8, ento para acessar o
LCR devemos fazer Base + 3 = 3F8 + 3 = 3FB.
Deveremos ento mandar para 3FB o dado 80h, isto ir setar em 1 o Bit 7 do 3FB. Vejamos:
80h = 1000 0000, pelo Debug faramos: - O 3FB,80. Isto ir idicar ao micro que agora iremos configurar
velocidade.
A velocidade dividida em dois registradores de 8 Bits (total de 16 Bits), sendo um chamado de
parte Baixa e outro chamado de parte Alta. A parte alta da velocidade dever ser colocada no endereo
base+1 e a parte baixa no endereo base. o Clculo da velocidade ser:

Tx =

115200
Baud

Sendo o Baud a velocidade a ser transmitida (1200, 2400, 4800, 9600, etc...)

Por exemplo:
Parte Baixa

115200
Tx =
= 12 001210 000C16
9600
Parte Alta
11

Perifricos - Jos Alexandre J. Ribeiro

Deveremos ento mandar para 3F9h o valor 00h e para 3F8h o valor 0Ch, pelo Debug faramos:
- O 3FB,80

Indica que vamos configurar a velocidade

- O 3F8,0C Parte baixa da velocidade


- O 3F9,00 Parte alta da velocidade
Para uma velocidade de 300 baud, teremos em 3F8h o dado 80h e em 3F9h o dado 01h.
Abaixo temos uma tabela que voc poder usar para facilitar o clculo de acordo com a velocidade:
Velocidade (bps)

Divisor (Dec)

Parte Alta da vel.

Parte Baixa da vel.

50

2304

09h

00h

300

384

01h

80h

600

192

00h

C0h

2400

48

00h

30h

4800

24

00h

18h

9600

12

00h

0Ch

19200

00h

06h

38400

00h

03h

57600

00h

02h

115200

00h

01h

Depois de configurado a velocidade, devemos configurar o resto. Para tanto usamos o endereo
Base+3, que o Registrado LCR, abaixo temos a descrio de cada bit deste registrador.
D7

D6

D5

D4

D3

D2

D1

D0

Neste dois Bits defino


a tamanho da palavra
N de Stop Bits
Habilita a paridade: 0 - Sem paridade
1 - Com paridade
Habilita a paridade par (em 1) e em 0 paridade mpar
Stick Parity (mantm o Bit de paridade sempre em 1 ou 0)
Habilita o sinal de Break
Habilita o divisor de Baud-Rate (velocidade)
O Tamanho da palavra definido assim:
D1

D0

00

5 Bits

6 Bits
12

Perifricos - Jos Alexandre J. Ribeiro

7 Bits

8 Bits

O N de Stop Bit definido assim:


D2
0

1 Stop Bit

2 Stop Bit

Com a configurao definida, consigo montar a palavra que dever ser mandada para 3FB. Por
exemplo: Seja uma comunicao onde temos 6 Bits de dados, 2 stop Bit e paridade par. Desenhando de uma
forma melhor teremos:

D7

D6

D5

D4

D3

D2

D1

D0

1
6 Bits de dados

2 Stop Bit

Indica que no
vou configurar a
velocidade

Habilita a paridade

Na grande
maioria das
vezes ficam em
zero
(D5 e D6)

Indica que a paridade par

Transformando esta seqncia de Bits para hexa temos: 1Dh. Devemos ento mandar para 3FBh o
dado 1Dh. Pelo debug teramos:
- O 3FB,1D
Exemplo Completo: Configure a porta COM1 para uma velocidade de 1200 baud, com 8 Bits de
dados, 2 Stop Bit e sem paridade.
Tx =

115200
= 9610 = 11000002 = 006016
1200

A parte alta da velocidade : 00h e a parte baixa 60h


Formando a configurao da transmisso teremos:
D7

D6

D5

D4

D3

D2

D1

D0

Transformando a seqncia de Bits para Hexa, teremos: 07h


Pelo debug a configurao seria:
13

Perifricos - Jos Alexandre J. Ribeiro

- O 3FB,80 Indica que vai haver configurao da velocidade


- O 3F8,60 Parte baixa da velocidade
- O 3F9,00 Parte alta da velocidade
- O 3FB,07 Configurao da porta por LCR
Pela linguagem C teremos:

# include <dos.h>
void main()
{
outport(0x3fb,0x80);
outport(0x3f8,0x60);
outport(0x3f9,0x00);
outport(0x3fb,0x07);
}
Mandando um dado para a porta (Transmisso do dado): Basta colocar na porta o respectivo dado. Vamos
supor que voc queira mandar a letra A do micro 1 para o micro 2. Vejamos:
A = 41h, a porta COM1 possui endereo 3F8, ento:
Pelo debug seria:
- O 3F8, 41
Pela linguagem C seria:
# include <dos.h>
void main()
{
outport(0x3f8,0x41);
}
Recebendo um dado da porta (Recepo do dado): Para receber um dado basta dar um IMPORT no endereo
base (3F8) e guardar este dado numa varivel e depois exibir o dado. Veja que neste caso no estou
verificando o status da porta (endereo base + 5) e poder acontecer de lermos algum dado e este no ser
14

Perifricos - Jos Alexandre J. Ribeiro

verdadeiro e sim lixo ! Ento antes de lermos no endereo base, deveremos primeiro ler o status da porta
(Base+5) e verificar se chegou algum dado, se for verdadeiro, que iremos ler o dado no endereo base,
caso for falso no poderemos ler.
Para acessar o registrador de status iremos usar o endereo base + 5, ou seja, 3F8 + 5, o que resulta
em 3fdh. A funo dos Bits mostrada abaixo:
D7

D6

D5

D4

D3

D2

D1

D0
Dado
recebido
1: Sim
0 : No

Erro Overrun: Chegou


outro dado na porta
sem termos lido ela
antes. (dado anterior
foi perdido)
Erro de paridade: Erro ocorrido na
recepo

de

dados

(erro

de

paridade)
Erro de framing: O caracter recebido no tem
Stop Bit.
Sinal Break recebido: Os Bits recebidos so maiores dos
que selecionados
Buffer de transmisso vazio: O caracter j foi mandado e a UART j
pode mandar outro para transmisso
Registrador de converso Paralelo/Serial esta vazio e esta pronto para receber outro
dado interno para virar serial
Sempre dever estar em zero.
Na verdade o nico BIT que deveremos observar o Bit D0, pois indica se um dado foi recebido ou
no. Os outros so usados para controle de erros.
Podemos concluir que s deveremos ler um dado na porta base se antes verificarmos o BIT 0 do
endereo Base+5:

* Se for 1 Devemos ler o endereo base


* Se for 0 No devemos ler o endereo base

Programa exemplo para configurao da porta e veirifcao do status da porta:


15

Perifricos - Jos Alexandre J. Ribeiro

#include <dos.h>
#include <string.h>
int x, porta;
void main()
{
outport(0x3fb,0x80);
outport(0x3f8,0x60);
outport(0x3f9,0x00);
outport(0x3fb,0x07);
clrscr();
porta=0x3fd;
x=inport(porta);
printf("\n O valor recebido na porta %x e' de %x",porta,x);
getch();
}
Programa exemplo para configurao da porta e recebimento de dado na porta COM1:
#include <dos.h>
#include <string.h>
int x, porta;
void main()
{
outport(0x3fb,0x80);
outport(0x3f8,0x60);
outport(0x3f9,0x00);
outport(0x3fb,0x07);
clrscr();
porta=0x3f8;
x=inport(porta);
printf("\n O valor recebido na porta %x e' de %x",porta,x);
getch();
}

16

Você também pode gostar