You are on page 1of 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:
LSB MSB 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 2 3 4 5 6 7 8 20 22

Conector de 9 Pinos 3 2 7 8 6 5 1 4 9

Abreviaao Nome TD RD RTS CTS DSR SG CD DTR RI Transmit Data Receive Data Request To Send Clear To Send Data Set Ready Signal Ground Carrier Detect 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 COM1 COM2 COM3 COM4 IRQ 4 3 4 3 ENDEREO 3F8h 2F8h 3E8 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; 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++; } } /* Address of Port */

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 0 Base 0 1 Base+1 0 1 Base+2 Base+3 Base+4 Base+5 Base+6 Base+7 Write Read Read/Write Read/Write Read/Write Read Write Read/Write Read/Write Read Read Read/Write Abr. IER IIR FCR Nome do registrador Buffer de Transmisso Buffer de Recepo Parte Baixa do byte de velocidade Interrupt Enable Register Parte Alta do byte de velocidade Interruption Identification Register Fifo Control Register

LCR Line Control Register MCR Modem Control Register LSR Line Status Register

MSR Modem 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:
115200 Baud

Tx =

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) 50 300 600 2400 4800 9600 19200 38400 57600 115200 Divisor (Dec) 2304 384 192 48 24 12 6 3 2 1 Parte Alta da vel. 09h 01h 00h 00h 00h 00h 00h 00h 00h 00h Parte Baixa da vel. 00h 80h C0h 30h 18h 0Ch 06h 03h 02h 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 00 0 D0 0 1 5 Bits 6 Bits
12

Perifricos - Jos Alexandre J. Ribeiro

1 1 O N de Stop Bit definido assim: D2 0 1

0 1

7 Bits 8 Bits

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 0

D6 0

D5 0

D4 1

D3 1

D2 1

D1 0

D0 1
6 Bits de dados

2 Stop Bit Habilita a paridade Indica que a paridade par

Indica que no vou configurar a velocidade

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

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 0 D6 0 D5 0 D4 0 D3 0 D2 1 D1 1 D0 1

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 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

de

dados

(erro

de

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

You might also like