Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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
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
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
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
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
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
(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
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
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
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
1.4
A CPU Internamente
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
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
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
Pgina 16
a
Pgina 17
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
Pgina 18
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
Pgina 19
a
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
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
E7
F7
97
B7
E6
F6
96
B6
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
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
Pgina 23
a
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
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
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
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
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
Figura 1.10: Mapa parcial da memria de programa do 8051 com destaque ao in das interupoes
o
cio
c
Pgina 28
a
1.5.5
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
Bit 7
X
PS
...
PT1
PX1
PT0
Bit 0
PX0
Pgina 30
a
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
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.
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
Pgina 31
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
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
1.5.7
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
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
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
Pgina 33
a
$%
"#
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
1.5.9
Exerc
cios Resolvidos
ES
0
ET1
1
EX1
1
ET0
0
EX0
1
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
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
INC DIRETO
INC @Ri
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
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
?
Operaoes Lgicas
c
o
Mnemnico
o
Opcode
Funao
c
ANL A,Rn
ANL A,DIRETO
ANL A,@Ri
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
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
-
Mnemnico
o
Opcode
Funao
c
Bytes
Clocks
Flags Afetados
CY
MOV A,Rn
MOV A,Direto
MOV A,@Ri
MOV A,#DADO
MOV Rn,A
MOV Rn,Direto
MOV
Rn,#DADO
MOV Direto,A
MOV Direto,Rn
MOV
Direto1,Direto2
MOV Direto,@Ri
MOV
Direto,#DADO
MOV @Ri,A
MOV @Ri,Direto
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
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
CY
-
AC
-
OV
-
Bytes
Clocks
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
-
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
2.2
Portas de I/O
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
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
P1.0
P1.1
8051
P1.7
P3.5
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
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
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
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
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
2.2.4
DEVE FICAR CLARO QUE QUANDO SE UTILIZA MEM ORIA EXTERNA DE PROGRA NAO PODEREMOS MAIS UTILIZAR OS PINOS DAS PORTAS
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
2.2.5
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
2.2.6
2.3
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
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
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
mov 30h,#05h: Carrego a poscao da RAM interna de endereo 30h, com o valor 05(conte do=05).
c
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
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
OP CODE
VALOR IMEDIATO
1 BYTE
1 OU 2 BYTES
A unica exceao a `
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
ROM
80
03
Endereco de DESVIO=03
Codigo do comando
xx
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
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
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
Pgina 52
a
C/*T
M1
0
0
1
1
M0
0
1
0
1
Pgina 53
a
TR1
TF0
TR0
IE1
IT1
E0
IT0
Pgina 54
a
2.4.3
Modos de operao
ca
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)
Pgina 55
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.
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.
Pgina 56
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.
Pgina 57
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.
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
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
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
ONDA1
Gerar atravs de P1.7 uma onda com o seguinte formato:
e
ONDA2
Gerar atravs de P1.7 uma onda com o seguinte formato:
e
;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
;
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
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
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
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
Pgina 67
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
Pgina 68
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
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
Pgina 69
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
3.1.4
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
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
11
40
1
11
BRp BR
100 BR
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
3.1.5
3.1.6
Pgina 73
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
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
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
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
;
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
;
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
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
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
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
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
Pgina 78
a