• Nenhum resultado encontrado

Princ´ıpio de Funcionamento e Utiliza¸c˜ao

No documento Microcontroladores e o 8051 (páginas 42-45)

2.2 Portas de I/O

2.2.1 Princ´ıpio de Funcionamento e Utiliza¸c˜ao

O uso das linha de I/O ´e simples e necessita apenas de que escrevamos o valor desejado (na caso de utiliza¸c˜ao como sa´ıda), ou efetuarmos a leitura (no caso de entrada). Se o dado presente numa porta configurada como entrada variar, a varia¸c˜ao n˜ao ser´a sentida pelo sistema, at´e que efetuemos uma nova leitura dessa entrada.

Isto ocorre porque cada linha ´e, na realidade, um Buffer tri-state de um bit. J´a no caso da escrita, temos associado a esta linha um flip-flop D (latch) de um bit.

Na figura 2.2, temos um esquema simplificado de um bit de I/O, que nos ajudar´a a compreender o funcionamento da porta. Os circuitos reais s˜ao ligeramente diferentes para cada uma das portas, e mais complexos do que o apresentado aqui, mas para fins dit´aticos e de entendimento este diagrama b´asico ´e suficiente.

ESCREVE LE PINO VIA DE DADOS INTERNA LE LATCH D CLK Q Q PINO +

Figura 2.2: Diagrama em blocos simplificado de um pino de I/O

Quando escrevemos um bit na porta, o mesmo vai pela via interna at´e a entrada D do flip-flop, e ent˜ao um pulso de clock em CLK coloca este bit em Q, que atrav´es da eletrˆonica associada leva este n´ıvel ao pino externo.

J´a no caso da leitura, algumas instru¸c˜oes lˆeem o pino enquanto outras lˆeem o estado do latch, em Q. As instru¸c˜oes que lˆeem o latch s˜ao aquelas que costumam ler, modificar e reescrever o bit, a saber : INC, DEC, CPL, JBC, DJNZ, ANL, ORL, XRL, MOV Px.n,C, CLR Px.n e ainda SETB Px.n, conforme vimos na unidade anterior.

As demais instru¸c˜oes de acesso aos ports lˆeem o estado presente nos pinos. E dai, qual a diferen¸ca ent˜ao?

Vamos supor que temos a base de um transistor NPN sendo acionada pelo pino de I/O. Quando escrevemos 1 neste pino o transistor entrar´a em condu¸c˜ao, e se a CPU ler o estado deste pino para eventual confirma¸c˜ao, ler´a a tens˜ao na base do transistor e interpretar´a como n´ıvel ZERO, ent˜ao neste

caso deve ser lido o valor de latch, que estar´a corretamente indicando n´ıvel UM.

Um exemplo simples de conex˜ao das linhas seria um sistema que em fun¸c˜ao de um certo bit, por exemplo o bit 5 da porta 3 (escrito como P3.5), far´a com que os leds colocados nos 8 pinos da porta 1 sejam acesos sequencialmente, conforme o estado daquele bit. Na figura 2.3, temos um diagrama simples para este exemplo, e a seguir o Software simb´olico para esta fun¸c˜ao.

+

8051

P1.7 P1.1 P1.0 P3.5 + + +

Figura 2.3: Exemplo simples de utiliza¸c˜ao SOFTWARE SIMB ´OLICO

Inicio: Faz acu- mulador = 00000001 bin´ario Lebit: Se P3.5 = 0 ent˜ao

roda acumulador `a esquerda (coloca o bit D0 em D1, e assim por diante, at´e colocar o bit D7 em D0).

move acumulador para a porta 1 perde um tempo

volta para ”lebit” Sen˜ao (s´o pode

ser P3.5 =1)

roda acumulador `a direita (coloca o bit D7 em D6, e assim por diante, at´e colocar o bit D0 em D7).

move acumulador para a porta 1 perde um tempo

volta para ”lebit”

Port P0

O P0 ´e uma estrutura de port bidirecional. Um certo pino ”i”do port Po ´e tomado como ilus- tra¸c˜ao. O barramento interno do MC ´e utilizado para ler/escrever no latch interno, ou ler o pino f´ısico ”P0.i”em quest˜ao. Quando se utiliza uma instru¸c˜ao que ”escreve”um valor no Port P0.i, o dado se apresenta na entrada D do flip-flop. Um pulso de ”escreve”(o ”CLK”do flip-flop) ´e imposto no fli-flop, que transfere esse dados `as sa´ıdas ”Q”e ”Q”do latch.

O sinal de ”controle”atua para permitir que esse dado saia fisicamente no pino P0.i. Este sinal de controle simboliza o gerenciamento que esse port tem para apresentar o dado fisicamente `a sa´ıda. Existem instru¸c˜oes que lˆeem o conte´udo armazenado no latch. Existem instru¸c˜oes que lˆeem o estado di- retamente do pino. Em geral, as instru¸c˜oes que ”lˆeem o latch”s˜ao do tipo ”READ-MODIFY-WRITE”, isto ´e, lˆe o conte´udo do latch, modifica conforme a instru¸c˜ao imposta e escreve de novo no latch. S˜ao as instru¸c˜oes INC, DEC, CPL, JBC, DJNZ, ANL, ORL e XRL.

Quando P0 ´e usado como port, ´e como se ele fosse ”dreno aberto”, isto ´e, devemos utilizar resistores de ”Pull-Up”nesses pinos para podermos excitar devidamente o ambiente externo ao MC. Quando ele ´e usado apenas para controle de mem´oria externa, esses resistores n˜ao s˜ao necess´arios, e neste caso o port P0 ´e visto como um port ”Tri-State”.

O port P0 ´e multiplexado entre ”dados”e ”endere¸cos”quando gerencia mem´oria externa e, ent˜ao, utiliza o pino ALE para captar o endere¸co em um latch externo ao MC.

Port P1

Para finalizar este item, basta dizer que as possibilidades de uso destas linha de I/O s˜ao pratica- mente ilimitadas, ficando a cargo do projestista desenvolver novas aplica¸c˜oes para tal.

Os ports 1,2 e 3 possuem pull-ups internos e s˜ao chamadas de quase bidirecionais. Esta carac- ter´ısticas faz com que seus pinos tenham sempre um estado definido, ou seja, 0 ou 1, de forma que mesmo quando as usamos como entrada, podemos medir seu n´ıvel como se fosse de sa´ıda. Os ports P1 e P3 podem ser configurados, pino a pino (bit a bit), ou totalmente (byte) como entrada ou sa´ıda. N˜ao se pode esquecer que o port P3 ´e ut´ılizado como meio de comunica¸c˜ao externa entre os perif´ericos ”Timers”e ”Serial”e ent˜ao os p´ınos s´o estar˜ao dispon´ıveis para I/0, dependendo de utilizar ou n˜ao os perif´ericos desse Mc.

O port 0 n˜ao possui estas caracter´ısticas, e quando configurada como entrada, ter´a seu n´ıvel flu- tuando na ausˆencia de n´ıvel fixo no pino. Entretanto, para todos os efeitos de uso, podemos considerar as portas como simples portas de I/O bidirecionais como veremos a seguir.

No documento Microcontroladores e o 8051 (páginas 42-45)

Documentos relacionados