Você está na página 1de 78

1

Faculdade de Cincia e Tecnologia


e
Engenharia de Eltrica
e
Disciplina: Microprocessadores e Microcontroladores
Professor: Vitor Leo Filardi
a

Apostila de Programao em 8051


ca

Sumrio
a
1 Primeira Unidade
1.1 Explicaao Intuitiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
c
1.2 Princ
pios Bsicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
a
1.2.1 Conceitos Bsicos da Computaao . . . . . . . . . . . . . . . . . . . . . . .
a
c
1.2.2 Blocos Bsicos de microcomputadores . . . . . . . . . . . . . . . . . . . . .
a
1.3 Arquitetura do Microprocessador/Microcontrolador . . . . . . . . . . . . . . . . . .
1.4 A CPU Internamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5 O Microcontrolador 8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1 Memria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
o
1.5.2 Circuito de Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.3 O Gerador de Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.4 Interrupao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
c
1.5.5 Registro de Controle das Interrupoes . . . . . . . . . . . . . . . . . . . . .
c
1.5.6 Tempo para Atendimento das Interrupoes . . . . . . . . . . . . . . . . . .
c
1.5.7 Ajuste das Interrupoes Externas para serem Ativas em N ou Transiao
c
vel
c
1.5.8 Hardware para expandir as possibilidade de Interrupao Externa . . . . . .
c
1.5.9 Exerc
cios Resolvidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.10 Conjunto de Instruoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
c
2 Segunda Unidade
2.1 Ciclos de Mquina . . . . . . . . . . . . . . . . . . . . . . .
a
2.2 Portas de I/O . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 Princ
pio de Funcionamento e Utilizaao . . . . . . .
c
2.2.2 Caracter
sticas Gerais e de Tempo dos Ports . . . .
2.2.3 Uso das Portas de I/O para a Expanso da Memria
a
o
2.2.4 Seleao de Programa Externo ou Interno . . . . . . .
c
2.2.5 Uso dos Pinos da Porta 3 como funoes Alternativas
c
2.2.6 Capacidade de Corrente nos Pinos de I/O . . . . . .
2.3 Modos de Endereamento das Instruoes . . . . . . . . . . .
c
c
2.3.1 Endereamento por Registrador . . . . . . . . . . . .
c
2.3.2 Endereamento Direto . . . . . . . . . . . . . . . . .
c
2.3.3 Endereamento Indireto . . . . . . . . . . . . . . . .
c
2.3.4 Endereamento Imediato . . . . . . . . . . . . . . .
c
2.3.5 Endereamento Relativo . . . . . . . . . . . . . . . .
c
2.3.6 Endereamento Absoluto . . . . . . . . . . . . . . .
c
2.3.7 Endereamento Longo . . . . . . . . . . . . . . . . .
c
2.3.8 Endereamento Indexado . . . . . . . . . . . . . . .
c
2.4 Temporizadores e Contadores . . . . . . . . . . . . . . . . .
2.4.1 Introduao . . . . . . . . . . . . . . . . . . . . . . .
c
2.4.2 Registros Envolvidos . . . . . . . . . . . . . . . . . .
2.4.3 Modos de operaao . . . . . . . . . . . . . . . . . . .
c
2.4.4 Exerc
cios . . . . . . . . . . . . . . . . . . . . . . . .
3

. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
de Dados e Programa
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

7
7
8
8
9
12
13
14
15
21
24
25
29
32
32
33
34
36

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

41
41
42
42
45
46
47
47
48
48
48
48
49
50
50
51
51
51
52
52
52
55
58


SUMARIO

4
3 Terceira Unidade
3.1 Comunicaao Serial . . . . . . . . . . . . . . . .
c
3.1.1 Introduao . . . . . . . . . . . . . . . .
c
3.1.2 Registros Envolvidos . . . . . . . . . . .
3.1.3 Modos de Operaao . . . . . . . . . . .
c
3.1.4 Cuidados com a Porta Serial . . . . . .
3.1.5 Comunicaao entre vrios 8051 . . . . .
c
a
3.1.6 Comunicaao serial entre o 8051 e o PC
c
3.1.7 Exerc
cios . . . . . . . . . . . . . . . . .
3.2 Programaao em Assembly . . . . . . . . . . .
c
3.2.1 Introduao terica . . . . . . . . . . . .
c
o
3.2.2 Estratgias de elaboraao de programas
e
c
3.2.3 Fluxogramas . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

65
65
65
65
67
70
72
73
74
76
76
77
78

Referncias Bibliogrcas
e
a
GIMENEZ, S. P. Microcontroladores 8051. [S.l.]: Editora Pearson Education do Brasil, 2002.

NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000.

SILVA, V. P. da. Aplicaoes Prticas do Microcontrolador 8051. [S.l.]: Editora Erica, 1998.
c
a

Cap
tulo 1

Primeira Unidade
O que Microcontrolador
e
1.1

Explicao Intuitiva
ca

Vamos fazer de conta que somos meros aprendizes de cozinheiros, o chefe de cozinha teve que sair
e chega um pedido de uma torta de chocolate do gerente da casa. O primeiro passo que nos vamos
dar em direao ao livro de receitas onde dever ter impresso a rotina de como fazer uma Torta
e
c
a
de Chocolate
Tudo bem at aqui. E agora como vamos acessar a receita da torta? De que se compe uma receita?
e
o
Pois bem, vamos procurar a pgina que contm o t
a
e
tulo Torta de Chocolate, encontra-se
ento a receita que equivalente a um software de construao da torta, que est gravada em um
a
e
c
a
pgina ABC do livro de receitas. Notemos que, na pgina, apenas lemos; no escrevemos nada
a
a
a
l, ou seja, em trocado de mi do ser a nossa futura ROM - Read Only Memory - e pgina o nosso
a
u
a
a
endereo, pois toda vez quisermos tal informaao basta acessar tal endereo e obt-l.
c
c
c
e a
Poder
amos ainda necessitar de uma cobertura para a torta caso fossemos mostrar servio para
c
o chefe da casa, vejamos que no livro de receita exista em uma outra pgina a rotina Cobertura
a
para Tortas e que esta por sua vez estava seperada por servir para mais de um tipo de torta, e
poder
amos partir para a sua execuao e depois retornar a torta, o que chamado tambm como
c
e
e
subrotina de um programa.
Agora se fossemos complicar um pouco mais a nossa receita e fossemos fazer uma receita e meia da
torta? Precisar
amos de uma folha de rascunho (a memria RAM) para ajustarmos a receita,uma
o
vez que na receita da torta no devo anotar nada nela. Esta memria temporria, ser utilizada para
a
o
a
a
clculos, e depois podemos nos desfazer do seu conte do, ou seja, jogar no lixo.
a
u
Vejamos como caria esta estrutura intuitiva na gura abaixo.
Quais so as diferenas sutis e importantes entre o microprocessador e o cozinheiro e suas ana
c
otaoes?
c
Bem, que o microprocessador, por ser uma mquina limitada, no atende ao rico vocabulrio
e
a
a
a
do ser humano cozinheiro que, alm de rico, sosticado, impreciso e de m ltipla interpretaao, que
e
e
u
c
s uma mquina inteligente como o homem entede ( vejamos o exemplo: para o homem as seguintes
o
a
palavras so equivalentes: fazer = realizar = trabalhar. Para o microprocessador, o vocabulrio bem
a
a e
reduzido e espec
co; no existem adjetivos, sinnimos, etec...).
a
o
Ento vimos que o microprocessador entende apenas algumas instruoes bsicas e se nos quisermos
a
c
a
que ele faa alguma coisa precisamos estudar e compreender precisamente a sua linguagem e limitarc

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


a

Folha de Rascunho

Leio
Escrevo
C
o
z
i
n
h
e
i
r
o

Ingredientes
+
Utensilios

Livro de
Receitas

HARDWARE

SOFTWARE

READ
WRITE

Perifericos:
Teclado,mouse
Etc....

(Linguagem
Complexa)

So
Leio

RAM (Dados)
M
i
c
r
o
p
r
o
c.

ROM
(Programa de
Linguagem
Especifica

So
Leio

HARDWARE

SOFTWARE

Figura 1.1: Analogia da estrutura Intuitiva


se a ela para fazer a mquina trabalhar. Este o ASSEMBLER do microprocessador, que o seu
a
e
e
conjunto de instruoes.
c

1.2
1.2.1

Princ
pios Bsicos
a
Conceitos Bsicos da Computao
a
ca

Antes de iniciarmos o estudo de microcomputadores, vamos nos familiarizar com os termos tcnicos
e
e saber o seu signicado individualmente.
1.Bit: abreviaao de d
c
gito binrio (binary digit), que corresponde ao valor zero lgico(0) ou ao
a
o
valor um lgico(1). Podemos fazer uma analogia ao sistema numrico como sendo uma unidade
o
e
de um valor qualquer.
2.Byte: representaao numrica composta de 8 bits. Pode representar n meros de 00h(=0 10 ) a
c
e
u
FFh(=25510 ). Essa representaao vastamente utilizada na representaao das instruoes que
c e
c
c
o microcontrolador capaz de executar. Novamente fazendo analogia, teremos o similaridade
e
como as dezenas, centenas etc..., lembrando que em eletrnica digital corresponde como sendo
o
uma palavra.
3.Registradores: conjunto de ip-op, geralmente do tipo D que so interligados em paralelo
a
entre si. Eles so responsveis pelo armazenamento de uma informaao que pode ter 8, 16,
a
a
c
32, 64 ou 128 bits, dependendo de quantos ip-ops do tipo D esto interligados entre si. Os
a
registradores apresentam caracter
sticas volteis e , quando eles so desenergizados, perdem suas
a
a
informaoes.
c

Pgina 8
a

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


a

4.Microcomputador: equipamento compacto cujo objetivo principal simular eletronicamente


e
o sistema chamado ser humano. Suas principais vantagens so: grande velocidade do procesa
samento das informaoes e alta conabilidade nas atividades executadas. Ele composto por
c
e
trs blocos bsicos: Unidade Central e de Processamento, Unidade de Memria e Unidade de
e
a
o
entrada e sa de informaoes.
da
c
5.Instruao: dene uma unica aao (tarefa) que o microcomputador pode executar por vez. As
c

c
aoes das instruoes podem corresponder a operaoes de leitura e escrita nos conte dos dos regc
c
c
u
istradores ou nas posioes de memrias, a operaao lgica e aritmticas, etc.
c
o
c o
e
6.Equipamento Inteligente: equipamento com microprocessador ou com microcontrolador.
Tambm chamada de eletrnica embarcada
e
o
7.Programa ou software: denido por um conjunto de instruoes arranjadas de maneira orc
ganizada por um programador, com o objetivo de informar ao microcomputador o que ele deve
executar, ou seja, o programa informa ao microcomputador quais as tarefas que devem ser executadas ao longo do tempo. Existem vrias classicaoes de programas: os programas de sistema
a
c
operacional( linux, DOS, windows e etc.), os utilitrios( Anti-virus,scandisk e etc.) e os aplicaa
tivos (WORD, EXCEL, Kile e etc.)
8.Firmware: programa (software) que est exclusivamente armazenado em uma memria noa
o
a
voltil(ROM/PROM/EPROM/E2PROM) de um equipamento inteligente. No m
a
nimo o rmware
tem a nalidade principal de programar a forma de operaao do hardware (n mero de portas de
c
u
entrada e sa
da, forma de comunicaao serial, forma de operaao dos timers/contadores etc.) e
c
c
de denir suas condioes iniciais de operaao.
c
c
9.Hardware: so as partes eletrnicas que compem um microcomputador, como a mother board
a
o
o
(placa me que contm pelo menos o microprocessador ou o microcontrolador de um microcoma
e
putador), a placa de v
deo de um microcomputador etc.
10.Microprocessador ou Unidade Central de Processamento(CPU):mais conhecido como
CPU. Fazendo analogia com o sistema ser humano, o microprocessador, ou CPU, de um microcomputador corresponde ao crebro de um ser humana. Fisicamente um dispositivo semie
e
condutor (circuito integrado,CI) constitu por milhes de transistores que implementam uma
do
o
variedade de circuitos (registradores, mquinas seq enciais, circuitos lgicos e etc.). Ele rea
u
o
e
sponsvel pela busca de um programa na memria e por sua execuao.
a
o
c
11.Microcontrolador: dispositivo semicondutor em forma de CI, que integra todas as partes
bsicas de um microcomputador - microprocessador(CPU), memrias no-volteis (ROM /PROM
a
o
a
a
/EPROM /E2PROM), memrias volteis(RAM, SRAM, DRAM, Flash RAM), portas de eno
a
trada e sa
das (portas de comunicaao paralela e/ou serial, conversores analgicos/digitais,conversores
c
o
digitais/analgicos etc.). Ele conhecido como ummicrocomputador implementado em um unico
o
e

CI.

1.2.2

Blocos Bsicos de microcomputadores


a

Qualquer computador, seja ele microcomputadores, computadores de mdio porte ou ainda come
putadores de grande porte, so constitu
a
dos por trs blocos bsicos: a unidade central de processamento
e
a
(CPU), a unidade de memria (na qual so armazenados os programas e as informaoes) e a unidade
o
a
c
de entrada e sa (dispositivos que fazem a comunicaao com o mundo externo).
da
c
Pgina 9
a

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


a

CPU
A CPU responsvel pela inteligncia da mquina, ou seja, ela que tem a capacidade de tomar
e
a
e
a
e

decises (aoes) no sistema microcomputadorizado, por meio da execuao de um programa. E ela que
o
c
c
executa o programa armazenado na memria do microcomputador, que foi projetado por um prograo
mador. Ao executar um programa, ela responsvel pela obtenao das informaoes a serem analisadas
e
a
c
c
por meio de dispositivos de entrada (teclado, canal de comunicaao serial etc.), pelo processamento
c
(interpretaao, manipulaao, ordenaao, modicaao, clculos lgicos ou matemticos etc.) das inc
c
c
c
a
o
a
formaoes e pela resposta (aao) do sistema microcomputadorizado a uma determinada situaao de
c
c
c
controle para a qual ele foi projetado a m de controlar, por meio de um dispositivo de sa (escrita
da
na memria de v
o
deo, transmisso de dados para outro microcomputador, acionamento de um rel,
a
e
acionamento de um bip,etc.). Assim, por exemplo, um microcomputador projetado para funcionar
como um caixa eletrnico de banco deve fazer as seguintes operaoes: leitura das informaoes contio
c
c
das no carto magntico (obtenao de informaoes), decodicaao da senha digitada no teclado pelo
a
e
c
c
c
usurio, busca de saldo bancrio nos bancos de dados do banco (processamento), disponibilizaao do
a
a
c
saldo bancrio no monitor de v
a
deo e a impresso em papel do referido saldo bancrio (resposta do
a
a
sistema por meio da aao de gerar informaoes no monitor de v
c
c
deo e tambm pela impresso em
e
a
papel das informaoes organizadas solicitadas pelo usurio).
c
a
De maneira simplicada, pode-se dizer que a unidade de processamento central (microprocessador)
apresenta duas funoes bsicas:
c
a
a)Leitura (busca) e interpretaao do programa alocado na memria, instruao por inc
o
c
struao: como o programa ca alocado na memria do microcomputador, e no dentro do microc
o
a
processador/CPU, em primeiro lugar, o microprocessador precisa buscar as instruoes, uma por uma,
c
na memria. Isso feito por meio da operaao de leitura de um byte na memria que corresponde
o
e
c
o
a uma determinada instruao e depois realizada a interpretaao da instruao lida (decodicaao),
c
e
c
c
c
pois o microprocessador tem uma determinada quantidade de instruoes que ele capaz de executar.
c
e
Dessa maneira, ele precisa vericar qual dessas instruoes deve ser executada. Assim, ao nalizar
c
essa etapa, o microprocessador/CPU sabe o que deve fazer. O prximo passo a execuao da ino
e
c
struao.
c
b)Execuao do programa, instruao por instruao: a palavra execuao de uma instruao pode
c
c
c
c
c
signicar a transferncia de dados dos registradores internos do microprocessador/CPU para a
e
memria ou para os dispositivos de entrada e sa
o
da, e vice-versa. Pode tambm signicar a exe
ecuao de operaoes lgicas e aritmticas etc.
c
c o
e
Esse processo de buscar, interpretar e executar instruao por instruao uma atividade cont
c
c e
nua do
microprocessador e, dessa forma, um programa processado por inteiro. A unidade de processamento
e
central (microprocessador) constitu por trs partes principais: a unidade lgica e aritmtica, os
e
da
e
o
e
registradores internos e o bloco de temporizaao e controle.
c
a)Unidade Lgica e Aritmtica (ULA): muitas vezes, tambm chamada de ALU (Arithmetic
o
e
e e
Logic Unit). Ela responsvel, principalmente, pela execuao das instruoes correspondentes as
e
a
c
c
`
operaoes aritmticas e lgicas. Alm disso, uma caracter
c
e
o
e
stica muit
ssimo importante que deve
ser destacada, referente a ULA, que, ao executar uma instruao de uma operaao aritmtica ou
`
e
c
c
e
lgica, ela tambm dene a condiao numrica do resultado por meio de alguns bits sinalizadores,
o
e
c
e
chamados de ags de sinalizaao, tornando-os iguais a um (setando-os) ou tornando-os iguais a
c
zero (resetando-os), e pela utilizaao de outras instruoes que so ca- pazes de testar esses ags de
c
c
a
sinalizaao. Isso faz com que o sistema microcomputadorizado possa gerenciar uma determinada
c
situaao de projeto ou desempenhar uma determinada tarefa bem-denida.
c
b)Registradores internos: so compostos por m registradores de n bits interligados em paralelo
a
entre si. Os valores m e n dependem das caracter
sticas de cada microprocessador/microcontrolador
Pgina 10
a

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


a

(p. ex.: 32 registrado- res de 8 bits etc.). Como so formados por ip-ops, poss
a
e
vel realizar
operaoes de leitura e escrita de informaoes. Quando a CPU desenergizadapor apresentar carc
c
e
acter
sticas volteis, essas informaoes so perdidas. Geralmente, eles so capazes de armazenar:
a
c
a
a
um byte se forem constitu
dos por registradores de 8 bits;
um duplo byte ou address ou word, se forem constitu
dos por registradores de 16 bits;
um duplo address ou duplo word, se forem constitu
dos por registradores de 32 bits etc.
Um microcomputador chamado de microcomputador de 8 bits se ele for capaz de processar ine
formaoes de oito em oito bits por vez (operaoes de movimentaao de informaoes e operaoes
c
c
c
c
c
aritmticas e lgicas). Analogamente, para os microcomputadores de 16 e 32 bits, quanto maior for
e
o
a quantidade de bits processados em paralelo por vez, maior ser sua capacidade de processamento.
a
A unidade utilizada para medir a capacidade de processamento o Mips (milhes de informaoes
e
o
c
por segundo).
c)Bloco de temporizaao e controle: responsvel pelo controle do uxo de informaoes do microc
a
c

processador para as unidades de memria e para as unidades de entrada e sa


o
da. E esse bloco que
dene os sinais de controle de temporizaao para o sincronismo do uxo de informaoes no sistema
c
c
microcomputadorizado (p. ex.: liberaao de informaoes da ULA para os registradores, memria
c
c
o
e unidades de entrada e sa etc.) por meio da deniao dos sinais de leitura (read), de escrita
da
c
(write), de inicializaao do sistema (reset), de liberaao dos barramentos de dados e endereos, entre
c
c
c
outros.

Unidades de Memrias
o
As unidades de memrias so divididas em duas partes: memria de armazenamento de programa
o
a
o
e memria de armazenamento de informaoes (dados, bytes, bits etc.).
o
c
a)Memria de armazenamento de programa: todo microcomputador deve ter uma area de
o

memria na qual ser armazenado o programa que denir as tarefas que o microcomputador /
o
a
a
CPU deve executar. Esse programa dene a funao de um microcomputador e tambm diz ao mic
e
crocomputador, instruao por instruao, o que ele deve fazer ao longo do tempo. Esse programa deve
c
c
ser implementado por um programador tcnico, conhecedor do hardware do sistema microcomputae
dorizado e das instruoes do microprocessador. O microcomputador no funcionar se no existir
c
a
a
a
um programa armazenado em sua memria de programa. Assim, uma vez energizado o microcomo
putador, esse programa ser buscado e executado pelo microprocessador. Esse programa dene a
a
caracter
stica funcional do microcomputador (p. ex.: operar como um forno de microondas, como
uma mquina de lavar roupas ou como uma injeao eletrnica de automvel etc.). Esse programa
a
c
o
o
no pode ser perdido na ausncia de energia eltrica, pois isso acarretaria a perda da funcionalidade
a
e
e
desse microcomputador, para a qual foi projetado. Assim, o tipo de memria em que esse programa
o
deve ser armazenado a memria no-voltil.
e
o
a
a
b)Memria de armazenamento de informaoes: todo microcomputador deve ter uma area de
o
c

armazenamento de informaoes. Essa memria deve permitir a escrita e a leitura de informaoes.


c
o
c
Para entender melhor, considere um microcomputador controlando uma determinada atividade.
Caso existam informaoes denidas pelo mundo externo por meio de chaves, sensores, teclados etc.,
c
elas devem ser lidas e armazenadas na memria, para depois serem lidas novamente e analisadas
o
(tratadas) pelo microprocessador por meio de um programa. Como exemplo, considere o acionamento das teclas do teclado de um microcomputador, ou seja, uma vez acionada uma tecla, a CPU
dever ler a informaao que foi gerada pelo hardware associado a essa tecla e executar o armaz naa
c
mento dessa informaao na memria. Depois, dever fazer a leitura dessa informaao, a m de
c
o
a
c
analis-la (interpret- la), para vericar qual tecla foi acionada. Alm disso, a informaao dever
a
a
e
c
a
ser mostrada no monitor de v
deo. Repare que foram necessrias, nesse exemplo, vrias operaoes
a
a
c
Pgina 11
a

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


a

de leitura e escrita na memria, para a realizaao dessa tarefa. Assim, preciso utilizar uma
o
c
e
memria que tenha a caracter
o
stica de realizar leitura e escrita de informaoes. Portanto, deve-se
c
utilizar memrias RAM (Random Access Memory). Lembre-se de que essas memrias apresentam
o
o
a caracter
stica de se- rem volteis. Portanto, sempre que o microcomputador for desenergizado, as
a
informaoes contidas nesse tipo de dispositivo sero perdidas.
c
a

Unidade de Entrada e Sa
da
Unidade de entrada e sa (E/S): tambm chamada pela abreviaao de I/O (Input/Output),
da
e
c
responsvel pelo interfaceamento das informaoes entre o microcomputador e o mundo externo.
e
a
c
Geralmente so circuitos integrados (CIs) capazes de ler e armazenar as informaoes vindas do mundo
a
c
externo, por exemplo, informaoes originrias do teclado, do canal de comunicaao serial de um mic
a
c
crocomputador etc.; e que tambm podem denir informaoes do microcomputador para o mundo
e
c
externo, por exemplo, o acionamento de bips, alto-falantes, leds indicadores, displays, interfaces de
comunicaao seriais e paralelas etc.
c

1.3

Arquitetura do Microprocessador/Microcontrolador

Como vimos at aqui o microprocessador um elemento eletrnico, desenvolvido para execue


e
o
tar tarefas espec
cas, que dependem de uma linguagem prpria para cada fam de microproo
lia
cessadores/microcontroladores. Quando falo em fam
lias estou me referindo ao tipo de linguagem
que o meu microprocessador/microcontrolador ser capaz de interpretar, isto quer dizer que a lina
guagem a qual irei utilizar no programa est diretamente relacionada ao modelo do meu microproa
cessador/microcontrolador. Podemos ter no mesmo circuito diversos tipos de fam
lias diferentes que
trabalham entre si sem problemas, desde de que se respeite o programa individual de cada um, por
exemplo: o nosso celular no conecta no computador, um palm idem, so todos eles pertencentes a
a
a
diversas fam
lias, mas que interagem entre si.
Assim, ao programarmos a ROM com os cdigos compat
o
veis com a linguagem ou fam pertenlia
centes ao microprocessador, ele ser capaz de executar as tarefas por esse cdigo designadas. Cabe ao
a
o
projetista entender perfeitamente o conjunto de instruoes da mquina (o to famoso ASSEMBLER)
c
a
a
e a sua estrutura sica, e de interfaces, tambm conhecida como hardware.
e
Vejamos como os trs blocos visto at aqui se comunicam entre si para dar funcionalidade ao
e
e
microprocessador. As vias de comunicaao entre os blocos bsicos so chamadas de barramentos ou
c
a
a
do ingls bus. Cada barramento constitu por um n mero de vias (trilhas de cobre), nas quais
e
e
do
u
uem informaoes em paralelo. So trs os barramentos existentes: o barramento de endereos, de
c
a
e
c
temporizaao e controle e o de dados.
c
1.Barramento de endereos: A CPU utiliza esse barramento para denir os endereos das
c
c
posioes de memria de programa em que ela ir buscar as instruoes a serem executadas e
c
o
a
c
tambm para denir os endereos de memria de dados ou dos dispositivos de entrada e saida
e
c
o
para a troca de informaoes. Esse barramento unidirecional.
c
e
2.Barramento de temporizaao e controle: A CPU utiliza esse barramento para denir os
c
sinais de temporizaao e controle para gerenciar o tempo e a direao do uxo de informaoes
c
c
c
nas operaoes de leitura e escrita nos dispositivos (unidades de memria ou unidades de entrada
c
o
e saida). Esse barramento unidirecional.
e
3.Barramento de dados: A CPU utiliza esse barramento para receber as informaoes vindas da
c
memria ou dos dispositivos de entrada e saida ou ento denir as informaoes para a memria
o
a
c
o
ou para os dispositivos de entrada e sa
da. Esse barramento bidirecional. Vale ressaltar que
e
Pgina 12
a

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


a

nem todos os microprocessadores/microcontroladores no trocam informaoes diretamente com


a
c
os dispositivos de entrada e saida.

4.Oscilador: E o elemento que gera o marcapassoda CPU, que permite que o microprocessador
realize as suas tarefas internas e externas de maneira sincronizada e com velocidade predeterminada.

5.Reset: E o elemento que faz a CPU iniciar suas rotinas internas e realizar tambm a primeira
e
leitura de instruao no endereo 0000h.
c
c
6.Interrupoes: So pinos de acesso externo que permitem interromper o microprocessador, que
c
a
ento interrompe suas tarefas atuais e atende aquelas planejadas pela interrupao solicitada.
a
c

Oscilador

Memoria

Microprocessador

E/S
ou

Reset

NaoVolatil
(ROM)

Unidade Cental de
Processamento

ou
I/O

Volatil (RAM)

Interupcao

BUS Dados
BUS de Temp.
Controle
Bus Endereco

Figura 1.2: Arquitetura bsica de um microprocessador


a

Como o computador s interpreta cdigos binrios, no existe a necessidade que ns programadores


o
o
a
a
o
converse no mesmo n
vel, podemos utilizar os outros tipos de codicaao Octal, Hexadecimal, Decic
mal e por Nomes Simblicos, que representam uma instruao, como por exemplo: add= Soma=
o
c
Cdigo Hexa 24 ou 00100100 em binrio (no exemplo, add=add A,#valor), para o microprocessador
o
a
8051. A CPU s entende d
o
gitos binrios, mas ns a memorizarmos por add, que mais fcil de
a
o
e
a
se lembrar. Assim atravs de um software (interpretador) ir transformar este addem 00100100,
e
a
quando gravamos a ROM.

1.4

A CPU Internamente

Veremos algumas de suas funcionalidades mais importantes


a)Registradores: So equivalentes a uma RAM, s que interna a CPU. Servem para armazenamento
a
o
`
temporrio de informaoes de utilidade interna e externa a CPU. Existem registradores com funao
a
c
`
c
denida: por exemplo, aquele que imagem ou espelho de uma porta de I/O. O sinal na porta
e

de I/O pode ser lido diretamente no registrador equivalente; por exemplo, a porta POtem um registrador imagem de PO, cujo conte do o reexo do que h na entrada f
u e
a
sica dessa porta. Existem
registradores de Funao Geral, que podem ser acessados pelas instruoes do Mp (microprocessador)
c
c
e ainda podem ser conhecidos por nomes (registradores R0, R1 etc.) ou sem nomes (registradores
20h, 21h, etc.).
Pgina 13
a

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


a

b)Contador de Programa (Program Counter ou PC): E o indicador de endereo de memria exc


o
terna. Ele serve para enderear a prxima instruao a ser lida pelo Mp, a m de que ela saibaonde
c
o
c
estava e para onde deve ir (ler nova instruao no prximo endereo).
c
o
c

c)Registradores de Instruao (Instruction Register ou IR): E o local para onde se dirige o


c
cdigo da instruao que foi retirada da ROM por meio do endereo dado pelo PC no ciclo de busca
o
c
c
(fetch) da instruao da memria. O IR necessrio para que, depois da busca, um decodicador
c
o
e
a
possa decodicar, abrira instruao e envi-la a unidade de processamento (ALU-Aritmetic Logic
c
a `
Unit), a m de que, neste local, ela seja executada.

d)Unidade de Decodicaao (Decode Unit): E o local em que a instruao decodicada, e


c
c e
tambm so gerados os controles que, junto com a Unidade de Controle, permitem executar a
e
a
instruao na ALU.
c

e)Unidade Lgica e Aritmtica (ALU-Arithmetic Logic Unit): E o local em que so realizadas


o
e
a
o crebroda mquina.
as operaoes de: lgica, aritmtica e deciso/comparaao. E
c
o
e
a
c
e
a

f)Acumulador (Accumulator): E um registrador principal e muito popular, pois vrias ina


struoes se referem a ele para operar.
c

g)Unidade de Controle (Control Unit): E o local em que se processa o controle do uxo das
informaoes a m de realizar a instruao recebida.
c
c
Exemplo de Funcionamento: Suponha que o Mp foi ler uma instruao na ROM. Os seguintes
c
passos sero dados:
a
1.O endereo de PC posto na via de endereo (que o endereo desta prxima instruao a ser
c
e
c
e
c
o
c
lida).
2.O sinal de controle da ROM, ativado (pois vamos ler a ROM e no a RAM).
e
a
3.A instruao lida da ROM, no endereo dado pelo PC (no caso, o endereo n), e lida pela
c e
c
c
e
via de dados. Estes trs itens correspondem ao ciclo de busca ou fetch.
e
4.A instruao carregada e armazenada no IR (Registrador de Instruoes).
c e
c
5.O PC incrementado para ler a prxima instruao (apontar para n+1).
e
o
c
a
6.Inicia-se outro ciclo, o de execuao interna da instruao, auxiliado pela Unidade de Controle e
c
c
pelos registradores, decodicado pela Unidade de Decodicaao e executado pela ALU.
c

1.5

O Microcontrolador 8051

O 8051 um microcontrolador rpido com clock t


e
a
pico de 12 MHz sendo que existem verses de at
o
e
30 MHz, fornecidas por diversos fabricantes, e suas caracter
sticas de hardware e software permitem
us-lo como um poderoso controlador, sobretudo em sistemas para lgica seq encial e combinatria.
a
o
u
o
Entre as suas caracter
sticas de hardware, podemos destacar:
1)2 Kbytes de memria de programa (Flash)
o
2)128 Bytes de memria RAM
o
3)Duas portas de I/O de 8 bits
4)Comparador de tenso on-chip
a
5)Controlador de interrupao de 6 entradas com estrutura Nesting*
c
6)Canal serial UART Full-Duplex programvel
a
Pgina 14
a

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


a

7)Dois contadores/temporizadores de 16 bits


8)Modos Power-Down e Power-Idle
[*] Nesting o nome que se d ao processo pelo qual uma interrupao pode interromper outra que
e
a
c
j estiver sendo atendida, desde que tenha maior prioridade.
a
Entre as caracter
sticas de software podemos destacar a capacidade de executar complexas operaoes
c
aritmticas e lgicas (multiplicaao, diviso, permuta, e deslocamento de bits,. . . ), trabalhar com bane
o
c
a
cos de registradores nominais e inclusive trabalhar com 128 bits individualmente endereaveis na RAM.
c
H um tempo no muito distante, para realizar um projeto utilizando microcontroladores com
a
a
todas estas funcionalidades, era necessrio agrupar diversas pastilhas com as funoes descritas antea
c
riormente. Isto tornava prottipo sicamente maior, aumentaria o consumo de energia, diminuindo a
o
autonomia das baterias e inviabilizando a sua portabilidade que hoje so fundamentais para os sisa
temas embarcados.
Para compreendermos melhor o 8051 torna-se necessrio conhecer a estrutura interna do microa
controlador e estudarmos cada uma delas detalhadamente. Para isso nos dividiremos da seguinte
forma:
1)Memria
o
2)Circuito de Reset
3)Gerador de Clock
4)Controlador de Interrupao
c
5)Conjunto de Instruoes
c
Com esta diviso car mais claro denirmos todas as instruoes realizadas pelo 8051 e, o funa
a
c
cionamento dos demais componentes associados ao microcontrolador.

1.5.1

Memria
o

Vejamos, o diagrama de blocos do 89C2051 na gura 1.3. Neste diagrama de blocos, temos uma
noao geral dos elementos internos ao 8051 e de suas ligaoes com o mundo externo.
c
c
A memria de programa do 8051 do tipo Flash ROM (E2PROM), podendo sofrer um ciclo de
o
e
escrita/apagamento de 1000 vezes. Este tipo de memria de programa torna as tarefas de teste e
o
depuraao dos programas bastante agradveis, pois a antiga etapa de apagar a memria em luz ultrac
a
o
violeta no se faz mais necessria.
a
a
O segmento de programa da memria se inicia no endereo 0000h e pode ocupar todos os 2048
o
c
bytes da memria, a ATMEL oferece tambm outros modelos de microcontroladores com uma ROM
o
e
interna maior para que possamos utilizar programas maiores.
A memria RAM se divide conforme a gura 1.4
o
Os registradores de funoes especiais incluem locaoes referentes as portas de I/O, ponteiros do
c
c
`
sistema, registros de interrupao, registros da porta serial, dos temporizadores e registros aritmticos.
c
e
A CPU trata os registros de funoes especiais da mesma forma que trata a RAM, podendo ali
c
efetuar alteraoes e, o mais importante, enderear algumas dessas posioes como bit.
c
c
c
Esta facilidade de enderear bits muito interessante, pois facilita a vida do programador. Vamos
c
e
supor que temos de zerar o quinto bit de uma certa posiao de memria. O mtodo tradicional consiste
c
o
e
em fazer uma operaao AND entre o conte do da memria especicada e o numero binrio 11011111,
c
u
o
a
Pgina 15
a

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


a

Figura 1.3: Organizaao Interna do 8051


c
pois 1 AND X resulta X, logo no alteramos os bits 7, 6, 4, 3, 2, 1 e 0. Mas temos que 0 AND X
a
resulta 0, e desta forma zeramos o quinto bit.
Quando o sistema trabalha com bits, basta dar uma instruao do tipo zere o bit 5 na posiao Ne
c
c
teremos efetuado a operaao, sem nos preocuparmos com os demais bits.
c
A parte baixa da memria RAM interna (daqui a diante chamaremos apenas de RAM) est dio
a
vidida em poroes distintas, que incluem 4 bancos de registradores de 8 bytes cada, uma porao de
c
c
16 bytes cujos bits so individualmente endereaveis pela CPU e o restante da memria, que somente
a
c
o
pode ser endereado byte a byte.
c
Os bancos de registradores so simples posioes de memria RAM que permitem seu endereamento
a
c
o
c
pelo nome dado a cada registro, alm de seu endereamento pela posiao de memria.
e
c
c
o

Pgina 16
a

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


a

Figura 1.4: Organizaao da RAM Interna do 8051


c
A vantagem dos bancos de registradores est em seu uso pelo sistema, como
a
ndice para endereamento e pela facilidade de lembrana de seu nome, alm de serem amplamente utilizados por
c
c
e
compiladores de linguagem de alto n
vel.
Por exemplo, mais fcil lembrar que um certo dado est no registro R2 do que lembrar que o
e
a
a
mesmo est na posiao 02 de memria (Supondo Banco 0).
a
c
o

Pgina 17
a

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


a

A seleao de um certo banco de registradores se d pelo valor dos bits RS1 e RS0 conforme a
c
a
tabela a seguir:
Posiao de Memria
c
o
1F
1E
1D
1C
1B
1A
19
18
17
16
15
14
13
12
11
10
0F
0E
0D
0C
0B
0A
09
08
07
06
05
04
03
02
01
00

Nome do Registrador
R7
R6
R5
R4
R3
R2
R1
R0
R7
R6
R5
R4
R3
R2
R1
R0
R7
R6
R5
R4
R3
R2
R1
R0
R7
R6
R5
R4
R3
R2
R1
R0

Bit RS1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

Bit RS0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0

BANCO

Tabela 1.1: Tabela de registradores do banco de memria


o
Conforme visto anteriormente, temos 16 bytes na RAM cujos bits so individualmente endereaveis
a
c
pela CPU, conforme podemos ver pela tabela abaixo, dispostos da seguinte forma.

Pgina 18
a

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


a

7F
77
6F
67
5F
57
4F
47
3F
37
2F
27
1F
17
0F
07

Endereos
c
7E 7D
76 75
6E 6D
66 65
5E 5D
56 55
4E 4D
46 45
3E 3D
36 35
2E 2D
26 25
1E 1D
16 15
0E 0D
06 05

Individuais dos
7C 7B 7A
74 73 72
6C 6B 6A
64 63 62
5C 5B 5A
54 53 52
4C 4B 4A
44 43 42
3C 3B 3A
34 33 32
2C 2B 2A
24 23 22
1C 1B 1A
14 13 12
0C 0B 0A
04 03 02

bits
79
71
69
61
59
51
49
41
39
31
29
21
19
11
09
01

78
70
68
60
58
50
48
40
38
30
28
20
18
10
08
00

Endereos dos bytes


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

Tabela 1.2: Endereos de Memria endereavel por byte e bit


c
o
c
Temos tambm alguns registros de funoes especiais que tm seus bits endereaveis, sendo que ale
c
e
c
guns deles tm, inclusive, um nome mnemnico, para maior facilidade de desenvolvimento de software
e
o
em compiladores.
Antes de estudarmos o mapa de memria dos registros de funoes especiais, vamos estudar cada
o
c
um deles em separado para melhor compreenso do funcionamento interno do 89C2051.
a
Em seguida ao nome de cada registro, temos seu endereo em hexadecimal na RAM:
c
P1 (90) - Porta P1
P3 (B0) - Porta P3
So posioes da RAM que contm os dados das portas de I/O do micro, caso as mesmas sejam
a
c
e
usadas como tal.
Uma escrita num desses registros altera automaticamente o conte do presente na sa do chip, e
u
da
uma leitura dos mesmos coloca o estado presente nos pinos (ou nos latchs de sa
da, conforme veremos
adiante) dentro da posiao desejada. Essa operaao poss
c
c e
vel devido aos buers e latchs de cada
porta, que s so ativos na leitura ou escrita das mesmas.
o a

Pgina 19
a

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


a

SP (81) - Stack Pointer

E um registrador de 8 bits que contm o endereo de topo de uma pilharealizada com os registradores,
e
c
em que se acumulam endereos de retorno, quando se trabalha com sub-rotinas e interrupoes. Voc
c
c
e
pode EMPURRAR (PUSH) dados para a pilha (STACK) ou TIRAR (POP) dados da pilha
(STACK).
A instruao PUSH incrementa o SP antesde escrever os dados e a instruao POP l o dado
c
c
e
da pilha e depois decrementao SP. A pilha formada inicialmente dentro da RAM interna quando
e
se tem o RESET da mquina, e neste caso o SP carregado com valor 07h. Isto , qualquer dado
a
e
e
a ser armazenado na pilha causar primeiro o incremento do SP, isto , ir para 08h, e depois ser
a
e a
a
gravado o dado na pilha nesta posiao 08h. Isto , ela estar ocupando a posiao 08h da RAM que
c
e
a
c
e
o registrador R0 do banco 1! Se voc quiser utilizar esse banco e os outros seguintes, melhor, logo
e
e
de
nicio, carregar o SP com outro valor de ponteiro, a partir do qual ele ir formar a pilha.
a

TH1 (8D) - Timer High 1


TL1 (8B) - Timer Low 1
TH0 (8C) - Timer High 0
TL0 (8A) - Timer Low 0
So os registros de dados dos temporizadores/contadores (1 e 0 respectivamente). Contem os vala
ores contados, no caso de usarmos as funoes desse importante perifrico do 89C2051.
c
e

TCON (88) - Timer Control Register


TMOD (89) - Timer Mode Register

Registradores de controle e de modo de operaao dos temporizadores/contadores. E nestes regc


istros que efetuamos a programaao de como queremos que esses perifricos trabalhem. Vale lembrar
c
e
que o 89C2051 possui dois temporizadores/contadores internos.

PCON (87) - Power Control


Este registro permite-nos adaptar o chip para situaoes em que no h processamento, mas no
c
a a
a
desejamos perder o conte do das memrias internas do chip, como pode ocorrer numa falha da aliu
o
mentaao, assim podemos controlar o consumo de energia do sistema.
c

SCON (98) - Serial Port Control Register


SBUF (99) - Serial Buer
No SCON, colocamos os bits que nos permitiro trabalhar com a porta de comunicaao serial cona
c
forme desejamos, e o SBUF o registro no qual a porta armazenar o dado recebido, ou escrevemos
e
a
o dado a ser transmitido.

IE (A8) - Interrupt Priority


IP (B8) - Interrupt Enable
Estes registros permitem-nos escolher qual ou quais interrupoes sero habilitadas (ou desabilic
a
tadas) e qual a prioridade (maior ou menor) de cada uma.
Pgina 20
a

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


a

PSW (D0) - Program Status Word


O Program Status Word contm bits que indicam quais as ocorrncias da ALU na ultima operaao
e
e
c
lgica e aritmtica, alem de indicar qual banco de registradores foi acessado pela ultima vez. Equivale
o
e
aos Flags dos microprocessadores de 8bits.
ACC (E0) - Accumulator
B (F0)
Equivalem ao acumulador e ao registro B dos microprocessadores de 8 bits. O interessante aqui
e
que, inclusive os registros da CPU so acess
a
veis como simples posioes de memria.
c
o

DPH (83) - Data Pointer High


DPL (82) - Data Pointer Low
Estes dois registros de 8 bits podem ser referenciados como um registro de 16 bits, chamado DPTR
-Data Pointer. Este registro usado quando desejamos fazer endereamento indireto para a leitura de
e
c
constantes armazenadas na memria de programa, para ler ou escrever variveis na memria externa
o
a
o
de dados e para desvio para memria de programa de at 64 Kbytes.
o
e
No so todos os registros de funoes especiais que tem seus bits individualmente endereaveis.
a a
c
c
Temos na tabela abaixo, os registros e seus bits com seus respectivos endereos. Assim como nos
c
registros endereaveis (que so bytes), alguns destes bits tambm tem um nome mnemnico.
c
a
e
o
Este componente possui um poderoso conjunto de instruoes que permite usar diversos modos de
c
endereamento, admitindo desvios e leitura/escrita em toda a memria.
c
o
No momento oportuno, veremos como acessada uma posiao de memria, e tambm como a CPU
e
c
o
e
faz para acessar sicamente essas posioes.
c

1.5.2

Circuito de Reset

Agora, estudaremos como se processa a operaao de RESET no 89C2051. E atravs desta funao
c
e
c
que o chip se prepara para trabalhar, seja ao ligarmos a alimentaao do sistema, ou forosamente.
c
c
Embora o RESET no seja propriamente uma interrupao, muitas vezes assim chamado devido
a
c
e
a semelhana de suas aoes, j que o RESET interrompe o processamento e reinicializa o sistema.
`
c
c
a
O RESET no 89C2051 ativo quando o pino 1 (RST/VPP) permanecer em n alto por dois ou
e
vel
mais ciclos de maquina.
Neste caso, a CPU executa o que chamamos de reset interno, que consiste em preencher seus registros internos com os valores predeterminados, a saber:

a)O PC, o acumulador, o registro B, os ags, o DPTR e todos os registros dos temporizadores/contadores so ZERADOS.
a
b)No SP colocado o valor 07h.
e
c)As portas P1 e P3 tero o valor FFh
a
Pgina 21
a

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


a

E7
F7
97
B7

E6
F6
96
B6

Endereos Individuais dos bits


c
E5
E4
E3
E2
F5
F4
F3
F2
95
94
93
92
B5
B4
B3
B2

EA

ES

ET1
1
AB

EX1

AF

AC

PX1

BC

PT1
1
BB

PS

AA

BA

E1
F1
91
B1

E0
F0
90
B0

Registradores
ACC
B
P1
P3

ET0
0
A9

EX0
0
A8

IE

PT0
0
B9

PX0
0
B8

IP

P
D0

PSW

CY
D7

AC
D6

FD
D5

RS1
D4

RS0
D3

OV
D2

SM1
9F

SM2
9E

SM3
9D

REN
9C

TB8
9B

RB8
9A

T1
99

R1
98

SCON

TF1
8F

TR1
8E

TF0
8D

TR0
8C

IE1
8B

IT1
8A

IE0
89

IT0
88

TCON

Tabela 1.3: Mnemnicos de cada bit


o
d)O SBUF estar com conte do indeterminado e o registro de controle da porta serial SCON
a
u
ser zerado.
a
e)O registro PCON ter apenas seu bit mais signicativo zerado.
a
f)Os registros de controle de interrupao (IE e IP) tero ambos o valor binrio XXX00000,
c
a
a
onde X = irrelevante (pode ser 0 ou 1).

A RAM interna no afetada pelo reset forado, sendo que ao ligar (power-up), o seu valor
a e
c
e
aleatrio, mas pode ser lido por software.
o
Geralmente, ao ligarmos o sistema, desejamos que o mesmo execute uma seqncia de funoes de
ue
c
inicializaao, dividida em dois blocos, inicializaao do sistema bsico, que sempre ocorre no RESET,
c
c
a
e a inicializaao do sistema montado, que prepara o equipamento para a operaao para o qual foi
c
c
projetado, por exemplo, ajustando os contadores, as portas entre outros.
Embora estas funoes sejam executadas pelo software que comea a rodar aps o RESET, no enc
c
o
dereo 0000h da memria de programa, costumamos cham-lo de rotina de inicializaao.
c
o
a
c
O 89C2051 pode ser automaticamente resetado ao ligar a fonte, pela colocaao de um resistor de
c
8,2 k entre seu pino seu pino de RESET e o terra, e pela colocaao de um capacitor (preferencialc
mente de tntalo) de 10 F entre o pino e o +Vcc, o que garante que este pino estar em n alto
a
a
vel
por mais de 2 ciclos de maquina aps a ligaao da alimentaao, pois o capacitor comporta-se como
o
c
c
um curto-circuito, provocando uma circulaao de corrente pelo resistor, que ter uma tenso inicial
c
a
a
da ordem de +Vcc.
Aps algum tempo, o capacitor estar carregadoe no circular mais corrente na resistncia, e
o
a
a
a
e
desta forma a diferena de potencial sobre a mesma ser nula, garantindo que o pino RST/VPP esteja
c
a
Pgina 22
a

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


a

Figura 1.5: Mapa de Registradores e Valores de Reset do 8051


no n 0.
vel
Na eventualidade de necessitarmos provocar o reset (reset forado), basta ento colocarmos uma
c
a
chave de contato momentneo NA (push-botton NA) em paralelo com o capacitor, e ao pressiona-la
a
e solt-la teremos provocado uma nova operaao de reset.
a
c
Na entrada, o chip possui um Schmidt Trigger para garantir rejeiao a ru
c
do, sendo que a sa do
da
mesmo amostrada a cada ciclo de maquina pelo hardware, para ver a ocorrncia de reset.
e
e
Durante o reset, o n lgico dos pinos indeterminado, indo a n lgico 1 ?aps? a execuao
vel o
e
vel o
o
c
da rotina interna de reset, de tal forma que devemos prever esta situaao no projeto do hardware,
c
para evitar acionamento indesejvel de qualquer perifrico externo.
a
e

Pgina 23
a

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


a

Figura 1.6: Circuito de reset

1.5.3

O Gerador de Clock

Temos duas possibilidades para excitar o sistema: clock externo ou clock interno.
O uso do clock externo ajuda a economizar componentes quando do uso do sistema junto de outros
que j possuam um sinal TTL que possa ser aproveitado, como por exemplo, para trabalho junto a
a
contadores e outros equipamentos seq enciais rpidos.
u
a
Sua implementaao simples, bastando desconectar o pino 4 (XTAL2) (deixar em aberto), e injec e
tar o sinal externo no pino 5 (XTAL1), que desta forma ir diretamente para o sistema de controle e
a
temporizaao do chip (conforme a gura 1.7).
c

Figura 1.7: Clock Externo para o 8051


Se utilizarmos o clock gerado pelo oscilador interno, deveremos intercalar aos pinos XTAL1 e
XTAL2 um cristal ou um ltro cermico (o cristal e o mais indicado) na freqncia desejada, e dois
a
ue
capacitores de realimentaao conforme a gura 1.8
c
Os valores recomendados dos capacitores so os seguintes:
a
40 pF +/- 10 pF para ltro ressonante de cermica.
a
30 pF +/- 10 pF para cristal oscilador.
Em qualquer caso, a freqncia de oscilaao m
ue
c
nima de 3.5 MHz, a mxima pode ser de 24
e
e
a
MHz conforme o modelo utilizado. Existem atualmente verses de outros fabricantes que trabalham
o
com freqncia de 30 MHz e superiores, sendo que o seu custo tambm relativamente superior.
ue
e e
Pgina 24
a

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


a

Figura 1.8: Oscilador Interno


Quanto ao layout do circuito deve-se destacar o fato de que as ligaoes devem ser mantidas as
c
mais curtas poss
veis, para evitar capacitncias parasitas que venham a interferir no funcionamento
a
do circuito, assim como uma boa malha de terra deve ser providenciada em toda a placa.

Figura 1.9: Layout Recomendado para o Oscilador Interno

1.5.4

Interrupo
ca

A interrupao , provavelmente, uma das mais importantes ferramentas nos sistemas de controle
c e
microprocessados, pois o processo pelo qual a execuao de um programa interrompida (ou no),
e
c
e
a
de acordo com as necessidades de eventos externos ou internos.
Temos dessa forma, que existem trs fontes de interrupao: a interrupao por Software (instruao),
e
c
c
c
a pedida por perifrico externo e a interrupao pedida por perifrico interno (timer/counter, porta
e
c
e
serial, etc. . .).
A interrupao um sinal, gerado de uma das trs formas acima descritas, que pede para a CPU
c e
e
parar o processamento corrente e efetuar outro, referente a interrupao solicitada, desde que a mesma
`
c
esteja habilitada e possa ser aceita.
A vantagem da interrupao est na simplicaao do Hardware, pois no precisamos fazer com que
c
a
c
a
nosso sistema que monitorando o funcionamento de certos dispositivos perifricos. Por exemplo, nos
e
computadores didticos simples, e mesmo em alguns sistemas industriais, o teclado um perifrico
a
e
e
que lido constantemente pelo monitor do sistema, para vericar se alguma tecla foi ou no apertada.
e
a
Pgina 25
a

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


a

J nos computadores da linha IBM-PC, isso no ocorre, pois o teclado um perifrico inteligente, que
a
a
e
e
possui um microcontrolador interno que, caso uma tecla seja pressionada, pede uma interrupao ao
c
microprocessador para poder enviar o cdigo da tecla pressionada para o mesmo.
o
Muitas vezes as entradas de interrupao so as principais entradas do sistema. Para o perfeito
c a
entendimento das interrupoes, devemos antes relembrar os seguintes conceitos:
c
a)Mascaramento

E a possibilidade de impedirmos, geralmente por Software, que uma certa interrupao seja atendida.
c
Existem sistemas que possuem interrupoes no-mascarveis, ou seja, jamais podem ser desabilitadas
c
a
a
por Software.
b)Prioridades
No caso do sistema poder atender mais de uma interrupao, devemos ter uma tabela de seqncia
c
ue
de prioridades, para que o microprocessador saiba como agir, no caso de duas ou mais interrupoes
c
chegarem simultaneamente.
c)Interrupao Vetorada e No Vetorada
c
a
As interrupoes vetoradas so aquelas que possuem o vetor de interrupao (endereo de in
c
a
c
c
cio da

interrupao) xo, e no pode ser mudado pelo usurio. E o caso do 8051, onde cada vetor de inc
a
a
terrupao j est denido pelo fabricante. As interrupoes no vetoradas so aquelas nas quais os
c a
a
c
a
a
endereos de desvios do programa so escolhidos pelo programador, como o caso do COP 68705.U3
c
a
e
da Motorola, por exemplo.
d)Tipo de Ativaao das Interrupoes
c
c
Existem trs maneiras pelas quais um sistema pode reconhecer um sinal lgico:
e
o
Pelo n (alto ou baixo).
vel
Pela borda de subida ou de descida.
Pela soma de borda (subida ou descida) e um n correspondente.
vel

Estudo das Interupoes no 8051


c
0 8051 pode ser interrompido de 5 maneiras:
1)Pela interrupao externa INTO\;
c
2)Pela interrupao externa INT1\;
c
3)Pelo timer/counter interno TIMER0;
4)Pelo timer/counter interno TIMER1;
5)Pelo canal de comunicaao serial.
c
O canal serial e as interrupoes externas usam alguns pinos da porta trs, conforme a seguir:
c
e
1.Porta 3, pino 0 = Receptor de dados seriais (RX);
Pgina 26
a

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


a

2.Porta 3, pino 1 = Transmissor de dados seriais (TX);


3.Porta 3, pino 2 = Entrada da interrupao externa INTO\;.
c
4.Porta 3, pino 3 = Entrada da interrupao externa INT1\.
c
OBSERVACAO: Dessa forma, se usarmos algumas dessas interrupoes, devemos tratar a porta

c
trs como porta de I/O apenas bit endereavel.
e
c
No 8051, cada interrupao pode ser individualmente habilitada ou no, e podemos tambm desabilc
a
e
itar todas de uma s vez.
o
As interrupoes podem ter apenas dois n
c
veis de prioridade, e dessa forma, se duas ou mais ocorrerem ao mesmo tempo (algo praticamenteimposs
vel), a de maior prioridade ser atendida primeiro.
a
Caso uma interrupao de prioridade 0 (menor) esteja em andamento, uma interrupao de prioric
c
dade 1 (maior) interromper aquela e ser atendida. Ao seu m, a CPU retorna ao atendimento da
a
a
interrupao de n 0 que foi interrompida.
c
vel
Este Microcontrolador possui ainda um processo de prioridade interno, para o caso de duas interrupoes de mesma prioridade estarem aguardando atendimento.
c
Neste caso, esta a ordem de atendimento das interrupoes (IP):
e
c
1)Interrupao Externa 0 Maior prioridade Timer 0
c
2)Interrupao Externa 1 Timer 1
c
Se a interrupao que chegar for de n
c
vel igual ou menor da que j est sendo atendida, car
a
a
a
aguardando o m desta para ser servida.
Quando atende uma interrupao, 0 8051 salva no Stack o valor do PC, mas no salva o acuc
a
mulador e o registro Program Status Word (PSW). Os mesmos devem ser salvos e devolvidos pela
rotina de interrupao, se assim for necessrio, assim como qualquer outro registro importante.
c
a

Endereos de Desvio
c
Neste Microcontrolador, cada interrupao desviada para um certo endereo xo, no qual comea
c e
c
c
a nossa rotina de interrupao.
c
So os seguintes os endereos de desvio:
a
c
1.INT0\ 03h
2.Timer/Counter 0 0Bh
3.INT1\ 13h
4.Timer/Counter 1 1Bh
Como vimos, o Reset inicia em 00h, e desta forma, por exemplo, se usarmos todas as interrupoes
c
teremos que usar os trs Bytes dispon
e
veis para o reset, num desvio incondicional para outra parte da
memria, onde realmente teria in o programa.
o
cio
Pgina 27
a

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


a

As interrupoes INT0\, Timer/counter 0, INT1\ e Timer/counter 1 possuem apenas 8 Bytes


c
dispon
veis antes de sobrepor se com a prxima, e desta forma, provavelmente, deveremos efetuar um
o
desvio para outra parte da memria, sendo a unica exceao a interrupao do canal serial, que por ser
o

c
c
a ultima no se sobrepe a nenhuma outra. Temos na gura 1.10, um mapa parcial da memria de

a
o
o
programa com destaque para os endereos de desvio de cada interrupao.
c
c
00h
01h
02h
03h
04h
05h
06h
.
.
.
0Ah
0Bh
0Ch
0Dh
.
.
.
11h
12h
13h
14h
.
.
.
1Ah
1Bh
1Ch
1Dh
.
.
.
22h
23h
24h
25h

Inicio

End. de INT0\

Diferena de 8 bits
c

End. do Timer/Counter 0

End. de INT1\

End. do Timer/Counter 1

End. do Canal Serial

Figura 1.10: Mapa parcial da memria de programa do 8051 com destaque ao in das interupoes
o
cio
c

Pgina 28
a

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


a

1.5.5

Registro de Controle das Interrupoes


c

O 8051 possui dois registro de 8 bits cada um, na sua memria RAM mais alta (Registros de
o
Funoes especiais-SFR) que servem para habilitaao ou no das interrupoes, e indica para a CPU a
c
c
a
c
prioridade de cada uma delas.
Sempre que uma interrupao requisitada, um certo bit de controle dessa interrupao ser setado
c e
c
a
e assim permancer at que essa interrupao seja atendida.
a e
c
Exceao a esta regra a interrupao serial, que deve ter seu bit de controle resetado
c e
e
c
pelo Software.
O primeiro de todos estes registros o IE que tem por funao indicar qual das interrupoes est
e
c
c
a
ou no habilitada.Vejamos a gura 1.11
a
Bit 7
EA

ES

...
ET1

EXT1

ET0

Bit 0
EX0

Figura 1.11: Resgistro IE


EA - Enable All: Localizado no bit n mero 7, signica habilitar todos. Quando o em n 0,
u
vel
desabilita todas as interrupoes de forma geral, independente de qualquer outro controle. Se em n
c
vel
1, permite-nos escolher qual interrupao em particular ser habilitada, em funao dos bits de controle
c
a
c
individuais a seguir.
ES: Enable Serial: Localiza-se no bit 4, signica habilitar a serial, quando em n
vel lgico 1,
o
libera a interrupao pedida pelo canal serial.
c
ET1 - Enable Timer 1: Localiza-se no bit 3, signica habilitar a interrupao do timer 1 e quando
c
em n lgico 1, libera a interrupao pedida pelo Timer/Counter 1.
vel o
c
EX1 - Enable External 1: Localiza-se no bit 2, signica habilitar a interrupao externa (INT1\
c
e quando em n lgico 1, libera a interrupao pedida pelo dispositivo externo ligado a INT1\.
vel o
c
ET0 - Enable Timer 0: Localiza-se no bit 1, signica habilitar a interrupao do timer 0 e quando
c
em n lgico 1, libera a interrupao pedida pelo Timer/Counter 0.
vel o
c
EX1 - Enable External 0: Localiza-se no bit 0, signica habilitar a interrupao externa (INT0\
c
e quando em n lgico 1, libera a interrupao pedida pelo dispositivo externo ligado a INT0\.
vel o
c
Prioridade Natural das interrupoes
c
1.INT0\
2.TIMER/COUNTER0
3.INT1\
4.TIMER/COUNTER1
5.Serial
Veremos agora o registro IP, nele xaremos qual o n de prioridade de nossas interrupoes. Vevel
c
jamos o formato deste registro.
PS: Priority Serial: Localiza-se no bit 4, signica prioridade serial, quando em n lgico 1,
vel o
indica prioridade alta a interrupao gerada pelo canal serial, se a mesma estiver habilidade. Quando
`
c
Pgina 29
a

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


a

Bit 7
X

PS

...
PT1

PX1

PT0

Bit 0
PX0

Figura 1.12: Resgistro IP


em n 0, indica prioridade baixa.
vel
PT1 - Priority Timer 1: Localiza-se no bit 3, signica prioridade do timer 1 e quando em
n lgico 1, indica prioridade alta a interrupao gerada pelo Timer/Counter 1, se a mesma estiver
vel o
`
c
habilidade. Quando em n 0, indica prioridade baixa.
vel
PX1 - Priority External 1: Localiza-se no bit 2, signica habilitar a interrupao externa (INT1\
c
e quando em n lgico 1, indica prioridade alta a interrupao externa 1, se a mesma estiver habilivel o
`
c
dade. Quando em n 0, indica prioridade baixa.
vel
PT0 - Priority Timer 0: Localiza-se no bit 1, signica prioridade do timer 0 e quando em
n lgico 1, indica prioridade alta a interrupao gerada pelo Timer/Counter 0, se a mesma estiver
vel o
`
c
habilidade. Quando em n 0, indica prioridade baixa.
vel
PX1 - Priority External 0: Localiza-se no bit 0, signica habilitar a interrupao externa (INT0\
c
e quando em n lgico 1, indica prioridade alta a interrupao externa 0, se a mesma estiver habilivel o
`
c
dade. Quando em n 0, indica prioridade baixa.
vel

Pgina 30
a

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


a

Veremos como o registrador PSW (Program Status Word)


e
Lembrando que neste registrador representa o status da ultima operaao realizada no acumulador,

c
vejamos a seguinte gura 1.13
Bit 7
PSW.7
CY

Bit 6
PSW.6
AC

Bit 5
PSW.5
F0

Bit 4
PSW.4
RS1

Bit 3
PSW.3
RS0

Bit 2
PSW.2
OV

Bit 1
PSW.1
-

Bit 0
PSW.0
P

Figura 1.13: Resgistros bit a bit do PSW

CY - Carry E um indicador de vai umem operaoes aritmticas: vai para 1 quando uma soma
c
e
com A estourana sua capacidade (isto , o stimo bit ou ACC.7 vai um para uma prxima casa que
e
e
o
no existe; seria um nono bit, que um estouroda conta). Vai para 1se existir um emprstimo do
a
e
e
7 bit no caso de uma subtraao com o acumulador.
c
Por exemplo:
Se ACC=FFh e aps isto aparece a instruao: acc A,#01h: A soma de FFh com 01h far com que
o
c
a
o resultado de A seja 00h e vai 1para o carry, isto ,CY setado no registrador PSW.
e
e
O carry CYtambm utilizado como se fosse o acumulador para um s bit. Existem vrias
e e
o
a
instruoes booleanas que usam o C, isto , o carry, como operando, em que se posiciona o resultado
c
e
das operaoes. Por exemplo:
c
anl C,ACC.0: Executa um AND booleano entre o carry e o bit ACC.0. O resultado da operaao
c
ca em C(ele equivalente ao acumulador para operaao com bytes), isto , o resultado volta para
e
c
e
ele mesmo.

AC - Auxiliary Carry E um indicador de vai umentre os quatro primeiros bit do acumulador,


isto , o vai umde um niblepara outro nibledo acumulador.
e e
Isto muito util em aritmtica BCD em que os nibbles que correspodem a 4 bits so representados
e

e
a
por um n mero codicado em binrio, mas que representa um decimal de 0 a 9.
u
a

Flag 0 E um bit registrador de uso geral, no tem nenhuma funao especial e no indica nada.(literalmente
a
c
a
sobroudentro do PSW, sem funao)
c
RS1 e RS0 So dois bits que fazem mudar o banco de registradores a que se referem os nomes
a
R0 a R7, utilizados nas instruoes que trabalham com esses registradores (por ex.: mov A,R0 = move
c
para o Ao conte do de R0; mas qual R0? Os bits RS0 e RS1 que dizem a qual R0 de qual banco
u
e
est se referindo).Vejamos na tabela 1.4
a
RS1
0
0
1
1

RS0
0
1
0
1

BANCO
Banco 0
Banco 1
Banco 2
Banco 3

Tabela 1.4: Seleao do banco de registradores pelos bit do PSW


c
Quando se d o reset da mquina, ele aponta para o banco 0, isto , as instruoes que se referirem
a
a
e
c
a R0,R1,. . .R7 esto se referindo ao Rndo banco O. Podemos utilizar a mudana de bancos e usar os
a
c
mesmos apelidos de R0 a R7 para o outro banco, ou usar o endereo absoluto de cada registrador. Em
c
geral, deixa-se que o microcontrolador aponte para o banco 0 direto e os outros registradores utilizam
os endereos absolutos deles, s para no ter i trabalho de mudar toda hora de banco. Isto depende
c
o
a
do gosto do programador.Quando se resetaa mquina, os bits RS1 e RS0 cam em 00h,
a
isto , esto se referindo ao banco 0.
e
a

Pgina 31
a

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


a

OV E um bit que vai para 1 quando, aps um adiao ou subtraao, acontece um estouroda
o
c
c
conta. Resultados maiores que +127 ou menores que -128 setaroo bit OV. Paor exemplo:
a
0F
+7F
8E

e OV

+15
+127
+142

Note que 8E -116, que no a resposta desejada +142, por isto OV setado.
e
a e
e
PSW.1 No um bit dispon ao usurio.
a e
vel
a
P - Parity Bit que setadoem 1quando a paridade do conte do do acumulador par.
e
u
e
Por exemplo, seja A, contendo os seguintes dados:
Observaao: Paridade o resultado par ou
c
e
mpar do somatrio binrio do acumulador.
o
a
A=

N de 1s
1001

=
Impar
1110

P=1

A=

N de 1s
1001

=
Impar
1111

P=0


E util quando se trabalha com o canal serial, pois ele muitas vezes necessita desta informaao. Outra
c
maneira de saber se P 1ou 0, pensar que a soma dos bits 1do acumulador mais o
e
e
Ptem sempre que ser par.

1.5.6

Tempo para Atendimento das Interrupoes


c

Um certo tempo decorrer entre o reconhecimento da interrupao, alteraoes nos registros internos
a
c
c
e efetivo desvio para o endereo. O melhor caso ocorre quando uma interrupao chega pouco antes
c
c
dos ultimos 14 per

odos de clock, que correspondam ao nal da instruao; a prxima instruao no


c
o
c a
seja multiplicaao ou diviso; e temois mais 24 per
c
a
odos de clock para a chamada da sub-rotina. Estes
tempos incorrem em atraso de 38 per
odos de clock ou 3.2 s para um clock de 12 MHz.
O pior caso ocorre se a interrupao chegar aps os 14 ultimos per
c
o

odos da instruao em vigor, e


c
se a prxima instruao for multiplicaao ou diviso, que consomem 48 per
o
c
c
a
odos de clock, que resulta
num atraso de 86 per
odos, ou 7.2 s para clock de 12 MHz.

1.5.7

Ajuste das Interrupoes Externas para serem Ativas em N


c
vel ou Transio
ca

Podemos ajustar as interrupoes externas para serem detectadas por transiao de 1 para 0, ou pelo
c
c
n 0. Os bits de controle das interrupoes externas esto no registro TCON (Controle do Timer),
vel
c
a
e os que nos interessam so os quadro bits menos signicativos.
a
Bit 7

...
IE1 IT1

IE0

Bit 0
IT0

Figura 1.14: Resgistro TCON com os bits relevantes as interrupoes


`
c
IT0 - Interrupao Externa 0 (INT0\) : Localizado no bit 0 do TCON, indica qual o processo
c
para a chamada da interrupao INT0\ ser aceita na transiao de 1 para 0 do n
c
a
c
vel pino, devendo
permanecer em 0 por pelo menos 12 per
odos de clock. Se em n 0, INT0\ ser aceita apenas pelo
vel
a
n 0 presente no pino.
vel
Pgina 32
a

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


a

IE0 - Habilitaao da Interrupao Externa 0 (INT0\): Bit para o hardware de controle da


c
c
interrupao INT0\, localiza-se no bit 1. Este bit setado pelo Hardware interno quando for detecc
e
tada uma transiao de 1 para 0 no pino INT0\. Tem por funao sinalizar internamente o pedido da
c
c
resetado logo que a interrupao seja atendida.
interrupao. E
c
c
IT1 - Interrupao Externa 1 (INT1\) : Localizado no bit 2 do TCON, indica qual o processo
c
para a chamada da interrupao INT1\ ser aceita na transiao de 1 para 0 do n
c
a
c
vel pino, devendo
permanecer em 0 por pelo menos 12 per
odos de clock. Se em n 0, INT1\ ser aceita apenas pelo
vel
a
n 0 presente no pino.
vel
IE1 - Habilitaao da Interrupao Externa 1 (INT1\): Bit para o hardware de controle da
c
c
interrupao INT1\, localiza-se no bit 3. Este bit setado pelo Hardware interno quando for detecc
e
tada uma transiao de 1 para 0 no pino INT1\. Tem por funao sinalizar internamente o pedido da
c
c
interrupao. E resetado logo que a interrupao seja atendida.
c
c
Como vimos, se a interrupao for ativa pela transiao, a esta que a CPU dever detectar para atenc
c e
a
der a interrupao, por isso temos que esperar um per
`
c
odo de 12 ciclos de clock, porque na amostragem
anterior, a CPU detectou n 1 e agora devemos esperar que a mesma detecte o n 0.
vel
vel
J na detecao por n
a
c
vel, a entrada dever estar em n
a
vel 0, apenas durante a amostragem que
ocorre ao m de cada instruao executada. O interessante que neste caso, o pino pode permanecer
c
e
em n 0 durante a execuao da rotina de interrupao, mas deve estar em n 1 ao m desta, seno
vel
c
c
vel
a
o sistema atender novamente a interrupao, visto que na amostragem da ultima instruao da rotina,
a
`
c

c
encontrar este pino em n adequado para a interrupao, o que no ocorre no caso anterior, pois l
a
vel
c
a
a
do n 1 para o O.
a CPU deve sentir a TRANSICAO

vel

1.5.8

Hardware para expandir as possibilidade de Interrupo Externa


ca

Na gura 1.15, temos uma porta AND de 8 entradas na qual todas as NOVAS 8 entradas de interrupao estaro ligadas. Estas 8 entradas tambm esto ligadas a um lacth, por exemplo o 74LS374.
c
a
e
a
A sa desta porta ser ligada diretamente ao pino de interrupao externa INT0\, por exemplo,
da
a
c
e tambm a um inversor, e da ao gatedo lacth, e as sa
e

das do lacth esto ligadas a porta P1.


a
`
Caso ocorra uma transiao de 1 para 0 na porta AND, teremos sua sa indo para o n
c
da
vel 0
tambm, ocasionando o pedido de interrupao e travandoo estado dos pinos I1 a I8 no lacth.cc
e
c
No momento do atendimento da interrupao, o valor a ser lido na porta P1 conter o estado dos
c
a
bits que geraram a interrupao, e uma rotina vericar qual bit est em 0. Este bit responsvel pelo
c
a
a
e
a
pedido de interrupao, e basta ao Software encarregar-se de executar a rotina apropriada.
c

Pgina 33
a

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


a
+Vcc
(
(
(
&'

$%

"#





I8

7430

INT0\






I1

8051

D0
D1
D2
D3
D4
D5
D6
D7

Q0
Q1
74LS374 Q2
Q3
Q4
Q5
Q6
Q7

P1.0

P1.7

Figura 1.15: Detalhe do Hardware para expandir o n mero de interrupoes.


u
c

1.5.9

Exerc
cios Resolvidos

Questo 1 No microcontrolador da fam 8051, programar as palavras IE (Interrupt Enable),


a
lia
IP (Interrupt Priority) e TCON (Timer Control) de modo a:
a)INT1\ seja habilitado na mxima prioridade.
a
b)Timer/Counter1 seja habilitado em segunda prioridade.
c)INT0\ seja habilitado na terceira prioridade.
d)Serial e Timer/Counter0 no habilitadas.
a
Passo a):Interrupoes liberadas pela palavra IE
c
INT0,INT1 e Timer1 liberados
Bit EA - Enable All ligado
Timer0 e Serial desativadas
EA
1

ES
0

ET1
1

EX1
1

ET0
0

EX0
1

Assim carrega-se o valor 8Dh para a palavra IE atravs do seguinte comando:


e
MOV IE,8Dh
Pbsso b):Prioridade programadas pela palavra IP
INT1 e Timer1: alta prioridade
INT0:
baixa prioridade
Pgina 34
a

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


a

PS
X

PT1
1

PX1
1

PT0
X

PX0
0

Questo 2 Obter a outra representaao do endereo do bit 5Dh? (Ver tabela 1.2) Soluao:
a
c
c
c
Transformar o endereo do bit de hexadecimal para decimal 5 16 1 + 13 160 = 9310
c
Dividir o valor do endereo em decimal (93 10 ) por 8 93/8, obtendo o quociente q=11 10 e o
c
resto r=510
Transformar o quociente (q) e o resto (r) em hexadecimal: q=11 10 =Bh e r=510 =5h.
Aplicar a frmula: 5Dh = [20h+Bh]h.5=2Bh.5, ou seja, o endereo do bit 5 igual a 2Bh.5.
o
c
e
Para transformar o endereo de um bit da representaao 2Xh.Y para ZWh(2Xh.YZWh),basta
c
c
seguir o procedimento:
Obter o quociente e o resto. O quociente (q) obtido subtraindo 2Xh de 20h e transformando-o
e
em decimal, e o resto obtido atravs do n mero aps o ponto (.) de tal representaao. Multie
e
u
o
c
plicando o quociente em decimal por 8 e somando com o resto em decimal, obtm-se o endereo
e
c
em decimal. O valor do endereo em decimal deve ser transformado para hexadecimal.
c
Questo 3 Obter a outra representaao do endereo do bit 2Ah.3? (Ver tabela 1.2)
a
c
c
Obter o quociente (q) e o resto (r): q= 2Ah - 20h = Ah e r=3h.
Transformar q e r de hexadecimal para decimal:
q=Ah = 1010 e r 3h = 310
Multiplicar o quociente por 8 e somar o resultado com o resto em decimal: 10*8+3=83 10
Transformar o endereo de decimal para hexadecimal: 83 10 = 5 161 + 3 160 =53h
c
Questo 4 Dena o tipo de endereamento de cada uma das instruoes dadas a seguir:
a
c
c
a)ADDC A,20h
Resposta: Endereamento direto.
c
b)MOV @R0,55h
Resposta: Endereamento combinado (misto), formado pelos endereamentos direto e indireto ou
c
c
indexados por registrador.
c)MOV R7,6Ah
Resposta: Endereamento indireto, pois R7 (Rn) um registrador indexado (mnemnico).
c
e
o
Questo 6 Crie um programa que faa a operaao OR-Exclusivo entre o conte do do acumulador
a
c
c
u
(A) e a constante 33h. O resultado deve ser armazenado no conte do do registrador R5 do segundo
u
banco de registradores.
Resposta:
XRL A,#33h
(A)(A)or-ex #33h
MOV PSW,#08h (PSW)#08h=#00001000 = (RS1)=0 e (RS0)=1= dene o segundo banco de registradores (B1).
MOV R5,A
Armazena, no conte do do registrador R5 do segundo banco de regu
istradores, o conte do do acumulador A.
u

Pgina 35
a

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


a

1.5.10

Conjunto de Instruoes
c

Instruoes Aritmticas
c
e
Mnemnico
o
ADD A,Rn

Opcode

Funao
c

SUBB
A,#DADO
INC A
INC Rn

Soma o conte do de Rn ao acumuu


lador
Soma o conte do da posiao de
u
c
memria ao acumulador
o
Soma o conte do da RAM enu
dereada por Ri ao acumulador
c
Soma o dado ao acumulador
Soma o conte do de Rn e o carry ao
u
acumulador
Soma o conte do da posiao de
u
c
memria e o carry o acumulador
o
Soma o conte do da RAM enu
dereada por Ri e o carry ao acuc
mulador
Soma o dado e o carry ao acumulador
Subtrai o conte do de Rn e o Boru
row do acumulador
Subtrai o conte do da posiao de
u
c
memria e o Borrow do acumulador
o
Subtrai o conte do da RAM enu
dereada por Ri e o Borrow do acuc
mulador
Subtrai o dado e o Borrow do acumulador
Soma 1 ao acumulador
Soma 1 ao conte do de Rn
u

INC DIRETO
INC @Ri

Soma 1 a posiao de memria

c
o
Soma 1 a RAM endereada por Ri

DEC A
DEC Rn

Subtrai 1 do acumulador
Subtrai 1 do conte do de Rn
u

DEC DIRETO
DEC @Ri

Subtrai 1 da posiao de memria


c
o
Subtrai 1 da RAM endereada por
c
Ri
Soma 1 ao registrador DPTR
Multiplica A e B resultado: BA
Divide A e B resultado: A inteiro B
resto
Ajuste decimal do acumulador

ADD A,Direto
ADD A,@Ri
ADD A,DADO
ADDC A,Rn
ADDC
A,DIRETO
ADDC A,@Ri

ADDC
A,#DADO
SUBB A,Rn
SUBB
A,DIRETO
SUBB A,@Ri

INC DPTR
MUL AB
DIC AB
DA A

Bytes

Clocks

Flags Afetados

12

CY
?

12

0010/011iB

12

24
0011/1
abc
35

H
B

2
1

12
12

?
?

?
?

?
?

12

0011/011iB

12

34

12

1001/1
abc
95

12

12

1001/011iB

12

94

12

04
H
0000/1 B
abc
05
H
0000/011 B
i
14
H
0001/1 B
abc
15
H
0001/011 B
i
A3
H
A4
H
84
H

1
1

12
12

2
1

12
12

1
1

12
12

2
1

12
12

1
1
1

24
48
48

0
0

?
0

12

0010/1
abc
25

D4

Pgina 36
a

AC
?

OV
?

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


a

Operaoes Lgicas
c
o
Mnemnico
o

Opcode

Funao
c

ANL A,Rn

eentre registro e acumulador

ANL A,DIRETO
ANL A,@Ri

eentre memria e acumulador


o
eentre RAM indireta e acumulador
eentre dado e acumulador
eentre acumulador e memria.
o
Resultado na memria
o
eentre dado e memria
o

ANL A,#DADO
ANL DIRETO,A
ANL
DIRETO,#DADO
ORL A,Rn
ORL A,DIRETO
ORL A,@Ri
ORL A,#DADO
ORL DIRETO,A
ORL
DIRETO,#DADO
XRL A,Rn
XRL A,Direto
XRL A,@Ri
XRL A,#DADO
XRL DIRETO,A
XRL
DIRETO,#DADO
CRL A
CPL A
RL A
RL C
RR A
RRC A
SWAP A

ouentre registro e acumulador


ouentre memria e acumulador
o
ouentre RAM indireta e acumulador
ouentre DADO e acumulador
ouentre acumulador e memria.
o
Resultado na memria
o
ouentre DADO e memria
o
ou exclusivoentre registro e acumulador
ou exclusivoentre memria e acuo
mulador
ou exclusivo? entre RAM indireta
e acumulador
ou exclusivoentre dado e acumulador
ou exclusivoentre acumulador e
memria. Resultado na memria
o
o
ou exclusivoentre dado e memria
o
Faz A = 0
Inverte o estado dos bits do acumulador
Desloca o acumulador a esquerda
`
Desloca o acumulador a esquerda
`
atravs do carry
e
Desloca acumulador a direita
`
Desloca acumulador a direta atravs
`
e
do carry
Troca os nibbles do acumulador.
Equivale a 4 RR A ou 4 RL A

Bytes

Clocks

Flags Afetados

0101/1 B
abc
55
H
0101/011iB

12

CY
-

2
1

12
12

54
52

H
H

2
2

12
12

53

12

0100/1 B
abc
45
H
0100/011iB

12

2
1

12
12

44
42

H
H

2
2

12
12

43

12

0110/1
abc
65

12

12

0110/011iB

12

64

12

62

12

63

12

E4
F4

H
H

1
1

12
12

23
33

H
H

1
1

12
12

03
13

H
H

1
1

12
12

C4

12

Pgina 37
a

AC
-

OV
-

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


a

Operaoes de Transferncia de Dados


c
e

Mnemnico
o

Opcode

Funao
c

Bytes

Clocks

Flags Afetados
CY

MOV A,Rn

Move o registro para o acumulador

MOV A,Direto
MOV A,@Ri
MOV A,#DADO
MOV Rn,A

Move memria para o acumulador


o
Move RAM endereada por Ri ao
c
acumulador
Move o dado para o acumulador
Move o acumulador para o registro

MOV Rn,Direto

Move memria para o registro


o

MOV
Rn,#DADO
MOV Direto,A
MOV Direto,Rn

Move o dado para o registro

MOV
Direto1,Direto2
MOV Direto,@Ri
MOV
Direto,#DADO
MOV @Ri,A
MOV @Ri,Direto

Move acumulador para a memria


o
Move o registro para a memria
o
Mova o conte do da memria Diu
o
reta2 para Direta1
Move RAM endereada por Ri para
c
a memria
o
Move o dado para a memria
o
Move o acumulador para a RAM endereada por Ri
c
Move a memria para a RAM eno
dereada por Ri
c
Move o dado para a RAM indireta

MOV
@Ri,#DADO
MOV
Move dado de 16 bits para o DPTR
DPTR,#DADO16
MOVC A, @A + Soma A + DPTR obtendo um enDPTR
dereo de 16 bits na memria de proc
o
grama. Carrega acumulador com
esta memria
o
MOVC
A, Idem ao anterior, mas soma A + PC
@A+PC
MOVX A,@Ri
Move RAM externa (End. 8 bits)
para o acumulador
MOVX
A, Move RAM externa (End. 16 bits)
@DPTR
para o acumulador
MOVX @Ri, A
Move o acumulador para a RAM externa (End. 8 bits)
MOVX @DPTR, Move o acumulador para a RAM exA
terna (End. 16 bits)

1110/1 B
abc
E5
H
1110/0111B

AC

OV

12

2
1

12
12

H
B

2
1

12
12

24

12

H
B

2
2

12
24

24

1000/011iB

24

75

24

1111/011iB

12

1010/011iB

24

0111/011iB

12

90

24

93

24

83

24

1110/001iB

24

E0

24

1111/001iB

24

F0

24

74
1111/1
abc
1010/1
abc
0111/1
abc
F5
1000/1
abc
85

OBS: Continua na prxima pgina . . .


o
a
Pgina 38
a

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


a

Mnemnico
o
PUSH Direto
POP Direto
XCH A,Rn
XCH A,Direto
XCH A,@Ri
XCHD A,@Ri

Opcode

Funao
c

Bytes

Clocks

Flags Afetados

C0

24

D0

24

1100/1 B
abc
C5
H
1100/011iB

12

2
1

12
12

1101/011iB

12

Opcode

Incrementa o SP e ento coloca a


a
memria no stack
o
Retira dado do stack e coloca na
memria, depois decrementa SP
o
Troca entre si o conte do do acumuu
lador e do registro
Troca memria com acumulador
o
Troca RAM indireta com acumulador
Troca nibble menos signicativo do
acumulador e da RAM indireta entre si

CY
-

AC
-

OV
-

Bytes

Clocks

Instruoes para Variveis Booleanas


c
a
Mnemnico
o
CLR C
CLR bit
SETB C
SETB bit
CPL C
CPL bit
ANL C,bit
ANL C,/bit
ORL C,bit
ORL C,/bit
MOV C,bit
MOV bit,C
JC rel
JNC rel
JB bit,rel
JNB bit,rel
JBC bit,rel

Funao
c
Zera o Carry
Zera o bit endereado
c
Seta o carry
Seta o bit endereado
c
Inverte o estado do carry
Inverte o estado do bit endereado
c
eentre o bit endereado e o carry
c
eentre o complemento do bit endereado e o carry
c
ouentre o bit endereado e carry
c
ouentre o complemento do bit endereado e o carry
c
Move o bit endereado para o carry
c
Move o carry para o bit endereado
c
Desvia se o carry estiver setado
Desvia se o carry estiver zerado
Desvia se o bit endereado estiver
c
setado
Desvia se o bit endereado estiver
c
zerado
Desvia se o bit endereado estiver
c
setado e depois zera o bit

Flags Afetados

C3
C2
D3
D2
B3
B2
82
B0

H
H
H
H
H
H
H
H

1
2
1
2
1
2
2
2

12
12
12
12
12
12
24
24

CY
0
1
?
?
?

72
A0

H
H

2
2

24
24

?
?

A2
92
40
50
20

H
H
H
H
H

2
2
2
2
3

12
24
24
24
24

?
-

30

24

10

24

Pgina 39
a

AC
-

OV
-

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


a

Instruoes de Desvio
c
Mnemnico
o
ACALL END11
LCALL END16
RET
RETI
AJMP END11
LJMP END16
SJMP rel
JMP
@A
+
DPTR
JZ rel
JNZ rel
CJNE A,Direto,
rel
CJNE
A,#Dado,rel
CJNE
Rn,#Dado,rel
CJNE
@Ri,#Dado,
rel
DJNZ Rn, rel
DJNZ Direto, rel
NOP

Opcode

Funao
c
Chama sub-rotina numa faixa de
2kbytes da atual posiao
c
Chama sub-rotina em qualquer
posiao da memria de programa
c
o
Retorne da sub-rotina
Retorne da interrupao
c
Desvia para outro endereo numa
c
faixa de 2kbytes da atual posiao
c
Desvia para qualquer posiao da
c
memria de programa
o
Desvio curto relativo
Desvia para o endereo obtido da
c
soma do acumulador e do DPTR
Desvia se o acumulador for zero
Desvia se o acumulador no for zero
a
Compara e desvia se o acumulador
for diferente da memria endereada
o
c
Compara e desvia se o acumulador
for diferente do dado
Compara e desvia se o registro for
diferente do dado
Compara e desvia se a RAM indireta for diferente do dado
Decrementa o registro e desvia se for
diferente de zero
Decrementa a memria e desvia se
o
for diferente de zero
Nenhuma Operaao
c

Bytes

Clocks

Flags Afetados

24

CY
-

AC
-

OV
-

12

24

22
32
-

H
H
-

1
1
2

24
24
24

02

24

80
73

H
H

2
1

24
24

60
70
B5

H
H
H

2
2
3

24
24
24

B4

24

1011/1 B
abc
1011/011iB

24

24

1101/1
abc
D5

24

24

00

12

Pgina 40
a

Cap
tulo 2

Segunda Unidade
Dispositivos do 8051
2.1

Ciclos de Mquina
a

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

P1

S2

P2

1 Estado

P1

S3

P2

P1

S4

P2

P1

S5

P2

P1

S6

P2

2 Pulsos

P1

P2

Figura 2.1: Ilustraao de um ciclo de mquina do MSC8051


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

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


a

2.2

Portas de I/O

Temos no 8051 quatro grupos de sa


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

2.2.1

Princ
pio de Funcionamento e Utilizao
ca

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

VIA DE
DADOS
INTERNA

ESCREVE

CLK

PINO

LE PINO

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


Quando escrevemos um bit na porta, o mesmo vai pela via interna at a entrada D do ip-op, e
e
ento um pulso de clock em CLK coloca este bit em Q, que atravs da eletrnica associada leva este
a
e
o
n ao pino externo.
vel
J no caso da leitura, algumas instruoes lem o pino enquanto outras lem o estado do latch, em Q.
a
c e
e
As instruoes que lem o latch so aquelas que costumam ler, modicar e reescrever o bit, a saber
c
e
a
: INC, DEC, CPL, JBC, DJNZ, ANL, ORL, XRL, MOV Px.n,C, CLR Px.n e ainda SETB Px.n,
conforme vimos na unidade anterior.
As demais instruoes de acesso aos ports lem o estado presente nos pinos. E dai, qual a diferena
c
e
c
ento?
a
Vamos supor que temos a base de um transistor NPN sendo acionada pelo pino de I/O. Quando
escrevemos 1 neste pino o transistor entrar em conduao, e se a CPU ler o estado deste pino para
a
c
eventual conrmaao, ler a tenso na base do transistor e interpretar como n ZERO, ento neste
c
a
a
a
vel
a
Pgina 42
a

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


a

caso deve ser lido o valor de latch, que estar corretamente indicando n UM.
a
vel
Um exemplo simples de conexo das linhas seria um sistema que em funao de um certo bit, por
a
c
exemplo o bit 5 da porta 3 (escrito como P3.5), far com que os leds colocados nos 8 pinos da porta
a
1 sejam acesos sequencialmente, conforme o estado daquele bit. Na gura 2.3, temos um diagrama
simples para este exemplo, e a seguir o Software simblico para esta funao.
o
c

Pgina 43
a

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


a
+

P1.0
P1.1

8051

P1.7

P3.5

Figura 2.3: Exemplo simples de utilizaao


c

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

Pgina 44
a

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


a

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

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

2.2.2

Caracter
sticas Gerais e de Tempo dos Ports

Instruoes que Alteram diretamente o Conte do dos Ports


c
u

E necessrio ter cuidado com as instruoes do tipo Read-Modify-Wr`


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

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


a

Assim, se queremos s uma mscara, devemos operar fora de P1, isto :


o
a
e
mov A,Pi ;l P1 e carrega em A
e
orl A,11111110b ;faz a mscarasem alterar P1
a
Esta e outras instruoes abaixo listadas correm este perigode utilizaao e precisamos saber exc
c
atamente o que queremos antes de aplic-las direto aos ports:
a
Instruao e Forma Bsica
c
a
INC
DEC
CPL
JBC
DJNZ
ANL
ORL
XRL

Funao Exemplo
c
INC P1
DEC P3
CPL P1
JBC P1.0,#XX
DJNZ P1,#XX
ANL PO,A
ORL PO,A
XRL P1,#XX

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

Condioes de Tempo Envolvendo os Ports


c
Cada pino do port amostrado perto da descidado pulso ALEno instante de leitura de ine

struao, entre o per


c
odo S5 do ciclo de mquina. E poss que, se o pino, neste instante, estiver em
a
vel
transiao, o Mc possa ler dado errado. Quando se escreveum dado no latch do pino do port, ele j
c
a
aparece efetivamente na sa do latch durante o per
da
odo S6P2 do ultimo ciclo de mquina necessrio

a
a
para nalizaao da referida instruao. Assim, s aparecer sicamente no pino, no instante S1P1 do
c
c
o
a
prximo ciclo de mquina.
o
a
Observe que s se pode ler com conabilidade um dado no pino do port que que presente por
o
tempo acima de 1 valor de S(com clock de 12 MHz teremos per
odo S 1 s ou genericamente,
per
odo maior que 1 ciclo de mquina).
a

2.2.3

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


a
o

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

o pino WR\ = 1, e vice-versa para escrita. LEMBRETE: OS SINAIS RD\ E WR\ S AO GER
ADOS ATRAVES DE PINOS DA PORTA 3 CONFORME VEREMOS NO ITEM 2.2.5
Pgina 46
a

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


a

2.2.4

Seleo de Programa Externo ou Interno


ca

O pino 31 tem a funao EA\ (extemal address) e quando em n


c
vel 1 diz a CPU para procu`
raros primeiros 4 KBytes de programa intemamente, e o que exceder esta memria ser procurado
o
a
extemamente. Quando em n
vel 0, informa a CPU que deve procurar todos os passos de programa
`
externamente, ignorando a memria interna.
o
OBSERVACAO:

No confundir este pino com o bit EA, presente no registro IE.


a
Esta a opao utilizada quando se usa o 8031, que um 8051 mas que no tem a ROM interna,
e
c
e
a
ou quando no se deseja arcar com as despesas de encomendar grande quantidade de peas do 8051
a
c
gravadas em fbrica.
a

DEVE FICAR CLARO QUE QUANDO SE UTILIZA MEM ORIA EXTERNA DE PROGRA NAO PODEREMOS MAIS UTILIZAR OS PINOS DAS PORTAS

MAS, EM QUALQUER OPCAO

0 E 2 COMO I/0.
Na gura 2.4, temos um esquema de Hardware onde colocamos 8 KBytes de programa e 8 KBytes
de dados externos, sendo que neste caso, temos toda a memria de programa externa, utilizando 0 8031.
o
RD\
1
0
1
0

WR\
1
1
0
0

Funao
c
Espera
Lendo na RAM
Escrevendo na RAM
No ocorre
a

Tabela 2.2: Tabela de Acesso a RAM.


`

Figura 2.4: Seleao Externa


c

2.2.5

Uso dos Pinos da Porta 3 como funoes Alternativas


c

A porta 3, conformej foi visto, pode ter seus pinos usados de forma independente como pinos de
a
funoes especiais. Por exemplo, para a expanso de memria de dados vista acima, so dois pinos da
c
a
o
a
porta 3 que fomecem os sinais RD\ e WR\ para controle.
Quando usamos os temporizadores internos como contadores de eventos, so outros dois pinos
a
desta porta que servem como entrada para o sinal de contagem. Se nosso projeto necessitar de interrupao extema, ser atravs de dois pinos desta porta que as mesmas sero sinalizadas a CPU.
c
a
e
a
`
E nalmente, nos dois pinos restantes, temos os que permitem a implementaao do canal serial. A
c
maneira pela qual utilizamos ou no uma funao especial da porta 3, ser vista no momento em que
a
c
a
a estudarmos o canal serial.
Com relaao aos pinos RD\ e WR\ so os unicos com os quais no precisamos nos preocupar, pois
c
a

a
seu controle efetuado pela CPU, e ca claro que se desejamos utilizar memria de dados externa,
e
o
no utilizaremos estes pinos como I/0.
a
CASO QUALQUER UMA DAS FUNCOES ESPECIAIS ESTEJA SENDO UTI
PODEREMOS MAIS ACESSAR A PORTA 3 COMO PORTA DE I/0
LIZADA, NAO
PARA BYTE, APENAS COMO BIT ENDERECAVEL.

Pgina 47
a

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


a

2.2.6

Capacidade de Corrente nos Pinos de I/O

A porta 0, devido as suas caracter


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

2.3

Modos de Endereamento das Instruoes


c
c

As instruoes operam com dados que podem ser endereados de vrias formas, motivo pelo qual
c
c
a
devemos saber muito bem os modos de endereamento que o microprocessador aceita. No caso da
c
fam 8051/52, etc, dispe-se dos seguintes modos:
lia
o

1.Registrador
2.Direto
3.Indireto
4.Imediato
5.Relativo
6.Absoluto
7.Longo
8.Indexado

2.3.1

Endereamento por Registrador


c

As instruoes do 8051, quando se referem a registradores internos do microcontrolador, apresentamc


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

OP CODE

RN

1 BYTE

2.3.2

Endereamento Direto
c

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

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


a

OP CODE

END. DIRETO

2 BYTE

2.3.3

Endereamento Indireto
c

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

RAM
INT
CONTEUDO
Posicao de Memoria
05

30h

MOV A,@R1

A=05

CONTEUDO

R1

30

01h
00h

Figura 2.5: Ilustraao da operaao de endereamento indireto


c
c
c

mov 30h,#05h: Carrego a poscao da RAM interna de endereo 30h, com o valor 05(conte do=05).

c
u

mov R1,#30h: Carrego o registrador R1com o valor 30(conte do=30h).


u

mov A,@Rl: Carrego ou movo para Ao conte do da memria apontada por R1,que 30h,
u
o
e
isto , ele sabe que endereo indireto. Logo, ele sabe que o valor 30hdentro de R1 um
e
e
c
e
endereo e no um conte do. Assim, ele vai na posiao de memria com endereo 30h, pega
c
a
u
c
o
c
Pgina 49
a

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


a

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


u
e
a

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

OP CODE

Ri

1 BYTE

2.3.4

Endereamento Imediato
c

As instruoes do 8051, quando se referem a endereamento imediato, signicam que o cdigo da


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

OP CODE

VALOR IMEDIATO

1 BYTE

1 OU 2 BYTES

A unica exceao a `

c e nstruao [mov DPTR,#data(16)], que de 3 bytes, pois o endereo dela de


c
e
c
e
2 bytes (16 bits).

2.3.5

Endereamento Relativo
c

As instruoes do 8051, com endereamento relativo, so utilizadas com instruoes que permitem
c
c
a
c
realizar um pulodireto no passo cadenciado de um programa. Este endereo relativo (chamado oc
set) um dado de 8 b` com s`
e
ts
nal, ` , realiza um salto relat` ao endereo que est no Program
sto e
vo
c
a
Counter, PC, de -128 a +127 pos`coes. Este endereo relativo l`

c
e gado a instruao por um outro byte.
`
c
Antes de achar o endereo f`
c nal de salto, o PC incrementado ao endereo da prxima instruao e este
e
c
o
c
o endereo ao qual se soma o endereo relativo: vide ilustraao seguinte, pois a explicaao verbal
e
c
c
c
c
e
muito dif de absorver. Vejamos o exemplo:
cil

Pgina 50
a

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


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

ROM

SJMP DESVIO= Salto pequeno para DESVIO


Exemplo 1: 80 DESVIO = 8003h

80
03

Endereco de DESVIO=03
Codigo do comando

xx

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

PC+3

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

OP CODE

2.3.6

PONTO RELATIVO

Endereamento Absoluto
c

Instruoes do 8051, que se utilizam de endereo absoluto, so as ACALL e AJMP. So instruoes


c
c
a
a
c
de 2 bytes que permitem desvio de at 2 Kbytes relativo, em apenas 2 bytes (endereo total da
e
c
faixa teria que ser em 3 bytes; no ?).
a e

2.3.7

Endereamento Longo
c

As instruoes no 8051, que usam endereamento do tipo longo, so LCALL e LJMP. Permitem
c
c
a
endereamento de 16 bits que mapeia todo o espao dispon de endereos (64 Kbytes). A unica
c
c
vel
c

desvantagem destas instruoes que elas consomem 3 bytes de programa, o que s ser
c e
o
a
um problema quando o processo exigir tempo de execuao muito pequeno (em que 1 s a
c
mais ou a menos vital, por exemplo). Tem o problema, tambm, de ser um endereo absoluto que
e
e
c
no muda; logo, se voc necessita executar esse programa em outra parte do espao de memria, deve
a
e
c
o
repensar neste endereo absoluto, ou se utilizar sempre de labelsna criaao do programa, para que,
c
c
na compilaao, o compilador acerte os endereos absolutos para voc.
c
c
e
Este tipo de instruao consome 3 bytes:
c

2.3.8

Endereamento Indexado
c

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

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


a

2.4
2.4.1

Temporizadores e Contadores
Introduo
ca

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

2.4.2

Registros Envolvidos

Dois registros SFR so utilizados para controlar as funoes e operaoes do temporizador/contador:


a
c
c
em TMOD especica-se o modo de operaao e em TCON controla-se a operaao. A gura 2.6 ilustra
c
c
o registro TMOD e a gura 2.7 ilustra o registro TCON.

Pgina 52
a

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


a

Figura 2.6: Descriao do Registro TMOD


c
GATE

especica como ser feito o controle:


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

C/*T

seleciona modo contador ou temporizador:


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

M1
0
0
1
1

M0
0
1
0
1

seleciona o modo de operaao:


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

Pgina 53
a

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


a

Figura 2.7: Descriao do Registro TCON


c
TF1

TR1
TF0

TR0
IE1

IT1

E0

IT0

ag de transbordamento (overow) do contador/temporizador 1. Ativado por hardware

quando h transbordamento no timer 1. E apagado por hardware quando o processamento


a
desviado para a rotina de interrupao.
e
c
bit de partida/parada (run/stop) do contador/temporizador 1.
ag de transbordamento (overow) do contador/temporizador 0. Ativado por hardware

quando h transbordamento no timer 0. E apagado por hardware quando o processamento


a
desviado para a rotina de interrupao.
e
c
bit de partida/parada (run/stop) do contador/temporizador 0.
ag da interrupao externa 1. Ativada por hardware quando detectada uma interrupao.
c
e
c
Apagado por hardware (somente se for modo borda) quando a interrupao processada,
c e
ou seja, quando se desvia para a rotina de interrupao.
c
indica se a interrupao externa 1 opera por borda ou por n
c
vel:
1 borda de descida (),
0 n baixo.
vel
ag da interrupao externa 0. Ativada por hardware quando detectada uma interrupao.
c
e
c
Apagado por hardware (somente se for modo borda) quando a interrupao processada,
c e
ou seja, quando se desvia para a rotina de interrupao.
c
indica se a interrupao externa 0 opera por borda ou por n
c
vel:
1 borda de descida (),
0 n baixo.
vel

Pgina 54
a

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


a

2.4.3

Modos de operao
ca

Os dois contadores/temporizadores (timer1 e timer0) podem trabalhar em 4 modos de operaao


c
que so selecionados empregando os bits M1 e M0 do registro TMOD. Os modos 0, 1 e 2 so iguais
a
a
para os 2 contadores/temporizadores mas o modo 3 diferente.
e

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

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

Pgina 55
a

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


a

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

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

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

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

Pgina 56
a

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


a

Modo 3
Este o unico modo onde os contadores/temporizadores tm um comportamento diferente. Neste
e
e
modo, o contador/temporizador 1 simplesmente suspende a contagem ( como se estivesse com
e
TR1=0), enquanto o contador/temporizador 0 se divide em dois contadores de 8 bits:
TH0 contador/temporizador de 8 bits usando C/*T, GATE, TR0, *INT0 e TF0,
TL0 contador/temporizador de 8 bits usando TR1 e TF1 (ou seja, provoca a interrupao do
c
timer 1).

E como se existem 2 contadores/temporizadores de 8 bits (TH0 e TL0) e outro de 16 bits (timer 1). O
timer 1, entretanto, pode ser usado para operar em qualquer outro modo (0, 1 ou 2) e usa-se o modo
3 para det-lo. No h problemas porque os modos so independentes. Tambm se pode usar o timer
e
a a
a
e
1 (em modo 2) para gerar o baud rateda porta serial.

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

Pgina 57
a

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


a

2.4.4

Exerc
cios

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

Figura 2.12: Clculo de N para determinar uma frequncia


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

GATE
0
IE EA
1

C/*T M1 M0
0
0
0
- - ES ET1
0 0
0
0

GATE C/*T M1
0
0
0
EX1 ET0 EX0
0
1
0

;LED_10HZ.ASM;
DEFSEG PROG, CLASS=CODE, START=0
SEG
PROG
;
DEZ_HZ
;

EQU

35739

ORG
AJMP

RESET
INIC

ORG
AJMP

TIMER0
TIM0

ORG

50H

;
INIC
MOV
MOV
MOV
MOV
MOV
MOV
CLR
SETB
SJMP

TL0,#LOW DEZ_HZ
TH0,#HIGH DEZ_HZ
TMOD,#1 ;TIMER 0 EM MODO 1
IE,#82H
P1 ,#0 ;APAGAR TODOS OS LEDS
A,#01001001B
C
TR0
$

;
TIM0

ORG
MOV
MOV
RLC
MOV
RETI
END

100H
TL0,#LOW DEZ_HZ ;REINICALIZAR
TH0,#HIGH DEZ_HZ ;O CONTADOR
A
P1,A

Pgina 58
a

M0
1

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


a

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

MOV
ADD
MOV
MOV

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

Pgina 59
a

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


a

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

;LED_1HZ.ASM
;
DEFSEG PROG, CLASS=CODE, START=0
SEG PROG
;
DEZ_HZ
DIVISOR
;

EQU
EQU

32203
10

ORG
AJMP

RESET
INIC

ORG
AJMP

TIMER0
TIM0

ORG
MOV
MOV
MOV
MOV
MOV
MOV
MOV
CLR
SETB
SJMP

50H
TL0,#LOW DEZ_HZ
TH0,#HIGH DEZ_HZ
R7,#DIVISOR
;PREPARAR DIVISAO POR 10
TMOD,#1
;TIMER 0 EM MODO 1
IE,#82H
P1,#0
;APAGAR TODOS OS LEDS
A,#01001001B
C
TR0
$

ORG
MOV
MOV
DJNZ
MOV
RLC
MOV
RETI
END

100H
TL0,#LOW DEZ_HZ ;REINICALIZAR
TH0,#HIGH DEZ_HZ ;O CONTADOR
R7,FIM
;DIVIDIR POR 10
R7,#DIVISOR
A
P1,A

;
INIC

;
TIM0

FIM

Pgina 60
a

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


a

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

Figura 2.13: Sinal a ser gerado na P1.7


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

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


a

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

Figura 2.14: Sinal a ser gerado na P1.7


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

;ONDA2.ASM
DEFSEG PROG, CLASS=CODE, START=0
SEG PROG
;
SAIDA
R_600MICRO
R_25MICRO
;

EQU
EQU
EQU

P1.7
77
249

ORG
AJMP

RESET
INICIO

ORG
AJMP

TIMER0
TIM0

;RETARDO DE 600 MICROSEG


;RETARDO DE 25 MICROSEG

;
INICIO

;
TIM0

;
LB1

ORG
MOV
MOV
MOV
MOV
CLR
SETB
SJMP

50H
TL0,#R_600MICRO
TH0,#R_25MICRO
TMOD,#2
IE,#82H
SAIDA
TR0
$

JB
MOV
SETB
RETI

SAIDA,LB1
TH0,#R_25MICRO
SAIDA

MOV
CLR
RETI
END

TH0,#R_600MICRO
SAIDA

Pgina 62
a

;PRIMEIRA CONTAGEM
;CONTAGEM SEGUINTE
;TIMER 0 EM MODO 2
;EA=1 E ET0=1
;PARTIDA DO TIMER 0
;LOOP INFINITO
;2
;2
;1
;2

CICLOS
CICLOS
CICLOS
CICLOS

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


a

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

IE

EA
1

GATE
0

C/*T
1

ES
0

M1
1

ET1
1

M0
0

EX1
0

GATE
0

ET0
0

C/*T
0

M1
0

M0
1

EX0
0

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

EQU

246

ORG RESET
AJMP INICIO
;
ORG TIMER1
AJMP TIM1
;
INICIO:

ORG 50H
MOV A,#01001001B
CLR C
MOV P1,A
MOV TL1,#CONTA_10
MOV TH1,#CONTA_10
MOV TMOD,#60H
MOV IE,#88H
SETB TR1
SJMP $

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

;
TIM1:
RLC A
MOV P1,A
RETI
END

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

Pgina 63
a

Cap
tulo 3

Terceira Unidade
Porta Serial
3.1
3.1.1

Comunicao Serial
ca
Introduo
ca

A porta serial existente na fam MCS-51 full duplex, quer dizer, pode transmitir e receber
lia
e
dados simultaneamente. Tem um buer que permite receber um segundo byte antes que o byte previamente recebido tenha sido retirado (lido) do registro de recepao. Mas, se o primeiro byte no tiver
c
a
sido lido no tempo em que o segundo byte se completa, um dos dois ser perdido.
a

3.1.2

Registros Envolvidos

A porta serial possui um registrador chamado SBUF, o mesmo que se usa para enviar ou receber
dados pela porta serial. Na realidade, o nome SBUF se refere a dois registros, um somente para leitura
por onde se recebem os dados que chegam pela porta serial e outro somente para escrita por onde se
transmitem dados pela porta serial.
O modo de operaao da porta serial controlado pelo registro SCON, que ilustrado na gura
c
e
e
3.1. A gura 3.2 apresenta um resumo dos modos de operaao.
c

Figura 3.1: Descriao do Registro SCON


c

SM0
0
0
1
1

SM1
0
1
0
1

MODO
0
1
2
3

DESCRICAO

registro de deslocamento
UART de 8 bits
UART de 9 bits
UART de 9 bits

FREQUENCIA
clock/12
varivel
a
clock/12 ou clock/64
varivel
a

SM2 comunicaao multiprocessador (habilitada com SM2=1):


c
SM2=1 e em modo 1 == interrupao (RI=1) com o bit de parada (stop bit) igual a 1.
c
SM2=1 e em modo 2 ou 3 == interrupao (RI=1) se for recebido RB8=1.
c
REN habilita a recepao serial (Reception Enable)
c
TB8 oitavo bit a ser transmitido nos modos 2 e 3.
RB8 oitavo bit recebido nos modos 2 e 3.
TI ag de interrupao por trmino de transmisso pela porta serial:
c
e
a
MODO 0 ativado no nal do oitavo bit
DEMAIS ativado no comeo do bit de parada
c
RI ag de interrupao por recepao pela porta serial:
c
c
MODO 0 ativado no nal do oitavo bit.
DEMAIS ativado na metade do bit de parada.
Observaao: Os ags TI e RI no so apagados por hardware e por isso a rotina de interrupao
c
a a
c
deve faz-lo, ou seja, estes ags devem ser zerados por software.
e
O registro PCON tambm toma parte na geraao do baud rate da porta serial. Este registro
e
c
e
ilustrado na gura 3.2.

Figura 3.2: Descriao do Registro PCON


c

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


a

3.1.3

Modos de Operao
ca

Existem quatro modos de operaao da porta serial, cada um com uma nalidade. Ser apresentado
c
a
um resumo de cada modo:

Modo 0 (s
ncrono, 8 bits)
Neste modo os dados entram e saem pelo pino RXD. O pino TXD fornece o clock para o deslocamento (shift). So transmitidos e recebidos dados de 8 bits (LSB primeiro). O baud rate de 1/12
a
e
da freqncia do clock (igual a 1 ciclo de mquina).
ue
a

Figura 3.3: Esquema da Porta Serial em MODO 0


Este modo pode ser utilizado para expandir as portas de I/O do microcontrolador, utilizando o
esquema a seguir:

Figura 3.4: Expanso das Portas de I/O


a

Pgina 67
a

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


a

Modo 1 (ass
ncrono, 8 bits)
No Modo 1 so operados 10 bits com um baud rate programvel. Recebe-se pelo pino RXD e
a
a
transmite-se pelo pino TXD. A tabela 3.1 ilustra o frame de bits serial. O bit de partida (START)
e
sempre zero e o bit de parada (STOP) sempre um na transmisso. Na recepao o bit de parada
e
a
c
e
colocado no bit RB8.
START

Bit 0

Bit 1

Bit 2

Bit 3

Bit 4

Bit 5

Bit 6

Bit 7

STOP

Tabela 3.1: Frame de bits gerado pela porta serial em MODO 1


Neste modo o baud rate gerado pelo contador/temporizador 1. A cada 16 (SMOD=1) ou 32
e
(SMOD=0) transbordamentos (overows) enviado um pulso para o circuito serial. A gura 3.5
e
ilustra o esquema do gerador do baud rate e tambm apresenta algumas frmulas para o clculo do
e
o
a
valor a ser programado no contador/temporizador.

Figura 3.5: Esquema para a geraao do Baud Rate (BR) em MODO 1


c
Usando o contador/temporizador 1 programa-se qualquer baud rate. Na grande maioria dos casos
tem-se o baud rate e buscado o valor N a ser programado no contador/temporizador 1 (o mais
e
cmodo usar o modo 2 - auto recarga). Um problema que sempre existe o erro gerado pela aproxo
e
e
imaao do valor a ser programado no contador/temporizador. Isto provoca a geraao de baud rates
c
c
ligeiramente diferentes.
Exemplo: Usando um cristal de 3,575611 MHz, qual o valor a ser programado no timer 1 para
e
operar a 9600 bauds (usar SMOD=0)?
N = 3575611 / (384*9600) = 0,9699 (aproximadamente 1)
Usando timer 1 no modo 2 tem-se: 256 - 1 = 255 (TH1=TL1=255).
Observaao: a transferncia do dado recebido para o registro SBUF (e RB8, que guarda o stop
c
e
bit) e a ativaao do ag RI somente acontecer se:
c
a
RI = 0 e (SM2= 0 ou o bit de parada =1).

Pgina 68
a

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


a

Modo 2 (ass
ncrono, 9 bits, baud rate xo)
Este modo opera com 11 bits e o baud rate pode ser de 1/32 ou 1/64 do clock. O bit TB8/RB8
serve para transmitir a paridade ou gerar um segundo bit de parada (TB8=1). O frame de bits usado
neste modo ilustrado na tabela 3.2.
e
START

Bit 0

Bit 1

Bit 2

Bit 3

Bit 4

Bit 5

Bit 6

Bit 7

TB8

STOP

Tabela 3.2: Frame de bits gerado pela porta serial em MODO 2


O unico controle que se tem sobre o baud rate atravs do uso do bit SMOD. Se SMOD=0,

e
e
trabalha-se com BR=clock/32 e se SMOD=1, trabalha-se com BR=clock/64. A gura 3.6 ilustra o
esquema para geraao do baud rate no modo 2.
c

Figura 3.6: Esquema para a geraao do Baud Rate (BR) em MODO 2


c
Na transmisso o bit 8 copiado do bit TB8. Na recepao o bit 8 copiado para o bit RB8. Os
a
e
c
e
bits TB8 e RB8 esto no registro SCON.
a
O dado recebido somente carregado no SBUF (e RB8) se:
e
RI=0 e (SM2=0 ou bit 9 (stop bit) = 1).

Pgina 69
a

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


a

Modo 3 (ass
ncrono, 9bits, baud rate varivel)
a
e
E idntico ao modo 2, exceto que a geraao do baud rate idntico ao modo1. A tabela 3.3 e
c
e e
gura 3.7 ilustra o frame de bits e a geraao do baud rate.
c
START

Bit 0

Bit 1

Bit 2

Bit 3

Bit 4

Bit 5

Bit 6

Bit 7

TB8

STOP

Tabela 3.3: Frame de bits gerado pela porta serial em MODO 3

Figura 3.7: Esquema para a geraao do Baud Rate (BR) em MODO 3


c

3.1.4

Cuidados com a Porta Serial

Nos quatro modos a transmisso se inicia quando escrito um byte em SBUF. A recepao haa
e
c e
bilitada quando REN=1 (no MODO 0 exige-se tambm RI=0). No se esquea de que somente existe
e
a
c
uma unica interrupao dedicada a porta serial, portanto ela gerada por duas condioes:

c
`
e
c
a)Trmino da transmisso de um byte ag TI
e
a
b)Trmino da recepao de um byte ag RI
e
c
Deve-se testar os ags RI e TI para determinar se a interrupao foi por transmisso ou por recepao.
c
a
c
Os ags RI e TI devem ser apagados por software.
Um outro cuidado muito importante com a geraao do baud rate. Muitas vezes no se consegue
e
c
a
a comunicaao serial devido a impreciso do baud rate. Portanto o problema a seguir proposto:
c
`
a
e
Programar o contador/temporizador 1 para gerar 9600 bauds para a porta serial operando em modo
3, sendo que o cristal de 4 MHz.
e
Soluao: N = 4000000/(384*9600) = 1,085 (SMOD=0).
c
Na soluao calculou-se que N=1,085 mas somente podem ser programados n meros interos; assim,
c
u
caso se aproxime para 1, o baud rate gerado ser de BR=4000000/384=10416,7. Ser que ir funcionar
a
a
a
bem com esse baud rate ?
Para responder esta pergunta necessrio compreender o que acontece com a transmisso serial.
e
a
a
Esta transmisso ass
a e
ncrona, quer dizer, pode iniciar em qualquer instante; o inicio caracterizado
e
pela presena de um bit de partida (START). Uma vez iniciada, deve-se garantir a duraao de cada
c
c
bit. Para cada byte transmitido um bit de partida, os bits de dados e um ou dois bits de parada.
e
O que se deve buscar garantir que no haja um erro muito grande neste frame de bits. A gura 3.8
e
a
ilustra o caso da porta serial operando em modo 3.
Pgina 70
a

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


a

Figura 3.8: Erros provocados pela diferena no baud rate


c
A fase mais critica a recepao do ultimo bit porque poder apresentar uma defasagem muito
e
c

a
grande (rotuladas de E1 e E2 na gura). No se pode especicar um valor limite para esses erros pois
a
diversos fatores, particulares para cada caso, precisam ser levados em consideraao. Como um valor
c
prtico e que funciona na grande maioria dos casos arbitra-se que o valor do erro, para o ultimo bit,
a

deve ser menor que 40% da duraao de um bit (usando BR exato).


c
|

11
40
1
11

BRp BR
100 BR

A equaao pode ser simplicada para: |


c

11
11
1

|
BRp BR
27, 5 BR

Como pode ser vericado, com um cristal de 4Mhz no se conseguir transmitir a 9600 pois o baud
a
a
rate ser muito grande.
a
|

11
1
11

|
10416, 7 9600
27, 5 9600
8,167 s3,788sfalso

Pgina 71
a

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


a

3.1.5

Comunicao entre vrios 8051


ca
a

Figura 3.9: Comunicaao entre vrios 8051


c
a
Os modos 2 e 3 permitem interligar vrios 8051, sendo um mestre e vrios escravos. Nestes modos
a
a
temos:
*1 start bit;
*8 bits de dados;
*um nono bit que vai para o bit RB8 ( na recepao) ou pode ser escolhido 0 ou 1 na transmisso
c
a
escrevendo-se em TB8;
*1 stop bit
Note que se SM2 = 1 e RB8 = 1, a interrupao da serial ser atendida.
c
a
O algoritmo de comunicaao consiste em:
c
1)No in
cio, todos os escravos esto com SM2 = 1
a
2)Quando o mestre quiser enviar dados para algum escravo, ele escrever 1 em seu bit TB8 e
a
ento enviar serialmente o endereo do escravo desejado, e como teremos todos os bits RB8
a
a
c
em 1, todos escravos sero interrompidos para vericar se seu o endereo enviado.
a
e
c
3)O escravo selecionado zerar o seu bit SM2 e estar preparado para receber os dados, os quais
a
a
tero agora o nono bit (RB8) em 0.
a
4)Os demais escravos permanecero com SM2 em 1 e, dessa forma, no sero mais interrompidos
a
a
a
pois os dados tm RB8 = 0.
e
5)Em resumo, o mestre envia endereos com o nono bit em 1 e os dados com o nono bit em 0,
c
portanto, se o mestre desejar se comunicar com outro escravo basta enviar o novo endereo
c
com o nono bit em 1.
Pgina 72
a

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


a

3.1.6

Comunicao serial entre o 8051 e o PC


ca

Devido a diferena de tenso entre os n


`
c
a
veis TTL e os usados no padro RS-232C (PC), necessrio
a
e
a
usar circuitos conversores para interfacear o microcontrolador com a porta serial do PC. A converso
a
pode ser feita atravs de circuitos transistorizados discretos (veja as guras 11.10,11.11 e 11.12 e leia
e
a seao 11.4) ou atravs de circuitos integrados como o 1488 (conversor de TTL para RS-232C) e o
c
e
1489 (conversor de RS-232C para TTL). A seguir esto os esquemas dos dois integrados e o esquema
a
bsico de interligaao entre o 8051 e a serial do PC.
a
c

Figura 3.10: Esquema de ligaao entre o computador(PC) e o 8051


c

Pgina 73
a

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


a

3.1.7

Exerc
cios

TX SER
Usando um loop innito, transmitir pela porta serial todos os caracteres ASCII de 0a Z. Usar
9600 bauds, 8 bits de dados, 1 bit de partida e 2 bits de parada.
Para este caso o modo 3 o mais adequado e TB8=1 ser usado para gerar um bit de parada. A
e
a
transmisso ser feita por interrupao, quer dizer, a cada byte transmitido haver uma interrupao.
a
a
c
a
c
O contador/temporizador 1 ser programado para modo 2 (auto-recarga).
a
SCON

TMOD

SM0
1

GATE
0

IE

EA
1

SM1
1

SM2
0

C/*T
0

M1
1

ES
1

REN
0

M0
0

ET1
0

TB8
1

RB8
0

GATE
0

EX1
0

TI
0

C/*T
0

ET0
0

EX0
0

Clculo do divisor formado pelo contador/temporizador 1:


a
N = 3575611/(384*9600) = 0,9699 1. (TH1 = TL1 = 256 - 1 = 255).
=
;TX_SER.ASM
DEFSEG PROG, CLASS=CODE, START=0
SEG PROG
;
BR_9600
;

EQU

255

ORG
AJMP

RESET
INIC

ORG
AJMP

SINT
SERIAL

ORG
MOV
MOV
MOV
SETB
MOV
MOV
MOV
SETB
SJMP

50H
TMOD,#20H
TH1,#BR_9600
TL1,#BR_9600
TR1
SCON,#0C8H
IE,#90H
A,#"0"
TI
$

ORG 100H
CLR
MOV
INC
CJNE
MOV

TI
SBUF,A
A
A,#"Z"+1,SER1
A,#"0"

;
INIC:

;TIMER 1 EM MODO 2
;PROGRAMAR BAUD RATE
;INICIAR TIMER 1
;MODO 3 COM TB8=1
;HAB INTERRUP SERIAL
;PRIMERO ASCII
;TX PRIMEIRO ASCII
;LOOP INFINITO

;
SERIAL:

;
SER1:
;
RETARDO:
;
AQUI:

ACALL
RETI

RETARDO

MOV

;FOI O ULTIMO ?
;REINICIALIZAR

R7,#0

DJNZ
RET

;APAGAR FLAG
;TRANSMITIR

;ATRASAR TRANSMISSAO

R7,AQUI

;
END

Pgina 74
a

M1
0

RI
0

M0
0

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


a

RX SER
O circuito dever responder aos seguintes comandos que chegam pela porta serial:
a
1 acender todos os leds
R acender led vermelho
A acender led amarelo
V acender led verde

0 apagar todos os leds


r apagar led vermelho
a apagar led amarelo
v apagar led verde

Estes comandos vo chegar pela porta serial usando o formato: 1 bit de partida, 8 bits de dados,
a
2 bits de parada, com um baud rate de 9600.
;RX_SER.ASM DEFSEG PROG, CLASS=CODE, START=0SEG PROG
;
BR_9600
EQU
255
LED_VERMELHO
EQU
P1.0
LED_AMAR
EQU
P1.1
LED_VERDE
EQU
P1.2
CHEGOU
EQU
32.0
;
ORG
RESET
AJMP
INIC
;
ORG
SINT
AJMP
SERIAL
;
ORG
50H
INIC:
MOV
TMOD,#20H
MOV
TH1,#BR_9600
MOV
TL1,#BR_9600
SETB
TR1
MOV
SCON,#0D0H
MOV
IE,#90H
CLR
CHEGOU
;
ESPERA:
JNB
CHEGOU,ESPERA
CLR
CHEGOU
;
CJNE
A,#"0",LB1
CLR
LED_VERMELHO
CLR
LED_AMAR
CLR
LED_VERDE
SJMP
ESPERA
;
LB1:
CJNE
A,#"1",LB2
SETB
LED_VERMELHO
SETB
LED_AMAR
SETB
LED_VERDE
SJMP
ESPERA
;
LB2:
CJNE
A,#"R",LB3
SETB
LED_VERMELHO
SJMP
ESPERA
;
LB3:
CJNE
A,#"r",LB4
CLR
LED_VERMELHO
SJMP
ESPERA
;
LB4:
CJNE
A,#"A",LB5
SETB
LED_AMAR
SJMP
ESPERA

Pgina 75
a

;TIMER 1 EM MODO 2
;PROGRAMAR BAUD RATE
;INICIAR TIMER 1
;MODO 3 COM REN=1
;HAB INTERRUP SERIAL
;APAGAR FLAG

;AGUARDAR UM COMANDO

;CHEGOU 0

;CHEGOU 1

;CHEGOU R

;CHEGOU r

;CHEGOU A

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


a

;
LB5:
CJNE
CLR
SJMP

A,#"a",LB6
LED_AMAR
ESPERA

;CHEGOU a

CJNE
SETB
SJMP

A,#"V",LB7
LED_VERDE
ESPERA

;CHEGOU V

CLR
SJMP

LED_AMAR
ESPERA

;CHEGOU v

CLR
MOV
SETB
RETI

RI
A,SBUF
CHEGOU

;APAGAR FLAG DE INTERRUP


;COLOCAR DADO NO Acc

;
LB6:

:
LB7:

;
SERIAL:

END

3.2
3.2.1

Programao em Assembly
ca
Introduo terica
ca
o

Este parte da apostila de fundamental importncia para quem deseja adquirir conhecimentos
e
a
bsicos em programaao (software). Aqui, ensinado passo a passo o procedimento da elaboraao de
a
c
e
c
programas simples e com loops; utilizando a linguagem Assembly aplicada aos microcontroladores da
fam MCS-Sl da Intel.
lia
Uma vez que ns aprendemos e praticamos as tcnicas de programaao ensinadas, poderemos
o
e
c
aplicar tal metodologia de implementaao de programas a qualquer outra linguagem de programaao,
c
c
seja ela de baixo, mdio ou alto n
e
vel.
Existem muitas linguagens de programaao que podem ser utilizadas na programaao de sistemas
c
c
inteligentes, utilizando mierocontroladores, alm do Assembly (n baixo), tais como as linguagens
e
vel
estruturadas de programaao C (n mdio), BASIC e PL/M (n alto). A escolha de uma delas
c
vel e
vel
na elaboraao de um projeto de software muito importante envolve o conhecimento tcnico espec
e
e
e
cializado.
A caracter
stica de uma linguagem de n baixo, como o Assembly, a de apresentar o mesmo
vel
e
conjunto de instruoes que aquele denido pelo fabricante da fam de microprocessadores ou mic
lia
crocontroladores, com a qual se deseja desenvolver os projetos de programa. Isso permite um total
controle sobre os registradores intemos do dispositivo e as posioes de memria e, conseq entemente,
c
o
u
so gerados programas muito mais compactos em relaao as outras linguagens. Assim, sempre que exa
c `
istirem limitaoes de memria (pouca memria) e limitaoes de velocidade de processamento (mxima
c
o
o
c
a
velocidade de processamento), recomenda-se a utilizaao da linguagem de programaao de n baixo,
c
c
vel
ou seja, o Assembly. Portanto, pelas prprias caracter
o
sticas dos microcontroladores, muito comum
e
a utilizaao do Assembly na elaboraao de projetos de equipamentos inteligentes. Em contrapartida, a
c
c
unica desvantagem da linguagem Assembly em relaao as outras linguagens sua caracter

c `
e
stica de ser
rica em detalhes, solicitando dos programadores um conhecimento bastante grande sobre o dispositivo
a ser programado.
A caracter
stica de uma linguagem de n
vel mdio, como o C, a de apresentar os aspectos de
e
e
uma linguagem de n baixo (manipulaao bit a bit ou byte a byte dos registradores internos e das
vel
c
posioes de memria), como tambm as caracter
c
o
e
sticas de uma linguageni de n alto, que denimos
vel
a seguir. Atualmente, essa uma das linguagens de programaao mais utilizadas em projetos de
e
c
equipamentos inteligentes.
Pgina 76
a

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


a

A caracter
stica de uma linguagem de n alto a de ser muito mais prxima da linguagem do
vel
e
o
ser humano. Trata-se de uma linguagem descritiva, cujas instruoes so palavras escritas em ingls e
c
a
e
que esto muito longe das instruoes em Assembly. Cada instruao de uma linguagem de n alto
a
c
c
vel
representada por muitas instruoes de uma linguagem de n
e
c
vel baixo. Programar utilizando uma
linguagem de n alto muito mais fcil que programar com uma linguagem de n baixo ou mdio.
vel
e
a
vel
e
Mas quando se utiliza uma linguagem de programaao de n alto, so gerados programas maiores e
c
vel
a
com menor velocidade de processamento. Outra desvantagem da linguagem de n alto, que muitas
vel
vezes interpretada como vantagem, a de no exigir do programador o conhecimento completo e
e
e
a
detalhado do dispositivo que se deseja programar.
Um programa em cdigo de mquina (cdigo-objeto) composto por bytes que representam as
o
a
o
e
a linguagem que o microcontrolador sabe e pode executar. Assim, seminstruoes do dispositivo. E
c
pre que for desenvolvido um programa em uma determinada linguagem de programaao, necessrio
c e
a
fazer a compilaao desse programa para transform-lo em linguagem de mquina. O programa em
c
a
a
linguagem de mquina deve ser simulado por meio de um simulador (AVSIM5l, Pinnacle etc.) ou
a
gravado em uma memria para vericar seu funcionamento por meio da utilizaao do prprio hardo
c
o
ware do produto. A seguir inicia-se o estudo das tcnicas de programaao em Assembly para a fam
e
c
lia
de microcontroladores MCS-51 da Intel.

3.2.2

Estratgias de elaborao de programas


e
ca

E muito importante para um programador, antes de implementar um programa, seguir uma determinada metodologia. A seguir, descrita uma metodologia de elaboraao de programas que
e
c
e
independente da linguagem de programaao.
c

Pr-requisitos do tcnico que desenvolver o projeto


e
e
a
a)Conhecer a estrutura interna (hardware) do dispositivo com que se deseja desenvolver o projeto;
b)Conhecer o conjunto de instruoes do dispositivo.
c

Viabilidade do projeto
a)Obter e entender claramente as especicaoes do cliente (desejos do cliente, caracter
c
sticas
do produto e do sistema, modo de funcionamento etc.);
b)Elaborar diferentes estratgias de soluoes para o projeto. Isso pode ser feito utilizando-se
e
c
diagramas de uxo de dados (DFD), diagramas de blocos, desenhos etc.;
c)Elaborar a viabilidade do projeto com relaao ao hardware e ao software para vericar a
c
possibilidade de sua implementaao junto ao cliente. Algumas perguntas so utilizadas para
c
a
garantir a viabilidade do projeto: Quais so as necessidades de hardware? Qual ser o custo
a
a
nal do produto (o cliente pagar por esse valor)? Qual ser a quantidade de equipamena
a
tos a ser fabricada (a fbrica comporta essa quantidade)? Como sero feitas as entregas do
a
a
produto? Existem fornecedores de componentes no Brasil? Quais componentes devem ser
importados? Existem concorrentes? etc.;
d)Escolher a melhor soluao junto com o cliente, ou seja, aquela que utilizar o menor n mero
c
a
u
de componentes e a que apresenta maior velocidade de processamento. Isso afeta diretamente
o custo nal do hardware e traz uma maior exibilidade funcional do produto.
Pgina 77
a

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


a

Implementaao do projeto
c
a)Elaborar o uxograma do programa em Assembly: os uxogramas devem ser implementados
desde o n
vel de macrodetalhamento at o n
e
vel de microdetalhamento. Um uxograma
representando o n de macrodetalhamento deve conter as idias e os objetivos dentro dos
vel
e
blocos representativos. Um uxograma representando o n
vel de microdetalhamento deve
utilizar as representaoes simblicas dos mnemnicos das instruoes dentro dos blocos reprec
o
o
c
sentativos. Exemplo: dentro de um bloco do uxograma, representar (A) (B): signica
a instruao MOV A,B;
c
b)A partir do uxograma, gerar o programa-fonte na linguagem de programaao escolhida (arc
quivo em cdigo ASCII que contm as instruoes que compem o programa);
o
e
c
o
c)Compilar o programa-fonte para gerar o arquivo binrio que corresponde ao programa em
a
cdigos de mquina;
o
a
d)Fazer a linkagem dos arquivos binrios para agrupar de maneira organizada, os diferentes
a
blocos de programa que compem o programa nal;
o
e)Efetuar a simulaao do programa para vericar seu funcionamento e corrigir os poss
c
veis erros
de lgica. Nessa fase, no necessrio 0 hardware do produto;
o
a e
a
f)Realizar a gravaao da EPROM, inserao no hardware do produto e teste f
c
c
sico de sua funcionalidade;
g)Efetuar a emulaao do programa ( necessrio um sistema emulador) para corrigir erros de
c
e
a
lgica ou eventuais falhas de algum componente, utilizando o prprio hardware do produto;
o
o
h)Fazer testes rpidos de bancada para vericar o funcionamento do produto nal;
a
i)Realizar testes de longa duraao (conabilidade), em condioes de estresse, para a hoc
c
mologaao do produto.
c

3.2.3

Fluxogramas

Essa ferramenta de programaao fundamental para a implementaao de qualquer rotina de um


c e
c
por meio dessa ferramenta que se pode observar como foi impleprograma de microcomputador. E
mentada a estratgia de soluao de uma necessidade de programaao elaborada por um programador.
e
c
c
O uxograma representa como o uxo de informaoes ser processado pelo microprocessador.
c
a

Pgina 78
a

Você também pode gostar