Você está na página 1de 23

Faculdade de Cincia e Tecnologia e Engenharia de Eltrica e Disciplina: Microprocessadores e Microcontroladores Professor: Vitor Leo Filardi a 2a Unidade Sumrio a

1 Ciclos de Mquina a 2 Portas de I/O 2.1 Princ pio de Funcionamento e Utilizaao . . . . . . . . . . . . . . . . . . . . c 2.1.1 Port P0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Port P1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Caracter sticas Gerais e de Tempo dos Ports . . . . . . . . . . . . . . . . . . 2.2.1 Instruoes que Alteram diretamente o Conte do dos Ports . . . . . . c u 2.2.2 Condioes de Tempo Envolvendo os Ports . . . . . . . . . . . . . . . c 2.3 Uso das Portas de I/O para a Expanso da Memria de Dados e Programa a o 2.4 Seleao de Programa Externo ou Interno . . . . . . . . . . . . . . . . . . . . c 2.5 Uso dos Pinos da Porta 3 como funoes Alternativas . . . . . . . . . . . . . c 2.6 Capacidade de Corrente nos Pinos de I/O . . . . . . . . . . . . . . . . . . . 3 Modos de Endereamento das Instruoes c c 3.1 Endereamento por Registrador . . . . . . c 3.2 Endereamento Direto . . . . . . . . . . . c 3.3 Endereamento Indireto . . . . . . . . . . c 3.4 Endereamento Imediato . . . . . . . . . . c 3.5 Endereamento Relativo . . . . . . . . . . c 3.6 Endereamento Absoluto . . . . . . . . . . c 3.7 Endereamento Longo . . . . . . . . . . . c 3.8 Endereamento Indexado . . . . . . . . . c 4 Temporizadores e Contadores 4.1 Introduao . . . . . . . . . . . c 4.2 Registros Envolvidos . . . . . 4.3 Modos de operaao . . . . . . c 4.3.1 Modo 0 . . . . . . . . 4.3.2 Modo 1 . . . . . . . . 4.3.3 Modo 2 . . . . . . . . 4.3.4 Modo 3 . . . . . . . . 4.4 Exerc cios . . . . . . . . . . . 4.4.1 LED 10HZ . . . . . . 4.4.2 LED 1HZ . . . . . . . 4.4.3 ONDA1 . . . . . . . . 4.4.4 ONDA2 . . . . . . . . 4.4.5 LEDS1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 5 5 5 5 6 6 7 7 8 8 8 8 9 10 10 11 11 11 12 12 12 15 15 16 16 17 18 18 20 21 22 23

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Referncias e
GIMENEZ, S. P. Microcontroladores 8051. [S.l.]: Editora Pearson Education do Brasil, 2002. NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplicaoes Prticas do Microcontrolador 8051. [S.l.]: Editora Erica, 1998. c a

Dispositivos do 8051
1 Ciclos de Mquina a

Como vimos na unidade passada o clock o relgio interno do microprocessador para a execuao e o c sequencial de qualquer atividade interna ou externa a mquina, ou seja, o elemento que gera e con` a e trola os ciclos de trabalho da mquina. Cada ciclo de oscilaao chamaremos de Pde pulso. A cada a c dois pulsos Pcaracteriza-se um estado S. Uma sequncia de seis estados, S1 a S6, corresponde a e um ciclo de mquina. Todas as atividades internas e externas do microprocessador so comandadas a a por esses pulsos e seus seis estados. Um ciclo de mquina se constitui de seis estados (S1 a S6) que, por sua vez, correspondem a a doze pulsos P do clock.
1 Ciclo de Maquina Estados S1 S2 S3 S4 S5 S6

P1

P2

P1

P2

P1

P2

P1

P2

P1

P2

P1

P2

1 Estado

2 Pulsos

Figura 1: Ilustraao de um ciclo de mquina do MSC8051 c a Por exemplo, o instante marcado como Xna gura o S6P1. Assim podemos ter um linguagem e comum de deniao de instantes de um ciclo de mquina. Cada pulso P1 depende da frequncia do c a e clock. Por exemplo, se o circuito oscilador for a cristal de 12MHz, teremos um ciclo de mquina = 12 a x (Per odo de Clock) = 12 x (1/12*10 6 )= 1s.

Portas de I/O

Temos no 8051 quatro grupos de sa das denominados de PORTS, so eles P0,P1,P2 3 P3, coma forme a versoo do 8051 utilizado. No 8051 (ROM Interna) temos todos os quatro ports dispon a veis; no 8031 (EPROM Externa) s temos os ports P1 e P3 dispon o veis como I/O. Cada port tem oito linhas que podem ser programadas como entrada ou como sa da, ou trabalhar com os perifricos internos. e

Pgina 2 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

2.1

Princ pio de Funcionamento e Utilizao ca

O uso das linha de I/O simples e necessita apenas de que escrevamos o valor desejado (na caso e de utilizaao como sa c da), ou efetuarmos a leitura (no caso de entrada). Se o dado presente numa porta congurada como entrada variar, a variaao no ser sentida pelo sistema, at que efetuemos c a a e uma nova leitura dessa entrada. Isto ocorre porque cada linha , na realidade, um Buer tri-state de um bit. J no caso da escrita, e a temos associado a esta linha um ip-op D (latch) de um bit. Na gura 2, temos um esquema simplicado de um bit de I/O, que nos ajudar a compreender a o funcionamento da porta. Os circuitos reais so ligeramente diferentes para cada uma das portas, e a mais complexos do que o apresentado aqui, mas para ns ditticos e de entendimento este diagrama a bsico suciente. a e
LE LATCH

VIA DE DADOS INTERNA

ESCREVE

CLK

PINO

LE PINO

Figura 2: Diagrama em blocos simplicado de um pino de I/O Quando escrevemos um bit na porta, o mesmo vai pela via interna at a entrada D do ip-op, e e e o ento um pulso de clock em CLK coloca este bit em Q, que atravs da eletrnica associada leva este a n ao pino externo. vel J no caso da leitura, algumas instruoes lem o pino enquanto outras lem o estado do latch, em Q. a c e e As instruoes que lem o latch so aquelas que costumam ler, modicar e reescrever o bit, a saber c e a : 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 instruoes de acesso aos ports lem o estado presente nos pinos. E dai, qual a diferena c e c ento? a 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 em conduao, e se a CPU ler o estado deste pino para a c eventual conrmaao, ler a tenso na base do transistor e interpretar como n ZERO, ento neste c a a a vel a caso deve ser lido o valor de latch, que estar corretamente indicando n UM. a vel Um exemplo simples de conexo das linhas seria um sistema que em funao de um certo bit, por a c exemplo o bit 5 da porta 3 (escrito como P3.5), far com que os leds colocados nos 8 pinos da porta 1 a sejam acesos sequencialmente, conforme o estado daquele bit. Na gura 3, temos um diagrama simples para este exemplo, e a seguir o Software simblico para esta funao. o c

Pgina 3 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a


+ + +

P1.0 P1.1

8051
+

P1.7

P3.5

Figura 3: Exemplo simples de utilizaao c SOFTWARE SIMBOLICO Inicio: Faz acumulador = 00000001 binrio a Lebit: Se P3.5 = 0 ento a roda acumulador a esquerda (coloca o bit D0 em D1, e assim ` por diante, at colocar o bit D7 em D0). e move acumulador para a porta 1 perde um tempo volta para lebit Seno (s pode a o ser P3.5 =1) roda acumulador a direita (coloca o bit D7 em D6, e assim ` por diante, at colocar o bit D0 em D7). e move acumulador para a porta 1 perde um tempo volta para lebit

Pgina 4 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

2.1.1

Port P0

O P0 uma estrutura de port bidirecional. Um certo pino ido port Po tomado como iluse e traao. O barramento interno do MC utilizado para ler/escrever no latch interno, ou ler o pino f c e sico P0.iem questo. Quando se utiliza uma instruao que escreveum valor no Port P0.i, o dado se a c apresenta na entrada D do ip-op. Um pulso de escreve(o CLKdo ip-op) imposto no i-op, e que transfere esse dados as sa ` das Qe Qdo latch. O sinal de controleatua para permitir que esse dado saia sicamente no pino P0.i. Este sinal de controle simboliza o gerenciamento que esse port tem para apresentar o dado sicamente a sa ` da. Existem instruoes que lem o conte do armazenado no latch. Existem instruoes que lem o estado dic e u c e retamente do pino. Em geral, as instruoes que lem o latchso do tipo READ-MODIFY-WRITE, c e a isto , l o conte do do latch, modica conforme a instruao imposta e escreve de novo no latch. So e e u c a as instruoes INC, DEC, CPL, JBC, DJNZ, ANL, ORL e XRL. c Quando P0 usado como port, como se ele fosse dreno aberto, isto , devemos utilizar resistores e e e de Pull-Upnesses pinos para podermos excitar devidamente o ambiente externo ao MC. Quando ele usado apenas para controle de memria externa, esses resistores no so necessrios, e neste caso o e o a a a port P0 visto como um port Tri-State. e O port P0 multiplexado entre dadose endereosquando gerencia memria externa e, ento, e c o a utiliza o pino ALE para captar o endereo em um latch externo ao MC. c

2.1.2

Port P1

Para nalizar este item, basta dizer que as possibilidades de uso destas linha de I/O so praticaa mente ilimitadas, cando a cargo do projestista desenvolver novas aplicaoes para tal. c Os ports 1,2 e 3 possuem pull-ups internos e so chamadas de quase bidirecionais. Esta caraca ter sticas faz com que seus pinos tenham sempre um estado denido, ou seja, 0 ou 1, de forma que mesmo quando as usamos como entrada, podemos medir seu n como se fosse de sa vel da. Os ports P1 e P3 podem ser congurados, pino a pino (bit a bit), ou totalmente (byte) como entrada ou sa da. No se pode esquecer que o port P3 ut a e lizado como meio de comunicaao externa entre os perifricos c e Timerse Seriale ento os p a nos s estaro dispon o a veis para I/0, dependendo de utilizar ou no os a perifricos desse Mc. e O port 0 no possui estas caracter a sticas, e quando congurada como entrada, ter seu n ua vel tuando na ausncia de n xo no pino. Entretanto, para todos os efeitos de uso, podemos considerar e vel as portas como simples portas de I/O bidirecionais como veremos a seguir.

2.2
2.2.1

Caracter sticas Gerais e de Tempo dos Ports


Instruoes que Alteram diretamente o Conte do dos Ports c u

E necessrio ter cuidado com as instruoes do tipo Read-Modify-Wr` a c tecitadas neste item, quando so manipuladas diretamente com os ports. Por exemplo, a operaao: a c orl P1,#11111110b ; vai executar a leitura do Port P1 pelo latch, vai operar a instruao c ORcom o dado e devolver o resultado em P1. Se a intenao s realizar uma mscarapara ler o bit P1.0, esta instruao est sendo mal aplic e o a c a cada, pois ela, alm de realizar a mscara, pos valor 1em todos os outros bits do port P1, alterando e a seus valores originais!

Pgina 5 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Assim, se queremos s uma mscara, devemos operar fora de P1, isto : o a e mov A,Pi ;l P1 e carrega em A e orl A,11111110b ;faz a mscarasem alterar P1 a Esta e outras instruoes abaixo listadas correm este perigode utilizaao e precisamos saber exc c atamente o que queremos antes de aplic-las direto aos ports: a Instruao e Forma Bsica c a INC DEC CPL JBC DJNZ ANL ORL XRL Funao Exemplo c INC P1 DEC P3 CPL P1 JBC P1.0,#XX DJNZ P1,#XX ANL PO,A ORL PO,A XRL P1,#XX

Tabela 1: Instruoes que afetam diretamente os ports quando aplicadas junto a eles. c

2.2.2

Condioes de Tempo Envolvendo os Ports c

Cada pino do port amostrado perto da descidado pulso ALEno instante de leitura de ine struao, entre o per c odo S5 do ciclo de mquina. E poss que, se o pino, neste instante, estiver em a vel transiao, o Mc possa ler dado errado. Quando se escreveum dado no latch do pino do port, ele j c a aparece efetivamente na sa do latch durante o per da odo S6P2 do ultimo ciclo de mquina necessrio a a para nalizaao da referida instruao. Assim, s aparecer sicamente no pino, no instante S1P1 do c c o a prximo ciclo de mquina. o a Observe que s se pode ler com conabilidade um dado no pino do port que que presente por o tempo acima de 1 valor de S(com clock de 12 MHz teremos per odo S 1 s ou genericamente, per odo maior que 1 ciclo de mquina). a

2.3

Uso das Portas de I/O para a Expanso da Memria de Dados e Programa a o

As portas 0 e 2 possuem como funao alternativa, enderear memria extema, para que possamos c c o expandir a capacidade de dados e de programas no 8051. Neste caso, a porta 2 fornece a parte alta do endereo (A8-A15) e a porta 0 fornece, multiplexada no tempo, a parte baixa de endereo (AO-A7) e c c a via de dados (DO-D7). 0 pino 30 fornece o sinal ALE, que habilitar o latch de endereos a segurar a parte baixa do a c mesmo, para que os dados possam transitar peia porta 0. Os outros sinais de controle so o PSEN\, a o RD\ e o WR\. 0 sinal PSEN\ habilita a sa da memria de programa (permite a (eitura na Eprom externa) de da o forma que ativo quando a CPU deseja ler programa da memria externa. Neste instante, os sina e o s RD\ e WR\ esto em n 1. a vel Os sinais RD\ e WR\ somente so ativos caso a CPU execute instruoes de leitura e escrita na a c memria de dados externa (lembre-se de que as instruoes para memria externa so diferentes das o c o a instr coes para memria interna). Temos ento, que para leitura o pino RD\ ir a n 0, mantendo u o a a vel o pino WR\ = 1, e vice-versa para escrita. LEMBRETE: OS SINAIS RD\ E WR\ S AO GER DE PINOS DA PORTA 3 CONFORME VEREMOS NO ITEM 2.5 ADOS ATRAVES

Pgina 6 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

2.4

Seleo de Programa Externo ou Interno ca

O pino 31 tem a funao EA\ (extemal address) e quando em n c vel 1 diz a CPU para procu` raros primeiros 4 KBytes de programa intemamente, e o que exceder esta memria ser procurado o a extemamente. Quando em n vel 0, informa a CPU que deve procurar todos os passos de programa ` externamente, ignorando a memria interna. o OBSERVACAO: No confundir este pino com o bit EA, presente no registro IE. a Esta a opao utilizada quando se usa o 8031, que um 8051 mas que no tem a ROM interna, e c e a ou quando no se deseja arcar com as despesas de encomendar grande quantidade de peas do 8051 a c gravadas em fbrica. a DEVE FICAR CLARO QUE QUANDO SE UTILIZA MEM ORIA EXTERNA DE PROGRA NAO PODEREMOS MAIS UTILIZAR OS PINOS DAS PORTAS MAS, EM QUALQUER OPCAO 0 E 2 COMO I/0. Na gura 4, temos um esquema de Hardware onde colocamos 8 KBytes de programa e 8 KBytes de dados externos, sendo que neste caso, temos toda a memria de programa externa, utilizando 0 8031. o RD\ 1 0 1 0 WR\ 1 1 0 0 Funao c Espera Lendo na RAM Escrevendo na RAM No ocorre a

Tabela 2: Tabela de Acesso a RAM. `

Figura 4: Seleao Externa c

2.5

Uso dos Pinos da Porta 3 como funoes Alternativas c

A porta 3, conformej foi visto, pode ter seus pinos usados de forma independente como pinos de a funoes especiais. Por exemplo, para a expanso de memria de dados vista acima, so dois pinos da c a o a porta 3 que fomecem os sinais RD\ e WR\ para controle. Quando usamos os temporizadores internos como contadores de eventos, so outros dois pinos a desta porta que servem como entrada para o sinal de contagem. Se nosso projeto necessitar de interrupao extema, ser atravs de dois pinos desta porta que as mesmas sero sinalizadas a CPU. c a e a ` E nalmente, nos dois pinos restantes, temos os que permitem a implementaao do canal serial. A c maneira pela qual utilizamos ou no uma funao especial da porta 3, ser vista no momento em que a c a a estudarmos o canal serial. Com relaao aos pinos RD\ e WR\ so os unicos com os quais no precisamos nos preocupar, pois c a a seu controle efetuado pela CPU, e ca claro que se desejamos utilizar memria de dados externa, e o no utilizaremos estes pinos como I/0. a CASO QUALQUER UMA DAS FUNCOES ESPECIAIS ESTEJA SENDO UTI PODEREMOS MAIS ACESSAR A PORTA 3 COMO PORTA DE I/0 LIZADA, NAO PARA BYTE, APENAS COMO BIT ENDERECAVEL.

Pgina 7 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

2.6

Capacidade de Corrente nos Pinos de I/O

A porta 0, devido as suas caracter ` sticas de construao de dreno aberto (open-drain), pode fomecer c ou absorver 2 cargas TTL, e as portas 1, 2 e 3 podem absorver ou suprir uma carga TTL.

Modos de Endereamento das Instruoes c c

As instruoes operam com dados que podem ser endereados de vrias formas, motivo pelo qual c c a devemos saber muito bem os modos de endereamento que o microprocessador aceita. No caso da c fam 8051/52, etc, dispe-se dos seguintes modos: lia o 1.Registrador 2.Direto 3.Indireto 4.Imediato 5.Relativo 6.Absoluto 7.Longo 8.Indexado

3.1

Endereamento por Registrador c

As instruoes do 8051, quando se referem a registradores internos do microcontrolador, apresentamc se como oito registradores com nomes R0, R1, R2, R3, R4, R5, R6 e R7. 0 nome genrico destes e registradores Rn. e Por exemplo: add A,RO: Soma o conte do de Acom o conte do de ROe o resultado ca em A. u u No se esquea que, neste caso, precisamos saber antes para qual banco est apontado o microcontroa c a lador (nos bits PSW.4 e PSW.3). As instruoes que trabalham com registradores, acusam-no com o nome genrico Rn, em que n c e e o registrador espec co (n = 0 a 7). Este tipo de instruao codicado em apenas 1 byte. c e

OP CODE

RN

1 BYTE

3.2

Endereamento Direto c

As instruoes do 8051, que usam endereamento direto, referem-se aos registradores internos da c c RAM do microprocessador pelo seu mnemnico(apelido) ou seu endereo absoluto. Por exemplo: o c a) mov A,P3: Move para A o conte do do registrador P3, que o mesmo que o port f u e sico P3. b) mov A,30h: Move para Ao conte do do registrador. interno de endereo 30h. Este tipo de instruao u c c codicado em 2 bytes. e

Pgina 8 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

OP CODE

END. DIRETO

2 BYTE

3.3

Endereamento Indireto c

As instruoes do 8051, que usam endereamento indireto, fazem uso de um registrador, que s c c o pode ser o RO ou R1, para se referir a outra posiao de memria RAM. Por isto que indireto: o c o e registrador RO ou R1 aponta para um endereo, isto , ele contm o endereo de outra posiao de c e e c c para indicar que a operaao de endereo indireto. O nome genrico memria. Utiliza-se o s o mbolo c e c e desse registrador indireto Ri (i = 0 ou 1). Por exemplo: Supondo que temos na posiao 30hda e c RAM interna o valor 05em hexa e queremos nos referir a posiao 30h indiretamente pelo registrador ` c R1 , podemos fazer (vide gura 5)

RAM INT
CONTEUDO Posicao de Memoria 05 30h

MOV A,@R1
CONTEUDO

A=05

R1

30

01h 00h

Figura 5: Ilustraao da operaao de endereamento indireto c c c mov 30h,#05h: Carrego a poscao da RAM interna de endereo 30h, com o valor 05(conte do=05). c u mov R1,#30h: Carrego o registrador R1com o valor 30(conte do=30h). u mov A,@Rl: Carrego ou movo para Ao conte do da memria apontada por R1,que 30h, u o e isto , ele sabe que endereo indireto. Logo, ele sabe que o valor 30hdentro de R1 um e e c e endereo e no um conte do. Assim, ele vai na posiao de memria com endereo 30h, pega c a u c o c Pgina 9 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

o conte do de 30h, que 05, e carrega em A.Logo, A = 05 e no A = 30; entendeu? u e a

Olhando a ilustraao da gura 5 deste item para melhor compreenso e leia este texto de novo. c a Este tipo de instruao codicado em 1 byte. c e

OP CODE

Ri

1 BYTE

3.4

Endereamento Imediato c

As instruoes do 8051, quando se referem a endereamento imediato, signicam que o cdigo da c c o instruao j codicado junto com uma constante, chamado dado imediato. Operandos do tipo c a e imediato so precedidos do sinal #. Por exemplo: a mov A,#25: Move para A o valor 25 em decimal. mov A,#25h: Move para A o valor 25 em hexadecimal. mov A,#00100101b: Move para A o valor 25h em binrio. a mov DPTR,#1FFFh: Move para o DPTR, o endereo 1FFFem hexadecimal. c As instruoes deste tipo so de 2 bytes, ou de 3 bytes quando se usa o DPTR. c a

OP CODE

VALOR IMEDIATO

1 BYTE

1 OU 2 BYTES

A unica exceao a ` c e nstruao [mov DPTR,#data(16)], que de 3 bytes, pois o endereo dela de c e c e 2 bytes (16 bits).

3.5

Endereamento Relativo c

As instruoes do 8051, com endereamento relativo, so utilizadas com instruoes que permitem c c a c realizar um pulodireto no passo cadenciado de um programa. Este endereo relativo (chamado oc set) um dado de 8 b` com s` e ts nal, ` , realiza um salto relat` ao endereo que est no Program sto e vo c a Counter, PC, de -128 a +127 pos`coes. Este endereo relativo l` c e gado a instruao por um outro byte. ` c Antes de achar o endereo f` c nal de salto, o PC incrementado ao endereo da prxima instruao e este e c o c o endereo ao qual se soma o endereo relativo: vide ilustraao seguinte, pois a explicaao verbal e c c c c e muito dif de absorver. Vejamos o exemplo: cil

Pgina 10 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

CODIGO NA ROM
0100 0101 0102 0103 0104 0105 0106 0107 0108

ROM
80 03

SJMP DESVIO= Salto pequeno para DESVIO


Exemplo 1: 80 DESVIO = 8003h
Endereco de DESVIO=03 Codigo do comando

xx

PC (Apos o inicio da instrucao SJMP 03=8003h)

PC+3

OBS: Em geral, no fazemos estas contas, pois o compilador, quando usamos laa bels(nomes) como desvio, calcula tudo isto sozinho automaticamente. As instruoes deste tipo so de 2 bytes c a

OP CODE

PONTO RELATIVO

3.6

Endereamento Absoluto c

Instruoes do 8051, que se utilizam de endereo absoluto, so as ACALL e AJMP. So instruoes c c a a c de 2 bytes que permitem desvio de at 2 Kbytes relativo, em apenas 2 bytes (endereo total da e c faixa teria que ser em 3 bytes; no ?). a e

3.7

Endereamento Longo c

As instruoes no 8051, que usam endereamento do tipo longo, so LCALL e LJMP. Permitem c c a endereamento de 16 bits que mapeia todo o espao dispon de endereos (64 Kbytes). A unica c c vel c desvantagem destas instruoes que elas consomem 3 bytes de programa, o que s ser c e o a um problema quando o processo exigir tempo de execuao muito pequeno (em que 1 s a c mais ou a menos vital, por exemplo). Tem o problema, tambm, de ser um endereo absoluto que e e c no muda; logo, se voc necessita executar esse programa em outra parte do espao de memria, deve a e c o repensar neste endereo absoluto, ou se utilizar sempre de labelsna criaao do programa, para que, c c na compilaao, o compilador acerte os endereos absolutos para voc. c c e Este tipo de instruao consome 3 bytes: c

3.8

Endereamento Indexado c

As instruoes do 8051, que usam endereamento do tipo indexado, so JMP ou MOVC em uma c c a de suas formas. So instruoes cujo endereo de destino depende no s do endereo inserido na a c c a o c melhor explic-los com um exemplo: instruao, mas tambm do conte do de Anaquele instante. E c e u a jmp @A+DPTR: Salta para a posiao dada pelo DPTR + conte do de A, isto , o Apode c u e ser um contador de passos e o DPTR um ponteiro de faixas. Supondo que: DPTRH = meses do ano e An = dias do ms. Logo, o DPTR aponta para a ucabeada tabela de cada ms, e em Aeu e c e insiro 0 ndicedo dia do ms desejado. Assim, se vario An, j estou alterando o dia daquele ms e a e xo, sem alterar mais o DPTR. Pgina 11 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

4
4.1

Temporizadores e Contadores
Introduo ca

O 8051 tem dois registros contadores de 16 bits, denominados TIMER 0 e TIMER 1, dedicados as funoes de contagem e temporizaao (counter/timer-contador/temporizador). H uma importante ` c c a distinao entre os conceitos de contador e temporizador. c Quando opera como temporizador, o registro incrementado a cada ciclo de mquina (usa como e a base o cristal da CPU). O sinal de contagem aparece com 1/12 da freqncia do clock. ue Quando opera como contador, o registro incrementado de acordo com o sinal que se coloca nas e entradas T1 e T0, ou seja, o contador opera a cada transiao de 1 para 0 (borda de descida ) na c entrada T0 ou T1. Deve-se ter um cuidado quando em operaoes em modo contador: j se sabe que as entradas so c a a amostradas durante S5P2 de cada ciclo de mquina (gura 1). Quando em um ciclo de mquina a a a entrada detectada em 1 e depois em 0, no prximo ciclo o contador incrementado. O incremento e o e acontece em S3P1 do ciclo seguinte ao que foi detectada a transiao. Para garantir que o n correto c vel tenha sido amostrado, necessrio que o sinal de entrada (o sinal que vai acionar os contadores) pere a manea pelo menos um ciclo de mquina em n alto e pelo menos outro ciclo de mquina em n c a vel a vel baixo, quer dizer, a mxima freqncia que responder o contador de 1/24 da freqncia de clock. O a ue a e ue sinal de entrada pode ter qualquer duty cycle, desde que se respeite a restriao antes mencionada. c

4.2

Registros Envolvidos

Dois registros SFR so utilizados para controlar as funoes e operaoes do temporizador/contador: a c c em TMOD especica-se o modo de operaao e em TCON controla-se a operaao. A gura 6 ilustra c c o registro TMOD e a gura 7 ilustra o registro TCON.

Pgina 12 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Figura 6: Descriao do Registro TMOD c GATE especica como ser feito o controle: a se GATE = 1 conta somente se TR1=1 e INT1=high, (idem para TR0 e INT0) se GATE = 0 conta somente se TR1=1 (controle somente por software) (GATE especica se INT1 ser usado para controlar o funcionamento do contaa dor/temporizador pode ser usado para medir a largura de pulsos externos ligados a INT0 ou INT1)

C/*T

seleciona modo contador ou temporizador: se C/*T = 1 modo contador (conta usando a entrada T1) se C/*T = 0 modo temporizador (conta a cada ciclo de mquina) a

M1 0 0 1 1

M0 0 1 0 1

seleciona o modo de operaao: c THi temporizador/contador de 8 bits e TLi um pre-scaler de 5 bits, e e THi e TLi formam um temporizador/contador de 16 bits, contador/temporizador de 8 bits com auto-recarga (TLi conta e THi valor para recarga), TL0 contador/temporizador de 8 bits (usando TR0, *INT0 e TF0) TH0 contador/temporizador de 8 bits (usando TR1, *INT1 e TF1) TH1 e TL1 parado (mas pode operar em outros modos)

Pgina 13 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Figura 7: Descriao do Registro TCON c TF1 ag de transbordamento (overow) do contador/temporizador 1. Ativado por hardware quando h transbordamento no timer 1. E apagado por hardware quando o processamento a desviado para a rotina de interrupao. e c bit de partida/parada (run/stop) do contador/temporizador 1. ag de transbordamento (overow) do contador/temporizador 0. Ativado por hardware quando h transbordamento no timer 0. E apagado por hardware quando o processamento a desviado para a rotina de interrupao. e c bit de partida/parada (run/stop) do contador/temporizador 0. ag da interrupao externa 1. Ativada por hardware quando detectada uma interrupao. c e c Apagado por hardware (somente se for modo borda) quando a interrupao processada, c e ou seja, quando se desvia para a rotina de interrupao. c indica se a interrupao externa 1 opera por borda ou por n c vel: 1 borda de descida (), 0 n baixo. vel ag da interrupao externa 0. Ativada por hardware quando detectada uma interrupao. c e c Apagado por hardware (somente se for modo borda) quando a interrupao processada, c e ou seja, quando se desvia para a rotina de interrupao. c indica se a interrupao externa 0 opera por borda ou por n c vel: 1 borda de descida (), 0 n baixo. vel

TR1 TF0

TR0 IE1

IT1

E0

IT0

Pgina 14 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

4.3

Modos de operao ca

Os dois contadores/temporizadores (timer1 e timer0) podem trabalhar em 4 modos de operaao c que so selecionados empregando os bits M1 e M0 do registro TMOD. Os modos 0, 1 e 2 so iguais a a para os 2 contadores/temporizadores mas o modo 3 diferente. e

4.3.1

Modo 0

Este modo idntico para os dois contadores/temporizadores. Neste modo tem-se um contador e e de 8 bits com um divisor (pre-scaler) de 5 bits. Resulta ento em um contador/temporizador de 13 a bits, compat com o que havia no MCS-48. Os 13 bits so formados pelos 8 bits do registro THi vel a e pelos 5 bits menos signicativos do registro TLi. Os outros 3 bits do TLi so indeterminados. O a transbordamento (overow) gerador quando a contagem faz a transiao de 1FFFH para 0000; neste e c instante ativa-se o bit de overow (TF1 ou TF0). A gura 8 apresenta um diagrama em blocos do contador/temporizador 1 operando em modo 0. A mesma gura vlida para o contador/temporizador 0. e a O controle da contagem simples: e se GATE = 0, TR1 controla o contador/temporizador (controle por software) se GATE = 1, TR1 e INT1 controlam o contador/temporizador (permite tambm um controle e externo por hardware)

Figura 8: Diagrama de Blocos para o TIMER 1 em MODO 0

Pgina 15 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

4.3.2

Modo 1

e Este modo de operaao o mais simples e por isto muito utilizado. E idntico ao modo 0, mas c e e os contadores so de 16 bits. A gura 9 ilustra o diagrama em blocos para este modo, que idntico a e e para os dois timers.

Figura 9: Diagrama de Blocos para o TIMER 1 em MODO 1

4.3.3

Modo 2

Neste modo tem-se um contador/temporizador de 8 bits (TLi) com registro de recarga (THi) para quando ocorre o transbordamento. Neste modo os dois contadores/temporizadores operam de forma idntica. O transbordamento (overow) no somente ativa TFi como tambm recarrega TLi com o e a e valor guardado em THi (este permanece inalterado). O valor de recarga deve ser fornecido por software.

Figura 10: Diagrama de Blocos para o TIMER 1 em MODO 2

Pgina 16 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

4.3.4

Modo 3

Este o unico modo onde os contadores/temporizadores tm um comportamento diferente. Neste e e modo, o contador/temporizador 1 simplesmente suspende a contagem ( como se estivesse com e TR1=0), enquanto o contador/temporizador 0 se divide em dois contadores de 8 bits: TH0 contador/temporizador de 8 bits usando C/*T, GATE, TR0, *INT0 e TF0, TL0 contador/temporizador de 8 bits usando TR1 e TF1 (ou seja, provoca a interrupao do c timer 1). E como se existem 2 contadores/temporizadores de 8 bits (TH0 e TL0) e outro de 16 bits (timer 1). O timer 1, entretanto, pode ser usado para operar em qualquer outro modo (0, 1 ou 2) e usa-se o modo 3 para det-lo. No h problemas porque os modos so independentes. Tambm se pode usar o timer e a a a e 1 (em modo 2) para gerar o baud rateda porta serial.

Figura 11: Diagrama de Blocos para o TIMER 1 em MODO 3

Pgina 17 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

4.4
4.4.1

Exerc cios
LED 10HZ

Acender os leds vermelho, amarelo e verde a uma freqncia de 10 Hz. Para solucionar esse ue exerc necessrio gerar um retardo equivalente ao per cio e a odo de 10 Hz. A gura 12 ilustra o clculo a do valor do contador para gerar esse retardo.

Figura 12: Clculo de N para determinar uma frequncia a e Se F=10 Hz e CLOCK=3,575611 Hz, ento N=29797. Como este um contador que conta para a e cima, temos que subtrair este valor de 65536. Com isto, N=65536-29797=35739 ou 8B9BH. Na realidade, a freqncia gerada no ser exatamente 10 Hz mas de um valor muito prximo: ue a a o F = 3,575611 / 12*29797 = 9,99 Hz Ser utilizado o timer 0 no modo 1; a cada interrupao a rotina a c acende um novo led e recarrega o timer. TMOD GATE 0 IE EA 1 C/*T M1 M0 0 0 0 - - ES ET1 0 0 0 0 GATE C/*T M1 0 0 0 EX1 ET0 EX0 0 1 0 M0 1

;LED_10HZ.ASM; DEFSEG PROG, CLASS=CODE, START=0 SEG PROG ; DEZ_HZ ; EQU ORG AJMP ; ORG AJMP ; ORG INIC MOV MOV MOV MOV MOV MOV CLR SETB SJMP ; TIM0 ORG MOV MOV RLC MOV RETI END 100H TL0,#LOW DEZ_HZ ;REINICALIZAR TH0,#HIGH DEZ_HZ ;O CONTADOR A P1,A TL0,#LOW DEZ_HZ TH0,#HIGH DEZ_HZ TMOD,#1 ;TIMER 0 EM MODO 1 IE,#82H P1 ,#0 ;APAGAR TODOS OS LEDS A,#01001001B C TR0 $ 50H TIMER0 TIM0 35739 RESET INIC

Pgina 18 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

Notar que na rotina de interrupao est a recarga dos temporizadores que feita com a instruao c a e c MOV direto,#datamas que consome 2 ciclos de mquina, ou seja, que h um retardo que se acua a mula. Para evitar ou corrigir isso, pode-se adicionar ao contador o retardo da instruao; mais preciso c e usar MOV TL0,# LOW (DEZ HZ+2). Quando existem vrias interrupoes, no se sabe com certeza quando uma interrupao do tempoa c a c rizador pode ser aceita; isso implica um erro maior que se acumula. H uma soluao simples porque a c depois do transbordamento o temporizador segue contando e esta contagem exatamente o tempo e que atrasou o servio da interrupao; basta usar esse valor na recarga. c c As instruoes a seguir ilustram a idia. c e

MOV ADD MOV MOV

A,#LOW (DEZ_HZ+2) A,TL0 ;1 ciclo TL0,A ;1 ciclo TH0,#HIGH (DEZ_HZ+2)

Pgina 19 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

4.4.2

LED 1HZ

Acender os leds vermelho, amarelo e verde a uma freqncia de 1 Hz. A soluao idntica ao ue c e e exerc anterior, mas vai surgir uma diculdade ao calcular os valores de recarga: cio CLOCK=3575611 Hz e F=1 Hz N=3575611 / 12*1 = 297968 Como se pode ver, o valor de recarga muito grande (297 968 > 65 536) e impede a utilizaao do e c temporizador. Uma boa sa utilizar o esquema do exerc anterior (com 10 Hz) e adicionar, por da e cio software, um divisor por 10.

;LED_1HZ.ASM ; DEFSEG PROG, CLASS=CODE, START=0 SEG PROG ; DEZ_HZ DIVISOR ; EQU EQU ORG AJMP ; ORG AJMP ; INIC ORG MOV MOV MOV MOV MOV MOV MOV CLR SETB SJMP ORG MOV MOV DJNZ MOV RLC MOV RETI END 50H TL0,#LOW DEZ_HZ TH0,#HIGH DEZ_HZ R7,#DIVISOR ;PREPARAR DIVISAO POR 10 TMOD,#1 ;TIMER 0 EM MODO 1 IE,#82H P1,#0 ;APAGAR TODOS OS LEDS A,#01001001B C TR0 $ 100H TL0,#LOW DEZ_HZ ;REINICALIZAR TH0,#HIGH DEZ_HZ ;O CONTADOR R7,FIM ;DIVIDIR POR 10 R7,#DIVISOR A P1,A TIMER0 TIM0 32203 10 RESET INIC

; TIM0

FIM

Pgina 20 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

4.4.3

ONDA1

Gerar atravs de P1.7 uma onda com o seguinte formato: e

Figura 13: Sinal a ser gerado na P1.7 Usando N = (t*CLOCK)/12, calcula-se o valor de recarga para o temporizador. Sero programados a dois retardos alternadamente de forma a gerar o sinal pedido. Para t=1 ms N=298 65536-298=65238 Para t=40 s N=12 65536-12 =65524 ;ONDA1.ASM DEFSEG PROG, CLASS=CODE, START=0 SEG PROG ; SAIDA EQU P1.7 R_1MS EQU 65238 ;RETARDO DE 1 MILISEG R_40MICRO EQU 65524 ;RETARDO DE 40 MICROSEG ; ORG RESET AJMP INICIO ; ORG TIMER0 AJMP TIM0 ; ORG 50H INICIO MOV TL0,#LOW R_1MS MOV TH0,#HIGH R_1MS MOV TMOD,#1 ;TIMER 0 EM MODO 1 MOV IE,#82H ;EA=1 E ET0=1 CLR SAIDA SETB TR0 ;PARTIDA DO TIMER 0 SJMP $ ;LOOP INFINITO ; TIM0 JB SAIDA,LB1 ;2 CICLOS MOV TH0,#LOW (R_40MICRO+4) ;2 CICLOS MOV TL0,#HIGH (R_40MICRO+4) ;2 CICLOS SETB SAIDA ;1 CICLO RETI ;2 CICLOS LB1 MOV TH0,#LOW (R_1MS+4) MOV TL0,#HIGH (R_1MS+4) CLR SAIDA RETI END Notar que a rotina que atualiza o temporizador para gerar o retardo de 40 s consome 9 ciclos de mquina, quer dizer, consome 30,2 s. Pode parecer que se o tempo de 40 s fosse mudado para 25 a s no haveria soluao. a c Pgina 21 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

4.4.4

ONDA2

Gerar atravs de P1.7 uma onda com o seguinte formato: e

Figura 14: Sinal a ser gerado na P1.7 Usando N = (t*CLOCK)/12, calcula-se o valor de recarga para o temporizador. O segredo ser a trabalhar com o temporizador em modo 2 (os dois valores de recarga so menores que 256) e a rotina a de interrupao apenas muda o valor da recarga (que est em TH0). c a Para t=600 seg N=179 256-179=77 Para t=25 seg N=7 256-7 =249

;ONDA2.ASM DEFSEG PROG, CLASS=CODE, START=0 SEG PROG ; SAIDA R_600MICRO R_25MICRO ; EQU EQU EQU ORG AJMP ; ORG AJMP ; INICIO ORG MOV MOV MOV MOV CLR SETB SJMP JB MOV SETB RETI MOV CLR RETI END 50H TL0,#R_600MICRO TH0,#R_25MICRO TMOD,#2 IE,#82H SAIDA TR0 $ SAIDA,LB1 TH0,#R_25MICRO SAIDA ;PRIMEIRA CONTAGEM ;CONTAGEM SEGUINTE ;TIMER 0 EM MODO 2 ;EA=1 E ET0=1 ;PARTIDA DO TIMER 0 ;LOOP INFINITO ;2 ;2 ;1 ;2 CICLOS CICLOS CICLOS CICLOS TIMER0 TIM0 P1.7 77 249 RESET INICIO

;RETARDO DE 600 MICROSEG ;RETARDO DE 25 MICROSEG

; TIM0

; LB1

TH0,#R_600MICRO SAIDA

Pgina 22 a

Microprocessadores e Microcontroladores - 2a Unidade - Prof. Vitor Leo Filardi a

4.4.5

LEDS1

Acender os leds vermelho, amarelo e verde em seqncia, mudando a cada 10 pulsos em T1. Ser ue a usado o contador/temporizador 1 como contador e programado para operar em modo 2, com um valor de recarga igual a 246 (256-10). O acumulador e carry sero usados para acender os leds na seqncia a ue correta. TMOD GATE 0 C/*T 1 M1 1 M0 0 GATE 0 C/*T 0 M1 0 M0 1

IE

EA 1

ES 0

ET1 1

EX1 0

ET0 0

EX0 0

;LEDS1.ASM DEFSEG PROG, CLASS=CODE, START=0 SEG PROG ; CONTA_10 ; EQU 246

ORG RESET AJMP INICIO ; ORG TIMER1 AJMP TIM1 ; INICIO: ORG 50H MOV A,#01001001B CLR C MOV P1,A MOV TL1,#CONTA_10 MOV TH1,#CONTA_10 MOV TMOD,#60H MOV IE,#88H SETB TR1 SJMP $

;CARREGAR CONTADOR ;VALOR DE RECARGA ;CONTADOR 1, MODO 2 ;EA=1, ET1=1 ;LIGAR CONTADOR ;LOOP INFINITO

; TIM1: RLC A MOV P1,A RETI END

A chave SW3 aciona diretamente a entrada T1, mas h bouncing e por isso sero notadas mua a danas nos leds antes de 10 acionamentos. Para esse caso espec c co o bouncing dever ser eliminado a por hardware.

Pgina 23 a

Você também pode gostar