Anda di halaman 1dari 89

www.mackenzie.com.

br

APOSTILA

MICROPROCESSADORES I EEUPM

SEGUNDO SEMESTRE 2010


PROF. IVAIR REIS N. ABREU
08 / 2010

1
PLANEJAMENTO DIDTICO PEDAGGICO DA DISCIPLINA
MICROPROCESSADORES I

ESCOLA DE ENGENHARIA - MODALIDADE ELETRNICA

UNIDADE: Engenharia
DISCIPLINA: Microprocessadores I
PROFESSOR: Ivair Reis Neves Abreu
DEPARTAMENTO: Eletrnica
ETAPA: 6 e 7
CARGA HORRIA: 2 aulas tericas / 2 aulas laboratrio

Introduo: a proposta deste planejamento pedaggico baseia-se no processo


de Qualidade Total (TQM) tendo como base o principio PDCA ou seja, PLAN, DO,
CHECK e ACT. O planejamento o prprio documento proposto, com objetivos,
pr-requisitos, plano de aulas, avaliao e bibliografia deixando bem claro a
proposta do curso de forma a ajustar as expectativas necessrias. A nfase no
ciclo e no apenas no processo de avaliao (comum em cursos pedaggicos)
leva a entender que o objetivo o processo de capacitao do aluno dentro do
objetivo proposta atravs de um plano de aulas gradual, acompanhada de
verificaes contnuas e principalmente processo de ao corretiva.

06/08 ou 09/08 19/11 ou 22/11


x------------------------------------------------------------------x
Pr-Requisito -> 14 semanas -> Objetivo Final

PR-REQUISITOS: Eletrnica Digital (Combinacional e Sequencial) e


Programao Estruturada (Linguagem C).

OBJETIVO:
Oferecer oportunidade para desenvolvimento das trs dimenses:

Conhecimento:
Conhecer os conceitos bsicos de sistemas programveis utilizando
microprocessadores, processadores digitais de sinais e microcontroladores.

Habilidades:
Projetar circuitos eletrnicos utilizando conceitos de sistemas programveis e
programar os sistemas projetados utilizando linguagens de montagem (
assembler) e estruturada (linguagem C).

Atitudes:
Compreender as tecnologias embarcadas nos atuais sistemas eletrnicos
incentivando o uso destas tecnologias com ganho de performance e menor custo.

2
EMENTA:
Reviso de Conceitos de Microcomputadores e Microprocessadores.
Arquitetura Bsica do Microcontrolador 8051.
Linguagem Assembler (Montagem) com as Instrues do 8051.
Projetos de Controle com Microcontroladores.
Estudo de Perifricos Bsicos: Display LCD.

METODOLOGIA
Aula expositiva com auxlio de recursos audio-visuais (principalmente
retroprojetor). O aluno dever constantemente participar atravs de aplicao de
exerccios e projetos. Uma apostila envolvendo todos os pontos abordados
servir de apoio didtico durante as exposies. Trabalhos levaro o aluno a
refletir sobre pontos avanados no abordados diretamente na sala de aula.

CONTEDO PROGRAMTICO
1. Reviso de Conceitos de Microprocessadores (Arquitetura e Linguagem
Assembler).
2. Arquitetura do Microcontrolador 8051:
2.1. Definio da Arquitetura Tpica de Microcontrolador.
2.2. Estudo da Arquitetura da Famlia 8051 Intel.
2.3. Sistema Mnimo 8051.
2.4. Linguagem Assembler 8051.
2.5. Definio do Cdigo de Operao de Instrues e Mneumnicos do 8051.
3. Instrues de Tranferncia de Informao, Aritmtica, Lgica, Transferncia
de Controle e Booleana.
3.1. Estudo de rotinas tpicas de controle: rotinas de tempo, escrita e leitura
de perifricos, memrias, etc.
3.2. Projetos de Sistemas Prticos com Microntroladores:
3.3. Alarme residencial / Controle de Iluminao / Automao Industrial.
3.4. Interface com Displays (LCD): Sistema Mnimo e Programao.

CRITRIO DE AVALIAO:

Mdia = (P1 x 0,8 + Lab x 0,2) x 0,55 + PF x 0,45 + (T1+T2)/2) x 0,05

P1 = primeira prova semestral - 01/10/2010 (turma 6E/F) e 27/09/2010 (turma


7E/F)

P2 = segunda prova semestral a ser definida pela secretaria.


T = mdias de 2 trabalhos a serem entregues no dia das 2 avaliaes oficiais.
Bnus com valor mximo de 0,5 ponto.
Lab = laboratrio
Mdia > 7 -> aluno aprovado
5,5 < mdia < 6.9 -> aprovado se presena as aulas for maior que 80%

3
BIBLIOGRAFIA
Bsica:
VIDAL, Antonio. Aplicaes Prticas do Microcontrolador 8051, 1998. Ed. rica.
CADY, Frederick M. Microcontrollers and Microcomputers. 1997: Ed. Oxford.

Complementar:
- BARNETT, Richard H. The 8051 Family of Microcontrollers. 1995:
Prentice Hall.
MACKENZIE, Scott. The 8051 Microcontroller. 1995: Ed. Prentice Hall.
HANG, Han-Way. Using the MCS-51 Microcontroller, 2000. Ed. Oxford
University

Internet:
www.ivair.com.br
www.microcontroller.com
www.8052.com
www.vidal.com.br
www.questlink.com
www.microchip.com
www.ti.com
www.zilog.com
www.asm51.eng.br
www.digikey.com

Plano de Aula:
Incio: 07/08 ou 09/08
Trmino: 19/11 ou 22/11
Prazo entrega final das notas: 15/12
Falta Prevista: 08/10 (sexta-feira)
Reposio: ----
Feriado: ---
Aulas Previstas: 14 semanas (1 reservado para avaliao P1 presencial).

4
1) - Conceitos de Sistemas Programveis

Planejamento (P):
Este captulo capacitar o aluno nos seguintes pontos:
- Conceituar Sistema Programvel
- Estrutura de um computador: unidade central de processamento, memria
semicondutora e perifricos de entrada / sada.
- Definio de microprocessadores e microcontroladores.
- Barramentos de dados, endereo e controle.
- Revisar conceitos de eletrnica digital combinacional e seqencial.
- Revisar sistema numrico digital e hexadecimal.
- Arquitetura de memria semicondutora voltil (RAM) e no voltil (ROM).
Projetos com bancos de memria.
- Arquitetura de um microprocessador: unidade lgica aritmtica, decodificador de
instrues e registradores.
- Registradores acumulador, flag, contador de programa (PC) e apontador de pilha
(SP). Conceito de pilha e sub-rotina.
- Sistema de inicializao, reset e watch dog.
- Sistema de temporizao, ciclo de instruo e ciclo de mquina.
- Sistema de interrupo.
- Multiplexao de barramentos (A / D) em microprocessadores.
- Acesso Direto a Memria (DMA).
- Sincronizao de memria / perifricos.
- Estudo da arquitetura do microprocessador 8085.
- Sistema Mnimo 8085.
- Interpretao de diagramas de tempo em microprocessadores.

1.1) - Sistema Programvel:

A grande utilizao dos microprocessadores nos sistemas eletrnicos atuais


vem do fato de serem programveis, ou seja, estes sistemas so compostos por
um conjunto fsico (Hardware) constante, com repetibilidade, dentro de um
processo industrial e portanto com uma tima relao custo / benefcio que
realizar determinada tarefa, orientado por uma seqncia de instrues
conhecidas por programa (Software), proporcionando grande versatilidade e
poder de processamento. Observem a determinao da tarefa do sistema a partir
a mudana do programa, mantendo o sistema fsico inalterado.

5
Figura - Estrutura de um sistema programvel
Exemplos:

O computador pessoal (PC) padronizado e pode realizar infinitas funes


com a simples troca de aplicativo. Este sistema jamais custaria o preo
atual dos computadores pessoais se fosse customizado para cada
aplicao. Um mesmo computador capaz, sem alterao nenhuma na
mquina, torna-se um poderoso processador de texto ou um grande
parceiro em um jogo de xadrez apenas com a mudana do aplicativo.
O prprio ser humano um sistema fsico relativamente padronizado (a
gentica j prova a grande semelhana entre ns) mas com grandes
diferenas de capacidade de acordo com a experincia de vida individual e
oportunidade de aprendizado.

O sistema fsico programvel recebe normalmente a denominao de computador.


1.2) - Estrutura de um computador:

Essencialmente os sistemas programveis podem ter as suas estruturas


resumidas a 3 blocos: Unidade Central de Processamento (C.P.U), Memria e
Perifricos.

6
Figura - Arquitetura Computador mais barramentos

1.2.1) - Unidade Central de Processamento:

Bloco com capacidade de realizar tarefas (controlar sinais de controle e


temporizao do sistema, bem como barramentos de dados e endereo)
orientadas por instrues. o principal elemento de deciso do computador,
podendo ser comparado ao crebro do computador ser humano.
Quando a C.P.U. est encapsulada em um nico chip, temos um
MICROPROCESSADOR. As aplicaes tpicas de microprocessadores so
voltadas a multimdia, onde temos processamento de som, imagem e
comunicao simultaneamente.

Microprocessador -> CPU encapsulada em um nico circuito integrado. Pelo


fato de concentrar apenas a funo de controle no chip, as aplicaes de
microprocessadores so complexas voltadas para multimdia (controle de som +
imagem + comunicao).

Exemplo:

- Microprocessador Pentium IV da Intel. A aplicao do Pentium em


computadores multimdia.

- Microprocessador ARM voltado para aplicaes dedicadas.

Microcontrolador -> CPU + MEMORIA + PERIFRICOS encapsulados em um


nico circuito integrado. Dedicado a funes menos complexas de controle.
Normalmente est embarcado em equipamentos dedicados. Utiliza o conceito
de firmware para o programa dedicado.

7
Ex:
- Microcontrolador 8051 da Intel (89S51 Atmel; LPC932 NXP)
- Microcontrolador PIC12F628A Microchip
- Microcontrolador MC9RS08LC60 Freescale.

Aplicaes finais tpicas:


- Controladores Lgicos Programveis (CLPs) em plantas industriais - Injeo
eletrnica de automveis.

DSP -> tambm utiliza o conceito de CPU dedicada, podendo ser


microcontrolador ou apenas CPU dependendo da capacidade de processamento.
Possui um poder de processamento intermedirio entre produtos com
microcontroladores (dedicados) e produtos com microprocessadores (multimdia).

Exemplo:
- DSP TMS320C5XXX da Texas Instruments ( www.ti.com )
- DSPIC da Microchip ( www.microchip.com )
Aplicaes finais tpicas:
- Telecomunicaes como telefone celular.
- Controle de motores.
- Processamento de imagem mdica (tomografia computadorizada).

1.2.2) - Memria:

Bloco semicondutor com capacidade de armazenar informaes. Armazena


basicamente as instrues a serem processadas (atravs de seus cdigos de
operao), variveis (como resultados de operaes da C.P.U.) ou dados de
entrada e sada dos perifricos. O programa a ser processado deve
necessariamente estar presente na memria (por isso o tamanho cada vez maior
das memrias volteis - RAMs - dos computadores atuais, pois os programas tm
tamanhos cada vez maiores).
A memria dos computadores pode ser dividida em voltil (RAM esttica /
dinmica) e no volteis (ROM / PROM / EPROM / E2PROM - FLASH).
Em computadores pessoais temos o conceito de BIOS (programa de inicializao
de perifricos) + SISTEMA OPERACIONAL ( interface grfica amigvel ao
usurio) + APLICATIVO (programa final).

Exemplo: BIOS inicializa placa de vdeo, interfaces seriais e paralelas,


comunicao. Aps este processo, existe a busca do sistema operacional
(Windows) e aplicativos com a carga dos programas selecionados na memria
voltil.

Em sistemas dedicados, temos o conceito de Firmware (software dedicado)


normalmente residente em uma memria no voltil.
Exemplo: Firmware contido em uma impressora a laser ou um alarme residencial.

8
Os seres humanos, de maneira anloga, tm a memria para armazenamento de
funes permanentes (aprendizado, controle dos rgos internos) e
armazenamento de funes temporrias (lembranas armazenadas apenas
durante uma tarefa como dirigir entre a residncia e o local de trabalho).
Resumindo:
O computador pessoal (PC) possui o sistema BIOS + SISTEMA OPERACIONAL
(WINDOWS / LINUX) + APLICATIVO (WORD, EXCEL, GAMES, ETC).
Equipamentos com funes especficas possuem FIRMWARE dedicado.

1.2.3) - Perifricos:

Bloco de comunicao do conjunto CPU / memria com o meio exterior. Pode ser
caracterizado como entrada (teclado, mouse, etc.) ou sada (monitor, impressora,
plotter, etc.). a interface de comunicao com o usurio e a parte do sistema
que normalmente tem acesso.

1.3) - Reviso dos conceitos de Eletrnica Digital

Por que os computadores modernos so digitais e no analgicos como os seres


humanos?

Analisando sob a tica da tecnologia disponvel (integrao de circuitos


eletrnicos), muito mais fcil integrar chaves eletrnicas (transistores de 2
estados) do que sistemas analgicos (amplificadores operacionais). Desta forma,
mesmo considerando uma representao binria de um maior nmero de
smbolos, mais facilmente implementvel um byte com 8 chaves eletrnicas do
que um amplificador operacional representando 256 nveis diferentes.
Atualmente consegue-me integrar milhes de transistores em uma pastilha,
chaves que so a base da representao numrica digital. Um processador
Pentium IV implementado com cerca de 40 milhes de chaves eletrnicas (os
primeiros processadores tinham um pouco mais de 10 mil transistores).
O transistor normalmente utilizado para compor um sistema lgico integrado o
Transistor de Efeito de Campo (FET) pelo fato do mesmo ter um processo
construtivo mais simples (semelhante ao capacitor) e ser possvel uma maior
integrao desta tecnologia quando comparado ao Transistor Bipolar.

1.3.1) - Reviso sistema numrico binrio (B) e hexadecimal (H).

Devido a facilidade de implementao do sinal binrio (atravs de chaves


transistorizadas - saturada ou cortada), toda a informao dentro do computador
(com exceo de interfaces analgica / digitais) possui a forma binria. Por isso,
fundamental o perfeito conhecimento dos diversos sistemas de numerao, bem
como a converso entre cada base.

9
- Decimal -> base 10.
- Binrio -> base 2 -> mais fcil de chavear (atravs de transistores, chaves,
etc.)
- Hexadecimal binrio -> converte cada 4 nmeros binrios (nibble) em nmeros
de 0 (0000B) a F (1111B)
- Decimal binrio (B.C.D.) -> converte cada 4 nmeros binrios em nmeros de
0 (0000B) a 9 (1001B)
- Octal -> converte cada 3 nmeros binrios em nmeros de 0 (000B) a 7
(111B).
Converses importantes: Binrio <-> Decimal
Binrio <-> Hexadecimal

Lembre-se:
1 bit -> 0 e 1
1 byte = 8 bits
1 word = 2 bytes
1 double-word = 4 bytes

EXERCCIOS

1) - 1010 0110 -> binrio


Converter para hexadecimal ->
*** 2) - 255 -> decimal
Converter para binrio ->
*** 3) - 2A0FH -> hexadecimal
Converter para decimal

1.3.2 - Reviso de Sistema Digital

Eletrnica Digital Combinacional: sem realimentao entre sada e entrada, a


lgica dos circuitos combinacionais pode ser representado atravs de uma tabela
da verdade.

Portas Lgicas: AND, OR, OR-EXCLUSIVE, NOT

10
Decodificadores 3x8 -> procurar na Internet 74HC138

Figura - Pinagem e tabela da verdade 74LS138

Eletrnica Digital Seqencial: baseado em elementos de memria flip-flops


Flip-Flop tipo RS, D (procurar Latch Octal 74HC373) e JK

Figura - Pinagem e tabela da verdade 74LS373

1.4 - Barramento do Sistema Programvel

11
Conforme pode ser observado na figura representativa da arquitetura do
computador, os barramentos so meios fsicos (normalmente trilhas de circuito
impresso) interligando a CPU, memria e os perifricos de entrada / sada. Em
um circuito impresso, so as trilhas interligando os diversos pinos dos chips do
sistema.

Figura - Representao de um barramento em um lay-out de circuito impresso

Considerando o tipo de INFORMAO presente no barramento, o mesmo pode


ser classificado em:

12
- Barramento de Dados (Data Bus): carrega a informao da instruo (atravs
do cdigo de operao), varivel do processamento (clculo intermedirio de uma
frmula por exemplo) ou informao de um perifrico de E/S (dado digitado em um
teclado). O tamanho da via de dados determina respectivamente o mximo
nmero de instrues (e portanto o potencial de processamento) e a preciso do
processamento aritmtico (atravs do clculo de ponto flutuante) ou o nmero de
smbolos possveis a ser representado (por exemplo, pontos de uma foto).

Exemplo:

1) - O processador 8085 possui 8 bits no barramento -> mximo de 256 instrues


e variveis numricas entre -127 a +127 (ou 0 a 255).
2) - O processador Pentium possui 32 bits no barramento -> variveis numricas
entre - 2147483648 e + 2147483648.

O tamanho do barramento de dados est ligado a capacidade de processamento


do sistema. Se o processamento simples (como o controle booleano de um
CLP) 8 bits so suficientes. Por outro lado, se h a necessidade de um
processamento complexo (como os sistema de multimdia onde h a necessidade
de processarmos milhes de pontos de imagem) processamento de at 128 bits j
esto disponveis. Obviamente existe a necessidade de aumentar igualmente a
velocidade do sistema pois a pacincia do usurio a mesma ao ligar uma
lmpada ou processar uma imagem fotogrfica.

- Barramento de Endereo (Address Bus) : carrega a informao binria da


localizao de um dado de memria ou E/S. A capacidade de acesso
determinada pela expresso 2n. O tamanho do barramento de endereo
acompanhou a evoluo do poder de processamento do microprocessadores j
que foi necessrio cada vez mais memria para armazenar uma quantidade cada
vez maior de dados.

Exemplo:
- 8085 -> 16 bits na via de endereo -> 216 = 65512 kbytes
- 8088 -> 20 bits na via de endereo -> 1 Mbyte

- Barramento de controle (Control Bus): leva todas os outros sinais que no so


dado ou endereamento.
Exemplo: sinais de alimentao (Vcc e GND), sinais de temporizao (clock),
sinais de inicializao (reset)

13
Figura - Tabela comparativa entre microprocessadores Intel (4004-PentiumIII)

Barramento SPI:

Typical SPI bus: master and three independent slaves

Sugesto de Links:

http://en.wikipedia.org/wiki/SPI_bus
http://ww1.microchip.com/downloads/en/AppNotes/00909B.pdf

14
Barramento I2C: utiliza barramento serial com 2 vias

A sample schematic with one master (a microcontroller), three slave nodes (an ADC, a DAC, and a
microcontroller), and pull-up resistors Rp

Sugesto de Links:

http://en.wikipedia.org/wiki/I%C2%B2C
http://ww1.microchip.com/downloads/en/AppNotes/00974A.pdf

1.7 - Arquitetura de memria semicondutora

Memria Semicondutora: ser considerado memria o bloco de armazenamento


de cdigo e varivel do programa executado pela CPU. reas de
armazenamento como Disco Rgido, PenDrive ou servidores de rede armazenam
programas / arquivos sem o processamento da CPU.

1.7.1 Memria No Voltil ROM (Read Only Memory):

ROM (o fabricante grava uma nica vez), PROM (o usurio grava uma nica vez)
EPROM (o usurio grava milhares de vezes aps um processo de apagamento
por luz ultravioleta)

15
Figura - Arquitetura da memria 27C64

EEPROM (o usurio grava milhes de vezes eletricamente)

FLASH (EEPROM rpida com nmero menor de gravaes). Hoje possui chips
compatveis com memrias RAM (exemplo AT29C256)

Memria Flash 8K x 8 AT29C256 (www.atmel.com)

16
Memria Flash Atmel at45db041 (4 Mbits 512 kbytes x 8)

Exemplo:

Fazer um projeto de 1 Mbyte utilizando 2 memrias FLASH serial de 512 Kbytes.


Desabilitar a proteo de escrita (WP = 1). Considerar uma CPU que trabalha
com barramento de 3V.

1.7.2 Memria Voltil RAM (Random Access Memory)

Memria de escrita e leitura com perda de dados ao desligar alimentao.


Dividida em:
Memria RAM Dinmica: principio de armazenamento capacitivo.
Necessita de sinal de refresh peridico (msegundos). Utilizada com
memria de massa utilizada em computadores.
Memria RAM Esttica: princpio de armazenado atravs de flip-flops.
Armazena dados sem sinal de refresh.

17
Figura 1.6 - Arquitetura Memria RAM 6264

Projetos de Bancos de Memria

1) - Banco de 8 K de Eprom (BIOS) com 27C64 + 8 K de Dados com 6264. Fazer


mapa de memria. O que muda se utilizar memria FLASH?
2) - Banco com 32 K de Eprom com 27C64 e 32 K de RAM com 6264. Fazer
mapa de memria.

Exerccios
1) - Procurar na Internet as caractersticas dos CIs: 27C64, 6264, 74HC138,
74HC373

***2) Verificar os seguintes dados do seu computador pessoal (painel de controle


ou programa Sandra) :
- Tipo de Processador
- Velocidade de Processamento
- Perifricos disponveis.
- Levantar o mapa de endereo da memria interna do computador (Ram,
Bios, memria de vdeo, etc). Quantos bits de endereo esto
disponveis? Qual a capacidade mxima de memria para este nmero
de bits.

***3) - Projetar bancos de memria com a seguinte caracterstica:


- 32 K memria Eprom (27C256) e 32 K memria RAM (62256). Idem para
memria FLASH.

- 2 Mbytes memria Eprom (27C4000) e 2 Mbytes memria RAM (624000). Idem


para memria FLASH Serial Atmel.

18
1.8) - Arquitetura do Microprocessador:

Figura - Arquitetura tpica de um Microprocessador

- Decodificador de Instrues:

Bloco lgico combinacional responsvel por receber o cdigo de operao das


diversas instrues e a partir deste gerar sinais de controle externos e/ou internos,
bem como sinais de temporizao, com o objetivo de executar a instruo.
implementado atravs de lgica combinacional (tabela da verdade), onde as
variveis de entrada so o cdigo de operao do microprocessador e as variveis
de sada os diversos sinais de controle e temporizao internos/externos.

- Unidade Lgica Aritmtica (ULA):

Unidade responsvel pela realizao de operaes lgico / aritmticas no


microprocessador. As operaes aritmticas so todas baseadas na soma
(implementada atravs de lgica OU EXCLUSIVO).
Toda lgica de deciso dos programas baseada em operaes lgica /
aritmticas.
Por exemplo: a comparao entre duas variveis implementada atravs da
operao de subtrao que por sua vez viabilizada pela operao de
complemento de 2 (A - B = A + /B + 1).
A complexidade da ULA do microprocessador determina a capacidade do mesmo
em realizar processamentos complexos (como tratamento de imagem ou som em
sistemas multimdia). Exemplos clssicos so os microprocessadores tipo D.S.P.
(Processador Digital de Sinais) ou os coprocessadores aritmticos presentes na
famlia de computadores PC at os microprocessadores 486-SX.

- Registradores:

19
Posies de memria internas (latchs tipo D) responsveis pelo armazenamento
temporrio de informaes gerais (registradores genricos) ou especficas.
Registradores para armazenamento de dados ou endereos dentro do
microprocessador. So implementados atravs de latchs internos (podendo ser
comparados a posies de memria dentro do microprocessador). Quanto maior
o nmero de registradores internos maior a velocidade de processamento, pois
no necessrio o acesso memria externa para armazenamento de variveis.
comum os microcontroladores e os D.S.P.s possurem algumas centenas de
posies de memria internas, diminuindo em muito o tempo de acesso
memria. Outro exemplo bastante apropriado a memria caches internas aos
microprocessadores 486 e PENTIUM.

Registradores Especficos:

- Acumulador: principal registrador de auxlio da U.L.A. Bastante acessado


pelas instrues, o registrador armazenador dos resultados da U.L.A. O nmero
de bits do acumulador pode ser do tamanho da via de dados ou o dobro (para
aumentar a preciso do resultado presente no acumulador).
- Flag: registrador sinalizador de algumas condies do acumulador (portanto do
resultado) depois de realizadas operaes lgico / aritmticas. As condies
encontradas normalmente so: zero, sinal, vai-um, overflow, paridade, etc.
Ex: Flag do 8085:

| S | Z | - | AC | - | P | - | C |

- S -> flag de sinal. Indica a condio do oitavo bit do acumulador.


S = 0 -> positivo S=1 -> negativo
- Z -> flag indicar de zero.
Z = 1 -> zero no acumulador , Z = 0 -> nmero diferente de zero.
- P -> flag de paridade. Indica o nmero de 1 no acumulador.
P = 1 -> nmero par , P = 0 -> nmero impar
- AC -> flag auxiliar carry. Em 1 indica vai um entre primeiro e segundo nibble
do resultado.

- C -> flag carry principal. Em 1 indica estouro (overflow) do acumulador.


Ex: BBH + FAH
10111011 FLAG: S Z - AC - P - C
+
11111010
---------------

20
Exerccios

1) Qual o contedo do Acumular e Flag da seguinte rotina? Haver salto no


programa?
MOV A,CAH ;CARREGA ACUMULADOR COM O NMERO CA
ADD A,9DH ;SOMA A + 9D
JZ SALTO ;SALTA SE Z = 1

2) Pesquisar as principais caractersticas dos barramentos ISA e PCI do


computador PC.

3) Pesquisar as principais caractersticas do barramento serial I2C (site da


Philips ou Microchip).

4) Pesquisar as principais caractersticas do co-processador aritmtico do


processador Pentium II.

*** 5) - Qual o contedo do Acumular e Flag da seguinte rotina? Haver salto no


programa?
MOV A,7AH
MOV B,53H
ADD A,B
JNC SALTO

- Contador de Programa (PC): registrador armazenador do endereo da


prxima instruo. Determina o fluxo do programa. Quando o programador altera
o valor do PC, necessariamente desvia o programa (atravs de saltos sem retorno
ou chamada de subrotinas).
Exemplo:

- Instruo: JMP 2000H -> carrega o PC com o endereo 2000H. O contedo


anterior do PC destrudo (por isso o programa no consegue voltar).

- Instruo: CALL 2000H -> carrega o PC com o endereo 2000H. Neste caso, o
contedo anterior do PC (PCH->SP-1 e PCL->SP-2) salva em uma regio de
memria (interna ou externa ao microprocessador) conhecida por PILHA. Ao ser
executada a instruo RET, o programa retorna ao ponto em que foi chamado. A
rotina acessada pela instruo CALL conhecida por subrotina. O contedo do
registrador SP decrementado de dois para possibilitar o salvamento de outros
parmetros na pilha (ou a chamada de outras subrotinas dentro de subrotinas)

- Apontador de Pilha (SP): registrador armazenador do endereo na rea de


pilha do sistema. Ser nesta rea que sero armazenados endereos de retorno
das sub-rotinas, bem como parmetros dos diversos registradores.

1.9) - Conceitos Complementares de um Microprocessador:

21
1.9.1) - Temporizao das Instrues - Ciclo de Instruo:

As atividades de um processador central so cclicas. O processador busca a


instruo na memria, executa a tarefa ligada ao cdigo lido, busca a prxima
instruo e assim por diante. A temporizao de um computador depende
basicamente do sinal de clock que sincroniza todas as operaes do sistema. O
clock gerado a partir de um oscilador com freqncia determinada normalmente
por um cristal. Este cristal pode estar interno ao microprocessador ou ser
implementado atravs de um C.I. dedicado a isto.
A figura abaixo mostra um exemplo de clock gerado atravs de cristal, LC e RC :

Figura - Oscilador do 8085

Ciclo de instruo: nmero de perodos de clock necessrios para executar uma


instruo. O ciclo de instruo composto basicamente dos ciclos de mquina
M1 e M2.
22
Ciclo de Mquina: composto dos ciclos M1 ou busca da instruo (onde o cdigo
de operao lido na memria) e ciclo M2 ou ciclo de execuo. O ciclo de busca
da instruo vai depender do nmero de bytes necessrios para a leitura da
instruo (por exemplo: o 8085 possui instrues de at 3 bytes que obviamente
necessitam de 3 ciclos de busca de cdigos na memria). O tempo total
necessrio para o ciclo de instruo determinado pelo nmero de estados T (ou
nmero de pulsos do clock) fornecidos pelo conjunto de instrues do
microprocessador.

Exerccios:
1) - Calcular os ciclos M1, M2 e o ciclo de instruo para a instruo MOV A,B
utilizando fc = 6 Mhz, n = 3, M1 = 4 clocks e M2 = 3 clocks.

*** 2) - Idem para a instruo OUT 10h, fc = 1 Mhz, n=4, M1 = 4 clocks, M2 = 3


clocks e M3 = 3 clocks.

1.9.2) - Circuito de Inicializao:

Tambm conhecido por reset, a entrada de inicializao nos


microprocessadores carrega o registrador de endereo PC com o endereo inicial
da rea de programa (normalmente 0).
Pode ser acionado com sinal positivo (0 -> 1) ou negativo (1 -> 0). O manual do
microprocessador normalmente informa o tempo mnimo necessrio para que o
sinal de reset fique ativo de tal forma a se determinar a constante RC do circuito.
fundamental que o sinal de reset seja gerado cada vez que o
microprocessador seja ligado (reset automtico) e em pequenas quedas de rede
(pois o microprocessador quando tem a tenso de alimentao abaixo do nvel
mnimo recomendado, passa a executar tarefas fora do controle). O circuito
abaixo mostra o reset utilizado pelo 8085 (lgica positiva, reset manual e
automtico). Nota-se a funo do diodo em descarregar rapidamente o capacitor
em caso de queda de energia.

Figura - Sistema de Reset

23
- Watch Dog: circuito supervisrio que inicializa o microprocessador a cada
perodo de tempo configurvel (1 ou 2 segundos normalmente) se no receber um
sinal do microprocessador. Desta forma o programa do sistema deve, em um
tempo menor que o tempo do W.D., gerar este sinal. Se o programa se perder e
no gerar o referido sinal, o W.D. inicializar o microprocessador.

Figura - Supervisrio MAX690 e circuito de aplicao tpica

Exerccio:
1) - Determinar o mnimo valor de um capacitor para um circuito de reset
automtico considerando:
Vcc = 5V, Vreset = 2/3 Vcc
R = 100k
Freqncia: 100 Mhz
Nmero de clocks mnimo para reset: 100

2) Calcular o perodo dos ciclos M1 (4 clocks), M2 (3 clocks) e o ciclo de


instruo para a instruo MOV A,B, freqncia do cristal de 6 Mhz.
***3) Idem para a instruo OUT 10h, fc = 1 Mhz e M1=4clocks, M1= 3 clocks e
M2 = 3 clocks.

1.9.3) - Interrupes:

Sinal de entrada no microprocessador gerado normalmente por perifricos,


fazendo o microprocessador parar seu processamento, salvar o endereo atual,
saltar para uma sub-rotina especfica do perifrico (endereado pelo vetor de
interrupo, que pode ser fixo ou varivel) e posteriormente retornar ao ponto de
parada (poderamos comparar o processo a uma chamada de subrotina atravs
de um sinal de hardware).
Exemplo:

24
-Atendimento ao teclado: quando uma tecla acionada, o teclado gera um sinal
positivo que ao entrar na interrupo do microprocessador faz o mesmo parar o
processamento, salvar o endereo atual do PC na pilha e saltar para o endereo
indicado no vetor de interrupo (varivel ou fixo).
-Interrupes disponveis no 8085: 5 entradas de interrupes ativadas em nvel
alto por um dispositivo externo. Neste caso, o 8085 interrompe a seqncia de
execuo do programa e salta para um endereo pr-determinado (vetor de
interrupo). As interrupes possuem os seguintes vetores e prioridades:
Interrupes Endereo
prioritrio

^ TRAP 0024H
|
| RST6,5 003CH
|
| RST6,5 0034H
|
| RST5,5 002CH
|
| INTR endereo fornecido por
um controlador de interrupo

Observa-se que a interrupo INTR necessita de um controlador de


interrupo (como o 8259 do IBM-PC) para gerar este endereo. Neste caso, o
microprocessador mostra o reconhecimento do endereo atravs do sinal de sada
INTRA.

Figura - Interrupo no vetoriada

Dentro dos microprocessadores esto disponveis registradores de configurao


que determinam interrupes pendentes e nveis de prioridade.
No caso do IBM-PC, os vetores das 16 interrupes disponveis para perifricos
(e programadas no 8259) so determinadas pelo sistema operacional.

25
Exerccios / Pesquisa Complementares

1) - Levantar com o auxlio do Painel de Controle / Sistemas / Gerenciador de


Sistemas / Propriedades os vetores e perifricos do seu computador PC.

***2) Qual ser o efeito para o computador se um modem for instalado na


mesma interrupo / vetor do mouse?

***3) Explicar a diferena entre as instrues JMP 2000H e CALL 2000H.

***4) Quais as vantagens de utilizar sub-rotinas em programao.

1.9.4) - Acesso direto memria (D.M.A):

Sistema onde o barramento do computador retirado do microprocessador


(colocando o mesmo em tri-state) e controlado atravs de um outro
microprocessador (multiprocessamento) ou atravs de um controlador de D.M.A.
(como o 8257) para transferncia de dados entre perifricos e memria.

Exemplo:

1) - Carga de programas de um winchester ou floppy para memria RAM de


um computador.

2) - Co-processador aritmtico nos computadores IBM-PC.

LINK -> http://pt.wikipedia.org/wiki/Dma

"O DMA uma caracterstica essencial dos computadores modernos. Permite que
os dispositivos transfiram dados sem sobrecarregar a CPU. De outra maneira, a
CPU teria que copiar todos os dados da fonte at o destino. Isto tipicamente
mais lento do que copiar blocos de dados dentro da memria, j que o acesso a
dispositivo de perifricos atravs de barramentos perifricos mais lento que a
memria de dados. Durante a cpia dos dados a CPU ficaria indisponvel para
outras tarefas.

26
Uma transferncia por DMA essencialmente copia um bloco de memria de um
dispositivo para outro. A CPU inicia a transferncia, mas no executa a
transferncia. Para os chamados third party DMA, como utilizado normalmente
nos barramentos de computadores, a transferncia realizada pelos
controladores DMA que so tipicamente parte do chipset da placa me. Projetos
mais avanados de barramento, como o PCI, tipicamente utilizam bus-mastering
DMA, onde o dispositivo toma o controle do barramento e realiza a transferncia
de forma independente.

Um uso tpico do DMA ocorre na cpia de blocos de memria da RAM do sistema


para um "buffer" de dispositivo. Estas operaes no bloqueiam o processador
que fica livre para realizar outras tarefas. Transferncias DMA so essenciais para
sistemas embarcados de alto desempenho.

Por exemplo, um controlador DMA ISA de um computador tem 16 canais DMA dos
quais 7 esto disponveis para a CPU. Cada canal DMA associado com um
registador de endereo de 16 bits e um registador contador de 16-bit. Para iniciar
uma transferncia o driver do dispositivo inicializa o endereo e o contador com a
direco da transferncia, leitura ou escrita. Ele instrui o hardware DMA para
iniciar a transferncia. Quando a transferncia completa o dispositivo interrompe
a CPU.

A requisio DMA chamada de DRQ e o acknowledge de DACK. Estes smbolos


so geralmente vistos em esquemas de hardware que utilizam DMA. Eles
representam os sinais electrnicos trocados entre a CPU e o controlador DMA."

Links:

http://en.wikipedia.org/wiki/Direct_memory_access

1.9.5) - Multiplexao de sinais em microprocessadores:

Consiste em um recurso de misturar 2 ou mais sinais em um terminal do


microprocessador com o objetivo bsico de economizar pinagem do chip. Um
exemplo tpico a multiplexao da via de dados/endereo do 8085: os 8 bits de
dados (D0-D7) so multiplexados no tempo com o byte menos significativo de
endereo (A0-A7). O sinal de controle ALE (sigla de Address Latch Enable)
indica a natureza da informao presente naquele instante.
ALE = 0 -> AD0-AD7 -> dados (D0-D7)
ALE = 1 -> AD0-AD7 -> endereos (A0-A7)

Ex:

27
Figura - Sinal ALE

A separao da via de dados (D0-D7) da via de endereos (A0-A7) necessria


pelo fato de termos diversos dispositivos de memria e perifrico com estes
barramentos separados. A implementao desta separao pode ser realizada
com os latchs octais 74373 (unidirecional) e 74245 (bidirecional). A figura abaixo
mostra um circuito tpico utilizado na demultiplexao dos sinais de
dados/endereo do 8085.

Figura - Separao do barramento A/D do 8085

Considerando que os sinais de Leitura (RD) e Escrita (WR) esto sincronizados


a informao do dado (estes sinais s iro para nvel baixo quando a informao
do dado estiver disponvel no barramento D0-D7), podemos simplificar o esquema
28
acima eliminando o latch bidirecional 74LS245 (lembrando que durante a presena
do sinal de endereo A0-A7 o barramento das memrias e dos perifricos).

1.9.6) Sincronizao de Dispositivos Lentos

O pino de entrada READY (em nvel alto permite o funcionamento do


microprocessador e em nvel alto o mesmo permanece em estado de espera
wait). O dispositivo de sincronizao de memria / perifrico lento controla o
sinal READY do processador de tal forma a fazer o mesmo aguardar uma
diferena de velocidade de acesso.

29
CPU Memria

Decoficador
CS
Entrada
READY

Gerador Wait State

Tacesso memria

Figura - Circuito tpico de Wait State

Ex: Qual o perodo de um pulso de espera (Wait State) para o acesso a uma
escrita no disco rgido e a memria RAM dinmica considerando:

Tempo de Acesso ao disco rgido: 100 micro-segundos.


Tempo de Acesso da memria RAM: 65 nano-segundos.

Exerccios / Pesquisa Complementares

1) - Determinar o mnimo valor de um capacitor para um circuito de reset


automtico considerando:
Vcc = 3,3 V
R = 10k
Freqncia: 500 Mhz
Nmero de clocks mnimo para reset: 500

***2) Qual o perodo de um pulso de espera (Wait State) para o acesso a uma
memria RAM rpida considerando:
Ciclo de instruo de escrita: 5 clocks
Clock: 500 Mhz
Tempo de Acesso a RAM: 15 nseg.

30
***3) Fazer um circuito de separao de dados / endereo de um processador
com um barramento AD0-AD15, com sinal de ALE. Colocar um Buffer para a via
de dados.

1.9.7) Memria Virtual e MMU (Memory Management Unit)

Para a implementao de Sistemas Operacionais em Computadores,


normalmente ocupando uma grande rea de memria, necessrio o
gerenciamento do espao disponvel de memria atraves de tcnicas de
gerenciamento e paginao da memria. Alguns destes conceitos so colocados,
de forma introdutria, abaixo:

- Memria Virtual: tcnica para aumentar a capacidade da memria atravs do


chaveamento da memria dando a percepo para o operador de mais memria
do que a capacidade real. Isto realizado atravs da diviso do programa em
blocos, armazenados em rea intermedirias (memria secundria - "overlays") e
copiando estes pedaos de programas para um mesmo bloco de memria.
- Disco Rgido Fsico: guarda todo o programa a ser rodado.
- Memria Fsica Real: memria menor que a Memria Virtual.

Para o programador o mapeamento contnuo. O sistema de MMU (Memory


Management Unit) gerencia a cpia do programa armazenado no disco rgido para
pedaos da memria real atravs de registradores de pginas ("page table") e
registrador do endereo de offset (segmentao).

O endereo real (fsico) determinado pela MMU e o Sistema Operacional


trabalha com o endereo total (virtual).

31
Exemplo:

1.

1 Mbytes de Memria Virtual (20 bits de endereo) com um aplicativo com 8


Kbytes de Memria Real (13 bits de endereo).

A memria virtual ser dividida em 128 paginas de 8 Kbytes (128 x 8K = 1Mbytes).

Endereo de Offset -> 13 endereos.


Endereo de Pgina -> 7 endereos.

O programa controla 1M mas a MMU controla 8Kbytes de memria real dividindo a


memria virtual em 128 partes.

2.

4 Gbytes de Memria Virtual com um sistema operacional em 32 Kbytes de


memria real. Gerenciar 8 blocos de 4 Kbytes.

Memria Virtual 4 Gbytes (32 bits de endereo) e memria real de 32


Kbytes com Sistema Operacional.
Memria Real dividida em 8 segmentos (3 bits de endereo) de 4 Kbytes
(12 bits de endereo).
Memria Virtual dividida em 4 Gbytes / 4 K segmentos ou 1. 106 segmentos
(20 endereos).
8 segmentos simultneos so armazenados na memoria real de 32 Kbytes
divididos em 4Kbytes cada.
O registrador de pgina (Page Table) aponta qual o segmento est sendo
utilizado e 1 bit indica qual o segmento.
Portanto temos 2 endereos: Endereo de Offset (12 bits -> 4 Kbytes) e
Endereo de Paginao (3 bits para determinar qual segmento do bloco de
8 bits + 17 bits de complemento determinado qual dos 1. 106 segmentos
est sendo utilizado.

32
Links Adicionais ->

http://www.nxp.com/#/pip/pip=[pip=LPC3220_30_40_50_1]|pp=[t=pip,i=LPC3220_
30_40_50_1]

http://www.embeddedarm.com/products/new-products.php

http://en.wikipedia.org/wiki/Memory_management_unit

33
1.10 - Perifricos Embarcados

1.10.1 - Ports

Tpico perifrico de microcontroladores / DSP de Entrada / Saida para leitura /


controle binrio de um dispositivo. Podem ser configurveis ou fixos.

Exemplo:
Entrada -> chaves, teclados, sensores binrios.
Sada -> rele, led, lmpada, motor, solenide, etc.

Pode-se utilizar Latchs como Ports:

Figura - Utilizao de 1 latch como controle de sida (lmpadas)

Microcontroladores e DSP possuem Ports internos para controle binrios de


entradas e sadas.

1.10.2 - UART - Comunicao Serial

Interface, normalmente Full-Duplex (Tx e Rx simultneamente), para comunicao


serial. Garante a conectividade serial do equipamentos com redes externas
(modem, rede Ethernet, Fibra-Otica, satlite, etc).

34
1.10.3 - Timers - Temporizadores

Contadores de tempo gerando interrupes / eventos temporizados no


Microcontrolador. So configurados por software e sincronizados pelo oscilador
do sistema ou pulso externo.

Exemplo: Timer gerando interrupo a cada 50 msegundos para um alarme


verificar os sensores de presena / janela.

1.10.4 - Conversor A/D

Conversor Analgico / Digital responsvel por amostrar (taxa de amostragem)


sinal externos analgicos (normalmente de baixa frequencia em microntroladores)
gerando valores digitais correspondentes. A preciso da converso depende do
nmero de bits utilizados (amostras = 2n onde n o nmero de bits), taxa de
amostragem de valor mximo (fundo escala).

Exemplo: Leitura do valor de temperatura de 1 ambiente. Se a faixa for de 100 C


e for utilizado 8 bits teremos 100 / 28 = 0,4 C

1.10.5 - Conversor D/A

Conversor Digital / Analgico converte dados digitais binrios em valores


analgicos correspondentes. Normalmente utilizados em sistemas reprodutores
de som (MP3). Sua preciso depende o nmero de bits utilizado.

1.10.6 - PWM

Bloco de Modulao por Fase, normalmente utilizado para gerar sinais com ciclo
de trabalho programvel. Tem como principal aplicao o controle de
luminosidade de lmpadas ou velocidade de motores.

1.10.7 - USB

Interface Serial Universal: tpica interface serial no computador, podendo ser


caracterizada por Host (caso do computador) / "on the go" ou Dispositivo (caso de
um "pen-drive" ou mouse). Necessita de seguir um protocolo especfico de
endereamento. No caso de microcontroladores, normalmente configurado
como dispositivo.

1.10.8 - Ethernet

Interface com uma pilha TCP / IP com a possibilidade de configurar um IP fixo.


para o dispositivo. Normalmente utilizada para conectar o microcontrolador a uma
rede de computadores para acesso via protocolo TCP / IP.

1.10.9 - Display LCD

35
Interface para controle de um display de Cristal Liquido. Normalmente necessita
de um pino de controle (sinal de 100 Hz), sinais de varredura (no caso de LCD
com vrios segmentos) e um grande nmero de pinos para acesso a cada
segmento do LCD.

1.10.10 - Barramento SPI

Barramento Serial de 3 pinos, normalmente utilizado para acesso a perifericos


seriais externo (A/D por exemplo) como memria Flash serial (ou interface SD de
armazenamento de dados).

1.10.11 - Barramento I2C

Barramento Serial de 2 pinos com funes similares ao barramento SPI.

1.10.12 - Barramento CAN

Interface Serial de 2 fios, com protocolo especfico, normalmente utilizado em


ambientes ruidosos como os dispositivos em um veculo ou ambiente industrial.

1.10.13 - Barrramento para Emulao / Gravao

Utilizado para gravao / depurao / desenvolvimento do aplicativo. Interage


com o hardware do controlador. Normalmente segue o padro JTAG (6 fios) ou
ISP (3 fios)

1.12) - Estudo de Caso de Microcontroladores / Microprocessadores

Com o objetivo de ilustrar algumas CPUs / Microcontroladores Tpicos a seguir


mostrado o microprocessador de 8 bits 8085, o microcontrolador ARM7 e o
microprocessador ARM9

1.12.1) - Microprovessador 8085 (8 bits)

Principais caractersticas do 8085:


- 8 bits na via de dados (possui 246 instrues).
- 16 bits na via de endereo (acessa 64 k de memria e 256 perifricos).
- 5 entradas para interrupes.
- Interface serial.
- Controle de D.M.A.
- Controle de sincronizao para perifricos lentos.
- Clock tpico de 3 Mhz.

Anlise da arquitetura interna e pinagens: ver data-book

36
Figura - Arquitetura interna 8085

Descrio das principais funes internas:

- U.L.A: realiza operaes aritmticas (soma, subtrao, incrementao e


decrementao) e operaes lgicas (AND, OR, OR EXCLUSIVO, Inverso,
deslocamentos bit a bit e comparao).

- FLAG: registrador que sinaliza o resultado de operaes da U.L.A.

- Acumulador: registrador de 8 bits com multiplas funes (armazena resultados e


operandos da U.L.A., dados de dispositivos de E/S, mscara de interrupes,
etc).

- Registradores de uso geral: 6 registradores de 8 bits (armazenando dados)


podendo ser utilizados como pares de 16 bits (armazenando endereos): BC, DE,
HL (ponteiro)

- Registrador contador de programa (PC): registrador de 16 bits com a funo


especfica de armazenar o endereo de busca da prxima instruo. Quando
carregado atravs de instruo altera o fluxo seqencial do programa ( realizando
uma salto simples - instruo jump - ou chamando uma subrotina - instruo
call).

37
- Registrador apontador de pilha (SP): registrador de 16 bits com a funo
especfica de armazenar o endereo final da rea de memria denominada pilha
(onde so armazenados parmetros de retorno das subrotinas)
- Decodificador de instrues: bloco lgico interno com a funo de receber as
instrues (cdigos de operao que entram pela via de dados), decodificando-as
e gerando sinais de controle e temporizao.

- Buffer de endereos alto (A8-A15): via de endereos mais significativa formando


junto com A0-A7 os 16 bits totais da via de endereo.

- Controle Serial: o 8085 possui uma sada serial de dados (SOD) controlada pela
instruo SIM (coloca o oitavo bit do acumulador no pino SOD) e uma entrada
serial de dados (SID), controlada pela instruo RIM (coloca o bit da entrada serial
no oitavo bit do acumulador).

Anlise da pinagem do microprocessador 8085:

- Alimentaes +5V e GND: alimentao nica. Recomenda-se a colocao de


um capacitor cermico de desacoplamento com valor variando entre 10-100 nF
para eliminar rudos.
- X1 e X2: pinos de entrada do cristal. Possui um oscilador interno com a funo
de gerar um sinal de clock de 2 fases. Dispensa o circuito dedicado gerador de
clock.
- CLOCKOUT: sada de clock para perifricos. Tem a metade da freqncia do
cristal ligado ao X1 e X2.
- RESETIN: entrada de reset do 8085. Inicializa o 8085 (colocando o PC = 0000h
e portanto buscando a primeira instruo) quando temos um nvel baixo por mais
de 10 mseg.
- RESETOUT: sada ativa em nvel alto com a funo de inicializar os perifricos
ligados ao 8085. Sincronizado com o sinal RESETIN.
- RD: sada ativa em nvel baixo indicando processo de leitura de memria ou
perifrico. Coloca o barramento de dados como entrada.
- WR: sada ativa em nvel baixo indicando processo de leitura na memria ou
perifrico. Coloca o barramento de dados como sada.
_
- IO/M: sinal de sada. Em nvel alto indica acesso a perifricos. Em nvel baixo
indica acesso a memrias.
- S0 e S1: sinais de sada indicando status.
0 0 -> 8085 parado (HALT)
0 1 -> processo de leitura
1 0 -> processo de escrita
1 1 -> processo de busca de instruo (fetch)

- READY -> sinal de entrada com a funo de sincronizar perifrico ou memria


mais lenta que o 8085. Em nvel alto habilita a operao do 8085. Em nvel baixo
para o 8085, fazendo-o permanecer em estado de WAIT.
- HOLD: sinal de entrada. Em nvel alto coloca barramentos de dado, endereo e
controle em tri-state. Desta forma, um sistema externo (controlador de D.M.A. ou
um outro microprocessador mais prioritrio) assume um controle do barramento:

38
- HOLDA: sada ativa em nvel alto indicando barramento em tri-state para o
controlador de D.M.A. ou para o microprocessador paralelo.

Sistema Mnimo com o 8085:

SKD85

Figura - Sistema Mnimo 8085

Exemplo:

39
1) Projetar um sistema mnimo com o 8085 com as seguintes caractersticas:
Clock 4 Mhz
Reset automtico / manual
5 perifricos ligados a 5 interrupes
Sistema DMA (representar em blocos)
Desabilitar sinal READY.
32 Kbytes de memria EPROM (2764)
32 Kbytes de memria RAM (6264)
8 Perifricos (endereo 00 ff). Representar cada perifrico por um bloco.

Exerccios / Pesquisa Complementares

1) Comparar o microprocessador Z80 com o 8085.

***2) Projetar um sistema mnimo com o 8085 com as seguintes caractersticas:


Clock 1 Mhz
Reset automtico / manual
Desabilitar as interrupces atravs de resistores de pull-down
Sistema DMA (representar em blocos)
Desabilitar sinal READY.
32 Kbytes de memria EPROM (27256)
32 Kbytes de memria RAM (62256)
8 Perifricos (endereo 00 ff). Representar cada perifrico por um bloco.

***3) Projetar um sistema mnimo com o 8085 com as seguintes caractersticas:


Clock 2 Mhz
Reset automtico / manual
Desabilitar as interrupces atravs de resistores de pull-down
Sistema DMA (representar em blocos)
Desabilitar sinal READY.
16 Kbytes de memria EPROM (2764) endereo 0-3fffh
32 Kbytes de memria RAM (62256) endereo 8000h-bfffh
8 Perifricos (endereo 00 ff). Representar cada perifrico por um bloco.
4) Pesquisar no Painel de Controle do PC os endereos de memria e
perifricos do computador. Qual a faixa de memria de vdeo?

5) Projetar um banco de memria de um computador com 1 Mbytes tendo 512 K


de eprom (27C1000) e 512 K de ram (621000).

Anlise de 1 ciclo de temporizao:

Temporizao da Instruo OUT <end> (2 bytes) Ex: OUT 20H (D3 20)

40
Exerccio

***1) - Fazer um diagrama de tempo para a instruo IN 40H

1.11.2) - Arquitetura Microcontrolador ARM7 (LPC2880 - www.nxp.com)

Link ->
http://www.nxp.com/#/pip/pip=[pip=LPC2880_LPC2888_3]|pp=[t=pip,i=LPC2880_L
PC2888_3

Principais Caractersticas:

ARM7TDMI processor with 8 kB cache, operating at up to 60 MHz


1 MB on-chip flash program memory with 128-bit access for high performance
64 kB SRAM
Boot ROM allows execution of flash code, external code, or flash programming
via USB
On-chip DC-to-DC converter can generate all required voltages from a single
battery or from USB power
Multiple internal buses allow simultaneous simple DMA, USB DMA, and
program execution from on-chip flash without contention
External memory controller supports flash, SRAM, ROM, and SDRAM
Advanced vectored interrupt controller, supporting up to 30 vectored interrupts

41
Innovative event router allows interrupt, power-up, and clock-start capabilities
from up to 107 sources
Multi-channel general purpose DMA controller that can be used with most on-
chip peripherals as well as for memory-to-memory transfers
Serial interfaces:
Hi-Speed or Full-Speed USB 2.0 device (480 Mbit/s or 12 Mbit/s) with on-chip
physical layer
UART with fractional baud rate generation, flow control, IrDA support, and
FIFOs
I2C-bus interface
I2S-bus (Inter IC Sound bus) interface for independent stereo digital audio input
and output
SD/MMC memory card interface
10-bit ADC with 5-channel input multiplexing
16-bit stereo ADC and DACs with gain control
Advanced clock generation and power control reduce power consumption
Two 32-bit timers with selectable prescalers
8-bit/4-bit LCD interface bus
Real-Time Clock (RTC) can be clocked by 32 kHz oscillator or another source
Watchdog timer with interrupt and/or reset capabilities

42
Exerccios:

1. Fazer um estudo comparativo da arquitetura da Linha ARM da NXP

ARM7 - http://www.nxp.com/#/ps/ps=[i=45994]|pp=[t=pfp,i=45994]

ARM9 - http://www.nxp.com/#/ps/ps=[i=53962]|pp=[t=pfp,i=53962]

2. Fazer um estudo comparativo da arquitetura da Linha ARM da Freescale


MX5.xx, MX 2.xx, etc.

http://www.freescale.com/webapp/sps/site/homepage.jsp?nodeId=0162468rH3114

43
2) - Arquitetura de Microcontroladores

Planejamento (P):

Este captulo capacitar o aluno nos seguintes pontos:

- Conceituar Microntrolador
- Conhecer a arquitetura interna da famlia MCS-51
- Sistema Mnimo da famlia MCS-51 com e sem memria externa
- Projetar CLPs utilizando ports de comunicao paralelo.

Execuo (D):

2.1 - Introduo

Considerando as aplicaes tpicas e a tecnologia envolvida:

Aplicao
Multimdia -
PC
Sistema
Aberto (BIOS
+ SO +
X
Aplicativo)
Anlise de
Sinais
Sistema
Dedicado
(Firmware)
-
X
Controle
Booleano
Sinal
Analgico de
baixa
/
X
freqncia
Microcontrolador DSP Microprocessador Tecnologia
8 / 16 bits 16 / 32 bits 32 / 64 bits

Sistemas com microcontroladores so utilizados para controle e sistemas


dedicados. So tpicos de equipamentos como CLPs e bastante presentes em
equipamentos nacionais pelo fato dos mesmos atuarem em nichos de mercado
(baixo volume, baixo custo de desenvolvimento, longevidade).

2.2 - ARQUITETURA MICROCONTROLADORES

44
Quadro comparativo entre Microprocessadores / Microcontroladores

Caractersticas Microcontrolador Microprocessador


Velocidade Lenta ( tpico < 1Mhz) Rpida (tpico > 1 Ghz)
Consumo Baixo (uA) Alto ( ventilador, fonte chav.)
Memria de Programa Pequena capacidade (kbytes) Grande capacidade (mbytes)
Memria de Dados Mnima (bytes) Grande capacidade (mbytes)
Arquitetura de Memria Hardware (tpica) Von- Newmann
Barramento 8 bits (dados) > 64 bits (dados)
Aplicao fechada, firmware aberta, multimidia

2.2.1) - Famlia de Microcontroladores INTEL MCS-51:

Ao contrrio da linha de microprocessadores (segue Lei de Moore no


desenvolvimento), microcontroladores tem um tempo de vida de dcadas. A
Intel lanou apenas 2 famlias de microcontroladores:

MCS-48 (meados da dcada de 70)

MCS-51: presente at hoje de forma bastante atuante no mercado.

Apesar de existirem diversas famlias importantes de microcontroladores no


mercado (Microchip, Texas, Zilog, Motorola, Cypress, National), a linha da Intel
continua bastante atuante no mercado (principalmente pelo grande nmero de
fabricantes que utilizam esta arquitetura - Philips, Atmel, Nec, Dallas, Temic) e
principalmente muito estudada pela sua arquitetura conceitual (contem conceitos
de microcontroladores com acesso a memria externa).

Os principais recursos dos microcontroladores MCS-51:

- Memria de Programa de 4 kbytes: ROM (8051), OTP (8751), FLASH /


EEPROM (89Sxx), ROMLESS (8031) com expanso at 64K.
- 256 bytes de RAM (registradores) com expanso at 512 bytes
- 4 ports (latchs bidirecionais programveis) com 8 bits. Existem verses de
2 ports at 6 ports.
- 2 temporizadores ("timers") de 16 bits. Expanso at 3 timers
- 1 unidade serial assncrona (UART) "full-duplex".
- 5 interrupes (2 externas, 2 "timers" e 1 "UART").
- Oscilador interno para gerao de temporizao.
- Acesso a at 64 Kbytes de RAM externa (dados) e 64 Kbytes de EPROM
(programa) externa atravs do controle de 2 sinais de leitura (PSEN -> rea de
programa - RD -> rea de dados). Esta estrutura conhecida como 'arquitetura

HARVARD'.
- 256 instrues otimizadas para controle.

45
Arquitetura do Microcontrolador 8051:

Figura - Arquitetura MCS-51 (fonte: Intel)

Arquitetura funcional

Figura - Arquitetura Funcional (fonte: Apostila MCS-51 Ricardo Zelenovsky)

46
Pinagem:

- Vcc,Gnd: alimentao nica de 5 Vcc.

- X1-X2: conectada ao cristal externo (12 Mhz tpico). O sistema de


temporizao interno divide a freqncia do cristal por 12, proporcionando um
ciclo tpico de mquina de 1 mseg.

- RST: entrada de inicializao ativa em nvel alto


__
- EA ("external acess"): em nvel baixo, desabita os 4 kbytes de memria
de programa interna. Toda a busca de instruo realizada externamente
(atravs de uma EPROM). Em nvel alto habilita a memria interna.

- ALE ("Address Latch Enable"): na utilizao de memria de programa


externa, este pino tem a funo de indicar a presena de endereo (em nvel alto)
ou dado (em nvel baixo) no barramento de endereo/dado multiplexado (AD0-
AD7).
____
- PSEN ("Program Strobe Enable"): em nvel baixo indica leitura de uma
instruo da rea de programa. Normalmente ligado ao pino RD da memria de
programa.

- Port P0 (P0.0-P0.7): seus 8 pinos podem ter dupla funo. Se no


houver memria externa, so utilizados como sinais de entrada/sada do "latch"
bidirecional P0. Se houver memria externa, atua como 8 sinais multiplexados de
dados/endereo (AD0-AD7). O sinal de ALE indica a condio deste barramento.

- Port P1 (P1.0-P1.7): 8 pinos de entrada/sada do "latch" bidirecional P1.

- Port P2 (P2.0-P2.7): seus 8 pinos tambm podem ter dupla funo. Se


no houver memria externa com mais de 256 endereos, so utilizados como
sinais de entrada/sada do "latch" bidirecional P2. Se houver necessidade de
endereamento maior que 8 bits, atua como 8 sinais de endereo A8-A15.

- Port P3 (P3.0-P3.7): novamente, seus 8 sinais tem dupla funo:

47
- P3.0: RxD (recepo serial) / port P3.0
- P3.1: TxD (transmisso serial) / port P3.1
- P3.2: INT0 (interrupo 0) / port P3.2
- P3.3: INT1 (interrupo 1) / port P3.3
- P3.4: T0 (entrada Timer 0) / port P3.4
- P3.5: T1 (entrada Timer 1) / port P3.5
- P3.6: WR (sinal de escrita da RAM externa)/port
P3.6
- P3.7: RD (sinal de leitura da RAM externa)/port

Descrio das funes internas:

- U.L.A.: unidade lgia aritmtica de 8 bits, responsvel pela execuo das


4 operaes aritmticas bsicas e das operaes lgicas tradicionais (AND, OR,
OR EXCLUSIVE, INVERSO e SHIFT).

- Acumulador: registrador de 8 bits mais utilizado pelo microcontrolador.


Normalmente utilizado para colocar resultados da U.L.A. ou fatores utilizados nas
operaes lgico / aritmticas. No caso das operaes de multiplicao, o
registrador B tambm utilizado para colocao dos resultados, pois o resultado
apresentado em 16 bits.

- Flag PSW: registrador sinalizador das operaes aritmticas da U.L.A.,


configurador dos registradores R0-R7 e para uso geral. Abaixo mostrado a
posio e nome de seus 8 bits:

CY AC F0 RS1 RS0 OV - P

CY (PSW.7): indica presena de bit CARRY (vai um) nas operaes


aritmticas da U.L.A.

AC (PSW.6): indica presena do bit Auxiliar Carry quando ocorre vai um


entre os 3 e 4 bits nas operaes aritmticas da U.L.A..

F0 (PSW.5): bit para uso livre do programador.

RS1 e RS0 (PSW.4 E PSW.3): configura qual banco de registradores R0-


R7 ser acessado.

0 - 0 -> primeiro banco


0 - 1 -> segundo banco
1 - 0 -> terceiro banco
1 - 1 -> quarto banco

Ex.: MOV PSW,#00001000B ;RS0=1 E RS1=1 -> SEGUNDO BANCO

OV (PSW.2): indica presena de bit CARRY (bit 8 ativado) nas operaes


de multiplicao da U.L.A. Auxilia tambm as operaes de subtrao.

P (PSW.0): indica paridade do acumulador. Se setado, indica nmero par


de '1' no acumulador. Caso contrrio indica nmero mpar.

48
- Contador de Programa (PC): registrador de 16 bits que guarda o
endereo da prxima instruo. Quando o 8051 resetado, este registrador
zerado, fazendo o 8051 buscar a primeira instruo da memria.

- Apontador de Pilha (SP): registrador de 8 bits indicador do endereo


inicial da pilha do 8051. A pilha necessariamente tem que estar localizada entre
os endereos 30H e 7FH da rea RAM interna do microcontrolador. O tamanho
da pilha deve ser suficiente para permitir os diversos acessos de sub-rotinas do
programa (considerando os armazenamento dos endereos do PC e dos
parmetros da instruo PUSH).

- Ponteiro de Memria Externo (DPTR): registrador de 16 bits utilizado


para armazenar endereos de memria externa.

- Registrador B: registrador auxiliar nas operaes de multiplicao e


diviso.

- Decodificador e Registrador de Instrues / Controle e Temporizao:


sistema responsvel pelo armazenamento, decodificao e execuo dos cdigos
de operao (bytes) das 256 instrues do 8051. Controla os sinais externos de
controle (reset, ALE, configurao da memria interna de programa e sinal de
leitura da memria externa).

- Timers: o 8051 possui 2 sistemas de temporizao de 16 bits. Maiores


detalhes sero fornecidos nos captulos subsequentes.

- Unidade Serial: sistema para comunicao serial assncrona full-duplex.


Maiores detalhes sero fornecidos nos captulos seguintes.

- Memria de Dados (SFR) e de Programa: o 8051 possui um estrutura


de acesso ao sistema de memria conhecida como HARVARD, onde o acesso a
memria de programa diferenciado do acesso a memria de dados (atravs de
sinais de leitura distintos). Desta forma, o microcontrolador no permite que um
determinado programa fique localizado na rea de dados ou vice-versa. A grande
vantagem deste sistema a otimizaco do sistema no acesso as instrues do
programa e aos dados. O programa dos sistemas com microcontroladores
normalmente so dedicados (FIRMWARE). Observe que este modo de acesso a
memria diferente dos microcomputadores padro IBM-PC, onde normalmente
os programas localizam-se na rea de dados (da o fato de cada vez mais ser
importante uma grande rea de memria RAM dentro dos computadores).

- Memria de Dados (SRF): o 8051 possuir 256 bytes de memria de


dados interna e permite o acesso de mais 64 Kbytes de memria de dados
externa (unicamente atravs das instrues MOVX). Na maioria das vezes a
memria interna de dados suficiente, pois as aplicaes de controle
normalmente no exigem muita quantidade de memria voltil (j que os
programas no so armazenados na rea de RAM).

A memria RAM interna divida em 4 reas:

- rea de Registradores R0-R7 (00-1FH): o 8051 possui 4 bancos de


registradores selecionados atravs dos bits RS1 e RS0 do registrador PSW.
Normalmente estes registradores armazenam endereos da rea de rascunho
(modo de endereamento indireto).

49
- rea Booleana (binria) (20H-2FH): 16 bytes endereados bit a bit
(totalizando 128 bits). Pode-se acessar cada bit individualmente indicando uma
determinada condio binria (por exemplo: a tecla A de um teclado foi acionada).
Estes bits so acessados pelas instrues booleanas do 8051.
- rea de Rascunho (30H-7FH): memria de uso geral onde se localiza a
pilha do sistema.
- rea de Registradores Especiais (SFR) (80H-FFH): rea onde se localiza
todos os registradores com funo especial. O nmero destes registradores varia
de acordo com as funes disponveis dentro do processador. Os registradores
especiais mais comuns so:
- PO (80H): port P0.
- P1 (90H).
- P2 (A0H).
- P3 (B0H).
- ACC (E0H): acumulador.
- B (F0H)
- PSW (D0H): registrador de status
- SP (81H): apontador de pilha
- DPL (82H): byte menos significativo do registrador DPTR.
- DPH (83H): byte mais significativo do registrador DPTR.
- PCON (87H): registrador de controle de consumo do 8051.
- IE (A8H): registrador de habilitao do sistema de interrupes.
- IP (B8H): registrador indicador de prioridade do sistema de
interrupo.
- TMOD (89H): registrador de modo dos timers.
- TCON (88H): registrador de controle do timer 1
- T2CON (C8H): registrador de controle do timer 2.
- TL0 (8AH): byte inferior do timer 1.
- TH0 (8CH): byte superior do timer 1.
- TL1 (8DH): byte inferior do timer 2.
- TH1 (8BH): byte superior do timer 2.
A seguir o mapa de endereo dos registradores especiais (Databook Atmel 89S51
- www.atmel.com.br).

Figura - Tabela de Endereo dos Registradores Dedicados (fonte: Atmel)

50
Verificao (C)

Exerccios / Pesquisa Complementares


1) Fazer um download de um arquivo .PDF com a arquitetura do 89S51.

2) Fazer um levantamento dos fabricantes que possuem microcontroladores com


a arquitetura do 8051 (www.8052.com).

3) Fazer um levantamento dos microcontroladores fabricados pela Philips e pela


ATMEL.

4) Obter um compilador para Assembler diferente do ASM51 utilizado no


laboratrio.

2.2.1) - Sistema Mnimo com o 8051:

- 32 sinais de entrada/sada

51
- Interface serial (RxD e TxD), interrupes externas (INT0 e
INT1), "timer" duplo externo (T0 e T1).

Verificao (C)

Exerccios

1) Sistema com o 8031 com as seguintes caractersticas:

- Eprom Externa 27128.


- RAM 6264 (end. 0 1fffh).
- Clock de 11.059Mhz
- Reset automtico e manual
- Alarme com uma chave liga/desliga, 4 sensores ultrasnicos, 1 lmpada e
1 buzina.

2) Sistema com o 89S51 com as seguintes caractersticas:

- Clock de 12 Mhz
- Reset automtico e manual.
- Controle de 12 motores .
- 12 entradas de chaves.

3) Obter na internet um projeto com o 8051.

***4) Projetar um coletor de dados com o 8031 com as seguintes caractersticas:

- Eprom Externa 27256.


- RAM 62512
- Clock de 11.059Mhz
- Reset automtico e manual
- 8 ports para um teclado.
- Comunicacao serial
- Previso de utilizar 2 ports para controle de um display.

52
2.2.2 - Microcontrolador LPC935 (famlia LPC9xx)
http://www.nxp.com/documents/data_sheet/P89LPC933_934_935_936.pdf

Principais Caracteristicas:

53
Diagrama em Blocos

54
Pinagem

55
Kit de Desenvolvimento IAR:

http://www.iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/224

Esquema Eltrico

56
Verificao (C)

Exerccios

1) Sistema com o LPC935 com as seguintes caractersticas:

- Clock de 12 Mhz
- Reset automtico e manual.
- Controle de 12 motores .
- 12 entradas de chaves.

57
3) - Linguagem Assembler

Planejamento (P):

Este captulo capacitar o aluno nos seguintes pontos:

- Conceituar Programao estruturada.


- Conhecer os mnemnicos do MCS-51
- Editar, compilar, simular e emular programas em Linguagem Assembler para o
MCS-51
- Projetar CLPs utilizando ports de comunicao paralelo e program-los em
Linguagem Assembler.

Execuo (D):

3.1) - Introduo:
A linguagem Assembler uma linguagem de nvel intermediria, composta
basicamente de mnemnicos (palavra representando o cdigo de operao da
instruo), diretivas (pseudo-instrues), labels e comentrios. Pelo fato de estar
bem prxima a linguagem de microprocessador (linguagem de mquina composta
de bits compreensvel pelo processador), exige um compilador (programa que
converte o programa fonte em linguagem de mquina) bastante simples e portanto
rpido. ideal para utilizao na rea de projeto e testes de microprocessadores,
pois exige conhecimento da estrutura do microprocessador utilizado (ao contrrio
das linguagens superiores transparentes a estrutura do processador). Tem a
desvantagem de no possuir a estrutura de linguagens como PASCAL e C.

Aplicativo
(camada de programao interativa com o usurio)

Linguagem Superior
(camada de programao composta de estrutura de programao (IF THEN < >
ELSE < >))


Linguagem Assembler
(camada de programao composta de mnemnicos dos cdigos de operao).


Linguagem de Mquina
(camada de programao composta por cdigos de operao presentes na
memria e lida pela CPU para executar uma tarefa)


Hardware
(camada fsica)

58
A medida que a linguagem fica mais interativa ao programador, o
compilador (converte os cdigos da camada de linguagem em cdigos de
operao processados pelas CPU) necessita de ser mais complexo e portanto
mais lento (ou exigindo mais velocidade do processo envolvido)

Antes da edio de um programa, deve-se elaborar o algoritmo e se


necessrio o fluxograma (representando este algoritmo).

3.2) - Estruturas de programao

O formato do programa estruturado blocos padronizado e simples. Todo o


programa possui uma seqncia de instrues formando um sistema cclico (loop).
Toda linha de programao validade deve ser finalizada por ponto e vrgula.

declaraes; /* declaraes de variveis */

main () /* rotina principal obrigatria */


{
declaraes; /* declaraes do programa principal */
}

rotina1 /* sub-rotinas */
{
declaraes;
}
.............
rotina N
{
declaraes;
}

Condicional IF:
Testa uma condio, realizando-a se verdadeira. Caso contrrio, ou sai da
estrutura ou executa a declarao contida na estrutura 'else'

if (estrutura de teste)
{
declaraes /* para uma declarao simples no necessrio { }
}
else /* no obrigatrio */
{
declaraes
}

59
Ex:

if (teste = = a+b)
{
c = 1;
d = ++;
}
else
c = 2;

Podemos ter estrutura de if dentro de outras estruturas condicionais (if aninhados)

Ex:

if (a = = 5)
teste = 1;
else
if (a = = 7)
teste = 2;
else
if (a = = 9)
{
teste = + +;
a=--;
}

Condicional FOR
Realiza uma determinada operao enquanto uma determinada condio
no for atendida.

for (inicial;condio;incremento) /*se estiver sem condio infinito */


{
declarao ;
}

Ex:

for (a=2; a < 101; a++)


{
teste = teste + a;
resultado = ++;
}

for (;;)
{

60
motor = desligado;
}

Condicional WHILE

Realiza uma operao enquanto uma determinada condio estiver sendo


atendida.

while (condio) /* se a condio for 1, o condicional infinito */


{
declarao; /* se houver apenas uma declarao no necessrio {} */
}

Ex:

soma = 0;
a = 0;
while (a < 101)
{
soma = soma + a;
a++;
}

Condicional DO / WHILE
Estrutura que realiza uma declarao enquanto houver alguma condi;co
seja atendida.

do
{
(declarao);
}
while (condio)

Ex:

do
{ b=++;
motor = ligado;
}
while (chave = ligada)

61
Condicional SWITCH
Testa uma varivel e executa um grupo de declaraes testando uma
condio particular.

switch (varivel)
{
case constante1:
{
(declaraes)
break;
}
case constante2:
{
(declaraes)
break;
}
case constante3:
{
(declaraes)
break;
}
}

3.3) Estrutura bsica da Linguagem Assembler:

A linguagem Assembler relaciona estruturas mnemnicas e pseudo-


instrues (diretivas) com cdigos de operao (linguagem de mquina). Por ser
uma representao direta dos cdigos de operao do microprocessador, permite
um total controle dos elementos fsicos de um sistema microprocessado (acesso a
registradores, posies absolutas de memria, controle de perifricos, etc.).

Campos bsicos de uma linha de Linguagem Assembler:

LABEL CDIGO DE OPERAO OPERANDO COMENTRIOS

Exemplo: MOV A,B ;carrega A com B

Campo Label: rotula um endereo do programa com o objetivo de facilitar as


instrues de salta do sistema (o compilador associa o nome do rtulo com o
endereo absoluto). O label tambm utilizado para nomear variveis do sistema
atravs da diretiva EQU (equate). O campo Label separado do cdigo de
operao atravs de um caracter de espao ou TAB.

Cdigo de Operao: estruturas mnemnicas relacionada com o cdigo de


operao real.

62
Operando: contem informaes de registros, valores numricos, labels ou
expresses numricas que complementam o mnemnico.

Ex.:1) mov a,#05

2) VALOR_CTE equ 05
...
add a,#VALOR_CTE

3) mov dptr,#04ffh + 1

4) mov a,#8 AND 1

Comentrios: explicao de um procedimento com o objetivo de esclarecer o


funcionamento de determinada parte do programa. Normalmente o comentrio
vem seguido do smbolo do ponto e vrgula.

3.4) - Tcnicas para programao Assembler:

importante adotar um claro e consistente estilo na programao em


linguagem Assembler. Este procedimento fundamental particularmente quando
se trabalha em equipe, pois os diversos programadores precisam estar
sincronizados na forma de trabalho. Adotando-se alguns procedimentos bsicos
para a execuo do trabalho facilita no apenas o trabalho em equipe como a
programao de um nico programador, pois agiliza a produo e possveis
correes do programa.
Normalmente estes procedimentos so padronizados por processos de
controle de qualidade que as empresas ou programadores adotam.

3.4.1) - Labels e utilizao de EQUATES:

A utilizao de expresses identificadores de endereos das linhas de


programao (seguida de : ) ou de nmeros / endereos (com EQU) facilitam a
documentao e compreenso do programa, agilizando a programao e
principalmente o reparo / manuteno do sistema. A substituio do valor real do
Label (varivel / endereo) providenciada pelo processo de compilao. Deve-
se procurar utilizar nomes dos labels que sejam mnemnicos para as funes
realizadas.

Ex.:

PILHA EQU 60H


TIMEH0 EQU 30H ;TEMPO DE 10 MSEG NO TIMER0
TIMEL0 EQU 0C0H
PROG_IN EQU 10000010B ;PROGRAMA IE
PROG_T0 EQU 00000001B ;PROGRAMA TMOD
63
ORG 0
RESET0: JMP INICIO

ORG 0BH
JMP LE_IO

ORG 30H
INICIO: MOV SP,#PILHA
MOV IE,#PROG_INT
MOV TMOD,#PROG_T0
MOV TH0,#TIMEH0
MOV TL0,#TIMEL0
SETB TR0
CALL INICIA_DSP
...
;SUBROTINAS
;INICIALIZA DISPLAY LCD
INICIA_DSP: ....
RET

;SUBROTINA INTERRUPCAO
LE_IO: ...
RETI

3.4.2) - Comentrios:

As linhas de comentrios, normalmente precedidas por ponto e vrgula,


devem ser utilizadas para indicar, ao programador, as funes bsicas da rotina
em questo e de determinadas instrues. Seu uso no deve ser indiscriminado
(indicando situaes obvias e redundantes) mas sim esclarecer a funo das
rotinas comentadas. As estruturas de deciso (utilizando JZ, JNZ, CJNZ, DJNZ,
etc) devem sempre estar objetivamente comentadas.

Os programadores e empresas mais capacitadas normalmente


estabelecem formatos para os comentrios, de tal forma a padronizar a
documentao. Um exemplo sempre existir um comentrio no incio do
programa descrevendo a funo do programa de forma genrica, as interrupes
utilizando, histrico de alteraes, datas, programadores envolvidos, pendncias,
etc. Cada sub-rotina deve ser acompanhada de um cabealho contendo:
- Descrio objetiva da rotina.
- Parmetros de entrada
- Parmetros de sada
- Registradores alterados / utilizados

Exemplo:

;***********

64
;* ROTINA EXEMPLO - F.C.I MACKENZIE
;*
;* Data Incio: 01/03/2000
;* Programadores: Jos, Joo e Maria
;* Descrio: esta rotina tem como funo exemplificar a forma de
documentao
;*
;* Histrico de Alteraes:
;* 01/03 -> inicio da programao.
;*
;* Pendncias:
;* - Melhorar rotina de clculo do CheckSun
;*
;************
;***
;* REA DE LABELS
;***
...
...
;*** INCIO DAS SUBROTINAS

;*** ROTINA DE ESCRITA NO DISPLAY


;*
;* DESCRIO: rotina com a funo de escrever os dados da memria pr-
estabelecida no DSP
;*
;* Parmetros de Entrada: End. 50h-5fh -> primeira linha DSP
;* Parmetros de Sada:
;* Registradores alterados: Acc, DPTR, R0
;*
;* Histrico de alterao:
;* Incio: 01/03/2000
;*
;***

ESCR_DSP: ...
RET

3.4.3) - Salvamento de Registradores na Pilha:

Para a correta estruturao do programa fundamental garantir que uma sub-rotina


no venha a interferir o funcionamento de outras rotinas no programa. Esta transparncia
garantida pelo controle dos registradores alterados na rotina e seu devido salvamento na
pilha quando no se tratar de registradores utilizados para passagem de parmetros de sada.
Portanto, necessrio a utilizao das instrues PUSH e POP para garantir a integridade
dos registradores alterados.

Exemplo:

65
;*** SUBROTINA DE RECEPO SERIAL
;*
;* Descrio: rotina acessada pela interrupo serial. L SBUF, carregando o dado no
;* endereo 30H se o mesmo for diferente de 00.
;* Registradores de Entrada: SBUF
;* Registradores de Sada: 30H
;* Registradores alterados: ACC, PSW

LESERIAL: PUSH ACC


PUSH PSW

MOV A,SBUF
CJNE A,#00,CONT1
MOV 30H,A
CONT1: POP PSW
POP ACC
RETI

3.4.4) - Utilizao de Sub-rotinas:

O princpio bsico da programao estruturada e bem feita a diviso do programa


em sub-rotinas, dividindo a soluo para facilitar a obteno do algoritmo de cada parte do
programa. A diviso do programa tambm auxilia na diviso de tarefas e procedimento de
testes de cada parte do programa. A idia bsica a mesma quando temos um grande
problema para resolver e o dividimos para facilitar a soluo final.
O conceito de sub-rotina tambm est ligado ao fato de muitas vezes possuirmos
estruturas repetitivas no programa (por exemplo: diversas vezes temos a necessidade de
escrever mensagens no display). Se colocarmos estas estruturas em sub-rotinas e a
acessamos todas as vezes que necessitamos desta funo, claro que existir uma grande
economia de cdigos de programao.
As sub-rotinas podem estar ligadas ao sistema de interrupo. Neste caso, sua
funo est ligada diretamente a caracterstica da prpria interrupo. Ex.: a interrupo
serial est ligada a funo de receber e transmitir dados seriais.
No planejamento do programa devemos dividir o programa em rotina principal, sub-
rotinas de interrupo e sub-rotinas genricas. Cada um destes blocos poder ser criado e
testado separadamente (inclusive com auxlio de programas de LINK / LOCATE),
existindo no final apenas um teste final interligando todas as rotinas.

3.4.5) - Organizao do Programa:

Normalmente os programas so ordenados da seguinte forma:

- Comentrio Inicial
- rea de Labes (equates)
- Vetores e chamada de Interrupo
- Programa Principal (normalmente em loop)
- rea de Sub-rotinas genricas.

66
- rea de Sub-rotinas de interrupo.
- rea de tabelas (DB, DW, etc.)

O algoritmo do programa dever ser estruturado baseado na ordem acima.

3.5) - Endereamento dos operandos 8051

Instruo: cdigo binrio composto de 1 ou mais bytes com a funo de orientar


o processador a realizar uma tarefa especfica. Estes cdigos sero lidos
seqencialmente da memria e, atravs da via de dados, entraro no
decodificador de instrues do microprocessador, gerando uma srie de sinais
internos e externos de controle.

Tamanho das instrues no 8085: podem ocupar 1, 2 ou 3 bytes de memria.


- 1 byte: o cdigo de operao j especifica completamente a funo da
instruo, no necessitando de complemento algum.

D7 D6 D5 D4 D3 D2 D1 D0 -> cdigo de operao

Ex: MOV B,A (desloca o dado do acumulador para o registrador B) -> no


necessita de complemento

Cdigo de operao -> 01000111 - 47H

- 2 bytes: necessita de 1 byte de complemento

D7 D6 D5 D4 D3 D2 D1 D0 -> cdigo de operao

D7 D6 D5 D4 D3 D2 D1 D0 -> segundo byte de compl.

Ex: MVI A,07 (carrega o acumulador com o dado 07)

Primeiro Byte (cd. operao) -> 00111110 - 3EH

Segundo Byte (complemento) -> 00000111 - 07H


- 3 bytes: necessita de 2 bytes de complemento

D7 D6 D5 D4 D3 D2 D1 D0 -> cdigo de operao

D7 D6 D5 D4 D3 D2 D1 D0 -> primeiro complemento

D7 D6 D5 D4 D3 D2 D1 D0 -> segundo complemento

Ex: LXI H,2000H (carrega H com 20H e L com 00H)

Primeiro Byte (cd. operao) -> 00100001 - 21H

Segundo Byte (primeiro compl.)-> 00000000 - 00H

Terceiro Byte (segundo compl.)-> 00000010 - 20H

67
Modos de endereamento do 8051:

Direto: o dado do operando indica o endereo de transferncia do


dado.

Ex: MOV A,50H ; o dado do endereo 50H da RAM interna do


8051 transferido para o acumulador

Registrador: o dado do operando Rn transferido para o destino.

Ex: MOV A,R6 ; o dado do registrador R6 transferido


para o acumulador

Imediato (#dado): o dado seguido de # transferido para o destino

Ex.: MOV R1,#70H

Indireto (@Rn): o dado armazenado no endereo da memria com


endereo guardado no registrado Rn transferido para o destino

Ex.:
MOV R0,#50H ; o dado 50H carregado em R0
MOV A,@R0 ; o dado do endereo 50H carregado no acumulador.

3.6) - Estrutura e diretivas da Linguagem Assembler:

Um programa em assembler composto basicamente de comentrios,


cdigos de operao, operandos, pseudo-instrues (diretivas) e labels.

Os comentrios so sempre precedidos de ponto e vrgula e tem a funo


de documentar o programa, esclarecendo funes e procedimentos.

O "label" (rtulo) pode ser de 2 tipos: quando seguido de ':', determinada


com um nome um determinado endereo. Quando seguido da expresso
EQUATE (EQU), associa um nome a uma constante.
Uma linha de programao em Linguagem Assembler completa possuiu a
seguinte estrutura:

LABEL: CDIGO DE OPERAO OPERANDO ;COMENTRIO

Ex:
INICIO: MOV SP,70H ;CARREGA SP COM END. DA PILHA
------ ------- --------------------
label cd.oper. operando comentrio

As pseudo-instrues (diretivas) so instrues especiais, no codificveis


(para linguagem de mquina), com o objetivo de melhorar a estrutura do programa
e facilitar o processo de programao. As diretivas mais utilizadas so:

- ORG (origem): indica endereo inicial da memria onde devem ser


armazenadas as instrues posteriores. Um programa pode possuir mais de uma
diretiva ORG.

68
- EQU (equate): define equivalncia entre nomes (labels) de dados ou
endereos que sero substitudos no processo de compilao para se obter os
cdigos executveis finais. Tem a funo de otimizar possveis alteraes nos
dados e endereos nomeados pelo EQU.

- DB (define byte): define valor a ser colocado na memria

- DS (define espao): define nmero de espaos reservados na memria


para posterior utilizao.

- END: finaliza a edio do programa.

3.7) - Ferramentas de Desenvolvimento do Programa em Linguagem


Assembler:

- Edio: utilizar o programa EDIT (DOS) ou BLOCO DE NOTAS. Se


utilizar WORD ou WORDPAD salvar arquivo como TXT
- Compilao: ASM51 <nome.asm> . Gera arquivos .OBJ e .LST
- Converso OBJ para HEX: OH <nome.hex> to <nome.obj>
- Simulao: AVSIM51 (com o arquivo nome.hex) ou SIM535
- Gravao de EPROM ou memria flash (8951).

- Compilao do programa fonte: atravs do compilador ASM51, convertemos


as instrues contidas no editor para linguagem de mquina. Este programa gera
dois arquivos:

NOME.LST -> arquivo imprimvel onde sero guardadas as mensagem dos


possveis erros gerados pelo compilador. Este arquivo deve ser sempre acessado
em caso de deteco de erros.
NOME.HEX -> programa a ser simulado e gravado em uma ROM.

Ex: "ASM51 TESTE1.ASM"

- Conversor: pelo fato do simulador e o processo de gravao de EPROM utilizar


normalmente um arquivo tipo HEX, faz-se necessrio a presena do programa OH
para converter este arquivo .OBJ para .HEX.

A estrutura da chamada de OH a seguinte:


'OH <nome.obj> TO <nome.hex>'

- Simulao do programa fonte: pode ser realizado atravs do simulador


'AVSIM51' da AVOCET ou qualquer outro programa de simulao disponvel como
o EMUL8051 (ver a rea de FERRAMENTAS em www.ivair.com.br) ou SIM535.

69
Figura - Simulador Avocet (www.ivair.com.br)

Figura - Simulador EMUL8051 (www.ivair.com.br)

3.7) - Cdigos de operao do microcontrolador MCS-51:

Com o objetivo de introduzir as instrues do 8051 da forma mais didtica


possvel, os 256 mnemnicos so dividos em 5 grupos: instrues de

70
transferncia de informao, aritmticas, lgicas, transferncia de controle e
booleana. Todo o conjunto de instrues e seu significado podem ser obtidos no
Manual ATMEL MICROCONTROLLERS 8051 HARDWARE MANUAL (ver em
www.ivair.com.br / ferramentas). As principais tabelas so colocadas no anexo
desta apostila. A seguir so colocadas apenas as principais instrues para as
primeiras prticas.

3.6.1) - Instrues de transferncia de informao:

- MOV A, 30H
- MOV A,# 30H
- MOV A, R0
- MOV A,@ R0
- MOV 50H, 40H
- MOVX A, @ DPTR
- MOVC A,@A+DPTR
Exemplo:

Editar, compilar e simular (avsim51 ou emul8051) o seguinte programa:


; PROGRAMA EXEMPLO DE INSTRUES DE TRANSFERNCIA DE INFORMACAO
; EDITAR NO PROGRAMA NO BLOCO DE NOTAS -> EXEMPLO1.TXT
; COMPILAR -> ASM51 EXEMPL1.TXT
; SIMULAR NO AVSIM51 OU EMUL8051 OBSERVANDO A MOVIMENTAO DE DADOS

; LABEL
PILHA EQU 60H

;INICIO DA CODIFICACAO
ORG 0 ;POSIO INICIAL DO PROGRAMA

INICIO: MOV SP,#PILHA


MOV A,# 41H
MOV R0,#30H
MOV R1,#40H
MOV R2,#02
MOV R3,#03
MOV R4,#04
MOV R5,#05
MOV R6,#06
MOV R7,#07
MOV DPTR,#2000H
MOV @R0,A ;ARMAZENA DADO DO ACC NA MEMRIA (30H)
MOVX @DPTR,A ;DADO DO ACC NA MEMRIA EXTERNA (2000H)
MOV DPTR,#TABELA
MOV A,#00
MOVC A,@A+DPTR ;LE TABELA
MOV @R1,A ;GUARDA DADO DA TABELA NA MEMRIA
JMP INICIO

;TABELA
TABELA: DB 42H

END

71
Resultado da compilao

Figura - Simulador AVSIM com o resultado do EXEMPLO1.TXT

Figura - Simulador EMUL8051 com o resultado do EXEMPLO1.TXT

72
Exerccio

Carregar o dgito verificado do seu cdigo de matricula nos registrados R3, R4, na
memria interna 50H, na memria externa 1000H. Criar uma tabela com o cdigo
ASCII da primeira letra do seu nome e carreg-lo na memria externa 1050h.
Simular o exerccio no simulador do laboratrio.

3.6.2) - Instrues Aritmticas e Lgicas:

- ADD A,#07
- SUBB A,R7 ; SUBTRAI TAMBEM O CY
- MUL A,B ; RESULTADO MSB -> B e LSB -> ACC
- DIV A,B ;
- INC 40H
- DEC R3
- ANL A,@R1
- ORL A,#0FH
- XLR A,@R0
- CPL A
- RR A
- RLC A ;DESLOCAMENTO A ESQUERDA COM CY.

Exemplo:

Editar, compilar e simular (avsim51 ou emul8051) o seguinte programa, utilizando


o valor 55H no port P0:

;EXEMPLO2 - INSTRUCOES LOGICO / ARITMTICAS

pilha equ 50h


memext equ 1000h
result equ 30h

org 0
inicio: mov sp,#pilha ;define pilha interna
mov dptr,#memext ;define ponteiro de memria externa
mov a,#55h
loop: mov a,P0 ;le o valor de P0
mov r0,#05h
mov r1,#result
add a,r0
mov @r1,a ;guarda resultado da soma
inc r1
mov r0,#02h
subb a,r0
mov @r1,a
inc r1
mov b,#6fh
mul ab
mov @r1,a
inc r1
mov @r1,b
inc r1

73
mov b,#02h
div ab
mov @r1,a
inc r1
;* rotina lgica
mov a,#0ffh
mov r0,#0ah
anl a,r0
mov @r1,a
inc r1
mov r0,#0a5h
orl a,r0
mov @r1,a
inc r1
xrl a,r0
mov @r1,a
inc r1
mov a,#0a5h
cpl a
swap a
mov @r1,a
inc r1
rl a
rl a
rr a
mov @r1,a
jmp loop

END

Figura - Simulao do programa EXEMPLO2.TXT

74
VERIFICAO (C)

Exerccio
1) - Carregar o dado do PORT P1 nos registradores internos R0-R7 do terceiro
banco.

2) - Somar o dado do endereo 30H da memria interna com o dado 30H da


memria externa. Complementar o resultado e fazer uma operao AND com o
dado do PORT P1. Guardar o resultado no endereo 50H da memria interna.

3.6.3) - Instrues de Transferncia de Controle e Booleanas:

- JMP 1050h ; carrega PC com o endereo longo 1050h


- JNZ ON_FAN
- JZ OFF_FAN

- CALL rotina
- RET
- RETI

- PUSH ACC
- POP ACC

- CJNE A,#7Ah,SALTO

- DJNZ R3,LOOP

Instrues que envolvem processamento booleano so tpicas de sistemas


de controle. Muito comuns em operaes de controle onde ligamos/desligamos
equipamentos (motores, solenides, lmpadas, leds, etc) ou lemos entradas
(chaves, sensores, etc) que esto ligados/desligados. Os bits do sistema se
localizam em duas reas: rea boolena da RAM interna (20H-2Fh, ou bits 0 a
127) e bits dos registradores especiais (SFR). Os bits da rea boolena podem ser
designados de 2 formas:

- 20.0 ou 0-> primeiro bit do primeiro byte da rea boolena


- 2F.7 ou 7F-> ltimo bit do ltimo byte da rea boolena

Os bits dos registradores especiais (SFR) podem ser designados pelos


nomes do registrador endereado pela posiao no bit ou pelo prprio nome do bit:

- PSW.7 ou Cy-> bit carry do flag

O bit Cy (ou simplesmente C) bastante utilizado nas instrues boolenas.

- CLR C
- CLR MOTOR
- SETB RELE
- CPL LED
- JNC LIGA_LED
- JB CHAVE,LIGA_VEN

75
Exemplo 3

Piscar 2 leds com intervalo de tempo de 0,5 segundos (2 Hz) localizados em P3.4
e P3.5. Procurar verificar o funcionamento deste programa no kit de
desenvolvimento. Observar os valores salvos na pilha com endereo inicial 70H

; EXEMPLO 3
; PISCA LED 1 (P3.4) E LED 2 (P3.5) COM FREQUENCIA DE 2 HZ

LED1 BIT P3.4


LED2 BIT P3.5
PILHA EQU 70H

ORG 0

INICIO: MOV SP,#PILHA


LOOP: CLR LED1
CLR LED2
MOV A,#0ABH ;CARREGA A PARA VERIFICAR PILHA
CALL TEMPO05
SETB LED1
SETB LED2
CALL TEMPO05
JMP LOOP

;SUBROTINA

TEMPO05: PUSH ACC ;SALVA ACUMULADOR NA PILHA


MOV R0,#0FFH
LOOP2: MOV R1,#0FFH ;CARREGA REGISTRADORES DE TEMPO
LOOP1: NOP ;INSTRUCAO DE 1 MICROSEGUNDO (12 MHZ)
NOP
NOP
NOP
NOP
DJNZ R1,LOOP1 ;TEMPO LOOP1 -> 7useg X 255 = 1.8 mseg.
DJNZ R0,LOOP2 ;TEMPO LOOP2 -> 1.8 X 255 = 0,45 SEG
POP ACC
RET

END

76
Figura - Simulao no AVSIM51 do EXEMPLO3

Exemplo4:

; EXERCCIO
; CLP para controle de 2 motores atravs de 2 botoeiras
; Sensor de corrente para indicar sobre-corrente
; "debouced" das botoeiras de 15 msegundos.
; botoeira liga / desliga motores

MOTOR1 BIT P1.0


MOTOR2 BIT P1.1
BOTOEIRA1 BIT P1.2 ;ATIVA EM NVEL 0
BOTOEIRA2 BIT P1.3 ;ATIVA EM NVEL 0
SENSOR BIT P1.4 ;SOBRE-CORRENTE NVEL 1
PILHA EQU 60H

ORG 0
INICIO: MOV SP,#PILHA
LOOP: CALL DESLIGA ;DESLIGA SAIDAS

;INICIA COM MOTORES DESLIGADOS


;LE BOTOEIRA 1
LOOP1: JB SENSOR,LOOP ;SE SOBRE-CORRENTE
DESLIGA
JB BOTOEIRA1,SALTO1
CALL TEMPO15 ;15 MSEGUNDOS
JB BOTOEIRA1,LOOP1 ;SE RUIDO VOLTA
CPL MOTOR1 ;INVERTE MOTOR1

77
;LE BOTOEIRA 2
SALTO1: JB SENSOR,LOOP ;SE SOBRE-CORRENTE
DESLIGA
JB BOTOEIRA2,SALTO2
CALL TEMPO15
JB BOTOEIRA2,LOOP1
CPL MOTOR2 ;INVERTE MOTOR2
JMP LOOP1

;SUBROTINAS

TEMPO15: MOV 30H,#07


LOOPT2: MOV 31H,#255
LOOPT1: NOP
NOP
NOP
NOP
NOP
DJNZ 31H,LOOPT1
DJNZ 32H,LOOPT2
RET

DESLIGA: CLR MOTOR1


CLR MOTOR2
RET

END

Verificao (C)

Exerccios

1) - Carregar a memria RAM interna booleana (20H-2FH) e byte (30H a 7FH) do


8051 com o dado AAH. Simular o programa no AVSIM51.
2) - Idem para uma rea de memria RAM externa entre 8000H e FFFFH. Simular
o programa no AVSIM51

3) - Fazer um rotina para piscar um led (P3.4) com intervalo de 10 segundos.


Idem para 5 e 30 segundos. Simular o programa no AVSIM51. Verificar o
funcionamento no KIT do Laboratrio.

4) - Ligar um rele (P3.5) se uma chave (P3.2) estiver em 0 e desligar se a chave


estiver em nvel alto. Simular o programa no AVSIM51.

5) Projetar um sistema mnimo com o 8051 para um sensor fotoeltrico (P3.2)


ligar 8 lmpadas (port P1) 1 minuto apos o sensor indicar condio de escuro e
desligar 1 minuto aps o sensor indicar claridade. Simular o programa no
AVSIM51 e se possvel verificar no kit do laboratrio (utilizar a rea de expanso
para montar os leds).

78
6) - Projetar um sistema de alarme com o 8031 com as seguintes caractersticas:
- Alarme com 1 chave liga/desliga (P3.2), 1 sensor ultra-snico (P3.3) e 1
buzina (P3.4)
- Cristal de 12 Mhz
- Reset automtico e manual
- Memria externa de programa 2764.
- Fazer um programa para ativar o alarme se a chave liga/desliga estiver
ativa. Monitorar o sensor de tal forma que se o mesmo indicar violao e 10
segundos depois de verificado a chave liga/desliga (no caso de alarme ter sido
desligado pelo dono), se o mesmo ainda estiver ativado, disparar a buzina e
deslig-la apenas se o alarme estiver desativado.

7) Idem para ligar a buzina por um perodo mximo de 5 minutos.


8) Idem para 8 sensores.
9) - Projetar um forno de micro-ondas com o 8051 com as seguintes
caracteristicas:

- Cristal de 12 Mhz
- Reset automtico
- Comunicao Serial
- Memria ROM de programa interna
- Entrada para chave da porta, 4 bits para o display de LCD
- Controle de teclado de 16 teclas atravs de 8 bits e de 1 chave de incio
de operaao.
- Controle de 1 motor para o prato, lmpada de iluminao interna e 1
vlvula de microondas.
- Firmware ativando o motor, a lmpada e a vlvula se forem acionada a
tecla de incio e se a porta estiver fechada.

10) - Fazer um projeto de uma mquina de lavar roupas utilizando o


microcontrolador 8031 com as seguintes caractersticas:

- 4 Kbytes de EPROM externa.


- Controle do rel de acionamento do motor principal, solenide para abrir a
vlvula de entrada de gua fria e gua quente, solenide para sada de gua,
solenide para sada de detergente e amaciante, 4 leds para indicaes gerais e 1
sonorizador.
- Entrada do sensor de nvel mximo de gua de 2 teclas de programao
para o usurio.
- Possibilidade de comunicao serial.

11) - Fazer um projeto de um FIRMWARE para o projeto acima com as seguintes


caractersticas:
- Inicializar o sistema desligando todas as sadas e acendendo o primeiro
led indicando espera de programao.
- Esperar a primeira tecla de programao estar ativada. Quando estiver,
ligar o solenide para gua fria ou quente, dependendo da condio da segunda
tecla de programao. Aguardar indicao do sensor de nvel mximo de gua e
desligar o solenide em questo.
- Acionar solenide para sada do detergente e amaciante por 1 minuto.
- Ligar o motor principal por 15 minutos.
- Abrir a vlvula de sada de gua por 5 minutos.
- Acionar led de fim de operao e acionar o sonorizador por 5 segundos.

79
4) - Display LCD programvel
Planejamento (P):

Este captulo capacitar o aluno a:

- Projetar interfaces com displays de LCD (segmentos e mdulos) com acesso


atravs de ports ou com endereamento de memria.
- Utilizar rotinas de configurao e escrita em displays de LCD.
- Projetar CLP utilizando ports e mdulos de LCD.

Execuo (D):

Links:

http://www.intech-lcd.com.hk/
www.displaytec.com.br

4.1) - Display LCD com acionamento direto nos segmentos

Composto de 3 camadas (2 de vidro e o lquido cristal lquido no meio). A


camada superior possuiu a impresso dos segmentos ativos ligados a pinos
individuais. A camada inferior de vidro compe o polarizador (ligados a pinos de
controle) normalmente ligado a um sinal alternado entre 30 Hz e 100 Hz.

Para acender o segmento especfico, basta ligar o segmento com potencial


invertido em relao ao polarizador. Em funo desta caracterstica, comum a
utilizao de chips de controle ou um firmware dedicado a gerar as funes
necessrias pelos ports.

Exemplo: Decodificador BCD - LCD (4056)

80
Figura - Decodificador 4056 (STM)

Figura - Display LCD 3 e caracteres (Intech)

81
4.2) - Mdulo de Display LCD:

Atualmente esto disponveis no mercado uma grande variedade de


Displays de Cristal Lquido com circuitos de controle e processamento interno que
visam facilitar o projeto de hardware e a rotina de programao destes tipos de
dispositivos de sada.
A figura a seguir mostra os principais controles destes tipos de displays:

Figura -Arquitetura bsica dos displays L.C.D.

Figura - Display 16 x 2 (www.displaytec.com.br)

Descrio dos sinais:

- D0-D7: barramento de dados com dupla funo: envio dos comandos de


programao do display (posicionamento do cursor, endereo do caracter a ser
utilizado, etc.) e dos dados a serem escritos no display.
_
- C/D (RS): em nvel baixo, indica que o barramento de dados D0-D7
carrega a informao de controle (configurao geral do display). Em nvel alto,

82
informao de dados (informao a ser mostrado no display). Sinal normalmente
ligado ao endereo A0 (endereo mpar -> dado; endereo par -> controle)
- E: sinal que em nvel alto habilita o display. Nos modelos com 4 linhas,
utilizamos um sinal E1 para a habilitao das 2 primeiras linhas e um sinal E2 para
a habilitao das 2 ltimas linhas.
_
- R/W: sinal de entrada indicando em nvel baixo processo de escrita
(barramento de dados como entrada) e em nvel alto processo de leitura
(barramento de dados como sada).
- Vo: entrada de tenso para controle de luminosidade do display
- Vss/GND: entrada de alimentao nica de +5 Vcc.

Comercialmente, citamos abaixo alguns dos modelos disponveis:

- Display 8 caracteres x 1 linha, caracter com 7 pontos verticais e 5 pontos


horizontais
- Display 16x1, caracter 8x5
- Display 16x1, caracter 11x5
- Display 16x2, caracter 8x5
- Display 20x2, caracter 8x5
- Display 20x4, caracter 8x5
- Display 40x1, caracter 8x5
- Display 40x2, caracter 8x5
- Display 40x4, caracter 8x5
Para display de 40 x 2 ou 40 x 4 temos 2 sinais de seleo Enable (E).

83
Figura 2.5 - Display 40 x 4 (www.displaytec.com.br)
4.3) - Sistema mnimo com o display L.C.D. :

Figura - Sistema mnimo display L.C.D com endereamento de memria

84
Figura - Sistema Mnimo com o display L.C.D. utilizando Ports

Verificao (C):

Exerccios:

1) - Projetar uma interface com mdulo de LCD 20 x 2 utilizando endereamento


por memria E000-FFFFh

2) - Utilizando um microprocessador 2051 (www.atmel.com) com 2 ports, projetar


uma interface LCD com displays 40x4

Ao (A):

- Havendo problemas no resultado dos exerccios propostos, estudar o conceito de


mdulo de LCD (ver bibliografia bsica).

4.4) - Programao Mdulo do Display:

4.4.1) Controle (C/D = 0)

Com o sinal C/D colocado em nvel baixo temos a configurao bsica do


display. Os principais comandos so listados abaixo:

- Configura display para 1 linha (8 bits) -> 30H


- 2 linhas (8 bits) -> 38H
85
- Display ativado com cursor fixo -> 0EH
- Display ativado com cursor intermitente -> 0CH
- Cursor apagado -> 08H
- Mensagem com deslocamento esquerda -> 07H
- Mensagem com deslocamento direita -> 05H
- Cursor com deslocamento esquerda -> 04H
- Cursor com deslocamento direita -> 06H
- Limpa display e retorna o cursor -> 01H
- Desloca somente cursor esquerda -> 10H
- Desloca somente cursor direita -> 14H

Exemplo:

1) - Inicializar display com 2 linhas, ligado com cursor intermitente, deslocamento


esquerda e limpando o display.

;* PRIMEIRA MANEIRA DE IMPLEMENTAR UMA INICIALIZAO

MOV DPTR,#00 ;COLOCA END.A0 (C/D) = 0 -> CONTR.


MOV A,#38H ;2 LINHAS
MOVX@DPTR,A
CALL TEMPO15 ;ESPERA 15 MSEG.
MOV A,#0CH ;DISPLAY INTERMITENTE
MOVX@DPTR,A
CALL TEMPO15
MOV A,#05H ;DESLOCAMENTO A DIREITA
MOVX@DPTR,A
CALL TEMPO15
MOV A,#01H

2) - Idem para 1 linha, sem cursor, deslocamento direita e limpando o display.

Para o posicionamento do cursor/mensagem dentro do display basta


fornecermos como comando o endereamento da tabela de endereamento do
display fornecida abaixo:

1P 2P 3P ...... 39P 40P

1 L -> 80H 81H 82H A6H A7H


2 L -> C0H C1H C2H E6H E7H

2) - Posicionar o cursor no meio da primeira linha do display de 20 caracteres.

86
4.4.2) Programao de Dados (C/D = 1)

Para a escrita de dados no display, colocamos o comando C/D em nvel


ALTO (endereo impar). O display necessita ser inicializado e o cursor
posicionado na posio do primeiro caracter. Uma vez posicionado este caracter,
automaticamente o display incrementa a posio do cursor, no necessitando de
reprogramaes constantes do posicionamento do display.

Verificao (C):

Exerccios:

1) - Escrever a palavra ENGENHARIA MACKENZIE no centro da primeira linha


de um display 2 x 16.

2) - Escrever seu nome completo (abreviado se necessrio) centralizado na


primeira linha e seu cdigo de matrcula centralizado na segunda linha.

3) - Fazer um projeto de um sistema com o 8031 com um display de 32


caracteres, RAM de 8Kbytes 6264 (endereo 2000h - 3fffh) e EPROM de 8kbytes
2764. Utilizar o endereo 0001H para acesso os registros de dado do display e o
endereo 0000H para controle. Fazer uma rotina para escrever na primeira linha a
palavra 'ENGENHARIA' e na segunda a palavra 'MACKENZIE'.

4) Piscar com intervalo de 1 segundo as mensagens:

NOME TURMA
CODIGO SALA

87
Lista de Exerccios Microprocessadores

Utilizando o microcontrolador 89S51 (cristal 12 Mhz, reset automtico / manual):

1) Projetar um sistema para controlar 2 leds atravs de 2 chaves (chave ligado,


led ligado). Piscar os 2 leds no incio.
2) Pesquisar o projeto acima utilizando o PIC10F200.
3) Projetar um CLP para controle de 4 motores atravs de 1 botoeira LIGA.
Ligar os motores sequencialmente com intervalo de 5 segundos entre cada
acionamento. Se for acionada outra botoeira DESLIGA, desligar imediatamente
os 4 motores.
4) Projetar um semforo de 1 cruzamento de 2 vias (2 semforos com 3
lmpadas cada). Prever o verde ficar acionado 30 segundos para cada lado e o
amarelo ficar ligado 5 segundos.
5) Fazer um controle de nvel de reservatrio com 1 motor de pressurizao de 5
HP para elevar a gua do nvel do solo at o vigsimo andar de 1 prdio, 1 bia de
nvel mximo e 1 bia de nvel mnimo. Deixar o reservatrio entre o nvel mximo
e mnimo. Colocar um LCD neste projeto (endereo 0-1fffh). Escrever CHEIO ou
VAZIO de acordo com a situao
6) Fazer um controle de iluminao de 1 andar comercial com 4 salas com 1
lmpada em cada e 4 sensores de presena. Se houver pessoas dentro das
salas ligar as lmpadas da respectiva sala.
7) Fazer um CLP para controlar um aqurio com as seguintes caractersticas: 1
sensor de temperatura (indicando 1 para nvel acima de 20 graus e 0 para nvel
acima de 20 graus), 1 aquecedor, 1 detector de nvel baixo, 1 detector de nvel
alto, 1 vlvula solenide para encher gua, 1 buzina, 1 sensor de PH (em nvel
alto indicando alcalino e em nvel baixo indicando cido / neutro) e 1 LCD
(endereo e000h ~ ffffh). Ligar a comunicao serial em um modem. Fazer um
firmware para:
Ligar / desligar o aquecedor a partir do sensor de temperatura.
Tocar o buzzer de forma intermitente (ligado 0,5 segundos e desligado 0,5
segundos) se o sensor de PH indicar alcalino.
Se o nvel da gua estiver baixo acionar o solenide de enchimento at a
gua atingir o nvel mximo.

8) Fazer um alarme com chave liga / desliga, 8 sensores de presena, 2 buzinas


e 1 modem GSM. Ligar a buzina por 5 minutos se qualquer sensor indicar invaso
(esperar 10 segundos para disparar as sadas).

9) Fazer uma seqencial de 16 leds e uma botoeira de inicio. Se a botoeira for


acionada (confirmar o acionamento lendo a mesma botoeira depois de 15
msegundos) ligar sequencialmente os leds por 200 msegundos cada um. Para se
for novamente acionada a botoeira.

88
SEGUNDO TRABALHO DE MICROPROCESSADORES

Fazer um projeto de um CLP com microcontrolador 89S51 ou LPC935,


memria RAM externa de 32 Kbytes e display. Utilizando as entradas /
sadas (ports) caracterizar o produto final (ex: alarme, controle de
iluminao, semforo, controle de nvel em tanques, etc.). Entregar o
firmware no formato LST com comentrios explicando o funcionamento do
produto.

89

Anda mungkin juga menyukai