You are on page 1of 34

Microcontroladores 8051 1

Microprocessadores I
Microprocessadores I
Prof. Luciano Mendes Camillo
professorcamillo@gmail.com
Microcontroladores 8051 2
Fluxograma e programa Fluxograma e programa o o
em em Assembly Assembly aplicados a aplicados a
fam fam lia de microntroladores lia de microntroladores
MCS MCS- -51 da Intel 51 da Intel
Microcontroladores 8051 3
Fluxograma e programa Fluxograma e programa o o
de fundamental importncia adquirir
conhecimentos bsicos em programao
(software) para o trabalho com
microcontroladores.
As tcnicas de programao podero ser
aplicadas a qualquer linguagem de programao,
seja ela de baixo, mdio ou alto nvel.
Microcontroladores 8051 4
Muitas linguagens de programao podem ser utilizadas na
programao de sistemas inteligentes, utilizando
microcontroladores, alm do Assembly (nvel baixo), como
as linguagens estruturadas :
C (nvel mdio),
BASIC
PL/M (nvel alto)
uma linguagem de alto nvel desenvolvida pela Intel como um
ambiente de programao de aplicaes que utilizam
microcomputadores e controladores Intel .
Fluxograma e programa Fluxograma e programa o o
Microcontroladores 8051 5
Nvel baixo, como o Assembly, a grande vantagem a de
apresentar o mesmo conjunto de instrues que aquele
definido pelo fabricante da famlia de
microprocessadores/controladores.
- Isso permite um total controle sobre os registradores internos
do dispositivo e as posies de memria.
- Gera programas muito mais compactos em relao s outras
linguagens,
- Quando existirem limitaes de memria e limitaes de
velocidade de processamento, a linguagem recomendada.
Desvantagem sua caracterstica de ser rica em detalhes,
solicitando dos programadores um conhecimento bastante
grande sobre o dispositivo a ser programado.
CARACTERSTICAS DAS LINGUAGENS
Microcontroladores 8051 6
Nvel mdio, como o C, a vantagem a de apresentar os
aspectos de uma linguagem de nvel baixo:
- manipulao bit a bit ou byte a byte dos registradores
internos e das posies de memria
e tambm as caractersticas de uma linguagem de nvel
alto.
Atualmente, essa uma das linguagens de programao
mais utilizadas em projetos de equipamentos inteligentes.
CARACTERSTICAS DAS LINGUAGENS
Microcontroladores 8051 7
Desvantagens: que so gerados programas maiores e com
menor velocidade de processamento.
Muitas vezes interpretada como vantagem, a de no exigir do
programador o conhecimento completo e detalhado do dispositivo
que se deseja programar.
Nvel alto Vantagens:
- muito mais prxima da linguagem do ser humano
- uma linguagem descritiva, cujas instrues so palavras escritas
em ingls e que esto muito longe das instrues em Assembly.
Cada instruo de uma linguagem de nvel alto representada
por muitas instrues de uma linguagem de nvel baixo.
- muito mais fcil programar do que com uma linguagem de nvel
baixo ou mdio.
CARACTERSTICAS DAS LINGUAGENS
Microcontroladores 8051 8
Um programa em cdigo de mquina (cdigo-objeto)
composto por bytes que representam as instrues do
dispositivo, que a linguagem que o microcontrolador sabe e
pode executar.
Desta forma sempre que for desenvolvido um programa em uma
determinada linguagem de programao, necessrio fazer a
compilao desse programa para transform-lo em linguagem
de mquina.
O programa em linguagem de mquina pode ser simulado por
meio de um simulador (AVSIM51, Pinnacle etc.) ou gravado em
uma memria para verificar seu funcionamento atravs do
prprio hardware.
CARACTERSTICAS DAS LINGUAGENS
Microcontroladores 8051 9
Estratgias de elaborao de programas
muito importante para um programador, antes de
implementar um programa, utilizar uma determinada
metodologia.
Descrio de uma metodologia de elaborao de
programas, independente da linguagem de programao.
Pr-requisitos do tcnico que desenvolver o projeto
a) conhecer a estrutura interna (hardware) do dispositivo
com que se de seja desenvolver o projeto;
b) conhecer o conjunto de instrues do dispositivo.
Microcontroladores 8051 10
Viabilidade do projeto
a) obter e entender claramente as especificaes do
cliente (desejos do cliente, caractersticas do produto e do
sistema, modo de funcionamento etc.);
b) elaborar diferentes estratgias de solues para o
projeto. Isso pode ser feito utilizando-se diagramas de fluxo
de dados (DFD), diagramas de blocos, desenhos etc.;
c) Elaborar a viabilidade do projeto com relao ao
hardware e ao software para verificar a possibilidade de sua
implementao
d) Escolher a melhor soluo junto com o cliente, ou
seja, aquela que utilizar o menor nmero de componentes
e a que apresenta maior velocidade de processamento. Isso
afeta diretamente o custo final do hardware e traz uma maior
flexibilidade funcional do produto.
Microcontroladores 8051 11
Implementao do projeto
a) elaborar o fluxograma do programa em Assembly:
fluxogramas implementados desde o nvel de
"macrodetalhamento" at o nvel de "microdetalhamento".
b) a partir do fluxograma, gerar o programa-fonte na
linguagem de programao escolhida (arquivo em cdigo
ASCII que contm as instrues que compem o programa);
c) compilar o programa-fonte para gerar o arquivo binrio que
corresponde ao programa em cdigos de mquina;
d) fazer a linkagem dos arquivos binrios para agrupar, de
maneira organizada, os diferentes blocos de programa que
compem o programa final.
Microcontroladores 8051 12
e) efetuar a simulao do programa para verificar seu
funcionamento e corrigir os possveis erros de lgica. Nessa
fase, no necessrio o hardware do produto;
f) realizar a gravao da EPROM, insero no hardware do
produto e teste fsico de sua funcionalidade;
g) efetuar a emulao do programa ( necessrio um sistema
emulador) para corrigir erros de lgica ou eventuais falhas de
algum componente, utilizando o prprio hardware do produto;
h) fazer testes rpidos de bancada para verificar o
funcionamento do produto final;
i) realizar testes de longa durao (confiabilidade), em condies
de estresse', para a homologao do produto.
Implementao do projeto
Microcontroladores 8051 13
Fluxogramas: ferramenta de programao fundamental para
a implementao de qualquer rotina de um programa de
microcomputador.
Por meio do fluxograma pode observar como foi
implementada a estratgia de soluo de uma necessidade
de programao. O fluxograma representa como o fluxo de
informaes ser processado pelo microprocessador.
Definio cada um dos blocos integrantes de um fluxograma.
A) LINHA DE CONEXO: representa o fluxo de
informaes a ser processado pelo microprocessador.
tambm utilizado para conectar os blocos bsicos de um
fluxograma. As setas para cima (), para baixo (), para
o lado direito () e para o lado esquerdo () so
empregadas para esse fim.
Microcontroladores 8051 14
B) ELIPSE: representa o incio e o fim do programa. Quando
utilizada no incio do programa, deve conter o nome da rotina
em seu interior. importantssimo que esse nome sempre
esteja associado ao seu objetivo ou sua funo, desta
forma facilita o entendimento e a consulta documentao
do programa.
Fim da rotina Ler teclado
Ler teclado
Blocos integrantes de um fluxograma.
Microcontroladores 8051 15
C) RETNGULO: representa o processamento das informaes,
ou seja, as operaes de movimentao de dados e endereos,
as operaes aritmticas, lgicas e de rotao.
(A) (A) + (B)
(Rl) (Rl) + I
D) LOSANGO: representa uma tomada de deciso. Isso feito
por meio de um teste comparativo da informao que est
disponvel no contedo de um bit de um registrador ou de uma
posio de memria com um determinado valor. Se a condio
for satisfeita, ser definido um determinado caminho para que a
informao seja processada; caso contrrio, ser definido outro
caminho para que a informao seja processada.
Blocos integrantes de um fluxograma.
Microcontroladores 8051 16
sim
no
no sim
(C) = 1?
(A) = 0?
D) LOSANGO:
Blocos integrantes de um fluxograma.
Microcontroladores 8051 17
Programas simples: o fluxograma de uma rotina de um
programa simples sempre deve conter, no mnimo, cinco blocos
bsicos:
Nome do programa
Definio das condies iniciais
Processamento
Definio da sada do resultado
Fim do programa
Nome do programa associado ao seu
objetivo ou a sua funo (elipse).
Condies iniciais dos bits, dos
registradores e das posies de memria
que sero utilizados pelo programa. Esses
bits, registradores e posies de memria
tero uma funo bastante especfica
dentro do programa e podero ser
considerados como variveis de entrada
do programa. (retngulo)
Processamento da informao, que pode
ser realizado por meio de operaes de
movimentao de informaes, de
operaes aritmticas e lgicas, de rotao
etc. (retngulo)
Definir onde ser armazenada a
informao resultante do processamento.
Esse armazenamento poder ser feito em
um registrador, em uma posio de
memria ou em uma unidade de entrada e
sada. (retngulo)
Deve simbolizar o fim do programa
(elipse).
Microcontroladores 8051 18
Programas com loop:
um possvel fluxograma
de um programa com
loop deve sempre conter
no mnimo oito blocos
bsicos:
Nome do programa
Processamento
Fim do programa
Definio das condies iniciais
Definio da sada do resultado
Bloco de tomada de
deciso (?). Teste de
uma varivel.
Se o teste for falso: processamento de
certas informaes (toma-se deciso)
no: a condio no foi satisfeita
sim: a condio foi satisfeira
Controle do loop
Microcontroladores 8051 19
Exemplo de programa simples: fazer um fluxograma e um
programa fonte em Assembly para o microcontrolador 8051,
que sejam capazes de realizar a operao de adio entre 2
bytes que esto localizados nos contedos das posies de
memria, cujos endereos so 45h e 5Ah. O resultado da
operao de adio deve ser armazenado no contedo da
posio de memria, cujo endereo 6Dh.
Microcontroladores 8051 20
SOMA
(A) (45h)
(R0) (5Ah)
(A) (A) + (R0)
(6Dh) (A)
FIM
Programa Fonte
MOV A,45h
MOV R0,5Ah
ADD A,R0
MOV 6Dh,A
ADD A,Rn = (A) (A) + (Rn): no contedo do
acumulador ser armazenado o resultado da operao de
adio entre o contedo do acumulador e o contedo do
registrador R0
Microcontroladores 8051 21
SOMA
(A) (45h)
(A) (A) + (5Ah)
(6Dh) (A)
FIM
Programa Fonte
MOV A,45h
ADD A,5Ah
MOV 6Dh,A
ADD A,direct = (A) (A) + (direct): no contedo do
acumulador ser armazenado o resultado da operao de
adio entre o contedo do acumulador e o contedo da
posio de memria, cujo endereo direct.
Microcontroladores 8051 22
SOMA
(A) (45h)
(R0) #5Ah
(A) (A) + ((R0))
(6Dh) (A)
FIM
Programa Fonte
MOV A,45h
MOV R0,#5Ah
ADD A,@R0
MOV 6Dh,A
ADD A,@Ri = (A) (A) + ((Ri)): no contedo do
acumulador, ser armazenado o resultado da operao
de adio entre o contedo do acumulador e o contedo
da posio de memria, cujo endereo dado pelo
contedo do registrador R0.
Microcontroladores 8051 23
ADD A,#data. = (A) (A) + #data: no contedo do
acumulador ser armazenado o resultado da
operao de adio entre o contedo do
acumulador e a constante data.
Estratgia de soluo: no h soluo, pois no
possvel saber o contedo de uma das posies de
memria, ou seja, essa posio de memria simula
uma varivel e, dessa maneira, utilizando essa
instruo, no possvel resolver esse problema.
Microcontroladores 8051 24
CONCLUSES:
a) Embora existam quatro tipos de instrues de adio (ADD)
diferentes, h somente trs solues;
b) A melhor soluo, entre as apresentadas anteriormente,
aquela que utiliza a instruo de adio com endereamento direto
(ADD A,direct), pois o programa final em Assembly s utiliza trs
instrues e as demais solues utilizam quatro instrues. Isso
resulta em um menor gasto de memria de programa e em uma
maior velocidade de processamento que as demais, preservando,
assim, a melhor relao custo/benefcio;
c) Sempre preciso escolher a melhor soluo (soluo tima).
Isso significa escolher aquela que utiliza menos posies de
memria de programa e que, geralmente, a mais rpida. Essa
a funo principal do engenheiro projetista de software. O
resultado um produto mais barato e eficaz quanto sua
funcionalidade.
Microcontroladores 8051 25
Exemplo de programa com loop: fazer um fluxograma e um
programa fonte em Assembly, para um membro da famlia de
microcontroladores MCS-51, que calcule a quantidade de
nmeros menores que 38h de um buffer de memria que vai
do endereo de memria 60h at o 7Ah. A quantidade de
elementos menores que 38h deve ser armazenada no
contedo da posio de memria cujo endereo 7Bh.
RAM Interna
Endereo Contedo
endereo inicial 60h XXh 1Bh elementos
: : a serem
: : analisados
endereo final 7Ah YYh
7Bh
qte de n

s
< 38h
Microcontroladores 8051 26
SOLUO 1: programa seqencial ?
Nesse caso sero utilizadas
muitas instrues de programa
e, desta forma, necessitar de
muitas posies de memria de
programa.
Existem, no buffer de
memria, 7Ah - 60h + 1 =
1Bh = 27
10
elementos a
serem analisados.
CONCLUSO: invivel a soluo do problema por esse
mtodo para que seja preservada a relao custo/benefcio.
SOLUO 2:
Utilizar um programa com loop
Microcontroladores 8051 27
Fluxograma com loop, preencher cada um de seus blocos.
Nome do programa: quantidade de nmeros < 38h.
Condies iniciais: definies das variveis do programa:
controles do buffer de memria:
Atravs do registrador R0 pode-se controlar os
endereos do buffer de memria;
Ser inicializado com o valor 60h, que o
endereo inicial do buffer de memria;
Atravs do registrador R1 pode-se controlar a
quantidade de elementos do buffer de memria,
inicializado-o com o valor 1Bh.
Microcontroladores 8051 28
SE elemento do buffer < 38h

CONTADOR = CONTADOR + 1
Foi solicitado que a quantidade de elementos menores
que 38h seja armazenada na posio de mem 7Bh.
Por convenincia: Adota-se como CONTADOR o
contedo da posio de memria de endereo 7Bh.
Anlise do buffer de memria
Microcontroladores 8051 29
Processamento, teste e tomada de deciso: essa
etapa consiste em definir a estratgia de soluo do
problema.
Estratgia: - analisar cada contedo de posio do
buffer de memria
- fazer uma comparao com o valor 38h.
Operao de comparao : - Atravs de uma operao
de subtrao.
- e teste de.flag carry bit.
Aps uma operao de subtrao, o flag
carry bit sinaliza se um nmero maior ou
igual (>) ou menor (<) que outro.
Microcontroladores 8051 30
Soluo : O valor no contedo do flag carry bit aps
operao de subtrao do contedo da posio de memria
de um elemento do buffer com o valor 38h.
RESULTADO no Flag Carry Bit
= 0 Significa que o contedo da posio de memria
maior ou igual (>) a 38h e, no devendo adicionar 1 ao
contador de nmeros menores que 38h (7Bh).
= 1 Significa que o contedo da posio de memria
menor (<) que 38h e, sendo necessrio adicionar 1 ao
contador de nmeros menores que 38h (7Bh).
Microcontroladores 8051 31
Operao de subtrao para famlia de microcontroladores
capaz de fazer a subtrao de uma determinada constante:
SUBB A,#data (A) (A) - (C) - #38h
Antes de executar uma operao de subtrao,
necessrio trazer um elemento do contedo do buffer de
memria para o contedo do acumulador A.
Em programas com loop, recomenda-se utilizar o
endereamento indireto ou indexado por registrador,
MOV A,@Ri (A) ((Ri))
Facilita a obteno do prximo elemento do buffer,
utilizando uma instruo para adicionar uma unidade ao
contedo do registrador Ri (R0 ou R1).
Microcontroladores 8051 32
Controle do loop: preciso ajustar as variveis de
controle do buffer de memria para que seja possvel
analisar os prximos elementos do buffer
Ajuste das variveis que controlam o buffer:
Aps ser processado cada elemento o do buffer,
adicionar uma unidade ao contedo do registrador que
controla os endereamentos do buffer (R0), para que o
prximo elemento do buffer seja analisado;
Verificar se todos os elementos do buffer foram
analisados, atravs do decremento de uma unidade do
contedo do registrador que contm a quantidade de
elementos do buffer de memria (R1) e verificar se ele
igual a zero.
Microcontroladores 8051 33
Num < 38h
(R0)#60h
(R1)#1Bh
(7BH)#00h
(C)#0b
(A)((R0))
(A)(A)-(C)-#38h
(C)=0 ?
[(A)#38h ?]
(7Bh)(7Bh)+1
(R1)(R1)-1
(R1)0 ?
N
S
S
FIM
N
(R0)(R0)+1
Microcontroladores 8051 34
; Inicio do programa que calcula a qte de elementos < #38h
MOV R0,#60h ;Endereo inicial do buffer de memria
MOV R1,#1Bh ;Quantidades de elementos do buffer de memria
MOV 7Bh,#00 ;Zera o contador que armazena a qte de num < #38h
ADR2: CLR C ;Limpa o contedo do carry-bit
MOV A,@R0 ;Armazena no (A) um elemento do buffer
SUBB A,#38h ;Subtrai o (A) da constante #38h e define o flag (C)
JNC ADR1 ;Se (C)=0 (A>=#38h) => (PC)=ADR1 [no soma um no (7Ah)]
INC 7Bh ;Se (C)=1 (A<#38h), soma um no (7Bh)
ADR1: INC R0 ;Aponta para a prxima posio de memria a ser analisada
DJNZ R1,ADR2 ;Se a qte de elementos a serem analisadas 0, ento salta para ADR2
END ;Termina o programa se (R1)=0.