Sei sulla pagina 1di 73

Microprocessadores

Eng. Eltrica

Prof. Sandro Rodrigo G. Bastos

MICROPROCESSADORES

Prof. Sandro Bastos

SUMRIO
1.

BIESTVEIS ............................................................................................................................... 3
1.1.

Flip-Flop RS ..................................................................................................................................... 3

1.2.

Flip-Flop JK ...................................................................................................................................... 6

1.3.

Flip-Flop T ........................................................................................................................................ 7

1.4.

Flip-Flop D........................................................................................................................................ 8

1.5.

Preset e Clear................................................................................................................................... 9

1.6.

Flip-Flop JK Mestre-Escravo........................................................................................................... 10

1.7.

Transformao de Biestveis.......................................................................................................... 12

1.8.

Circuito Anti-Rudo (Debounce) ...................................................................................................... 15

2.

CONTADOR SNCRONO.......................................................................................................... 16

3.

MODELO SEQENCIAL .......................................................................................................... 23

4.

PAL ARRANJO LGICO PROGRAMVEL.......................................................................... 28

5.

MICROPROCESSADOR X MICROCONTROLADOR............................................................... 38

6.

O MICROCONTROLADOR 8051.............................................................................................. 39

7.

8.

6.1.

A Famlia 8051 ............................................................................................................................... 40

6.2.

Descrio da Pinagem.................................................................................................................... 40

6.3.

Oscilador Interno ............................................................................................................................ 42

6.4.

Reset.............................................................................................................................................. 43

6.5.

A Estrutura de Memria .................................................................................................................. 43

6.6.

Memria de Programa .................................................................................................................... 43

6.7.

Memria de Dados ......................................................................................................................... 44

6.8.

Registradores de Funo Especial.................................................................................................. 45

CONJUNTO DE INSTRUES DO 8051 ................................................................................. 50


7.1.

Modos de Endereamento .............................................................................................................. 50

7.2.

Instrues de Transferncia de Dados............................................................................................ 51

7.3.

Instrues Aritmticas..................................................................................................................... 54

7.4.

Instrues Lgicas.......................................................................................................................... 56

7.5.

Instrues Booleanas ..................................................................................................................... 57

7.6.

Instrues de Desvio ...................................................................................................................... 58

KIT DIDTICO SDM 9431......................................................................................................... 62


8.1.

9.

Operao do Kit Didtico ................................................................................................................ 62

ANEXO A: TABELA DE INSTRUES DO 8051 .................................................................... 64

10. ANEXO B: SISTEMA MNIMO COM O 8051 ............................................................................ 72


11. BIBLIOGRAFIA ........................................................................................................................ 73

Universidade Santa Ceclia

MICROPROCESSADORES

1.

Prof. Sandro Bastos

BIESTVEIS

Podemos considerar dois modelos de circuitos eletrnicos digitais: Combinacional e Seqencial. Nos
circuitos combinacionais as sadas dependem apenas das entradas no instante de tempo observado. Os
circuitos seqenciais se caracterizam por terem as sadas dependentes das entradas no instante de tempo
observado e no instante anterior, ou seja, possuem uma seqncia de operao.
Um dos componentes mais utilizados na implementao de circuitos seqenciais so os biestveis
(popularmente denominados de flip-flops ou latch). Os biestveis so circuitos que apresentam dois estados
estveis (0 e 1) na sada. Quando pela ao de um estmulo externo, em sua(s) entrada(s), passam de um
estado a outro, permanecendo at que outro estmulo seja dado novamente em sua(s) entrada(s). Por essa
caracterstica de manter um determinado estado que os biestveis so denominados tambm de elementos
de memria.
O biestvel funciona, portanto, como elemento armazenador de informao ou de memria. Existem
basicamente quatro tipos de biestveis:

Flip-Flop RS

Flip-Flop D

Flip-Flop JK

Flip-Flop T

Os biestveis podem ser assncronos ou sncronos. O tipo assncrono significa que o biestvel no
depende de relgio (clock) para seu funcionamento. J o tipo sncrono depende do relgio (clock), podendo ser
encontrados de duas maneiras: Nvel ou Borda. O quadro abaixo mostra a simbologia adotada para o
funcionamento do nvel alto ou baixo e tambm para a borda de subida ou descida.

Nvel Alto

Nvel Baixo

Vcc ou NL1

Gnd ou NL0

Borda de Subida Borda de Descida

1.1. Flip-Flop RS
a) RS Assncrono (Construdo com portas NOU)

Simbologia:

Circuito Interno:

Q
S

Tabela Verdade:
R

Mantm

Proibido

OBS: Na situao onde R = S = 1, denominamos de proibido porque no tem sentido lgico querer resetar e
setar ao mesmo tempo.

Universidade Santa Ceclia

MICROPROCESSADORES

Prof. Sandro Bastos

b) RS Assncrono (Construdo com portas NE)


A simbologia e a Tabela Verdade permanecem iguais, modificando apenas o circuito interno.

Circuito Interno:

S
Q

A seguir, vamos analisar o funcionamento


deste biestvel (RS assncrono) atravs do
Diagrama de Tempos, que um dos processos
mais importantes utilizados na tecnologia digital pela
facilidade de compreenso do funcionamento do
circuito.

Diagrama de Tempos:

R
S
Q

c) RS Sncrono (Nvel Alto)

Simbologia:

R Q
Ck
S Q

Circuito Interno:

S
Q
Ck
Q
R

Diagrama de Tempos:

Ck
S
R
Q

Universidade Santa Ceclia

MICROPROCESSADORES

Prof. Sandro Bastos

No biestvel sincronizado em nvel lgico alto, s alterada a sada, respeitando a tabela verdade do
tipo RS, enquanto o clock estiver em NL1, conforme pode ser verificado no diagrama de tempos anterior.

d) RS Sncrono (Nvel Baixo)


No biestvel sincronizado em nvel lgico baixo, s alterada a sada, respeitando a tabela verdade do
tipo RS, enquanto o clock estiver em NL0.

Circuito Interno:

Simbologia:

R Q
Ck
S Q

S
Q
Ck
Q
R

e) RS Sncrono (Borda de Subida)


O biestvel de borda de subida s tem a sua sada alterada conforme as condies de entrada E na
transio do clock (de NL0 para NL1), ou seja, mesmo que o clock esteja em nvel lgico alto, a sada no se
altera independente do que foi colocado em suas entradas.
A diferena do circuito de nvel alto para o de borda de subida consiste no acrscimo de um circuito
diferenciador colocado na entrada do clock fazendo com que o funcionamento do mesmo aps o diferenciador
seja exatamente igual ao de nvel alto.
Verifique pela ilustrao ao lado que no instante
em que o clock vai a nvel lgico alto, aps o
diferenciador (ponto X) vai de 0 para 1 e
instantaneamente volta para 0, permitindo assim
apenas uma leitura das entradas do biestvel, ou seja,
mesmo que o clock se mantenha em nvel lgico alto
a sada no se altera mesmo modificando as entradas
do flip-flop.

Ck
C

Circuito

Ck
X

A seguir temos o circuito completo do biestvel sncrono funcionando borda de subida. Na


representao simblica do flip-flop, aparece um pequeno tringulo que significa sincronismo borda. No
diagrama de tempos, podemos analisar o funcionamento deste flip-flop.

Simbologia:

R Q
Ck
S Q

Circuito Interno:

S
Q
Ck

C
R
Q

Universidade Santa Ceclia

MICROPROCESSADORES

Prof. Sandro Bastos

Diagrama de Tempos:

Ck
S
R
Q

Observe no diagrama de tempos da ilustrao anterior que a sada s tem possibilidade de ser alterada
no instante em que o clock vai de 0 para 1.

f)

RS Sncrono (Borda de Descida)

O biestvel de borda de descida s tem a sua sada alterada conforme as condies de entrada E na
transio do clock (de NL1 para NL0), ou seja, mesmo que o clock esteja em nvel lgico baixo, a sada no se
altera independente do que foi colocado em suas entradas.
A diferena do circuito de nvel baixo para o de borda de descida consiste no acrscimo de um circuito
diferenciador colocado na entrada do clock aps a porta inversora, fazendo com que o funcionamento do
mesmo aps o diferenciador seja exatamente igual ao de nvel baixo. A figura seguinte mostra o circuito
completo e a simbologia do biestvel sncrono funcionando borda de descida.
Na representao simblica do flip-flop aparece um pequeno tringulo e uma bolinha que significa
sincronismo borda de descida. Caso seja construdo o diagrama de tempos que representa esse biestvel,
conveniente lembrar que a sada s poder sofrer alterao na transio do clock de NL1 para NL0.

Simbologia:

R Q
Ck
S Q

Circuito Interno:

S
Q

C
Ck
R

Q
R

1.2. Flip-Flop JK
O biestvel JK s existe na configurao borda de subida ou descida, no sendo possvel existir no
formato assncrono ou em nvel. A seguir temos o smbolo lgico, a tabela verdade e um diagrama de tempos
como exemplo. Perceba que a tabela verdade do flip-flop JK muito parecida com a do tipo RS, sendo
diferenciada apenas na ltima linha da tabela.
O biestvel JK no pode existir na configurao em nvel devido condio de inverso do sinal de
sada, ou seja, imagine um JK funcionando em nvel alto: quando fosse colocada nas entradas J = 1 e K = 1 e o
clock em nvel lgico alto, a sada ficaria invertendo (0 1 0 1 .....) na ordem de microssegundos
enquanto o clock se mantiver em nvel lgico alto, perdendo assim o controle de funcionamento do flip-flop. Por
essa razo, s possvel existir o biestvel JK funcionando a borda de descida ou subida, pois quando o

Universidade Santa Ceclia

MICROPROCESSADORES

Prof. Sandro Bastos

relgio estiver na transio o flip-flop faz apenas uma nica leitura das condies de entrada, portanto s
inverte a sada uma vez.

Simbologia:

J Q
Ck
K Q

Tabela Verdade:
J

Mantm

Inverte

Diagrama de Tempos:

Ck
J
K
Q

1.3. Flip-Flop T
O biestvel tipo T s existe na configurao borda de subida ou descida, pelo mesmo motivo justificado
no biestvel tipo JK. Para melhor compreenso, vide abaixo o smbolo lgico, sua tabela verdade e um
diagrama de tempos como exemplo.

Simbologia:

T
Ck

Q
Q

Tabela Verdade:
T

Mantm

Inverte

Diagrama de Tempos:

Ck
T
Q

Universidade Santa Ceclia

MICROPROCESSADORES

Prof. Sandro Bastos

1.4. Flip-Flop D
O flip-flop tipo D o mais fcil dos biestveis, pois o sinal que estiver em sua entrada (D) o mesmo que
vai parar na sada (Q). Pode ser encontrado com ou sem clock. O flip-flop tipo D assncrono no tem muita
utilidade, pois uma vez que a sada copia a entrada instantaneamente (no tem clock), o seu funcionamento
deixa de ter sentido a menos que a inteno seja o de gerar um pequeno delay (atraso).

a) D Assncrono
Circuito Interno:

Simbologia:

Tabela Verdade;

Q
D

Diagrama de Tempos:

D
Q

b) D Sncrono (Nvel Alto)

A tabela verdade permanece igual, mudando a simbologia e o diagrama de tempos. Tambm existe o
biestvel tipo D funcionando em nvel baixo.

Simbologia:

Ck Q

Diagrama de Tempos:

Ck
D
Q

Universidade Santa Ceclia

MICROPROCESSADORES

Prof. Sandro Bastos

c) D Sncrono (Borda de Subida)

Tambm pode ser encontrado o biestvel tipo D funcionando a borda de descida.

Simbologia:

D
Ck

Q
Q

Diagrama de Tempos:

Ck
D
Q

1.5. Preset e Clear


O biestvel que contm estes dois terminais adicionais (preset e clear) o mais completo que existe,
pois possibilita ao usurio do circuito forar a sada a ser 0 ou 1, independente das condies de entrada e
do clock.
A funo preset fora a sada em NL1 nas seguintes condies (Clear = 1 e Preset = 0), ou seja, o
circuito foi pr-setado enquanto que a funo clear fora a sada em NL0 nas seguintes condies (Clear = 0
e Preset = 1).
importante lembrar que tanto o preset quanto o clear so funes soberanas e isso significa que a
sada forada conforme a necessidade do usurio independente da entrada e do clock.
Como exemplo, a seguir tem um flip-flop tipo RS sncrono com borda de subida, e com os terminais de
Preset e Clear. Os outros biestveis tambm podem ser encontrados nesta configurao. A tabela verdade
apresenta mais duas entradas (Preset e Clear). Verifique na tabela que quando foramos uma sada atravs do
preset ou clear independente do que tenha na entrada R ou S, a mesma permanece inalterada.

Simbologia:

Circuito Interno:
Cl

Pr
R
Q
Ck
S Cl Q

Q
C

Ck
R
Q

R
Pr

Universidade Santa Ceclia

MICROPROCESSADORES

Prof. Sandro Bastos

Tabela Verdade:

Pr

Cl

Proibido

Mantm

Proibido

1.6. Flip-Flop JK Mestre-Escravo


Um biestvel mestre-escravo (master-slave) uma combinao de dois flip-flops sincronizados, onde o
primeiro o mestre e o segundo o escravo. A figura a seguir mostra o circuito e um diagrama de tempos que
representa o funcionamento deste tipo de biestvel.

Circuito Interno:
MESTRE

ESCRAVO
Qm
Q

Ck
Q

K
Qm

Diagrama de Tempos:

Ck
J
K
Qm
Q

Na subida do pulso de clock, os valores introduzidos nas entradas J e K acionam o circuito do mestre.
Logo aps a descida do pulso do clock, o circuito do escravo acionado copiando a mesma sada ocorrida no
mestre Qm.

Universidade Santa Ceclia

10

MICROPROCESSADORES

Prof. Sandro Bastos

Quando o clock assume nvel lgico alto, as portas lgicas do mestre modificam sua sada (Qm)
conforme os valores introduzidos nas entradas J e K. Neste momento, o escravo fica desabilitado devido a
porta inversora do circuito eltrico, fazendo com que a sada do circuito (sada do escravo) fique inalterada.
Quando o clock assume nvel lgico baixo, as portas lgicas do mestre ficam desabilitadas, o que
impede o acesso dos valores introduzidos nas entradas J e K. Neste momento as portas lgicas do escravo
so habilitadas permitindo a ao do mestre sobre o escravo, ou seja, as sadas do mestre passam a ser as
entradas do escravo, garantindo assim a execuo do funcionamento do biestvel conforme previsto.
Para o circuito executar corretamente a tabela verdade do biestvel JK, as entradas J e K no devem
mudar enquanto o clock estiver em nvel lgico alto. Por exemplo: se J = 0, K = 0 e Q = 1, esperado que a
sada no mude aps a aplicao de um pulso de clock. Contudo, se enquanto o clock estiver em nvel lgico
alto ocorrer um transitrio na entrada K, ou seja, K assume o valor 1 e volta em seguida para 0, ento ocorrer
mudana na sada aps a descida do pulso do clock. Isto significa que no devemos usar esse tipo de flip-flop
em ambientes nos quais as entradas J e K possam mudar enquanto o clock estiver em NL1. Neste caso,
devemos usar o biestvel comum.

Exerccio 1: Dado o circuito, desenhe as formas de onda nas sadas Q0, Q1 e Q2, considerando que
inicialmente estas sadas esto em nvel lgico baixo.

Q0

J Q1

R Q2

Q0

K Q1

S Q2

Ck

Ck
t
E
t
Q0
t
Q1
t
Q2
t

Universidade Santa Ceclia

11

MICROPROCESSADORES

Prof. Sandro Bastos

Exerccio 2: Dado o circuito, desenhe as formas de onda nas sadas Qa, Qb e Qc, considerando que
inicialmente estas sadas esto em nvel lgico baixo.

CK

R
S

Qa

Qa

Qb
Qb

Qc

t
E

Qc

t
CK

Qa

t
Qb

t
Qc

Exerccio 3: Dado o circuito, desenhe as formas de onda nas sadas Qa, Qb e Qc, considerando que
inicialmente estas sadas esto em nvel lgico baixo.

CK

R
S

Qa
Qa

Qb
Qb

J
K

Qc
Qc

t
E

t
CK

Qa

t
Qb

t
Qc

1.7. Transformao de Biestveis


A partir de um flip-flop, pode-se construir um outro qualquer. Basta fazer a correspondncia entre a
operao (tabela verdade) do biestvel que se tem e a operao do biestvel que se deseja. Para um melhor
entendimento, veja o exemplo:

Universidade Santa Ceclia

12

MICROPROCESSADORES

Prof. Sandro Bastos

Exemplo: A partir do flip-flop tipo RS transformar no flip-flop tipo T.

O primeiro passo desenhar as tabelas verdade do flip-flop que se tem e o desejado. Estas tabelas
representam o que acontecer com a sada conforme as condies das entradas, por exemplo: na tabela do
tipo T, quando a sada QN = 0 e na entrada do flip-flop T for colocado T = 0, a sada futura ser QN+1 = 0.
Flip-Flop Desejado

Flip-Flop Atual

QN QN+1

QN QN+1

0 0

0 0

1 1

1 1

0 1

0 1

1 0

1 1

0 0

1 0

0 X

1 X

A partir das tabelas verdade obtemos as equaes que vo representar as entradas do flip-flop (que se
tem), da seguinte maneira:

T
QN

T
0
0 X
1

1
0
1

QN

0
0 0
1

R = T.Q

1
1

S = T.Q

Para preencher os valores internos dos Mapas de Karnaugh, deve-se analisar de forma independente
cada clula, por exemplo: verifique que a primeira clula de cada um dos Mapas de Karnaugh representa que a
sada QN = 0 e ser colocado na entrada T = 0; assim, consultando a tabela verdade do flip-flop (desejado)
nota-se que a sada vai de 0 para 0 (QN = 0 QN+1 = 0). Procura-se ento na outra tabela verdade (flip-flop
atual) o mesmo efeito, concluindo-se que isto ocorre em duas oportunidades: para R = 0 e S = 0 e tambm
para R = 1 e S = 0. Portanto R irrelevante (j que pode ser R = 0 ou R = 1) enquanto que S com certeza 0.
Repare ento que na primeira clula do Mapa de
Karnaugh da esquerda (representa a equao da entrada R)
foi preenchida com irrelevncia X, enquanto que na primeira
clula do Mapa de Karnaugh da direita (representa a equao
da entrada S) foi preenchida com 0. As demais clulas
seguem o mesmo raciocnio para preenchimento.
Uma vez que os dois Mapas de Karnaugh foram
inteiramente preenchidos, devem-se obter as equaes.
Obtidas as equaes, basta implementar o circuito com o flipflop que se tem, conforme ilustra a figura ao lado.

Universidade Santa Ceclia

Flip-Flop Tipo T

T
Ck

13

MICROPROCESSADORES

Prof. Sandro Bastos

Exerccio 4: A partir do flip-flop tipo JK transformar no flip-flop tipo D.

Resposta:

Exerccio 5: A partir do flip-flop tipo RS transformar no flip-flop tipo JK.

Resposta:

Universidade Santa Ceclia

14

MICROPROCESSADORES

Prof. Sandro Bastos

1.8. Circuito Anti-Rudo (Debounce)


um circuito utilizado para reduzir os problemas provocados por chaves nos circuitos digitais. As chaves
podem ter problemas na transio de um terminal para outro, deixando de fazer contato com os terminais por
um breve perodo de tempo. Outro problema o mal-contato por problemas de zinabre, ferrugem, etc.
Na figura seguinte temos um exemplo de circuito de debounce, alm das formas de onda nos pontos A e
B (contatos da chave) e o ponto S (sada do circuito).

Observe no circuito que no ponto em que a chave est encostada (A ou B), o terminal da porta NE em
questo fica em nvel lgico baixo, pois a corrente circula do Vcc at o Gnd, sendo dissipada por completo pelo
resistor. Claro que no ponto em que a chave no est encostada, o terminal da porta NE fica em nvel lgico
alto. Assim, sempre que se desejar enviar nvel lgico alto para o circuito digital deve-se colocar a chave na
posio A; para enviar nvel lgico baixo deve-se colocar a chave na posio B.

Universidade Santa Ceclia

15

MICROPROCESSADORES

2.

Prof. Sandro Bastos

CONTADOR SNCRONO

Uma combinao binria presente nas sadas do contador denominada de estado do contador. A
seqncia das combinaes binrias assumidas pelas sadas do contador em funo dos pulsos do clock pode
ser natural ou no. Por exemplo: podemos projetar um contador para assumir uma seqncia de estados que
corresponde a decimais consecutivos crescentes (0, 1, 2, 3, ...) ou decrescentes (..., 3, 2, 1, 0), ou ainda, para
assumir uma seqncia no natural (7, 3, 1, 4, 0, 2). Para melhor entendermos o procedimento a ser seguido
para executar uma contagem qualquer que se fizer necessrio, vamos adotar um exemplo e a partir deste
poderemos desenvolver qualquer outra contagem.

Exemplo: Implemente o circuito "contador sncrono" de acordo com a seqncia abaixo, utilizando apenas flipflops do tipo RS.
6, 1

Diagrama de Estados

3, 0

0, 1

4, 1

7, 0

1, 0

5, 1

2, 1

Uma vez definida a ordem da contagem atravs de um fluxograma denominado de Diagrama de


Estados, devemos agora construir a Tabela de Transio do biestvel escolhido. Neste caso, devemos partir
da tabela verdade do biestvel RS, conforme explicao a seguir.

QN QN+1

Mantm

00

01

10

Proibido

11

O preenchimento da tabela de transio feito a partir da anlise feita na tabela verdade do biestvel a
ser utilizado. A primeira coluna da tabela de transio refere-se passagem da sada atual para a sada futura
quando se introduzir um valor para as entradas R e S do flip-flop em questo. Por exemplo: analisando a
primeira linha da tabela de transio, pergunta-se:

Qual valor devemos introduzir nas entradas R e S do flip-flop de tal maneira que a sada atual v de
NL0 para uma sada futura tambm igual a NL0?.

Resposta: Existem duas possibilidades: R = 0 e S = 0 ou R = 1 e S = 0. Portanto, como a entrada R


uma vez NL0 e a outra vez NL1, ento tanto faz seu nvel lgico, ou seja, irrelevante (dont care X);
enquanto que a entrada S em ambas as situaes NL0, ento com certeza essa entrada tem que ser NL0.
Desenvolvendo esse mesmo raciocnio, podemos ento preencher toda a tabela de transio do biestvel

Universidade Santa Ceclia

16

MICROPROCESSADORES

Prof. Sandro Bastos

facilmente. Obviamente podemos concluir que cada biestvel tem a sua prpria tabela de transio. Concluda
a tabela de transio, o prximo passo a construo da Tabela Lgica de Contagem, conforme mostrado
abaixo.

TABELA LGICA DE CONTAGEM


ESTADOS

FLIP-FLOPS

DEC.

QA

QB

QC

RA

SA

RB

SADA

SB

RC

SC

A coluna de ESTADOS colocada na ordem crescente independente da ordem da contagem. Vamos


analisar a primeira linha da tabela:
Verifique que na primeira linha o estado representativo em decimal o 0, ou seja, QA = 0, QB = 0 e QC
= 0 e a partir da verifica-se no diagrama de estados qual o prximo estado pretendido aps o pulso de clock.
No caso do nosso exemplo vai do estado 0 para o estado 4. A situao a seguir verificar que para ir do
estado 0 para o 4, o QA vai de NL0 para NL1, ou seja, de 0 1. Com essa informao, deve-se ir at a
tabela de transio do biestvel RS e observar o que acontece se a sada for de 0 para 1. Nesse caso o R =
0 e S = 1, portanto conclumos que na primeira linha (estado 0) o RA fica igual a 0 e o SA igual a 1, devendo
ser preenchido na Tabela Lgica de Contagem.
Para preencher a coluna do RB e SB segue-se a mesma lgica, ou seja, verifica-se que para ir do estado
0 para o estado 4 o QB vai de NL0 para NL0 (0 0). Consultando ento a tabela de transio do flip-flop RS
verifica-se que nesse caso o R = X e o S = 0, portanto RB = X e SB = 0. Finalmente em relao ao RC e SC
verifica-se que para ir do estado 0 para o estado 4 o QC vai de NL0 para NL0 (0 0). Consultado a tabela
de transio verifica-se que o R igual irrelevncia e o S igual a 0, portanto RC = X e SC = 0. A coluna SADA
preenchida com relao ao estado em que se est analisando, por exemplo, no estado 0 verifica-se no
diagrama de estados que a sada desejada NL1. Portanto, no estado 0 temos SADA = 1. As demais linhas
da tabela lgica de contagem seguem o mesmo raciocnio. O prximo passo a obteno das equaes de
cada entrada dos flip-flops (RA, SA, RB, SB, RC, SC e SADA). Para isso, basta transpor os dados de cada
entrada de cada biestvel para as tabelas de Veitch-Karnaugh a seguir.

OBTENO DAS EQUAES

QC

QA QB
00
0

01

11

10

QC

QA QB
00
0

01

11

10

1
RA =

Universidade Santa Ceclia

SA =

17

MICROPROCESSADORES

QA QB
QC
00
0

01

Prof. Sandro Bastos

11

QA QB
QC
00
0

10

11

10

01

11

10

1
RB =

QA QB
QC
00
0

SB =

01

11

10

QC

QA QB
00
0

1
RC =

QC

01

QA QB
00
0

SC =

01

11

10

1
SADA =

Cada Mapa de Karnaugh pertence a uma das entradas dos biestveis. Para o preenchimento dos Mapas
de Karnaugh, basta pegar o dado referente ao cruzamento de cada combinao de QA, QB e QC da tabela
lgica de contagem com a entrada escolhida do biestvel. A partir das equaes obtidas, o prximo passo a
implementao do circuito eletrnico utilizando os biestveis pr-determinados pelo projeto.

CIRCUITO ELETRNICO

RA QA

RB QB

RC QC

SA QA

SB QB

SC QC

O exemplo dado possibilita o entendimento do raciocnio lgico para criao de qualquer seqncia de
contagem, porm, caso o interesse seja simplesmente um contador crescente ou decrescente os circuitos
eletrnicos a seguir ilustram uma maneira simples de criao desse tipo de contador.

Universidade Santa Ceclia

18

MICROPROCESSADORES

Pulsos

Prof. Sandro Bastos

Contador Crescente

Contador Decrescente

(Clock)

10

11

12

13

14

15

CONTADOR CRESCENTE:

Clock

1
1

J Q
Ck
K Q

1
1

J Q
Ck
K Q

1
1

J Q
Ck
K Q

1
1

J Q
Ck
K Q

CONTADOR DECRESCENTE:

Clock

1
1

Universidade Santa Ceclia

J Q
Ck
K Q

1
1

J Q
Ck
K Q

1
1

J Q
Ck
K Q

1
1

J Q
Ck
K Q

19

MICROPROCESSADORES

Prof. Sandro Bastos

Nos circuitos eletrnicos das figuras anteriores, devemos considerar que o estado inicial igual a 0 no
contador crescente (DCBA = 0000) enquanto que o estado inicial igual a 15 no contador decrescente
(DCBA = 1111).
Simulando os circuitos, verifica-se que a cada pulso de clock (automtico ou manual) os biestveis
mudam de estado de forma crescente ou decrescente. Observa-se que a diferena de um circuito para outro se
encontra apenas nos clocks dos biestveis B, C e D, ou seja, enquanto que no contador crescente os clocks
esto ligados nas sadas normais (Q) do biestvel anterior, no contador decrescente esto ligados nas sadas
invertidas (/Q) do biestvel anterior.

Exerccio 1: Implemente o circuito "contador sncrono" de acordo com a seqncia abaixo, utilizando apenas
flip-flops do tipo RS.
2, 0

0, 0

3, 1

1, 1

Resposta:

Universidade Santa Ceclia

20

MICROPROCESSADORES

Prof. Sandro Bastos

1, 0

0, 1

6, 0

4, 1

3, 1

7, 0

Exerccio 2: Implemente o circuito "contador sncrono" de acordo com a


seqncia ao lado, utilizando apenas flip-flops do tipo T.

Resposta:

Universidade Santa Ceclia

21

MICROPROCESSADORES

Prof. Sandro Bastos

0, 0

2, 0

5, 1

6, 0

1, 1

3, 1

7, 1

4, 0

Exerccio 3: Implemente o circuito "contador sncrono" de acordo com a


seqncia abaixo, utilizando apenas flip-flops do tipo JK.

Resposta:

Universidade Santa Ceclia

22

MICROPROCESSADORES

3.

Prof. Sandro Bastos

MODELO SEQENCIAL
Existem dois tipos de modelos de estruturas digitais: combinatrio e seqencial.

Circuito Combinatrio: As sadas do sistema so funes booleanas binrias apenas das entradas, ou
seja, o conjunto de sadas fornecido pelo sistema num instante t perfeitamente determinado conhecendo-se
o conjunto das variveis de entrada aplicado a ele nesse instante.

e1
e2

s1 = f1(e1, e2, ..., en)


s2 = f2(e1, e2, ..., en)

Sistema Combinatrio

en

sm = fm(e1, e2, ..., en)

Circuito Seqencial: Neste caso, as sadas so funes booleanas (binrias) no apenas das entradas,
mas tambm do estado interno do sistema seqencial. Estas funes podem ser definidas de duas maneiras
distintas (porm equivalentes) de acordo com a adoo do modelo de Mealy ou de Moore para representao
da mquina seqencial.

Modelo de Moore: A funo de sada determinada pelo estado presente, e a atualizao de


estado (futuro) depende da entrada presente, e do prprio estado.

Equao de Sada: S(tN) = f[X(tN)]

Equao de Estado: X(tN + 1) = g[X(tN) e E(tN)]


Onde:

E e S entradas e sadas do sistema


X estado interno
F e G so funes da lgebra binria
representa um elemento de memria, capaz de armazenar o estado interno do sistema
durante um certo tempo t.

Modelo de Mealy: Neste modelo, tanto a funo de sada com a de atualizao de estado,
dependem da entrada e do estado presente.

Equao de Sada: S(tN) = f[X(tN) e E(tN)]

Equao de Estado: X(tN + 1) = g[X(tN) e E(tN)]


Onde:

E e S entradas e sadas do sistema


X estado interno
F e G so funes da lgebra binria
representa um elemento de memria, capaz de armazenar o estado interno do sistema
durante um certo tempo t.

Analisando-se os modelos descritos, percebe-se que o Modelo de Moore um caso particular do Modelo
de Mealy; porm, ambos so equivalentes. A compreenso do funcionamento do Modelo de Moore ou mesmo
o de Mealy torna-se muito difcil sem que se tenha visto exemplos prticos, portanto, importante o estudante

Universidade Santa Ceclia

23

MICROPROCESSADORES

Prof. Sandro Bastos

de sistemas digitais voltar a analisar os modelos descritos anteriormente logo aps o entendimento da
representao de problemas atravs do processo da Tabela Primitiva de Fluxo que ser estudado a seguir.

TABELA PRIMITIVA DE FLUXO

um mecanismo de descrio de tarefas seqenciais, e como tal, deve permitir que se represente de
forma precisa o comportamento do sistema em estudo. Como os sistemas estudados neste curso processam
informaes digitais e evoluem por estados internos, esta tabela deve fixar estes estados e seu
relacionamento. Deve tambm permitir o conhecimento das sadas do sistema para um determinado conjunto
de entradas que lhe foi aplicado.

Entradas
Estados
00

01

11

Prximo
Estado

10

Sadas

1
2
3

X, S1 S2

4
5

A tabela primitiva de fluxo tem a forma mostrada acima, onde as colunas representam todas as
combinaes possveis das entradas permitidas no sistema, e as linhas representam os estados internos tidos
como necessrios. A construo da tabela primitiva de fluxo se faz na medida em que a tarefa vai sendo
descrita, e tem como caracterstica bsica possuir apenas um estado estvel por estado interno (um estado
estvel por linha da tabela). Um determinado conjunto de entradas permitidas (identificao das colunas),
aplicadas quando o sistema se encontra em um determinado estado interno (identificao da linha), define uma
nica clula da tabela primitiva de fluxo, que ser denominado de Estado Total do sistema. Nesta clula
dever constar o prximo estado interno (atualizao de estado) e as sadas que o sistema apresenta para o
conjunto de entradas que lhe foi aplicado. A tarefa estar com sua descrio completa, quando todas as
clulas (estados totais) da tabela primitiva tiverem sido preenchidas.
Segue um exemplo de preenchimento da tabela primitiva de fluxo na soluo de problemas elementares:

Exemplo: Considere o dispositivo conforme esquematizado abaixo:

D
E

Contato
A

Contato
B

Carro

D
Boto M

Universidade Santa Ceclia

E
Motores

24

MICROPROCESSADORES

Prof. Sandro Bastos

Nesta figura, D (direita) e E (esquerda) so motores alimentados por rels do mesmo nome. Quando E
alimentado, o carro se desloca da direita para a esquerda; quando D alimentado, o carro se desloca da
esquerda para a direita. A e B so dois contatos de fim de curso indicando que o carro se encontra em uma
destas duas posies. Deseja-se descrever um ciclo de operao do carro tal que, se for acionado o boto M
quando o carro estiver em repouso em A, ele deve deixar o contato A, ir at B e voltar novamente ao contato A,
onde pra e espera que o boto de presso M seja novamente acionado. Supor tambm que sempre que o
carro deixar A iniciando o movimento, no ser permitido apertar novamente o boto M at que o ciclo seja
completado.
Para construir a tabela primitiva de fluxo do problema, deve-se inicialmente definir suas entradas e
sadas:

Entradas: Boto M (inicia o movimento do carro)


Contato A (fim de curso)
Contato B (fim de curso)
Sadas:

Rel D (motor da direita)


Rel E (motor da esquerda)

O fato de o sistema possuir trs entradas binrias que so: M, A e B, permite combinar estas entradas
de 23 = 8 maneiras distintas, fazendo com que a tabela de fluxo possua um mximo de 8 colunas. Admita que,
por imposio do projeto, nunca ir ocorrer A = 1 e B = 1 ao mesmo tempo. Isto elimina a necessidade de
analisar duas colunas (011 e 111) da tabela.

TABELA PRIMITIVA DE FLUXO

MAB
Estados
000

001

011

010

110

111

101

100

0, 00

1, 00

3, 01

2, 01

1, 01

6, 01

3, 01

2, 01

3, 01

4, 01

5, 10

4, 10

5, 10

0, 10

3, 01

6, 01

6, 01
Prximo Estado
Interno

Sadas (E, D)

Continuando a anlise da tabela primitiva de fluxo, conclumos tambm que: como M um boto de
presso, e supondo que ele no pode ser apertado durante o percurso do carro, admitimos que no possvel
ter M = 1 e B = 1, o que elimina mais uma coluna (101) da tabela, restando apenas 5 colunas para serem

Universidade Santa Ceclia

25

MICROPROCESSADORES

Prof. Sandro Bastos

analisadas, que correspondem ao conjunto de entradas permitidas no sistema. A descrio a seguir deve ser
acompanhada pela tabela j preenchida.
Escolher um estado inicial de partida (estado 0) que ser estvel, e corresponde ao carro estacionado
em repouso sobre o contato A. Tem-se portanto M = 0 (boto no foi apertado), A = 1 (contato A acionado pelo
carro) e B = 0 (contato B no acionado). As sadas nesse caso sero E = 0 e D = 0, significando que o carro se
encontra parado.
O boto de presso M ser acionado, e o sistema passa a um novo estado 1, que corresponde a ligar o
motor que desloca o carro para a direita. A partir deste ponto podem ocorrer trs hipteses:

- O boto M solto antes que o carro deixe o contato A.


- O carro deixa o contato A, e a seguir o boto M solto pelo operador.
- O carro deixa o contato A ao mesmo tempo em que o boto M solto.

Na primeira hiptese, o sistema passa a um novo estado 2 (M = 0, A = 1, B = 0, E = 0 e D = 1), onde o


motor D continua ligado e deixa o contato A em direo de B, fazendo com que A passe a NL0 e o sistema a
um novo estado 3 (M = 0, A = 0, B = 0, E = 0 e D = 1). Ele permanece neste estado at que o carro alcance o
contato B que levar o sistema ao estado 4 (M = 0, A = 0, B = 1, E = 1 e D = 0) invertendo-se a posio dos
motores E e D, fazendo desligar o motor D e ligar o motor E para que o carro volte em direo ao contato A.
Quando isto ocorre, o contato B volta novamente a NL0, levando o sistema a um novo estado 5 (M = 0, A = 0,
B = 0, E = 1 e D = 0) no qual ele permanece at que o carro chegue em A.
Ao acionar o contato A, o carro faz com que o sistema volte ao estado 0, que um estado estvel
(estado inicial), onde ele estaciona tendo completado o ciclo desejado.
No caso de termos a segunda hiptese, passamos do estado 1 ao estado 6 (M = 1, A = 0, B = 0, E = 0 e
D = 1), com o carro deixando o contato A em direo a B. Quando o boto M solto, ele volta ao estado 3,
recaindo no ciclo anterior e a partir da segue a mesma seqncia.
Na terceira hiptese, passamos do estado 1 diretamente ao estado 3 (M = 0, A = 0, B = 0, E = 0 e D = 1),
recaindo no ciclo anterior. Os valores X que aparecem na tabela primitiva de fluxo so condies irrelevantes
que, por imposio do projeto, nunca ocorrero durante o funcionamento do sistema.

Exerccio 1: Implemente a tabela de fluxo do dispositivo da figura ao


lado. Inicialmente o tanque est vazio, e a bomba deve ser acionada
automaticamente at o nvel de gua no tanque atingir o sensor N2,
ento se deve desligar a bomba e s voltar a lig-la quando o nvel
atingir N1.

N2

N1

Considere: N1 e N2 (=1 presena de gua; =0 ausncia de gua).


B (=1 bomba ligada; =0 bomba desligada).

V
B
Bomba

Tanque

Resposta:

Universidade Santa Ceclia

26

MICROPROCESSADORES

Exerccio 2: Um disco colocado em rotao por um


motor M. Na posio inicial, o disco pressiona um contato
X. O operador deve acionar o motor ao tocar o boto de
presso B. O disco dever ento percorrer um volta
completa e parar novamente (desligando o motor) quando
voltar posio inicial. Determine a tabela de fluxo,
considerando as trs hipteses abaixo:

Prof. Sandro Bastos

Contato
X

Boto B

Motor M

1) O boto B solto antes que o disco deixe o contato X. 2) O disco deixa o contato X, e a seguir o boto B
solto. 3) O disco deixa o contato X ao mesmo tempo em que o boto B solto.

Resposta:

Exerccio 3: Desenvolva a
Vidro Fechado
Vidro Aberto
tabela
de
fluxo
para
gerenciar o sistema ao lado.
Ao se abrir a porta (P) do
Sensor A
Sensor A
motorista de um carro,
imediatamente o circuito
eletrnico deve acionar um
motor (D) para descer o
vidro do motorista at
3 cm
atingir um sensor (B) que
Sensor B
Sensor B
est 3 cm para baixo.
Somente aps o motorista
fechar a porta do carro o circuito deve acionar um motor (S) para subir o vidro at atingir o sensor (A) que
representa o vidro todo fechado. Considere que inicialmente a porta e o vidro encontram-se fechados.
Considere: Contato P (=0 porta fechada; =1 porta aberta). Sensores A e B (=0 ausncia de vidro; =1 presena
de vidro). Motores S e D (=0 desligado; =1 ligado).

Resposta:

Universidade Santa Ceclia

27

MICROPROCESSADORES

4.

Prof. Sandro Bastos

PAL ARRANJO LGICO PROGRAMVEL

O Arranjo Lgico Programvel (PAL) serviu de embrio para a construo dos circuitos eletrnicos mais
avanados da atualidade, servindo inclusive de base
para a arquitetura da Unidade de Controle dos
Conjunto de
Conjunto de
microprocessadores atuais. O PAL um circuito
Entradas
Sadas
composto basicamente por dois blocos: Circuitos
Combinatrios e Memrias Internas.
E
S
Circuitos
Quando um conjunto de entradas (E)
aplicado sobre a mquina seqencial a partir de um
determinado estado interno (representado pelo
conjunto de variveis I), o bloco combinatrio se
encarrega de fornecer o conjunto (S) de sadas
correspondentes, e o prximo estado interno para o
qual o modelo seqencial deve evoluir, em
sincronismo com a ocorrncia do sinal de clock. As
memrias internas sero as responsveis pelo
armazenamento temporrio do estado do sistema
em certo instante t.

Combinatrios

Estado
Interno

Memrias
Internas

Prximo
Estado

Clock

Considere agora a substituio do bloco combinatrio (circuitos combinatrios) por uma memria da
famlia ROM e das memrias internas por biestveis, conforme a figura a seguir. Na memria ROM sero
armazenadas as funes de sada e do prximo
Conjunto de
Conjunto de
estado interno do sistema, e os elementos
Entradas
Sadas
biestveis sero responsveis pelo armazenamento
temporrio do estado do sistema.
E

Memria da
Famlia ROM

Estado
Interno

Flip-Flops
Tipo D

Prximo
Estado

Esta nova estrutura equivalente anterior e


ambas podem representar fisicamente o mesmo
modelo de circuito seqencial sncrono j
mencionado. Entretanto, a implementao do
modelo apresentado acima s se tornou vivel
devido a uma evoluo tecnolgica que permitiu
colocar, numa nica pastilha de circuito integrado,
toda a estrutura mostrada na figura.

Isto foi feito a partir de 1972, pelos fabricantes


de componentes eletrnicos dando origem ao que
Clock
se convencionou chamar de Arranjo Lgico
Programvel (Programmable Array Logic), que
uma extenso do que foi apresentado at aqui. Atravs da utilizao destes dispositivos possvel projetar
circuitos seqenciais especficos, e implementa-los com facilidade, programando circuitos PALs. Vamos
construir esta arquitetura de Arranjo Lgico Programvel atravs de memrias e biestveis, ou seja, ao invs
de utilizarmos o circuito integrado pronto do PAL, vamos construir o nosso prprio circuito eletrnico. A melhor
maneira de aprendermos a implementar o circuito eletrnico do PAL atravs dos dois exemplos que sero
desenvolvidos a seguir.

Exemplo 1: Deseja-se implementar um contador que funcione de forma crescente ou decrescente, com
mdulo de contagem 5 ou 8 estados, conforme a necessidade do usurio. Para isso, podemos definir as
variveis da seguinte forma:
C Contagem (=0 crescente; =1 decrescente).
M Mdulo de Contagem (=0 mdulo 8; =1 mdulo 5).

C
M

Contador

Ck

S Sada do PAL (=0 contagem intermediria; =1 contagem final).


I1, I2 e I3 Estados Internos.
I1
Universidade Santa Ceclia

I2

I3

28

MICROPROCESSADORES

Prof. Sandro Bastos

A figura representa este sistema segundo a estrutura de mquina seqencial sncrona com as variveis
de entrada C, M e o sinal de clock Ck, e uma sada S que aciona estgios seguintes quando ao trmino da
contagem. O contador possuir no mximo 8 estados internos (mdulo 8), sendo necessrias 3 variveis
internas para sua designao. Trs biestveis do tipo D so, portanto, necessrios para o armazenamento de
cada varivel de estado. O sinal de clock sincroniza a operao dos biestveis, e as mudanas de estado de
todo o contador.
Para o desenvolvimento de um projeto feito atravs de Arranjo Lgico Programvel necessrio concluir
4 etapas: a Tabela de Fluxo, o Circuito Eletrnico, a Tabela de Gravao da ROM e a Tabela em Hexadecimal
(para a gravao da ROM).

1 - TABELA DE FLUXO
C M
Estados

00

01

11

10

I1 I2 I3

1, 0

1, 0

4, 1

7, 1

000

2, 0

2, 0

0, 0

0, 0

001

3, 0

3, 0

1, 0

1, 0

010

4, 0

4, 0

2, 0

2, 0

011

5, 0

0, 1

3, 0

3, 0

100

6, 0

4, 0

101

7, 0

5, 0

110

0, 1

6, 0

111

Na tabela de fluxo, a coluna correspondente a (C = 0 e M = 0) representa a contagem crescente com


mdulo 8. A segunda coluna (C = 0 e M = 1) representa a contagem crescente com mdulo 5, e as duas
ltimas colunas representam respectivamente a contagem decrescente com mdulo 5 e 8, de acordo com os
valores de C e M adotados. As funes de sada e do prximo estado interno do contador poderiam ser
facilmente obtidas desta tabela.
Analisando-se a tabela de fluxo pode-se concluir que existe a possibilidade do programa cair em uma
das irrelevncias indicadas. Imagine que o contador encontra-se atuando de modo crescente e no mdulo 8 (C
= 0 e M = 0) e que em determinado instante a contagem est em 5 e nesse exato momento o usurio do
circuito passa as condies de entrada para crescente e mdulo 5 (C = 0 e M = 1). Observe que o programa da
ROM vai recair em uma das condies de irrelevncia, portanto necessrio que se grave um contedo que
possa evitar problemas de funcionamento do circuito e que ainda por cima seja uma lgica que atenda a
mudana executada pelo usurio. Uma possvel soluo est apresentada na tabela abaixo:

1 - TABELA DE FLUXO (Corrigida)


C M
Estados

Universidade Santa Ceclia

00

01

11

10

I1 I2 I3

1, 0

1, 0

4, 1

7, 1

000

2, 0

2, 0

0, 0

0, 0

001

3, 0

3, 0

1, 0

1, 0

010

4, 0

4, 0

2, 0

2, 0

011

5, 0

0, 1

3, 0

3, 0

100

6, 0

0, 1

3, 0

4, 0

101

7, 0

0, 1

3, 0

5, 0

110

0, 1

0, 1

3, 0

6, 0

111

29

MICROPROCESSADORES

Prof. Sandro Bastos

Outra soluo que poderia ser feita a criao de uma segunda sada do PAL, no qual servir para
apontar ao usurio que houve uma mudana da lgica de contagem no meio do processo.
A tabela de fluxo tem por finalidade facilitar o desenvolvimento lgico da programao da memria ROM.
A capacidade dessa memria pode ser expressa em termos do nmero de entradas e sadas necessrias. No
exemplo do contador, verifica-se que a memria deve possuir um total de 5 entradas (C, M, I1, I2 e I3) e 4
sadas (S, I1, I2 e I3). A partir da sabe-se que essa memria tem dimenso: 25 x 4 ou 32 x 4.
2 CIRCUITO ELETRNICO

C
M

A4
A3
A2
A1
A0

I3

I2

I1

ROM

Q D

Q D

Q D

Q3
Q2
Q1
Q0

I3

I2

I1
Ck

A tabela que resume a programao necessria denominada de Tabela de Gravao da ROM. Na


interpretao desta tabela, a memria deve ser encarada como um elemento capaz de receber um conjunto de
endereos aplicados sua entrada (C, M, I1, I2 e I3), ao qual corresponde um contedo que ser armazenado
no interior da mesma, que representar as sadas da memria (S, I1, I2 e I3).
Enquanto que a tabela de fluxo serve para facilitar o desenvolvimento lgico da gravao da memria, a
tabela de gravao da memria ROM serve para facilitar o ato de gravao da mesma atravs do gravador de
memrias. Evidente que a parte intelectual do projeto do PAL consiste exclusivamente na tabela de fluxo, pois
a tabela de gravao da ROM apenas um rearranjo da anterior de forma crescente dos endereos.
Uma vez preenchida a tabela de gravao da ROM, o prximo passo decodific-la para Hexadecimal.
O motivo de se ter a tabela em hexadecimal que os gravadores de memria funcionam nesta base numrica,
portanto facilita o projetista na hora de gravar a memria.

Universidade Santa Ceclia

30

MICROPROCESSADORES

Prof. Sandro Bastos

4 HEXADECIMAL

3 TABELA DE GRAVAO DA ROM

ENDEREO

CONTEDO

HEXA

A4

A3

A2

A1

A0

Q3

Q2

Q1

Q0

END

CON

I1

I2

I3

I1

I2

I3

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

10

11

12

13

14

15

16

17

18

19

1A

1B

1C

1D

1E

1F

Universidade Santa Ceclia

31

MICROPROCESSADORES

Prof. Sandro Bastos

Exemplo 2: Deseja-se implementar um circuito eletrnico atravs do conceito de PAL capaz de executar o
controle de qualidade da pea desenhada abaixo, indicando se a mesma encontra-se boa, boa porm caiu de
ponta-cabea na esteira ou se est com defeito. Considere:

A: Sensor superior (=0 ausncia de pea; =1 presena de pea)


B: Sensor inferior (=0 ausncia de pea; =1 presena de pea)
S1 e S2: Sadas do PAL
Pea Boa
(Ponta-Cabea)

Pea Boa

Sensores
A
B
Esteira

S1

S2

PEA

Passando ou no chegou

Boa

Boa e de Ponta-Cabea

Ruim

Estipulada as condies do problema, o prximo passo o desenvolvimento das 4 etapas do


Arranjo Lgico Programvel: Tabela de Fluxo, Circuito Eletrnico, Tabela de Gravao da ROM e a
Tabela em Hexadecimal.
1 - TABELA DE FLUXO

A B
Estados

Universidade Santa Ceclia

00

01

11

10

I1 I2 I3 I4
0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

10

1010

11

1011

12

1100

13

1101

14

1110

15

1111

32

MICROPROCESSADORES

Prof. Sandro Bastos

2 CIRCUITO ELETRNICO

No necessrio o preenchimento completo das tabelas dos itens 3 e 4 (tabela de gravao da ROM e
tabela em hexadecimal), pois no existe raciocnio lgico para ambas as tabelas, apenas a transposio e
reorganizao dos dados da tabela de fluxo. Portanto, considere apenas os endereos solicitados nas tabelas
a seguir.

3 TABELA DE GRAVAO DA ROM

ENDEREO
A5
A
0
0
0
...
...
0
0
...
...
0
0
...
...
1
1
...
...
1
1

A4
B
0
0
0
...
...
0
0
...
...
1
1
...
...
0
0
...
...
1
1

A3
I1
0
0
0
...
...
1
1
...
...
0
0
...
...
1
1
...
...
1
1

Universidade Santa Ceclia

A2
I2
0
0
0
...
...
1
1
...
...
1
1
...
...
1
1
...
...
0
0

4 HEXADECIMAL

CONTEDO
A1
I3
0
0
1
...
...
0
0
...
...
0
1
...
...
0
1
...
...
0
0

A0
I4
0
1
0
...
...
0
1
...
...
1
0
...
...
1
0
...
...
0
1

HEXA

Q5
S1

Q4
S2

Q3
I1

Q2
I2

Q1
I3

Q0
I4

END

CON

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

...
...

33

MICROPROCESSADORES

Prof. Sandro Bastos

Exerccio 1: Determine a Tabela de Fluxo, o circuito PAL, a Tabela de Gravao da Eprom e a Tabela de
Gravao em Hexadecimal.

Sensor A

Sensores A / B = 0 (Ausncia de Pea)

Sensor B

Sensores A / B = 1 (Presena de Pea)


Pea Boa
Sadas S1 e S2:

S1

S2

Pea

Passando ou no chegou

Boa

Boa e de Ponta Cabea

Ruim

Pea Boa
(Ponta-Cabea)

Endereos solicitados para a Tabela de Gravao e Tabela Hexadecimal: 05, 0C, 27, 3A (Nmeros em
Hexadecimal)

PS: Na tabela de fluxo, desenvolva primeiro a seqncia da pea Boa.

Resposta:

Universidade Santa Ceclia

34

MICROPROCESSADORES

Universidade Santa Ceclia

Prof. Sandro Bastos

35

MICROPROCESSADORES

Prof. Sandro Bastos

Exerccio 2: Implementar o circuito PAL da pea abaixo. Mostrar a Tabela de Fluxo, o circuito PAL, a Tabela
de Gravao da Eprom e a Tabela de gravao em Hexadecimal.
Sensores A / B = 0 (Ausncia de Pea)

Sensor A

Sensores A / B = 1 (Presena de Pea)

Sensor B
Pea Boa

Sadas S1 e S2:

S1

S2

Pea

Passando ou no chegou

Boa

Boa e de Ponta Cabea

Ruim

Pea Boa
(Ponta-Cabea)

Endereos para a Tabela de Gravao e Tabela Hexadecimal: 00, 01, 09, 13, 1A, 25, 26, 31 (Nmeros em
Hexadecimal).

PS: Na tabela de fluxo, desenvolva primeiro a seqncia da pea Boa.

Resposta:

Universidade Santa Ceclia

36

MICROPROCESSADORES

Universidade Santa Ceclia

Prof. Sandro Bastos

37

MICROPROCESSADORES

5.

Prof. Sandro Bastos

MICROPROCESSADOR X MICROCONTROLADOR

No possvel estar envolvido com atividades cientficas hoje em dia sem estar em contato com algum
tipo de microprocessador. Por isso, as pessoas tm diferentes idias do que seja um microprocessador. Uma
definio bem formulada de microprocessador define-o como um nico chip que contm uma unidade lgica e
aritmtica e capacidade para controle de memria e I/O.
Para que um microprocessador opere, resolvendo os mais variados problemas, necessrio um circuito
de apoio, composto de memrias, dispositivos de entrada e sada (I/O), circuitos de clock, entre outros. O
microcontrolador um microprocessador com um sistema de memria e I/O integrado, sendo muitas vezes
denominado de microcomputador ou single chip computer. Esta caracterstica faz com que os
microcontroladores sejam perfeitamente adequados para uso em funes de controle onde se deseja pequeno
consumo, diminudas dimenses, e no muita capacidade de processamento. As necessidades atuais mostram
que os microcontroladores de 8 bits so suficientemente poderosos para controlar quaisquer processos onde
no se necessite grandes capacidades de clculo numrico ou velocidade de operao.
Pode-se ter o pensamento simplista de que o microcontrolador inferior ao microprocessador. Na
verdade o microcontrolador adequado funo a que vai realizar, de forma a utilizar de forma racional e
completa os recursos existentes no dispositivo. Lembre-se que quando voc utiliza um microprocessador para
realizar determinada tarefa, como por exemplo, controle de um motor, voc precisa incluir vrios dispositivos
que consomem espao e energia e muitas instrues disponveis no seu microprocessador no sero
utilizadas. Atualmente, grande parte das tarefas executadas anteriormente por microprocessadores so hoje
realizadas por microcontroladores com vantagens significativas. Talvez a maior vantagem a ser mencionada
seja a reduo do custo final do projeto, pois reduzimos muito o nmero de componentes necessrios,
melhorando com isso a confiabilidade dos equipamentos.
Atualmente presenciamos a plenitude dos microcontroladores de 8 bits. Alguns fabricantes desenvolvem
microcontroladores com uma grande linha de derivativos, que so componentes adequados s funes
especficas, como por exemplo, circuitos de televiso, telecomunicaes, controles remotos, entre outros. A
reduo do consumo atravs do uso de tecnologias mais avanadas como a CMOS tambm alvo para a
manufatura de equipamentos portteis alimentados bateria. J existem microcontroladores de 16, 32 e 64
bits, mas so utilizados no mercado como poderosos auxiliares em complexas tarefas de controle de processos
in time. Esta tecnologia dever atingir seu pice quando os complexos sistemas de informao do futuro
necessitarem deste maior poder computacional.

Universidade Santa Ceclia

38

MICROPROCESSADORES

6.

Prof. Sandro Bastos

O MICROCONTROLADOR 8051
Um microcontrolador geralmente composto pelos seguintes blocos:

Unidade Central de Processamento (CPU);


Memria de Programa (ROM ou EPROM);
Memria de dados (RAM);
Linhas de I/O (PORTs);
Controle de interrupes;
Gerador de clock;
Timers e counters.
External
Interrupt
Timer 1
Interrupt
Control

4K ROM

128 Bytes
RAM

Timer 0

Counter
Inputs

BUS
CPU

OSC

BUS
Control

Serial Port

4 I/O Ports

TXD
P0

P1

P2

RXD

P3

Address / Data

A figura anterior ilustra a composio tpica do microcontrolador 8051 com os elementos citados e suas
respectivas interligaes. As diferenas entre os diversos tipos de microcontroladores residem basicamente na
capacidade e tipos de memrias, na quantidade de ports disponveis ao usurio, na velocidade de operao, e
em outros recursos disponveis como, por exemplo, portas seriais, maior nmero de contadores, opo de
baixo consumo, entre outros.
Existem tambm, os componentes chamados derivativos que, como o prprio nome diz, so
microcontroladores derivados dos tipos mais comuns (8048 e 8051), ou seja, a clula bsica o
microcontrolador e este acrescido de outros componentes de acordo com as necessidades.

Universidade Santa Ceclia

39

MICROPROCESSADORES

Prof. Sandro Bastos

6.1. A Famlia 8051


Quando temos vrios microcontroladores utilizando uma mesma clula, chamamos esse conjunto de
componentes de famlia. Desta forma temos vrias famlias como, por exemplo, a famlia do 8048, do 8051, do
8096, entre outras.
A tabela abaixo descreve sucintamente os principais componentes dessa famlia.

Nome do

Verso sem

Verso

Bytes de

Bytes de

Timers

Tipo de

Chip

ROM

EPROM

ROM

RAM

16 Bits

Circuito

8051

8031

8751

4K

128

NMOS

80C51

80C31

87C51

4K

128

HMOS

4K

128

SACMOS

8K

256

NMOS

80CL51
8052

8032

80C52

80C32

87C52

8K

256

CMOS

83C528

80C528

87C528

32K

512

3+1

CMOS

83C652

80C652

87C652

8K

256

CMOS

87C751

2K

64

CMOS

87C452

8K

256

CMOS

83C751
83C452

80C452

O elemento bsico desta famlia o 8051. Os outros componentes desta famlia esto descritos nos
manuais dos fabricantes. Atualmente, a tendncia mundial no uso de componentes de baixo consumo, torna
imperativo o desenvolvimento de projetos baseados na tecnologia CMOS, facilitando assim a interligao de
seus blocos. Todos os componentes que apresentarem um C em seu cdigo (80C31, 87C452, etc.)
pertencem a esta famlia e devem ser preferencialmente utilizados. Esta famlia representa o que existe de
mais avanado em microcontroladores de 8 bits, o que garante a continuidade de sua linha de produo por
um longo perodo.
As caractersticas desta famlia so:

CPU de 8 bits com conjunto de instrues otimizado para aplicaes de controle de processos;
Capacidade de processamento Booleano (manipulao de bit individualmente);
32 linhas de I/O bidirecionais e individualmente endereveis;
128 bytes de RAM on-chip (mnimo);
Dois contadores/temporizadores programveis de 16 bits;
Interface serial full-duplex;
Estrutura de interrupes com at 5 entradas permitindo 2 nveis de prioridade;
Gerador de clock;
Mnimo de 4Kbytes de memria de programa (ROM ou EPROM);
Capacidade de endereamento externo de at 64Kbytes.

6.2. Descrio da Pinagem


A figura seguinte ilustra a pinagem do microcontrolador 8051 nas duas formas de encapsulamento mais
comuns:

Universidade Santa Ceclia

40

40 P0.3 AD3

41 P0.2 AD2

36 P0.3 AD3

42 P0.1 AD1

37 P0.2 AD2
Pin (DIP)

43 P0.0 AD0

Index Corner

44 Vcc

NC
1

38 P0.1 AD1

P1.0 T2 **

P1.3

P1.1 T2EX **

P1.2

39 P0.0 AD0

P1.2

** T2EX P1.1

P1.3

40 Vcc

** T2 P1.0

P1.4

Prof. Sandro Bastos

MICROPROCESSADORES

P1.4

P1.5

35 P0.4 AD4

P1.5

39 P0.4 AD4

P1.6

34 P0.5 AD5

P1.6

38 P0.5 AD5

P1.7

33 P0.6 AD6

P1.7

37 P0.6 AD6

Rst

32 P0.7 AD7

Rst 10

36 P0.7 AD7

RXD P3.0 10

31

EA / Vpp*

RXD P3.0 11

TXD P3.1 11

30 ALE / Prog*

NC 12

INT0 P3.2 12

29 PSEN

TXD P3.1 13

33 ALE / Prog*

INT1 P3.3 13

28 P2.7 A15

INT0 P3.2 14

32 PSEN

T0 P3.4 14

27 P2.6 A14

INT1 P3.3 15

31 P2.7 A15

T1 P3.5 15

26 P2.5 A13

T0 P3.4 16

30 P2.6 A14

WR P3.6 16

25 P2.4 A12

T1 P3.5 17

29 P2.5 A13

RD P3.7 17

24 P2.3 A11

XTAL2 18

23 P2.2 A10

XTAL1 19

22 P2.1 A9

Vss 20

21 P2.0 A8

35

P2.4 A12 28

P2.3 A11 27

34 NC

P2.2 A10 26

P2.1 A9 25

P2.0 A8 24

NC 23

Vss 22

XTAL1 21

XTAL2 20

RD P3.7 19

WR P3.6 18

Pad (LCC, PLCC)

EA / Vpp*

* EPROM Only
** 8052/8032 Only

- Vss: Pino de entrada de 0 volt.


- Vcc: Pino de entrada de alimentao de 5 volts.
- Porta 0 (P0.0 P0.7): A porta 0 uma porta bidirecional de 8 bits, com sada dreno aberto, ou entrada de
alta impedncia. usado para multiplexar o barramento de dados e o barramento de endereos menos
significativo, durante o acesso de memria de dados externa ou de memria de programa externa. No 8751
esta porta tambm usada para verificao do cdigo do byte e, neste caso, so necessrios o uso dos
resistores pull-up externos.
- Porta 1 (P1.0 P1.7): A porta 1 uma porta bidirecional de 8 bits com resistores pull-up internos. Assim
estes pinos podero funcionar como entradas, ou sadas. Se uma entrada estiver conectada ao nvel baixo,
ela fornecer corrente, devido aos resistores pull-up internos. Os pinos da porta 1 tambm recebem o
endereo menos significativo, durante a verificao de memria de programa para o 8751.
- Porta 2 (P2.0 P2.7): A porta 2 uma porta bidirecional de 8 bits com resistores pull-up internos. Esta
porta usada para colocar o byte de endereo mais significativo, quando um ciclo de busca externa de
memria de programa, ou de dado, com endereo de 16 bits, est sendo realizado (MOVX @DPTR).
Durante o acesso externo de memria de dados que usa endereo de 8 bits (MOV @Ri), a porta 2 emite os
contedos do registro de funo especial P2.
- Porta 3 (P3.0 P3.7): A porta 3 uma porta bidirecional de 8 bits com resistores pull-up internos. A porta
3 tem funes especiais para o 8051 que inclui as operaes de comunicao serial, interrupes externas,
temporizaes e sinais de leitura e escrita como segue:
RxD (P3.0): Entrada da porta serial.
TxD (P3.1): Sada da porta serial.
/INT0 (P3.2): Entrada de interrupo externa nvel 0.
/INT1 (P3.3): Entrada de interrupo externa nvel 1.
T0 (P3.4): Entrada externa para temporizador 0.
Universidade Santa Ceclia

41

MICROPROCESSADORES

Prof. Sandro Bastos

T1 (P3.5): Entrada externa para temporizador 1.


/WR (P3.6): Sada habilitadora de escrita para memria de dados externa.
/RD (P3.7): Sada habilitadora de leitura para memria de dados externa.
- Rst (Reset): Um nvel alto neste pino com durao de dois ciclos de mquina, enquanto o oscilador estiver
operando, realiza uma inicializao (reset) do circuito.
- ALE e /Prog: Este pino opera como sada habilitadora de latches de endereamento, durante um acesso a
memria externa. Nas verses com Eprom interna (8751) este pino opera como entrada recebendo o pulso
de programao (/Prog) durante a programao da Eprom.
- /PSEN: Este pino uma sada que habilita a leitura de uma memria de programa externa. /PSEN no
ser ativado durante uma busca na regio de memria de programa interna.
- /EA e Vpp: Este pino uma entrada que dever ser ligado ao nvel alto, para que o processador tenha
acesso memria interna de programa, nos endereos de 0000H at 0FFFH e acesso a memria externa
de programa, para endereos acima de 0FFFH. Se estiver ligado ao nvel baixo, toda a rea de memria de
programa, de 0000H a FFFFH ser externa. Nas verses com Eprom interna (8751), este pino tambm
recebe a tenso de programao de 12,75 V. Nas verses sem ROM interna, /EA deve ser conectado ao
nvel baixo.
- XTAL 1: Entrada para o oscilador inversor interno e para o circuito gerador de temporizao interna.
- XTAL 2: a sada do oscilador amplificador e inversor interno.

6.3. Oscilador Interno


Todos os membros da famlia 8051 possuem um
oscilador interno que pode ser utilizado como fonte de clock
para a CPU, bastando para isso que se conecte um cristal
ressonador cermico entre os pinos XTAL1 e XTAL2, e dois
capacitores no GND, como mostrado na figura ao lado.

MCS-51
HMOS or
CHMOS
XTAL2

Se ao invs de utilizarmos o oscilador interno, utilizamos


outro gerador qualquer (para sincronizar com outros circuitos,
por exemplo) devemos ter o cuidado de interligar a entrada no
pino certo. Este fato importante, pois este pino muda
conforme o tipo de chip utilizado, por exemplo, com chips
HMOS (8051) devemos ligar a entrada de clock ao pino
XTAL2, enquanto que em circuitos CMOS (80C51), o clock
deve ser colocado no pino XTAL1. A figura seguinte indica a
correta montagem destas entradas nos diversos componentes.

MCS-51
HMOS or
CHMOS
XTAL2

External
Clock
Signal

External
Clock
Signal

XTAL2

XTAL1

VSS

VSS

C1
C2
XTAL1
VSS

MCS-51
HMOS
Only

XTAL1

Universidade Santa Ceclia

Quartz Cristal
or ceramic
ressonator

MCS-51
CHMOS
Only
(IC)

External
Clock
Signal

XTAL2

XTAL1
VSS

42

MICROPROCESSADORES

Prof. Sandro Bastos

6.4. Reset
A entrada do reset se d pelo pino RST, quando este mantido em nvel alto por pelo menos dois ciclos
de mquina, aps o circuito oscilador comear a funcionar. Logo aps o reset, os valores colocados nos
registradores so os indicados abaixo:

Fonte

Endereo

Fonte

Endereo

PC
Acc
B
PSW
SP
DPTR
P0-P3
IP
IE
TMOD

0000H
00H
00H
00H
07H
0000H
FFH
XXX00000b
0XX00000b
00H

TCON
TH0
TL0
TH1
TL1
SCON
SBUF
PCON
(HMOS)
PCON
(CHMOS)

00H
00H
00H
00H
00H
00H
Indeterminado
0XXXXXXXb
0XXX0000b

6.5. A Estrutura de Memria


O 8051 possui espaos de endereos separados para a memria de programa e para a memria de
dados. Esta separao lgica permite que os dados acessados pelos endereos de 8 bits sejam armazenados
e manipulados mais rapidamente. Apesar disto, podemos manipular endereos de 16 bits atravs do
registrador DPTR.
A figura seguinte ilustra a estrutura de memria utilizada num microcontrolador 8051:

Program Memory (Read Only)

Data Memory (Read / Write)

FFFFH:

FFFFH:

External
External

FFH:
__
EA=0
External

Internal

__
EA=1
Internal
0000

_____
PSEN

0
0

0000
___ ___
RD WR

6.6. Memria de Programa


A figura seguinte mostra o mapa da parte inferior da memria de programa. Aps o reset, a CPU comea
Universidade Santa Ceclia

43

MICROPROCESSADORES

Prof. Sandro Bastos

a executar as instrues a partir do endereo 0000H.


Como pode ser visto na figura, cada interrupo
alocada num endereo fixo da memria de programa.
A interrupo direciona o contador de programa da
CPU para o seu respectivo endereo, onde se
encontra a rotina de interrupo.
Os primeiros 4Kbytes de memria podem estar
localizados no chip, ou num chip (ROM ou EPROM)
externo. O controle de acesso interno/externo feito
atravs do sinal EA (External Access). O sinal de
strobe para acesso memria externa o sinal
PSEN, ativo apenas quando da ocorrncia de
acessos externos (EA ligado terra), no sendo
portanto utilizado quando utiliza-se apenas a rea de
memria interna.

(0033H)
002BH
0023H
Interrupt
Locations

001BH

8 Bytes

0013H
000BH
0003H
0000H

RESET

A configurao de hardware necessria para acesso memria externa ilustrada a seguir. Note que 16
linhas de I/O (port 0 e port 2) so dedicadas transio de sinais durante buscas memria externa. O port 0
opera como um barramento de dados e endereos multiplexado, emitindo o byte low do program counter como
endereo e aguarda o recebimento do byte de cdigo da memria de programa. Durante o tempo em que o
byte low est vlido no port 0, o sinal
ALE coloca este byte no latch de
endereos, enquanto o port 2 emite
MCS-51
EPROM
o byte alto de endereos. O sinal
Instr.
P0
PSEN pulsa, e o cdigo de byte
P1
lido pelo microcontrolador.
__
EA
ALE
Address

Latch
P3

P2
_____
PSEN

___
OE

O endereo de memria de
programa sempre de 16 bits,
mesmo quando a quantidade de
memria externa inferior
64Kbytes. Desta forma, sempre que
utilizarmos memria externa, dois
ports (port 0 e port 2) sero
sacrificados
em
funo
do
endereamento das mesmas.

6.7. Memria de Dados


A figura seguinte mostra o hardware necessrio para o acesso memria RAM externa. A CPU, neste
caso est executando um programa a partir da ROM interna. O port 0 serve como um barramento multiplexado
de dados/endereo para a RAM, e 3
linhas do port 2 so utilizadas para as
pginas da RAM. Os sinais de RD e
MCS-51
With Intenal
RAM
WR so gerados pela CPU para
ROM
Data
comandar as operaes.
P0
Podemos
enderear
at
64Kbytes de memria RAM, em
endereos de 1 ou 2 bytes. Os
endereos de 1 byte so geralmente
utilizados em conjunto com 1 ou mais
linhas de I/O, para definir a pgina
que est sendo utilizada na RAM.
Endereos de 2 bytes, quando
utilizados demandam que o port 2
gere o byte alto de endereos. A
memria de dados interna est
mapeada como indica a figura a

Universidade Santa Ceclia

P1
__
EA

VCC
Latch

ALE
Address
P2
___
RD
___
WR

P3

I/O

PAGE
BITS

___
WE

___
OE

44

MICROPROCESSADORES

Prof. Sandro Bastos

seguir. O espao de memria est dividido em 3 blocos, normalmente denominados, Lower 128, Upper 128
and SFR (Special Function Register). A memria de dados interna tem sempre 1 byte de endereamento
apenas, o que significa que temos um mximo de 256 bytes de memria interna.
FFH
Upper 128
80H
7FH
Lower 128

FFH
Accessible
By indirect
Addressing
Only

Accessible
By direct
Addressing
Only
80H

Accessible
By direct
And indirect
Addressing

Special
Function
Registers

Ports, Status and


Control
bits
Timer,
Registers
Stack
Pointer
Accumulator, etc...

Entretanto, os modos de endereamento permitem o uso de at 384 bytes utilizando um truque simples.
Atravs de endereamento direto, acessamos um espao de memria e atravs de endereamento indireto,
acessamos um espao de memria diferente. Desta forma, os registradores de funo especial (SFR) e os
ltimos 128 bytes (Upper Space) so acessados nos mesmos endereos (de 80H at FFH) apesar de serem
fisicamente separados. Nas clulas bsicas 8051, a rea de memria alta no existe no chip, desta forma,
consideramos apenas a rea de memria baixa (Lower Space) para as nossas experincias (melhores
referencias a estas reas altas podem ser encontradas nos manuais dos fabricantes).
Os primeiros 128 bytes de memria interna esto mapeados como indica a prxima figura:
Os primeiros 32 bytes esto
agrupados em 4 bancos de 8
registradores,
chamados
pelas
instrues de programa de R0 at R7.
Dois bits no registrador da palavra de
controle (PSW) selecionam qual o
banco de registradores est em uso.
Este recurso permite um uso mais
eficiente do espao de cdigo, desde
que as instrues de registrador so
mais curtas do que se utilizando
endereamento direto.

7FH

30H
2FH

Bank select bits


em PSW

20H
11

18H

Bit-Addressable Space
(Bit Addresses 0 7F)

1FH
4 Banks of 8

17H
Os prximos 16 bytes acima do
10
10H
registers R0 R7
banco de registradores formam o bloco
0FH
01
08H
Reset value of
conhecido como memria enderevel
07H
00
stack pointer
0
por bit (bit addressable space). O
conjunto de instrues do 8051 inclui
vrios tipos de instrues de um s bit,
e os 128 bits presentes nessa rea podem ser diretamente endereados por estas instrues.

Todos os bytes nos primeiros 128 bytes de memria podem ser endereados direta ou indiretamente. Os
prximos 128 bytes s podem ser acessados indiretamente nos dispositivos que os possuem.
A rea de memria acima de 128 bytes constitui o registrador de funes especiais (SFR) cuja descrio
detalhada faremos posteriormente.

6.8. Registradores de Funo Especial


A figura seguinte indica a disposio do registrador de funes especiais (SFR). Na rea de SFR, nem
todos os endereos esto ocupados, de forma que estes endereos no esto implantados no chip. Estes

Universidade Santa Ceclia

45

MICROPROCESSADORES

Prof. Sandro Bastos

espaos destinam-se a acessrios que encontramos em outros componentes da famlia.

FF

F8
F0

F7
EF

E8
E0

ACC

E7
DF

D8
D0

PSW

D7

C8

CF

C0

C7

B8

IP

BF

B0

P3

B7

A8

IE

AF

A0

P2

A7

98

SCON

90

P1

88

TCON

TMOD

TL0

TL1

80

P0

SP

DPL

DPH

SBUF

9F
97
TH0

TH1

8F
PCON

87

Bit enderevel
Acumulador (Acc)
O acumulador o registrador onde se processam a maioria das operaes de um processador,
comumente encontradas num microprocessador de 8 bits. referido simplesmente pela letra A nos
mnemnicos das instrues.

Registrador B
um registrador utilizado durante as operaes de multiplicao e diviso, podendo ser utilizado como
registrador de uso geral em outras operaes.

Palavra de Status de Programa


chamado de Program Status Word e contm basicamente, os flags de controle de encaminhamento do
programa. Por isso utilizado em desvios e saltos condicionais, sendo tambm alterado na maioria das
instrues. Seu contedo indicado na figura abaixo.

CY

AC

F0

RS1

RS0

OV

CY (PSW7): Carry flag, indica vai um nas operaes aritmticas.


AC (PSW6): Auxiliar carry flag, auxilia nas operaes de adio.
F0 (PSW5): Flag de uso geral.
RS1 (PSW4): Seleo do banco de registradores em uso.
RS0 (PSW3): Seleo do banco de registradores em uso.
Universidade Santa Ceclia

46

MICROPROCESSADORES

Prof. Sandro Bastos

OV (PSW2): Overflow em operaes aritmticas.


- (PSW1): Flag definvel pelo usurio.
P (PSW0): Flag de paridade, indica o nmero de bits em 1 no acumulador.

O bit de carry, entre outras funes serve como vai um em operaes aritmticas, e tambm como
acumulador para um nmero de operao booleanas. Os bits RS0 e RS1 so utilizados para selecionar um
entre quatro bancos de registradores, disponveis nos primeiros 128 bytes de RAM. O bit de paridade indica a
quantidade de bits em NL1 no acumulador: se P=1, o acumulador contm um nmero mpar de 1s; se P=0, o
nmero de 1s no acumulador par. Dois bits do PSW esto disponveis e podem ser utilizados como flags de
uso geral. O flag de overflow afetado em operaes aritmticas. O PSW encontra-se localizado na rea
denominada SFR, no endereo D0H.

RS0

RS1

Banco Selecionado

Endereo

0
0
1
1

0
1
0
1

Banco 0
Banco 1
Banco 2
Banco 3

00H at 07H
08H at 0FH
10H at 17H
18H at 1FH

Stack Pointer (SP) e Data Pointer (DPTR)


O Stack Pointer (ponteiro de pilha) incrementado antes do armazenamento dos dados em uma
instruo PUSH ou CALL. Observe que o Stack pode ser alocado em qualquer regio da memria RAM, o
ponteiro sempre inicializado no endereo 07H, e o Stack comea no endereo 08H.
O Data Pointer consiste em dois registradores de 8 bits (DPH byte alto, e DPL byte baixo), que podem
ser manipulados tanto como dois registradores separados de 8 bits como um nico de 16 bits.

Buffer Serial
O Buffer de dados serial (Serial data BUFfer) consiste de dois registradores separados, o buffer de
transmisso e o buffer de recepo. Quando um dado colocado no buffer serial, ele vai diretamente para o
buffer de transmisso serial, e quando ele chega ao buffer de recepo, ele colocado diretamente no SBUF.
Existe um registrador que controla todas as operaes da interface serial chamado SCON (Serial
CONtrol). Seu contedo descrito abaixo.

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0 (SCON.7): Modo de operao da interface serial.


SM1 (SCON.6): Modo de operao da interface serial.
SM2 (SCON.5): Modo de operao da interface serial.
REN (SCON.4): Habilitao de recepo.
TB8 (SCON.3): o nono bit transmitido (stop bit).
RB8 (SCON.2): o nono bit recebido.
TI (SCON.1): Flag indicando fim de transmisso.
RI (SCON.0): Flag indicando buffer de recepo cheio.

Universidade Santa Ceclia

47

MICROPROCESSADORES

Prof. Sandro Bastos

SM0

SM1

Modo

Descrio

Freqncia

0
0
1
1

0
1
0
1

0
1
2
3

Shift Register
8 bit UART
9 bit UART
9 bit UART

Freq. Oscilador /12


Varivel
Freq. Oscilador /64 ou 32
Varivel

Portas de I/O (P0, P1, P2 e P3)


Os ports P0, P1, P2 e P3 so latches dos seus respectivos ports fsicos. Escrevendo um bit 1 no SFR,
o pino de sada para o port respectivo ir para 1 imediatamente. Quando este port for acessado para leitura, o
estado do pino externo armazenado no registrador correspondente. Todos os 4 ports so bidirecionais e
consistem num latch (que o prprio SFR), num driver de sada e num driver de entrada. Os drivers de sada
dos ports P0 e P2 e o driver de entrada do port P0, so utilizados durante o acesso memria externa.

Registradores de Timer e de Controle


Os pares de registradores (TH0, TL0, e TH1, TL1) so registradores de contagem de 16 bits, nos quais
programamos os valores de contagem/temporizao dos respectivos contadores. Existem outros registradores
de funes especficas de controle de alguns mdulos do microcontrolador. O registrador IP (Interrupt Priority),
define um dos dois nveis possveis para cada interrupo, de acordo com a descrio abaixo.

PT2

PS

PT1

PX1

PT0

PX0

PT2 (IP5): Define nvel de prioridade do timer 2 (somente no 8052).


PS (IP4): Define o nvel de prioridade do port serial.
PT1 (IP3): Define o nvel de prioridade do timer 1.
PX1 (IP2): Define o nvel de prioridade da interrupo externa 1.
PT0 (IP1): Define o nvel de prioridade do timer 0.
PX0 (IP0): Define o nvel de prioridade da interrupo externa 0.

J o registrador IE (Interrupt Enable) permite a habilitao ou desabilitao de cada uma das fontes de
interrupo. Atravs de um bit neste mesmo registrador podemos atuar sobre todas as interrupes juntas.

EA

ET2

ES

ET1

EX1

ET0

EX0

EA (IE7): Desabilita todas as interrupes quando em 0.


ET2 (IE5): Habilita ou desabilita a interrupo do timer 2 (somente 8052).
ES (IE4): Habilita ou desabilita a interrupo do port serial.
ET1 (IE3): Habilita ou desabilita a interrupo do timer 1.
EX1 (IE2): Habilita ou desabilita a interrupo externa 1.
ET0 (IE1): Habilita ou desabilita a interrupo do timer 0.
EX0 (IE0): Habilita ou desabilita a interrupo externa 0.

O registrador TMOD (Timer MODe), permite o controle do modo de operao dos timers existentes no
microcontrolador, bem como a definio quanto operao como timer ou como contador.

Universidade Santa Ceclia

48

MICROPROCESSADORES

Prof. Sandro Bastos

C/T (1)

Gate (1)

M1 (1)

M0 (1)

Gate (0)

C/T (0)

M1 (0)

M0 (0)

Gate: Permite o disparo do timer atravs do hardware (gate=1), ou de software (gate=0), atravs do
registrador TCON.
C/T: Em 0 opera como timer, em 1 opera como contador.
M1: Modo de operao.
M0: Modo de operao.

M1

M0

0
0
1
1

0
1
0
1

Modo de Operao
0 Timer de 13 bits compatvel com o 8048.
1 Timer/counter de 16 bits.
2 Timer/counter de 8 bits auto reload.
3 No timer 0, TL0 define um contador de 8 bits e TH0 controlado pelos
bits de controle do timer 1. O timer 1 est parado.

A operao dos timers/counters depende tambm de um registrador denominado TCON (Timer CONtrol),
de onde podemos inicializ-lo e monitorar suas condies de funcionamento. Neste mesmo registrador
encontramos os flags de interrupes externas, os quais esto ativos quando da ocorrncia da interrupo.

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

TF1 (TCON.7): Flag de overflow do timer 1. Seta quando overflow.


TR1 (TCON.6): Bit de disparo do timer 1.
TF0 (TCON.5): Flag de overflow do timer 0. Seta quando overflow.
TR0 (TCON.4): Bit de disparo do timer 0.
IE1 (TCON.3): Flag da interrupo externa 1.
IT1 (TCON.2): Seleciona o tipo de interrupo 1 (borda ou nvel).
IE0 (TCON.1): Flag da interrupo externa 0.
IT0 (TCON.0): Seleciona o tipo de interrupo 0 (borda ou nvel).

Existe ainda um registrador para controle genrico das funes de alimentao do microcontrolador. O
registrador PCON (Power CONtrol) bastante utilizado quando optamos pela utilizao da tecnologia CHMOS
(80C51 por exemplo), para garantir baixo consumo em circuitos alimentados por bateria, ou ainda que
permaneam um grande perodo em stand-by.

SMOD

GF1

GF0

PD

IDL

SMOD: Dobra o baud rate quando utilizamos o timer 1.


GF1: Flag de uso geral.
GF0: Flag de uso geral.
PD: Ativa o modo de operao Power Down (s nos CHMOS).
IDL: Ativa o modo de operao IDLE (s nos CHMOS).

Universidade Santa Ceclia

49

MICROPROCESSADORES

7.

Prof. Sandro Bastos

CONJUNTO DE INSTRUES DO 8051

Todos os membros da famlia 8051 executam o mesmo conjunto de instrues. Este conjunto
composto por instrues otimizadas para aplicaes de controle, facilitando as operaes de dados atravs de
vrios modos de endereamento. Capacita ainda a operao de variveis de um bit, permitindo operao em
sistemas que demandam processamento booleano. A estrutura de formao da instruo na representao
mnemnica, ou em linguagem assembly, obedece a seguinte ordem:

OPCODE

DESTINO

FONTE

Assim, por exemplo, a instruo: MOV A, R0 move o contedo do registrador R0 para o acumulador. As
instrues sero divididas nos seguintes grupos:

Instrues de Transferncia de Dados;


Instrues Aritmticas;
Instrues Lgicas;
Instrues Booleanas;
Instrues de Desvio.

7.1. Modos de Endereamento


Podemos ter seis modos distintos de endereamento no 8051, que diferem basicamente pelo nmero de
bits utilizados na conformao do endereo, bem como nos registradores utilizados no acesso. Estes modos
so adequados s operaes de controle.

Endereamento direto: Neste modo, o operando especificado por 8 bits de endereo na instruo.
Somente a RAM interna e os SFRs podem ser acessados diretamente.
Exemplo: A instruo ADD A, 7FH adiciona ao acumulador o contedo do endereo 7FH. J a
instruo MOV 90H, A move o contedo do acumulador para o endereo 90H (que ser a porta 0).

Endereamento indireto: No modo indireto, a instruo especifica um registrador que contm o endereo
do operando. Ambas as memrias, interna e externa podem ser acessadas desta forma. O registrador de
endereo, para operaes de 8 bits, pode ser R0 ou R1, ou ainda o Stack Pointer. Endereos de 16 bits
podem ser acessados somente pelo Data Pointer (DPTR).
Exemplo: A instruo ADD A, @R0 adiciona ao acumulador o contedo do endereo apontado por R0.
A instruo MOVX @DPTR, A move o contedo do acumulador para o endereo de RAM externo apontado
por DPTR.

Instrues de registrador: Os bancos de registradores contm os registradores de R0 at R7, que podem


ser acessados por certas instrues que levam a especificao do registrador junto com o opcode da
instruo. As instrues que acessam os registradores dessa forma so eficientes, pois eliminam o byte de
endereo. Quando a instruo executada, um dos oito registradores do banco selecionado acessado e
a seleo do banco feita por dois bits (RS0 e RS1) no PSW.
Exemplo: A instruo MOV R5, A move o contedo do acumulador para o registro R5 do banco
selecionado em PSW.

Universidade Santa Ceclia

50

MICROPROCESSADORES

Prof. Sandro Bastos

Instrues de registrador especfico: Algumas instrues so especificadas para certos registradores,


por exemplo, as instrues que operam com acumulador ou Data Pointer no necessitam um byte de
endereo para apont-las, pois o prprio opcode faz isso.
Exemplo: A instruo CRL A zera o contedo do acumulador. A instruo INC DPTR incrementa o
contedo do registro DPTR.

Constantes imediatas: Podemos carregar um registrador com uma constante diretamente. Na linguagem
assembly, este modo indicado atravs do smbolo #.
Exemplo: A instruo MOV A, #100 carrega o acumulador com o valor 100 decimal (64H). A instruo
MOV DPTR, #05FEH move o valor 05FEH para o registro DPTR.

Endereamento indexado: Somente a memria de programa (ROM) pode ser acessada desta forma e
somente pode ser lida. Este modo de endereamento destinado leitura de tabelas. Um registrador de
16 bits (DPTR ou PC) indica o endereo de base da tabela e o acumulador carregado com o valor da
tabela.
Exemplo: A instruo MOVC A, @A + DPTR l a memria de programa no endereo dado por (A +
DPTR) e transfere o valor lido para o acumulador. A instruo MOVC A, @A + PC l a memria de
programa no endereo dado por (A + PC) e transfere o valor lido para o acumulador.

7.2. Instrues de Transferncia de Dados


O grupo de instrues de transferncia de dados subdividido em dois subgrupos: instrues usando a
RAM interna e instrues usando a RAM externa.

RAM Interna
A tabela a seguir mostra as instrues disponveis para movimentao de dados entre os espaos de
memria interna.

Mnemnico

Operao

Modo de Endereamento

Tempo de
Execuo (s)

MOV A, <fonte>

A = <fonte>

Dir / Ind / Reg / Imm

MOV <dest>, A

<dest> = A

Dir / Ind / Reg

MOV <dest>, <fonte>

<dest> = <fonte>

Dir / Ind / Reg / Imm

MOV DPTR, #DATA

DPTR = 16 bit Const

Constante imediata

PUSH <fonte>

INC SP: MOV @SP, <fonte>

Direto

POP <dest>

MOV <dest>, @SP: DEC SP

Direto

XCH A, <byte>

Acc e <byte> trocam os dados

Dir / Ind / Reg

XCHD A, @RI

Acc e <byte> trocam


os nibbles baixos

Indireto

A instruo MOV <dest>, <fonte> permite que os dados sejam transferidos entre qualquer dois
registradores da RAM interna ou dos SFR, sem o uso do acumulador. Lembre que os 128 bytes superiores

Universidade Santa Ceclia

51

MICROPROCESSADORES

Prof. Sandro Bastos

podem ser acessados apenas por endereamento indireto e os SFR apenas por endereamento direto.
A rea de stack reside na prpria RAM interna e as instrues de PUSH primeiro incrementam o stack
pointer, ento copia o byte no stack. As instrues de PUSH e POP usam apenas o endereamento direto para
identificar o byte que est sendo manipulado, enquanto que o stack acessado por endereamento indireto
atravs do registrador SP. Isto significa que o stack vai para os 128 bytes altos (se existirem) mas no para a
rea de SFR. Nos dispositivos onde no est implementado a rea alta, os bytes PUSHed so perdidos e os
bytes POPed so indeterminados.
As transferncias de dados incluem movimentaes em 16 bits, que podem ser utilizadas para inicializar
o Data Pointer (DPTR), para o uso de tabelas na memria de programa, ou para acesso memria de dados
externa.
A instruo XCH A, <byte> resulta na troca dos dados entre o acumulador e o byte endereado. A
instruo XCHD A, @RI similar, com a diferena que apenas os nibbles baixos esto envolvidos na
operao. Esta instruo facilita a manipulao de dados, de forma a economizar instrues nos programas.

RAM Externa
A memria externa pode ser acessada atravs de endereamento indireto, utilizando 8 ou 16 bits de
endereo. A escolha recai no uso de endereamento de um byte, atravs de @Ri, onde Ri pode ser R0 ou R1
do banco de registradores selecionado, ou um endereo de 2 bytes (16 bits) colocado no Data Pointer (DPTR).
A desvantagem do uso do endereamento de 16 bits est no fato de que, se utilizarmos um pequeno espao
de memria, ainda assim o port 2 ser inteiramente indisponibilizado para uso. No endereamento atravs de 8
bits, sacrificamos apenas algumas linhas do port 2.
A tabela a seguir indica as instrues de movimentao de dados em memria externa. Todas as
instrues so executadas em 2s, com um clock de 12MHz.

Largura do Endereo

Mnemnico

Operao

8 Bits

MOVX A, @Ri

L RAM Externa (Ri)

8 Bits

MOVX @Ri, A

Escreve RAM Externa (Ri)

16 Bits

MOVX A, @DPTR

L RAM Externa (DPTR)

16 Bits

MOVX @DPTR, A

Escreve RAM Externa (DPTR)

Em todos os acessos RAM externa, utilizamos sempre o acumulador como registrador intermedirio.
Os pulsos de READ ou WRITE so ativos somente durante a execuo da instruo MOVX. Normalmente
estes sinais esto inativos e se no forem utilizados, podem ser configurados como linhas de I/O extra.
Existem ainda duas instrues que esto disponveis para leitura de tabelas na memria de programa.
Estas instrues permitem apenas a leitura de dados na memria de programa (ROM), no permitindo a
atualizao dos mesmos. O mnemnico para esta MOVC (mov constant), e pode se apresentar de duas
formas:

Mnemnico

Operao

Tempo de Execuo (s)

MOVC A, @A + DPTRs

L memria de programa para (A + DPTR)

MOVC A, @A + PC

L memria de programa para (A + PC)

MOVC A, @A + DPTR
MOVC A, @A + PC

A diferena reside no registrador auxiliar utilizado durante a leitura, que pode ser o DPTR ou o PC. A

Universidade Santa Ceclia

52

MICROPROCESSADORES

Prof. Sandro Bastos

primeira instruo permite o acesso tabelas de at 256 itens, sendo que o DPTR indica o incio da tabela, e o
acumulador indica o offset do endereo desejado. Com a variao (incremento) do acumulador, podemos ler a
tabela inteira mantendo o DPTR fixo. A outra instruo, utiliza o acumulador como base de endereamento e o
PC como offset, de forma que a leitura de tabelas deve ser feita atravs de subrotinas como a que se segue:

MOV A, valor inicial


CALL tabela

A rotina tabela seria:

tabela:

MOVC A, @A + PC
RET

Este tipo de tabela pode conter at 255 itens, lembrando que neste caso, no podemos utilizar o valor 0
da tabela, que variar entre 1 e 255. Um valor colocado no offset 0 no ser lido.

Exerccio 1: Elabore o programa, informando o endereamento, mnemnicos e opcode. Executar o programa


no Kit Didtico e informar os valores solicitados.
a) Carregar o acumulador (Acc) com o valor 17h.
b) Carregar o registrador R5 com o valor 30h.
c) Transferir o contedo do acumulador para R1.
d) Carregar o registrador DPTR com o valor 5030h.
e) Trocar o contedo de R5 com o acumulador.
f) Transferir o contedo do acumulador para o endereo 5030h da memria RAM externa, utilizando DPTR.
g) Fim.

Endereo

Mnemnico

Opcode

5000

Aps a execuo, determine os seguintes valores:


Acc:

DPTR:

R5:

End. 5005h:

R1:

End. 5030h:

Universidade Santa Ceclia

53

MICROPROCESSADORES

Prof. Sandro Bastos

Exerccio 2: Preencha a tabela de acordo com os mnemnicos. Em seguida, execute o programa no modo
passo-a-passo e preencha os valores solicitados.

Endereo

Mnemnico

5000

MOV A, #39h

Opcode

MOV R0, A
MOV A, #71h
MOV DPTR, #5018h
MOV @R0, A
MOVX @DPTR, A
MOV 20h, A
LCALL MONITOR

Valores Solicitados:
Acc:

End. 39h:

R0:

End. 5018h:

DPTR:

End. 20h:

7.3. Instrues Aritmticas


O conjunto de instrues aritmticas listado na tabela a seguir. A tabela indica o modo de
endereamento que pode ser utilizado com cada instruo, para acessar o byte operando. Por exemplo, a
instruo ADD A,<byte>; pode ser escrita como:

Add A, 7FH

(endereamento direto)

Add A, @R0

(endereamento indireto)

Add A, R7

(endereamento por registrador)

Add A, #127

(constante imediata)

Mnemnico

Operao

Modo de Endereamento

Tempo de Execuo (s)

ADD A, <byte>

A = A + <byte>

Dir / Ind / Reg / Imm

ADDC A, <byte>

A = A + <byte> + C

Dir / Ind / Reg / Imm

SUBB A, <byte>

A = A - <byte> - C

Dir / Ind / Reg / Imm

INC A

A=A+1

Acumulador

INC <byte>

<byte> = <byte> + 1

Dir / Ind / Reg

INC DPTR

DPTR = DPTR + 1

Data Pointer

DEC A

A=A-1

Acumulador

DEC <byte>

<byte> = <byte> - 1

Dir / Ind / Reg

MUL AB

BeA=BxA

Acumulador e B

Universidade Santa Ceclia

54

MICROPROCESSADORES

DIV AB

Prof. Sandro Bastos

A = INT [A/B]

Acumulador e B

Acumulador

B = MOD [A/B]
DA A

Ajuste decimal

Os tempos de execuo indicados consideram um clock de 12MHz. Todas as instrues aritmticas so


executadas num tempo de 1s com exceo da instruo INC DPTR que consome 2s, e as instrues de
multiplicao e diviso que so efetuadas em 4s.
Perceba que um byte no espao de memria interna pode ser incrementado ou decrementado sem o uso
do acumulador. Inclusive o registrador de 16 bits DPTR pode ser incrementado desta forma. A instruo MUL
AB opera com os registradores A e B e pe o resultado (16 bits) nos registradores B (byte high) e A (byte low)
concatenados. A instruo DIV AB divide A por B e coloca o quociente (resultado da diviso inteiro em 8 bits)
no acumulador e o resto (8 bits) no registrador B.
A instruo de ajuste decimal DA A utilizada na aritmtica BCD, quando utilizamos esta aritmtica, as
operaes ADD e ADDC devem, obrigatoriamente, ser seguidas por uma operao de ajuste decimal, para que
os resultados continuem em BCD. Note que o ajuste decimal no converte o nmero binrio em BCD, mas
corrige os erros de aproximao ocorridos nos registradores.

Exerccio 3: Elabore o programa, informando o endereamento, mnemnicos e opcode. Executar o programa


no Kit Didtico e informar os valores solicitados.
a) Carregar Acc com o valor 02h.
b) Somar (sem carry) o Acc com o valor 03h.
c) Carregar R0 com o valor 20h.
d) Transferir o contedo do Acc para o endereo 20h da RAM interna, utilizando R0.
e) Somar (sem carry) o Acc com o contedo do endereo 20h, utilizando R0.
f) Somar (sem carry) o Acc com o contedo do endereo 20h.
g) Incrementar o Acc.
h) Decrementar R0.
i) Fim.

Endereo

Mnemnico

Opcode

5000

Valores solicitados:
Acc:
R0:
Universidade Santa Ceclia

55

MICROPROCESSADORES

Prof. Sandro Bastos

End. 20h:

7.4. Instrues Lgicas


A tabela a seguir mostra uma lista de instrues lgicas do 8051.

Mnemnico

Operao

Modo de
Endereamento

Tempo de
Execuo (s)

ANL A, <byte>
ANL <byte>, A
ANL <byte>, #DATA
ORL A, <byte>
ORL <byte>, A
ORL <byte>, #DATA
XRL A, <byte>
XRL <byte>, A
XRL <byte>, #DATA
CLR A
CPL A
RL A
RLC A
RR A
RRC A
SWAP A

A = A and <byte>
<byte> = <byte> and A
<byte> = <byte> and #DATA
A = A or <byte>
<byte> = <byte> or A
<byte> = <byte> or #DATA
A = A xor <byte>
<byte> = <byte> xor A
<byte> = <byte> xor #DATA
A = 00H
A = not A
Roda Acum. esquerda 1 bit
Roda Acum. esquerda c/ carry
Roda Acum. direita 1 bit
Roda Acum. direita c/ carry
Swap nibbles in A

Dir / Ind / Reg / Imm


Direto
Direto
Dir / Ind / Reg / Imm
Direto
Direto
Dir / Ind / Reg / Imm
Direto
Direto
Acumulador
Acumulador
Acumulador
Acumulador
Acumulador
Acumulador
Acumulador

1
1
2
1
1
2
1
1
2
1
1
1
1
1
1
1

Todos os modos de endereamento podem ser utilizados e as instrues so executadas em tempo de 1


a 2 s. Estas instrues podem ser executadas em qualquer byte de memria interna ou na rea de SFR. O
conjunto de instrues permite que sejam realizadas todas as operaes lgicas e ainda a instruo SWAP A,
que inverte os nibbles alto e baixo do acumulador, operao til quando operamos com o cdigo BCD.

Exerccio 4: Preencha a tabela de acordo com os mnemnicos. Em seguida, execute o programa e preencha
os valores solicitados.
Endereo

Mnemnico

5000

MOV A, #37h

Opcode

ANL A, #0Fh
MOV R1, #20h
ORL A, R1
MOV R2, A
CLR A
MOV A, #65h
XRL A, R2
LCALL MONITOR

Universidade Santa Ceclia

56

MICROPROCESSADORES

Prof. Sandro Bastos

Valores solicitados:
A:

R1:

R2:

7.5. Instrues Booleanas


A famlia 8051 contm um processador booleano completo. Um processador booleano consiste num
elemento que permite a manipulao direta de um nico bit dentro da palavra que pode ser de 8 ou mais bits
(byte). A RAM interna contm 128 bits endereveis (do endereo 20h at 2Fh) e o espao SFR contm mais
128 (todos com endereamento terminado por 0 ou por 8). Todos os ports so bits endereveis, e cada um
pode ser tratado como um port separado. A tabela seguinte mostra esse endereamento.

Byte
20
21
22
23
24
25
26
27
28
29
2
2B
2C
2D
2E
2F

Endereos dos bits


De (LSB)
At (MSB)
00
07
08
0F
10
17
18
1F
20
27
28
2F
30
37
38
3F
40
47
48
4F
50
57
58
5F
60
67
68
6F
70
77
78
7F

NOME

Byte

P0
TCON
P1
SCON
P2
IE
P3
IP
PSW
ACC
B

80
88
90
98
A0
A8
B0
B8
D0
E0
F0

Endereos dos bits


De (LSB)
At (MSB)
80
87
88
8F
90
97
98
9F
A0
A7
A8
AF
B0
B7
B8
BF
D0
D7
E0
E7
F0
F7

As instrues booleanas so mostradas na tabela:

Universidade Santa Ceclia

Mnemnico

Operao

Tempo de
Execuo (s)

ANL C, bit

C = C and bit

ANL C, /bit

C = C and not bit

ORL C, bit

C = C or bit

ORL C, /bit

C = C or not bit

MOV C, bit

C = bit

MOV bit, C

bit = C

CLR C

C=0

CLR bit

bit = 0

SETB C

C=1

SETB bit

bit =1

CPL C

C = not C

57

MICROPROCESSADORES

Prof. Sandro Bastos

CPL bit

bit = not bit

JC REL

Jump If C = 1

JNC REL

Jump If C = 0

JB bit, REL

Jump If bit = 1

JNB bit, REL

Jump If bit = 0

JBC bit, REL

Jump If bit = 1 : CLR bit

Este tipo de operao de bit no facilmente obtido em arquiteturas de microprocessador. Todos os bits
so acessados diretamente nos endereos 00H at 7FH na rea dos 128 bytes inferiores e de 80H at FFH no
espao SFR. Desta forma podemos atravs de instrues de programa, implementar circuitos lgicos dentro do
microcontrolador, evitando o uso de circuitos discretos ou PALs.

Exerccio 5: Elabore o programa, informando o endereamento, mnemnicos e opcode. Executar o programa


e informar os valores solicitados.
a) Carregar o endereo 20h com o valor D4h.
b) Transferir o bit 00 do endereo 20h para o Carry.
c) Efetuar lgica OU entre o Carry e o bit 01 do endereo 20h.
d) Transferir o bit 02 do endereo 20h para o Carry.
e) Efetuar lgica E entre o Carry e o bit 04 do endereo 20h.
f) Fim

Endereo

Mnemnico

Opcode

5000

Valores solicitados:
07

06

05

04

03

End. 20h:

02

01

00

C:

7.6. Instrues de Desvio


O grupo de instrues de desvio, ou de salto, est dividido em dois subgrupos correspondendo aos
desvios incondicionais e aos desvios condicionais.

Desvios Incondicionais

Universidade Santa Ceclia

58

MICROPROCESSADORES

Prof. Sandro Bastos

A tabela mostra uma nica instruo JMP end que na realidade implementada de trs formas. A
instruo SJMP (Short Jump) composta por dois bytes, constituindo um byte de opcode e um byte de offset.
Este fato limita o espao de endereamento em valores de -127 at +127 bytes em torno da instruo seguinte
do SJMP. Quando utilizamos a instruo LJMP (Long Jump) temos um comprimento de 3 bytes, que consiste
de dois bytes de endereo e um byte de opcode, permitindo o endereamento de 64Kbytes de memria de
programa. A instruo AJMP (Absolute Jump) codificada em 2 bytes sendo que o endereo formado por 11
bits e os 5 bits restantes utilizados no opcode.
Em todos os casos, o programador especifica o endereo de destino para o assembler da mesma forma,
um label ou uma constante de 16 bits. O assembler colocar o endereo de destino no formato correto para
cada dada instruo, e se o formato no comportar o valor, aparecer a mensagem Destination out of
range.
Temos ainda as instrues LCALL, que permite a chamada de subrotinas em qualquer posio dos
64Kbytes de memria, e ACALL, que se utiliza do mesmo formato de endereamento de 11 bits utilizado no
AJMP. As subrotinas devem ser finalizadas com o comando RET, e deve-se lembrar que cada chamada
demanda um RET, sem o qual o programa se perde.

Mnemnico

Operao

Tempo de Execuo (s)

JMP end

Salto para end

JMP @A + DPTR

Salto para A + DPTR

CALL end

Chama subrotina no endereo end

RET

Retorno de subrotina

RETI

Retorno de interrupo

NOP

Sem operao

A instruo RETI utilizada como retorno da rotina de interrupo. A nica diferena entre a instruo
RET e a RETI, que a RETI informa ao sistema de controle de interrupo que a interrupo em progresso foi
atendida.
Os saltos acima listados so chamados de saltos incondicionais, pois no dependem de nenhuma
verificao de condies anteriores. Os chamados saltos condicionais, dependentes da verificao de certos
bits de controle, esto listados abaixo:

Desvios Condicionais
No existe bit de zero no registrador PSW, portanto as instrues JZ e JNZ devem testar o dado do
acumulador para estas condies. A instruo DJNZ adequada para controle de loops, pois sua configurao
de dupla funo (decrementa e testa) torna fcil a execuo de loops.
A instruo CJNE pode ser utilizada para controle de loops ou para teste condicional de bytes, na forma
de maior que ou menor que, pois existe a indicao de maior ou menor atravs do bit de CARRY, localizado
no PSW.

Mnemnico

Operao

Modo de
Endereamento

Tempo de
Execuo (s)

JZ rel

Salto se A=0

Acumulador

JNZ rel

Salto se A no 0

Acumulador

DJNZ <byte>, rel

Decrementa e salta se no 0

Direto Registrador

CJNE A, <byte>, rel

Salta se A diferente de <byte>

Direto Imediato

CJNE <byte>, #DATA, rel

Salta se <byte> diferente de #DATA

Indireto Registrador

Universidade Santa Ceclia

59

MICROPROCESSADORES

Prof. Sandro Bastos

Exerccio 6: Elabore o programa, informando o endereamento, mnemnicos e opcode. Executar o programa


e informar os valores solicitados.
a) Carregar o acumulador com o valor 00h.
b) Carregar R3 com o valor 08h.
c) Chamar a subrotina SOMA (colocar a subrotina no endereo 5030h).
d) Transferir o contedo do acumulador para R5.
e) Incrementar o acumulador.
f) Fim

Subrotina SOMA: Somar (sem carry) o acumulador com R3. Retornar.

Endereo

Mnemnico

Opcode

5000

Valores solicitados:
Acc:

R3:

R5:

Exerccio 7: Preencha a tabela de acordo com os mnemnicos. Em seguida, execute o programa e preencha
os valores solicitados.
Endereo

RET
Mnemnico

5000

MOV R3, #07h

Opcode

MOV A, #3Ah
ADD A, R3
LCALL XYZ
DEC A
MOV DPTR, #5080h
INC DPTR
MOVX @DPTR, A
LCALL MONITOR
XYZ: MOV R5, #2Ch
XRL A, R5
MOV 25h, A

Universidade Santa Ceclia

60

MICROPROCESSADORES

Prof. Sandro Bastos

Valores solicitados:
A:

End. 25h:

R3:

DPTR:

R5:

End. 5081h:

Universidade Santa Ceclia

61

MICROPROCESSADORES

8.

Prof. Sandro Bastos

KIT DIDTICO SDM 9431

O Kit Didtico SDM 9431 um sistema de desenvolvimento para os microcontroladores da famlia


8051.Baseado no microcontrolador 8031 (verso sem ROM interna do 8051) o sistema possui: memria RAM
externa de 32 Kbytes, memria EPROM externa de 16 Kbytes contendo o programa monitor do sistema,
teclado de 24 teclas, display de cristal lquido, leds, chaves, conversor analgico digital, conversor digital
analgico, proto-board de 550 pontos, fontes de alimentao de +5 (3 A), +12 (1 A) e -12 (1 A) volts.
Os microcontroladores da famlia 8051 separam as regies de memria em memria de programa, onde
estaro residindo as instrues, e em memria de dados, onde estaro residindo os dados. A memria de
programa uma memria somente de leitura. Para possibilitar o desenvolvimento de programas, o sistema
SDM 9431 possui a memria RAM acessada como memria de dados e como memria de programa. O
endereo utilizado para a memria est apresentado na tabela:

ENDEREO

DISPOSITIVO

0000H 3FFFH

ROM

4000H - BFFFH

RAM

C000H - DFFFH

Livre

E000H - FFFFH

Dispositivos perifricos

Dos 16 Kbytes disponveis de ROM, aproximadamente 12 Kbytes foram ocupados pelo programa
monitor, os 4 Kbytes restantes, de 3000H at 3FFFH esto disponveis. As posies iniciais da memria RAM
so utilizadas pelo programa monitor. Assim o usurio dever iniciar os seus programas a partir do endereo
5000H.
Alm das portas paralelas, porta serial e temporizadores, que so perifricos internos da famlia 8051,
foram incorporados alguns perifricos externos ao microcontrolador: teclado, display de cristal lquido,
conversor digital analgico de um canal de oito bits e um conversor analgico digital de oito canais
multiplexados de oito bits.

8.1. Operao do Kit Didtico

Para inserir um programa

Tecla RESET.

Tecla 1 (INS/VER).

Selecionar 1 RAM Externa.

Inserir o endereo 5000 utilizando as teclas de 0 a F. ENTER.

Inserir o cdigo de mquina do programa.

Tecla . (ESC).

Para executar um programa

Tecla 0 (EXEC).

Inserir o endereo 5000, onde est o incio do programa.

ENTER.

Universidade Santa Ceclia

62

MICROPROCESSADORES

Prof. Sandro Bastos

Para visualizar/alterar os registradores, basta pressionar as teclas correspondentes

ACC

DPTR

SP

PSW

PC

E_REG

REG_ESP

RBIT

Para executar um programa no modo Passo a Passo

Carregar o PC (Contador de Programa) com o endereo inicial: 5000.

Pressionar a tecla PPASSO. A tela ir mostrar os valores de Acc, SP e PC.

Teclar ENTER para executar uma instruo.

Para visualizar outros registradores ou alguma posio de memria, teclar ESC e o registrador
desejado. Para voltar, pressione PPASSO.

Universidade Santa Ceclia

63

MICROPROCESSADORES

9.

Prof. Sandro Bastos

ANEXO A: TABELA DE INSTRUES DO 8051

Os bits de flags sero afetados conforme indicado a seguir, ou por operaes no byte do registro SFR de
endereo 208 (PSW), ou ainda por operaes de bits nos endereos de 209 a 215 (bits do PSW).

Instrues
ADD
ADDC
ANL C, bit
ANL C, /bit
CJNE
CLR C
CPL C
DA
SUBB

C
X
X
X
X
X
0
X
X
X

Flags
OV
X
X

AC
X
X

Instrues
DIV
MOV C, bit
MUL
ORL C, bit
ORL C, /bit
RLC
RRC
SETB C

Flags
OV
X

C
0
X
0
X
X
X
X
1

AC

Na nomenclatura utilizada nas tabelas seguintes, tem-se:

Direto ==> Indica um endereamento de memria de 8 bits (primeiras 256 posies interna ou externas).
@ ==> Significa "endereado pelo valor de ...."
#Dado ==> Indica valor constante de 8 bits.
#Dado 16 ==> Indica valor constante de 16 bits.
Addr 16 ==> Endereo destino de 16 bits. Usado para apontar para os 64 Kbytes do espao de memria de
programa.
Addr 11 ==> Endereo destino de 11 bits. Usado para apontar para os 2 Kbytes da pgina que contm a
instruo em uso.
Rel ==> Indica que endereamento relativo.
Bit ==> Usado para indicar endereamento direto de bit da RAM interna ou dos registros de funo especial.

INSTRUES ARITMTICAS

Opcode

Bytes

Perodo

ADD A, R0

Adicionar registro R0 ao acumulador.

28

12

ADD A, R1

Adicionar registro R1 ao acumulador.

29

12

ADD A, R2

Adicionar registro R2 ao acumulador.

2A

12

ADD A, R3

Adicionar registro R3 ao acumulador.

2B

12

ADD A, R4

Adicionar registro R4 ao acumulador.

2C

12

ADD A, R5

Adicionar registro R5 ao acumulador.

2D

12

ADD A, R6

Adicionar registro R6 ao acumulador.

2E

12

ADD A, R7

Adicionar registro R7 ao acumulador.

2F

12

ADD A, Direto

Soma o contedo da posio de memria ao acumulador.

25

12

ADD A, @R0

Soma o contedo da RAM endereada por R0 ao acumulador

26

12

ADD A, @R1

Soma o contedo da RAM endereada por R1 ao acumulador

27

12

Universidade Santa Ceclia

64

MICROPROCESSADORES

Prof. Sandro Bastos

ADD A, #Dado

Soma o dado ao acumulador

24

12

ADDC A, R0

Soma o contedo de R0 e o carry ao acumulador.

38

12

ADDC A, R1

Soma o contedo de R1 e o carry ao acumulador.

39

12

ADDC A, R2

Soma o contedo de R2 e o carry ao acumulador.

3A

12

ADDC A, R3

Soma o contedo de R3 e o carry ao acumulador.

3B

12

ADDC A, R4

Soma o contedo de R4 e o carry ao acumulador.

3C

12

ADDC A, R5

Soma o contedo de R5 e o carry ao acumulador.

3D

12

ADDC A, R6

Soma o contedo de R6 e o carry ao acumulador.

3E

12

Soma o contedo de R7 e o carry ao acumulador.

3F

12

Soma o contedo da posio de memria e o carry ao acumulador

35

12

36

12

37

12

ADDC A, R7
ADDC A, Direto

ADDC A, @R1

Soma o contedo da RAM endereada por R0 e o carry ao


acumulador
Soma o contedo da RAM endereada por R0 e o carry ao
acumulador

ADDC A, #Dado

Soma o dado e o carry ao acumulador.

34

12

SUBB A, R0

Subtrai o contedo de R0 e o borrow do acumulador

98

12

SUBB A, R1

Subtrai o contedo de R1 e o borrow do acumulador

99

12

SUBB A, R2

Subtrai o contedo de R2 e o borrow do acumulador

9A

12

SUBB A, R3

Subtrai o contedo de R3 e o borrow do acumulador

9B

12

SUBB A, R4

Subtrai o contedo de R4 e o borrow do acumulador

9C

12

SUBB A, R5

Subtrai o contedo de R5 e o borrow do acumulador

9D

12

SUBB A, R6

Subtrai o contedo de R6 e o borrow do acumulador

9E

12

SUBB A, R7

Subtrai o contedo de R7 e o borrow do acumulador

9F

12

95

12

96

12

ADDC A, @R0

SUBB A, @R0

Subtrai o contedo da posio de memria e o borrow do


acumulador
Subtrai o contedo da RAM endereada por R0 e o borrow do
acumulador

SUBB A, @R1

Subtrai o contedo da RAM endereada por R1 e o borrow do


acumulador

97

12

SUBB A,#Dado

Subtrai o dado e o borrow do acumulador

94

12

Incrementar acumulador.

04

12

Incrementar registro R0

08

12

Incrementar registro R1

09

12

INC R2

Incrementar registro R2

0A

12

INC R3

Incrementar registro R3

0B

12

INC R4

Incrementar registro R4

0C

12

INC R5

Incrementar registro R5

0D

12

INC R6

Incrementar registro R6

0E

12

INC R7

Incrementar registro R7

0F

12

INC Direto

Soma 1 posio de memria

05

12

INC @R0

Soma 1 RAM endereada por R0

06

12

INC @R1

Soma 1 RAM endereada por R1

07

12

DEC A

Decrementar acumulador.

14

12

DEC R0

Decrementar registro R0

18

12

SUBB A, Direto

INC A
INC R0
INC R1

Universidade Santa Ceclia

65

MICROPROCESSADORES

Prof. Sandro Bastos

DEC R1

Decrementar registro R1

19

12

DEC R2

Decrementar registro R2

1A

12

DEC R3

Decrementar registro R3

1B

12

DEC R4

Decrementar registro R4

1C

12

DEC R5

Decrementar registro R5

1D

12

DEC R6

Decrementar registro R6

1E

12

DEC R7

Decrementar registro R7

1F

12

DEC Direto

Subtrai 1 da posio de memria

15

12

Subtrai 1 da RAM endereada por R0

16

12

Subtrai 1 da RAM endereada por R1

17

12

INC DPTR

Incrementar Data Pointer.

A3

24

MUL AB

Multiplica A * B; resultado: BA

A4

48

DIV AB

Divide A / B; resultado: A inteiro e B resto

84

48

DA A

Ajuste decimal do acumulador.

D4

12

Opcode

Bytes

Perodo

DEC @R0
DEC @R1

INSTRUES LGICAS
ANL A, R0

AND registro R0 e acumulador.

58

12

ANL A, R1

AND registro R1 e acumulador.

59

12

ANL A, R2

AND registro R2 e acumulador.

5A

12

ANL A, R3

AND registro R3 e acumulador.

5B

12

AND registro R4 e acumulador.

5C

12

AND registro R5 e acumulador.

5D

12

AND registro R6 e acumulador.

5E

12

ANL A, R7

AND registro R7 e acumulador.

5F

12

ANL A, Direto

AND entre memria e acumulador.

55

12

ANL A, @R0

AND entre RAM endereada por R0 e acumulador

56

12

ANL A, @R1

AND entre RAM endereada por R1 e acumulador

57

12

ANL A, #Dado

AND entre dado e acumulador.

54

12

ANL Direto, A

AND entre acumulador e memria; resultado na memria

52

12

ANL Direto, #Dado

AND entre dado e memria

53

24

ORL A, R0

OR registro R0 e acumulador.

48

12

ORL A, R1

OR registro R1 e acumulador.

49

12

ORL A, R2

OR registro R2 e acumulador.

4A

12

ORL A, R3

OR registro R3 e acumulador.

4B

12

ORL A, R4

OR registro R4 e acumulador.

4C

12

ORL A, R5

OR registro R5 e acumulador.

4D

12

OR registro R6 e acumulador.

4E

12

OR registro R7 e acumulador.

4F

12

OR entre memria e acumulador

45

12

OR entre a RAM endereada por R0 e o acumulador

46

12

ANL A, R4
ANL A, R5
ANL A, R6

ORL A, R6
ORL A, R7
ORL A, Direto
ORL A, @ R0

Universidade Santa Ceclia

66

MICROPROCESSADORES

Prof. Sandro Bastos

ORL A, @ R1

OR entre a RAM endereada por R1 e o acumulador

47

12

ORL A, #Dado

OR entre dado e acumulador.

44

12

ORL Direto, A

OR entre acumulador e memria; resultado na memria

42

12

ORL Direto, #Dado

OR entre dado e memria.

43

24

XRL A, R0

OU-Exclusivo registro R0 e acumulador.

68

12

XRL A, R1

OU-Exclusivo registro R1 e acumulador.

69

12

XRL A, R2

OU-Exclusivo registro R2 e acumulador.

6A

12

XRL A, R3

OU-Exclusivo registro R3 e acumulador.

6B

12

OU-Exclusivo registro R4 e acumulador.

6C

12

OU-Exclusivo registro R5 e acumulador.

6D

12

XRL A, R6

OU-Exclusivo registro R6 e acumulador.

6E

12

XRL A, R7

OU-Exclusivo registro R7 e acumulador.

6F

12

XRL A, Direto

OU-Exclusivo entre memria e acumulador.

65

12

XRL A, @R0

OU-Exclusivo entre RAM ender. por R0 e acumulador

66

12

XRL A, @R1

OU-Exclusivo entre RAM ender. por R1 e acumulador

67

12

XRL A, #Dado

OU-Exclusivo entre dado e acumulador.

64

12

XRL Direto, A

OU-Exclusivo entre acumulador e memria

62

12

XRL Direto, #Dado

OU-Exclusivo entre dado e memria

63

24

CLR A

Zerar acumulador.

E4

12

CPL A

Complementar acumulador.

F4

12

23

12

33

12

03

12

13

12

C4

12

XRL A, R4
XRL A, R5

Rodar acumulador para esquerda.


RL A
b7

b0

Rodar acumulador para esquerda com carry.


RLC A
Cy

b7

b0

Rodar acumulador para direita.


RR A

b7

b0

Rodar acumulador para direita com carry.


RRC A
b7

SWAP A

b0

Trocar nibbles do acumulador.

Universidade Santa Ceclia

Cy

67

MICROPROCESSADORES

Prof. Sandro Bastos

INSTRUES DE TRANSFERNCIA DE DADOS

Opcode

Bytes

Perodo

MOV A, R0

Mover registro R0 para acumulador.

E8

12

MOV A, R1

Mover registro R1 para acumulador.

E9

12

MOV A, R2

Mover registro R2 para acumulador.

EA

12

MOV A, R3

Mover registro R3 para acumulador.

EB

12

MOV A, R4

Mover registro R4 para acumulador.

EC

12

MOV A, R5

Mover registro R5 para acumulador.

ED

12

MOV A, R6

Mover registro R6 para acumulador.

EE

12

Mover registro R7 para acumulador.

EF

12

Mover memria para acumulador.

E5

12

E6

12

E7

12

MOV A, R7
MOV A, Direto

MOV A, @R1

Mover RAM endereada indiretamente por R0 para o


acumulador.
Mover RAM endereada indiretamente por R1 para o
acumulador.

MOV A, #Dado

Mover o dado para acumulador.

74

12

MOV R0, A

Mover acumulador para registro R0.

F8

12

MOV R1, A

Mover acumulador para registro R1.

F9

12

MOV R2, A

Mover acumulador para registro R2.

FA

12

MOV R3, A

Mover acumulador para registro R3.

FB

12

MOV R4, A

Mover acumulador para registro R4.

FC

12

MOV R5, A

Mover acumulador para registro R5.

FD

12

MOV R6, A

Mover acumulador para registro R6.

FE

12

MOV R7, A

Mover acumulador para registro R7.

FF

12

MOV R0, Direto

Mover memria para registro R0.

A8

24

MOV R1, Direto

Mover memria para registro R1.

A9

24

MOV R2, Direto

Mover memria para registro R2.

AA

24

Mover memria para registro R3.

AB

24

Mover memria para registro R4.

AC

24

Mover memria para registro R5.

AD

24

MOV R6, Direto

Mover memria para registro R6.

AE

24

MOV R7, Direto

Mover memria para registro R7.

AF

24

MOV R0, #Dado

Mover dado para registro R0.

78

12

MOV R1, #Dado

Mover dado para registro R1.

79

12

MOV R2, #Dado

Mover dado para registro R2.

7A

12

MOV R3, #Dado

Mover dado para registro R3.

7B

12

MOV R4, #Dado

Mover dado para registro R4.

7C

12

MOV R5, #Dado

Mover dado para registro R5.

7D

12

MOV R6, #Dado

Mover dado para registro R6.

7E

12

MOV R7, #Dado

Mover dado para registro R7.

7F

12

MOV Direto, A

Mover acumulador para memria.

F5

12

MOV Direto, R0

Mover registro R0 para memria.

88

24

MOV Direto, R1

Mover registro R1 para memria.

89

24

Mover registro R2 para memria.

8A

24

MOV A, @R0

MOV R3, Direto


MOV R4, Direto
MOV R5, Direto

MOV Direto, R2

Universidade Santa Ceclia

68

MICROPROCESSADORES

Prof. Sandro Bastos

MOV Direto, R3

Mover registro R3 para memria.

8B

24

MOV Direto, R4

Mover registro R4 para memria.

8C

24

MOV Direto, R5

Mover registro R5 para memria.

8D

24

MOV Direto, R6

Mover registro R6 para memria.

8E

24

MOV Direto, R7

Mover registro R7 para memria.

8F

24

MOV Direto1, Direto2

Mover contedo da memria 2 para memria 1.

85

24

MOV Direto, @R0

Mover RAM endereada por R0 para memria.

86

24

MOV Direto, @R1

Mover RAM endereada por R1 para memria.

87

24

24

F6

12

MOV @R1, A

Mover dado para memria.


Mover o acumulador para a RAM indiretamente endereada por
R0
Mover o acumulador para a RAM indiretamente endereada por
R1

75

F7

12

MOV @R0, Direto

Mover a memria para a RAM endereada por R0.

A6

24

MOV @R1, Direto

Mover a memria para a RAM endereada por R1.

A7

24

MOV @R0, #Dado

Mover dado para RAM ender. indiretamente por R0.

76

12

MOV @R1, #Dado

Mover dado para RAM ender. indiretamente por R1.

77

12

MOV DPTR, #Dado 16

Carregar DPTR com constante de 16 bits.

90

24

MOVC A, @A+DPTR

Mover cdigo relativo (DPTR + Acc) para acumulador.

93

24

MOVC A, @A+PC

Mover cdigo relativo (PC + Acc) para acumulador.

83

24

MOVX A, @R0

Mover RAM endereada indiretamente por R0 (8 bits) para o


acumulador

E2

24

MOVX A, @R1

Mover RAM endereada indiretamente por R1 (8 bits) para o


acumulador

E3

24

E0

24

F2

24

F3

24

F0

24

MOV Direto, #Dado


MOV @R0, A

MOVX @DPTR, A

Mover RAM externa indiretamente endereada pelo DPTR (16


bits) para o acumulador
Mover acumulador para RAM externa indiretamente
endereada por R0 (8 bits)
Mover acumulador para RAM externa indiretamente
endereada por R1 (8 bits)
Mover acumulador para a RAM externa indiretamente
endereada pelo DPTR (16 bits)

PUSH Direto

Incrementa o SP e ento coloca a memria no Stack

C0

24

POP Direto

Retira dado do stack e coloca na memria, depois decrementa


SP

D0

24

XCH A, R0

Trocar registro R0 com acumulador.

C8

12

Trocar registro R1 com acumulador.

C9

12

XCH A, R2

Trocar registro R2 com acumulador.

CA

12

XCH A, R3

Trocar registro R3 com acumulador.

CB

12

XCH A, R4

Trocar registro R4 com acumulador.

CC

12

XCH A, R5

Trocar registro R5 com acumulador.

CD

12

XCH A, R6

Trocar registro R6 com acumulador.

CE

12

XCH A, R7

Trocar registro R7 com acumulador.

CF

12

XCH A ,Direto

Trocar memria com acumulador.

C5

12

XCH A, @R0

Trocar RAM indiretamente endereada por R0 com o


acumulador

C6

12

XCH A, @R1

Trocar RAM indiretamente endereada por R1 com o


acumulador

C7

12

MOVX A, @DPTR
MOVX @R0, A
MOVX @R1, A

XCH A, R1

Universidade Santa Ceclia

69

MICROPROCESSADORES

Prof. Sandro Bastos

XCHD A, @R0

Troca nibble menos significativo do acumulador com a RAM


ender. indiretamente por R0 entre si

D6

12

XCHD A, @R1

Troca nibble menos significativo do acumulador com a RAM


ender. indiretamente por R1 entre si

D7

12

Opcode

Bytes

Perodo

Zerar carry.

C3

12

Zerar bit endereado.

C2

12

Setar carry.

D3

12

Setar bit endereado.

D2

12

CPL C

Complementar carry.

B3

12

CPL Bit

Complementar bit endereado.

B2

12

ANL C, Bit

AND bit endereado e carry.

82

24

ANL C, /Bit

AND complemento do bit endereado e carry.

B0

24

ORL C, Bit

OR bit endereado e carry.

72

24

ORL C, /Bit

OR complemento do bit endereado e carry.

A0

24

MOV C, Bit

Mover bit endereado para carry.

A2

12

MOV Bit, C

Mover carry para bit endereado.

92

24

JC rel

Jump se carry = 1.

40

24

JNC rel

Jump se carry = 0.

50

24

JB Bit, rel

Jump se bit endereado = 1.

20

24

JNB Bit, rel

Jump se bit endereado = 0.

30

24

JBC Bit, rel

Jump se bit endereado = 1 e zere esse bit.

10

24

Opcode

Bytes

Perodo

a10a9a8 10001
a7a6a5a4a3a2a1a0

24

INSTRUES BOOLEANAS
CLR C
CLR Bit
SETB C
SETB Bit

INSTRUES DE DESVIO
ACALL End 11

Chamada absoluta de subrotina (3 primeiros bits MSB


do OpCode so os bits MSB do endereo)

LCALL End 16

Chamada longa de subrotina.

12

24

RET

Retorno de subrotina.

22

24

RETI

Retorno de interrupo.

32

24

AJMP End 11

Jump absoluto (3 primeiros bits MSB do OpCode so


os bits MSB do endereo)

a10a9a8 00001
a7a6a5a4a3a2a1a0

24

LJMP End 16

Jump longo.

02

24

SJMP rel

Jump curto (endereo relativo).

80

24

JMP @A +DPTR

Jump para o endereo obtido da soma do acumulador


e do DPTR.

73

24

JZ rel

Jump se acumulador for zero.

60

24

JNZ rel

Jump se acumulador no for zero.

70

24

CJNE A, Direto, rel

Compare memria endereada com acumulador e


jump se no igual.

B5

24

Universidade Santa Ceclia

70

MICROPROCESSADORES

Prof. Sandro Bastos

CJNE A, #Dado, rel

Compare o dado com acumulador e jump se no igual.

B4

24

CJNE R0, #Dado, rel

Compara dado com registro R0 e jump se no igual.

B8

24

CJNE R1, #Dado, rel

Compara dado com registro R1 e jump se no igual.

B9

24

CJNE R2, #Dado, rel

Compara dado com registro R2 e jump se no igual.

BA

24

CJNE R3, #Dado, rel

Compara dado com registro R3 e jump se no igual.

BB

24

CJNE R4, #Dado, rel

Compara dado com registro R4 e jump se no igual.

BC

24

CJNE R5, #Dado, rel

Compara dado com registro R5 e jump se no igual.

BD

24

CJNE R6, #Dado, rel

Compara dado com registro R6 e jump se no igual.

BE

24

24

B6

24

CJNE @R1, #Dado, rel

Compara dado com registro R7 e jump se no igual.


Compara e desvia se a RAM endereada por R0 for
diferente do dado
Compara e desvia se a RAM endereada por R1 for
diferente do dado

BF

B7

24

DJNZ R0, rel

Decremente registro R0 e jump se no zero.

D8

24

DJNZ R1, rel

Decremente registro R1 e jump se no zero.

D9

24

DJNZ R2, rel

Decremente registro R2 e jump se no zero.

DA

24

DJNZ R3, rel

Decremente registro R3 e jump se no zero.

DB

24

DJNZ R4, rel

Decremente registro R4 e jump se no zero.

DC

24

DJNZ R5, rel

Decremente registro R5 e jump se no zero.

DD

24

DJNZ R6, rel

Decremente registro R6 e jump se no zero.

DE

24

DJNZ R7, rel

Decremente registro R7 e jump se no zero.

DF

24

DJNZ Direto,rel

Decremente a memria e jump se no zero.

D5

24

NOP

Nenhuma operao.

00

12

CJNE R7, #Dado, rel


CJNE @R0, #Dado, rel

Universidade Santa Ceclia

71

MICROPROCESSADORES

Prof. Sandro Bastos

10. ANEXO B: SISTEMA MNIMO COM O 8051


Alm das memrias, faz-se necessrio a utilizao de um outro CI (no caso o 74373) para a
multiplexao de dados e endereos. Ocorre da seguinte forma: no primeiro ciclo de mquina, o 8051 coloca
nos pinos AD0 a AD7 o byte menos significativo do endereo externo e leva o pino ALE (Address Latch Enable
- Habilitador da Trava de Endereos) a nvel alto, de modo que o 74373 (oito Latches tipo D) coloque em suas
sadas essa informao, e logo em seguida passa este pino para nvel baixo, para que esse byte fique retido no
74373. Aps isso, os pinos AD0 a AD7 estaro livres para o transporte dos dados.
Na figura estamos utilizando 8 KB de RAM externa, alm dos 256 bytes de RAM interna. Alm disso,
temos um total de 8KB de memria ROM que, no caso do 8051, pode estar sendo utilizado apenas no CI
externo ou com os 4096 bytes menos significativos em memria interna e os 4096 bytes mais significativos na
memria externa. Para fazer uma leitura na ROM externa, o pino PSEN ser levado a nvel baixo, para fazer
uma leitura na RAM externa, o pino RD ser levado a nvel baixo e, para fazer uma escrita na RAM externa, o
pino WR ser levado a nvel baixo.

Universidade Santa Ceclia

72

MICROPROCESSADORES

Prof. Sandro Bastos

11. BIBLIOGRAFIA

Sistemas Digitais - Princpios e Aplicaes


Autores: Tocci e Widmer
Editora LTC / 7 Edio

Sistemas Digitais - Uma Abordagem Integrada


Autor: John P. Uyemura
Editora Thomson

Apostila "Sistemas Digitais Seqenciais"


Autor: Prof. Jadir Denis P. Albino

Eletrnica Digital
Autor: Hairton Melo
Editora Makron Books

Elementos de Eletrnica Digital


Autor: Capuano Idoeta
Editora rica

Microcontrolador 8051 Detalhado


Autor: Denys E. C. Nicolosi
Editora rica

Laboratrio de Microcontroladores Famlia 8051


Autor: Denys E. C. Nicolosi
Editora rica

Microcontroladores 8051
Autor: Salvador P. Gimenez
Editora: Prentice Hall

Manual de Teoria e Experincias Mdulo SDM 9431


Autor: Datapool Eletrnica

Universidade Santa Ceclia

73

Potrebbero piacerti anche