Você está na página 1de 98

www.mackenzie.com.

br

APOSTILA
MICROPROCESSADORES I EEUPM

PRIMEIRO SEMESTRE 2011


PROF. IVAIR REIS N. ABREU
05 / 2011

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
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.

18/02 27/05
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 e Arquitetura LPC935
2.3. Sistema Mnimo 8051 / LPC935.

3. Linguagem Assembler 8051.


3.1. Definio do Cdigo de Operao de Instrues e Mneumnicos do 8051.
3.2 Instrues de Tranferncia de Informao, Aritmtica, Lgica, Transferncia
de Controle e Booleana.
3.3. Estudo de rotinas tpicas de controle: rotinas de tempo, escrita e leitura
de perifricos, memrias, etc.
3.4 Linguagem C aplicada a microcontroladores (8051)

4. Projetos de Sistemas Prticos com Microntroladores:


4.1. Alarme residencial / Controle de Iluminao / Automao Industrial.

5. 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 - 08/04

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

3
Mdia > 7 -> aluno aprovado
5,5 < mdia < 6.9 -> aprovado se presena as aulas for maior que 80%

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: 18/02
Trmino: 27/05
Prazo entrega final das notas: 16/05
Falta Prevista:
Reposio: ----
Feriado: ---
Aulas Previstas: 15 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 multimdia 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.

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:

7
- 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.
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.

8
Em microcontroladores estes perifricos so menos complexos, como PORTS, TIMERS,
UARTS, CONVERSORES A/D e D/A, SPI / I2C, etc.

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 50 milhes de chaves eletrnicas (os primeiros processadores tinham um
pouco mais de 10 mil transistores) com espaamento de 130 nm entre os componentes.
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.

9
Processador Pentium 4 com 50 milhes de transistores (130 nm)

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.
- 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

10
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

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

11
Figura - Pinagem e tabela da verdade 74LS373

1.4 - Barramento do Sistema Programvel

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.

12
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:

- 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.

13
- 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 2 n.
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)

Barramento SPI:

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

Exerccio - 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.

***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.

1.8) - Arquitetura do Microprocessador:

18
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:

Posies de memria internas (latchs tipo D) responsveis pelo armazenamento temporrio


de informaes gerais (registradores genricos) ou especficas.

19
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
---------------

Exerccios

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

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

2) - 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:

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 :

21
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.
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.

22
*** 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

- 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.

Exerccio

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


considerando:
Vcc = 5V, Vreset = 2/3 Vcc

23
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.

3) - 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

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 sub-rotina atravs de um sinal de hardware).

Exemplo -> Atendimento de 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).

24
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.

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.

25
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.

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

26
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:

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.

27
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 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.

28
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.

1.10) - Microprocessador 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.

29
Anlise da arquitetura interna e pinagens: ver data-book

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).

30
- 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:
- HOLDA: sada ativa em nvel alto indicando barramento em tri-state para o controlador
de D.M.A. ou para o microprocessador paralelo.

31
Sistema Mnimo com o 8085:

SKD85

Figura - Sistema Mnimo 8085

Exemplo:

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

32
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.

1.11 Microprocessadores Intel

Lista com os microprocessadores da Intel atualizada:

http://www.intel.com/pressroom/kits/quickreffam.htm

Processadores INTEL -> http://www.intel.com/index.htm?pt_BR_01

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

http://pt.wikipedia.org/wiki/Categoria:Microprocessadores_da_Intel

Cronologia -> http://www.intel.com/pressroom/kits/quickrefyr.htm

Histria -> http://download.intel.com/pressroom/kits/IntelProcessorHistory.pdf


Novos Processadores Intel -> http://ark.intel.com/

Tabela Comparativa -> http://www.tomshardware.com/charts/processors,6.html

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

1.12 Sistemas Complementares de Sistema Programveis - Microcontroladores

1.12.1) 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).

34
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.

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

1.12.2 - Perifricos Embarcados

Ports

35
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.

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).

Timers - Temporizadores

Contadores de tempo gerando interrupes / eventos temporizados no Microcontrolador.


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

36
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

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

37
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)

38
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 X
Sistema Aberto
(BIOS + SO +
Aplicativo)
Anlise de X
Sinais - Sistema
Dedicado
(Firmware)
Controle X
Booleano / Sinal
Analgico de
baixa 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

Quadro comparativo entre Microprocessadores / Microcontroladores

39
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.

Arquitetura do Microcontrolador 8051:

40
Figura - Arquitetura MCS-51 (fonte: Intel)

Arquitetura funcional

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

41
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:

- P3.0: RxD (recepo serial) / port P3.0


- P3.1: TxD (transmisso serial) / port P3.1
- P3.2: INT0 (interrupo 0) / port P3.2

42
- 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.

- 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

43
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).

- 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).

44
- 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)


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.

45
Sistema Mnimo com o 8051:

- 32 sinais de entrada/sada

- 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:

46
- 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.

47
2.2.2 - Microcontrolador LPC935 (famlia LPC9xx)

Arquitetura Interna LPC93x NXP

48
Principais Caractersticas

Memria Flash de 4 / 8 / 16 Kbytes com fcil programao.


Memria RAM 256 bytes + 512 bytes de memria auxiliar nas verses LPC935 /
936.
Memria EEPROM 512 bytes
4 entradas multiplexadas de conversor ADC de 8 bits e 1 DAC.
2 comparadores analgicos com entrada selecionvel.
2 timers de 16 bits (temporizador com overflow ou PWM). Sistema adicional de
timer de 23 bits podendo ser utilizado como RTC (relgio).
UART com gerador de baund rate, deteco de parada e erro de comunicao.
CCU (Capture Compare Unit) para gerao de PWM e funes de comparao de
sinais.
RC interno de alta preciso (erro < 1%) dispensando cristal externo.
Alimentao de 2,4V a 3,6 V com pinos de I/O tolerantes a 5 V (resistor de pull-up).

49
CPU 8051 de alta velocidade (6 vezes a velocidade 8051 dividindo a frequencia
do cristal / oscilador por 2. Cristal at 18 Mhz (ciclo de instruo de 111 nseg).
Gravao Serial (ISP) da memria Flash, facilitando a programao in circuit.
Gravao In-Circuit Programming (ICP) permitindo processos produtivos geis e
proteo do cdigo da memria.
Watch Dog com oscilador independente (interno). Seleciona at 8 perodos de
Watch Dog.
Detector de baixa tenso (Brown Out Detect) permitindo o desligamento suave do
sistema com opo de gerar uma interrupo.
Modo Idle de economia de energia (ativa interrupo) e 2 modos de Power Down
com correntes de repouso menores que 1 uA.
Reset externo ativo em nvel alto (com detector de sinais esprios). Sistema de
Reset interno.
Oscilador interno com freqncia selecionada por programao. Frequncia externa
de 20 Khz e 18 Mhz.
Detector de falha de clock atravs do Watch Dog.
Programao dos ports de 4 modos: bi-direcional, coletor aberto, com resistor
interno de push pull e somente entrada.
Capacidade de corrente dos ports de at 20 mA (aciona leds) dentro das restries
mximas de corrente de cada chip.
Controle de EMI (rudos) nos ports, exigindo 10 nseg de tempo mnimo de subido
de cada sinal.
Quando utilizado clock e reset interno exige apenas ligao dos pinos GND e Vcc.
Interrupes com 4 nveis de prioridade.
Interrupes de teclado de 8 entradas.
Entradas com Schimitt Trigger.
Suporte a emulao externa.

50
Kit de Desenvolvimento IAR:

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

Esquema Eltrico

http://www.iar.com/website1/50.0.1.0/224/IAR_LPC935_revB.pdf

51
Configurao dos Ports:

Os 3 ports so configurados individualmente de 4 formas (pag. 40, item 5.1 do


Manual):
Bidirecional: configurao tpica do 8051, pode ser configurado como
entrada / sada (com resistor de pull-up).
Sada: sem resistor de pull-up (open drain output)
Sada com resistor de pull-up
Entrada com scgnutt-trigger

Registradores de configurao: PxM1.y w Px.M2.y, onde X representa o Port e o Y o pino


do Port

0 0 Bidirecional
0 1 Saida com resistor pull up.
1 0 Entrada (alta inpedncia).
1 1 Sada coletor aberto

Exemplo: Configurar os 3 ports como bidirecionais

mov P0M1,#0x00
mov P0M2,#0x00;

52
mov P1M1,#0x00
mov P1M2,#0x00;
mov P2M1,#0x00;
mov P2M2,#0x00;

Inicializao (Reset) Item 7 (pgina 49 do Manual)

O pinio P1.5 / RST pode ser ativo como reset externo (condio inicial aps ligar). O bit
RPE (Reset Pin Enable) do registrador UCFG1 (pg. 136 do Manual Registrador da
Memria Flash configurado na gravao da memria) quando colocado em 1 habilita o
reset interno.

Registrador UCFG1 Escrito na Memria Flash durante a Gravao

Para ativar reset interno RPE=0

Se nvel baixo o pino P1.5 pode ser utilizado como pino de entrada. O circuito tpico de
um reset externo mostrado abaixo:

O gravador FlashMagic configura o registrador UCFG1 funo DEVICE


CONFIGURATION

53
Temporizao (Clock) Item 2 (pagina 25 do Manual)

O LPC935 tem um oscilador interno podendo ser configurado com cristal externo. O
registrador envolvido o TRIM (endereo interno 0x96). Com o bit ENCKL = 0
(condio inicial do reset) o microcontrolador est configurado para operar com oscilador
interno

Registrador TRIM:

No processo de inicializao dos 5 bits TRIM so carregados no oscilador interno para


aferio. Estes bits no devem ser ALTERADOS no processo de configurao do
oscilador.
ENCLK = 1, clock externo de oscilador nos pinos XTAL1 e XTAL2.
RCCLK = 1, seleciona RC interno sem necessidade de evento de reset.

Exemplo de inicializao UTILIZAR CLOCK INTERNO DA INICIALIZAO

ORL TRIM,#0x40 ;ENCLK = 1 -> CLOCK EXTERNO

54
Sistema Mnimo LPC935 Kit de Desenvolvimento QSP935

Ver no anexo 2 esquema do Kit QSP935 (arquivo PDF disponvel no laboratrio).


Observar ligao dos Ports, Fonte de Alimentao e circuito serial de gravao.

CPU e o sistema mnimo com Reset, Clock e Alimentao.

Sistema de Teclado Matricial (4x3) com 4 linhas (sada) e 3 colunas (entradas)

Display LCD (D0-D3) utilizando Port P0, controle de Back Light

55
Controle de Entrada / Saida (utilizar transistor Mosfet BSS89 no lugar o NPN BC
547

Ports de Entrada / Saida:

LED DEFINE P1.6


RELE DEFINE P0.0
BEEP DEFINE P2.7

CHAVES2 DEFINE P1.4


CHAVES3 DEFINE P2.0 ; IGUAL A LINHA 1 DO TECLADO
LDR DEFINE P0.2

Relgio DS1307 com barramento SPI

56
Chave de seleo

Fonte de Alimentao, Comunicao Serial e Programao:

57
Estrape Gravao e Alimentao

Estrape JP5 ativo -> alimenta microcontrolador (operao normal)


Estrape JP6 ativo -> controla Reset atravs da programao ISP.
Estrape JP7 -> alimentao USB
Estrape JP8 -> alimentao fonte externa

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.
2) Fazer um CPL para controlar os ventiladores e lmpadas da sua sala de aula, com
comunicao serial e sensores de presena, temperatura e chave liga / desliga para
ventiladores e lmpadas.

3) Fazer um alarme com o LPC935 com as seguintes caractersticas:

Cristal externo 12 Mhz


Reset externo
Comunicao Serial
Chave liga/desliga
2 Buzinas
2 Lmpadas.
1 Led
4 sensores para janelas
4 sensores

58
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)

59
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
}

Ex:

if (teste = = a+b)

60
{
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 (;;)
{
motor = desligado;
}

Condicional WHILE

61
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)

Condicional SWITCH

Testa uma varivel e executa um grupo de declaraes testando uma condio


particular.

switch (varivel)
{
case constante1:
{

62
(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.

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

63
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

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
64
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:

;***********
;* 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
;*
;************
;***

65
;* 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:

;*** 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

66
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.
- 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.

67
- 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

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

68
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.
- 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 e C

IAR -> EW8051 -> http://www.iar.com/website1/1.0.1.0/244/1/


KEIL -> vision -> http://www.keil.com/c51/

Ambiente de EDIO, COMPILAO, LINKER, SIMULAO e EMULAO.

69
Simuladores -> EW8051, AVSIM51, SIM535

70
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 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

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

#include ioP89LPC935.h ;biblioteca LPC935 (EW8051)

; LABEL

PILHADEFINE Ox60

;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

Resultado da compilao

72
Figura - Simulador EMUL8051 com o resultado do EXEMPLO1.TXT

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

73
- 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

#include ioP89LPC935.h ;biblioteca LPC935 (EW8051)

pilha DEFINE 50h


memext DEFINE 1000h
result DEFINE 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
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

74
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 utilizando o AVSIM51

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
75
- 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

76
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
Cristal Interno -> 7,373 Mhz
LPC935 -> 2 x 8051 -> divide cristal por 6
Tempo = 0,81 useg cada ciclo instruo
; EXEMPLO 3
; PISCA LED 1 (P3.4) E LED 2 (P3.5) COM FREQUENCIA DE 2 HZ

#include ioP89LPC935.h ;biblioteca LPC935 (EW8051)

LED1 DEFINE P3.4


LED2 DEFINE P3.5
PILHA DEFINE 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 0,8 useg
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R1,LOOP1 ;TEMPO LOOP1 -> 9 x 0,8useg X 255 = 1.8 ms
DJNZ R0,LOOP2 ;TEMPO LOOP2 -> 1.8 X 255 = 0, SEG
POP ACC
RET

END

77
Verificao (C)

Exerccios

1. Carregar a memria RAM interna booleana (20H-2FH) e byte (30H a 7FH) do 8051 com
o dado AAH.

2. Idem para uma rea de memria RAM externa entre 8000H e FFFFH.

3. Carregar o Acumulador e os registradores R0 a R7 com o seu cdigo de matrcula.


Somar todos os caracteres e colocar o resultado no endereo 0x30 da memria interna de
0x2000 da memria externa.

4. Ler o contedo do Port P0. Inverter todos os bits. Fazer uma operao OU
EXCLUSIVO com o resultado. Somar com o dado 08. Rotacionar 4 vezes para a direita
sem o CARRY. Guardar o resultado no registrador R7 e no PORT P1.

5. Fazer um rotina para piscar um led (P1.6) com intervalo de 10 segundos. Idem para 5 e
30 segundos.

6. Ligar um rele (P0;0) se uma chave (P1.4) estiver em 0 e desligar se a chave estiver em
nvel alto.

7. Projetar um sistema mnimo com o LPC935 para um sensor fotoeltrico (P1.4) ligar 8
lmpadas (port P2) 1 minuto apos o sensor indicar condio de escuro e desligar 1 minuto
aps o sensor indicar claridade.

8. Projetar um sistema de alarme com o LPC935 com as seguintes caractersticas:


- Alarme com 1 chave liga/desliga (P1.4), 1 sensor ultra-snico (P2.0) e 1 buzina
(P2.7)
- Cristal de 12 Mhz
- Reset automtico e manual
- 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.

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

10. Idem para 8 sensores.

78
4) - Display Cristal Lquido (LCD)

4.1 Display LCD com acionamento direto nos segmentos

Composto de 3 camadas sendo duas 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.

Figura - Display LCD 3 e caracteres (Intech - http://www.intech-lcd.com.hk/)

79
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 microcontroladores com driver LCD embarcado.

Exemplo:

Microchip -> PIC16F46

80
Freescale -> MC9S08LC60

4.2 Mdulo de Display LCD:

4.2.1 Funcionamento bsico

Atualmente est disponvel 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:

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

Figura - Display 16 x 2

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, 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).

82
- Vo: entrada de tenso para controle de luminosidade do display

Circuito recomendado para controle de luminosidade


- Vss/GND: entrada de alimentao nica de +5 Vcc.

Para display de 40 x 2 ou 40 x 4 temos 2 sinais de seleo Enable (E).

Figura 2.5 - Display 40 x 4

4.2.2 Sistema mnimo com o mdulo LCD utilizando 8 bits de dados


RS (C/D) -> P0.1, E -> P0.3, D0 D7 -> PORT P2

83
4.2.3 Sistema mnimo com o mdulo LCD utilizando 4 bits de dados KIT
LPC935

RS (C/D) -> P0.1


E -> P0.3
D4 D7 -> PORT P1.4 a P1.7

4.2.4 Controle / Inicializao Mdulo LCD

Com o sinal C/D (RS) colocado em nvel baixo possvel escrever comandos de
INICIALIZAO (podem ser utilizados como comandos individuais como limpeza do
LCD) e ENDEREAMENTO.

Os principais comandos de inicializao so listados na tabela abaixo disponvel nos


manuais dos principais fabricantes de LCD.

84
Os principais comandos utilizados so:

Nmero de Linhas / Bits Dados:


o 30H: 1 linha 8 bits
o 20H: 1 linha 4 bits
o 38H: 2 linhas 8 bits
o 28H: 2 linhas 4 bits
o 0CH: sem cursor
o 0EH: com cursor fixo
o 0DH: cursor piscante
o 07H: mensagem para direita
o 05H: mensagem para esquerda
o 01H: limpeza LCD

Para o posicionamento do cursor/mensagem dentro do display necessrio enviar


um comando de endereamento, sendo a 1 Posio Superior o endereo 80H e a 1 Posio
Inferior o endereo C0H.

Tabela para LCD 16 x 2 (1 pino de seleo E)

85
Tabela para LCD 40 x 4 (2 pinos de seleo E1 e E2)

4.2.4.2 Inicializao mdulo LCD 8 bits

A inicializao tpica para LCD de 8 bits, 2 linhas, mensagem para direita, sem cursor e
limpeza indicada a seguir:

38H 15 ms. 38H 15 ms 0CH 15ms 01H 15ms

O tempo de 15 ms. o tempo de acesso do LCD. A partir do comando de 1 ou 2 linhas,


pode ser consultado um FLAG BUSY interno para otimizar o tempo (neste caso
necessrio controlar o pino R/W)

Exemplo: considerando o sistema mnimo indicado anteriormente para sistema de 8 bits,


incializar um LCD para 2 linhas, sem cursor, limpeza e 1 posio superior (80H)

RS (C/D) -> P0.1


E -> P0.3
D0 D7 -> PORT P2

;DEFINE LABELS
RS DEFINE P0.1
E DEFINE P0.3
DADO DEFINE P2
.......
;ROTINA DE INICIALIZAO NA BIOS
BIOS

CALL TEMPO100 ;ESPERA 100 MSEG PARA ESTABILIZAR LDC

CLR RS ;INDICA CONTROLE


MOV A,#38H ;COMANDO 2 LINHAS
MOV DADO,A ;VIA DE DADOS
SETB E ;PULSO ENABLE
CLR E

86
CALL TEMPO15 ;15 MS
;REPETE COMANDO
MOV A,#38H ;COMANDO 2 LINHAS
MOV DADO,A ;VIA DE DADOS
SETB E ;PULSO ENABLE
CLR E
CALL TEMPO15 ;15 MS
;COMANDO SEM CURSOR
MOV A,#0CH
MOV DADO,A
SETB E
CLR E
CALL TEMPO15
;COMANDO LIMPEZA
MOV A,#01H
MOV DADO,A
SETB E
CLR E
CALL TEMPO15
;COMANDO PRIMEIRA POSIO SUPERIOR (80H)
MOV A,#80H
MOV DADO,A
SETB E
CLR E
CALL TEMPO15

RET

Exerccio

1. Inicializar um LCD (considerar sistema mnimo) para 1 linha, mensagem para direita,
cursor piscando, limpeza e primeira posio linha inferior (COH).

2. Idem considerando um 2 linhas x 16 caracteres, mensagem para esquerda, cursor fixo,


limpeza e centralizando na linha superior.

4.2.4.3 Inicializao mdulo LCD 4 bits

A inicializao do LCD de 4 bits necessita um controle de nibbles enviados. O nibble mais


significativo da instruo enviado primeiro seguido do nibble menos significativo (com
espera de 15 ms ou leitura do BUSY FLAG). Os fabricantes indicam o envio de 3 nibble 3
(0011) e envio dos comando 28H, 05H, 0CH e 01H para 1 linhas, mensagem para direita,
sem cursor e limpeza:

3332-280C01

87
Exemplo: considerando o sistema mnimo indicado anteriormente para sistema de 4 bits,
inicializar um LCD para 2 linhas, mensagem a direita, sem cursor, limpeza e 1 posio
superior (80H)

;DEFINE LABELS
RS DEFINE P0.1
E DEFINE P0.3
D1 DEFINE P0.4
D2 DEFINE P0.5
D3 DEFINE P0.6
D4 DEFINE P0.7

.......
;ROTINA DE INICIALIZAO NA BIOS
BIOS
;INICIALIZA LCD PARA 4 BITS, 2 LINHAS, SEM CURSOR, DESLOCAMENTO
DIREITA E LIMPEZA

CLR RS ;entrada CD = 0 -> comando


CLR E ;ENABLE LCD = 0 -> DESABILITADO
CALL TEMPO100 ;ESPERA 100 MSEG PARA ESTABILIZAR LDC

;ENVIE SEQUENCIA DO NIBBLE 3 (0011) e 2


MOV NIBBLE_LCD,#0x03 ;ENVIA MODO 4 BITS LCD
CALL WR_NIBBLE ;ENVIA NIBBLE PARA OS PORTS
CALL E_PULSO ;ATIVA ENABLE
CALL TEMPO15

MOV NIBBLE_LCD,#0x03
CALL WR_NIBBLE
CALL E_PULSO
CALL TEMPO15

MOV NIBBLE_LCD,#0x03
CALL WR_NIBBLE
CALL E_PULSO
CALL TEMPO15

MOV NIBBLE_LCD,#0x02
CALL WR_NIBBLE
CALL E_PULSO
CALL TEMPO15

;ENVIE SEQUENCIA DE COMANDOS 2-8-0-C-0-1

MOV NIBBLE_LCD,#0x02 ;2 LINHAS, 4 BITS (28H)


CALL WR_NIBBLE
CALL E_PULSO

88
MOV NIBBLE_LCD,#0x08
CALL WR_NIBBLE
CALL E_PULSO

MOV NIBBLE_LCD,#0x00 ;CURSOR APAGADO (0CH)


CALL WR_NIBBLE
CALL E_PULSO

MOV NIBBLE_LCD,#0x0C
CALL WR_NIBBLE
CALL E_PULSO

MOV NIBBLE_LCD,#0x00 ;LIMPEZA (01H)


CALL WR_NIBBLE
CALL E_PULSO

MOV NIBBLE_LCD,#0x01
CALL WR_NIBBLE
CALL E_PULSO

RET

;GERA PULSO PINO ENABLE E AGUARDA 15 MSEG.


E_PULSO
SETB E
CLR E
CALL TEMPO15 ;15 MSEG
RET

;ESCREVE NIBBLE_LCD NO NIBBLE DO LCD


WR_NIBBLE
PUSH ACC
MOV A,NIBBLE_LCD
RRC A
MOV D1,C ;ESCREVE PRIMEIRO BIT NO LCD
RRC A
MOV D2,C ;ESCREVE PRIMEIRO BIT NO LCD
RRC A
MOV D3,C ;ESCREVE PRIMEIRO BIT NO LCD
RRC A
MOV D4,C ;ESCREVE PRIMEIRO BIT NO LCD
POP ACC
RET

Exerccios

1. Explicar a funo e funcionamento das rotinas WR_NIBBLE e E_PULSO.

89
2. Inicializar um LCD (considerar circuito descrito no sistema mnimo) para 1 linha,
mensagem para direita, cursor piscando, limpeza e primeira posio linha inferior (COH).

3. Idem considerando um 2 linhas x 16 caracteres, mensagem para esquerda, cursor fixo,


limpeza e centralizando na linha superior.

4.2.5 Programao de Dados (C/D = 1)

Para a escrita de dados no display a entrada C/D colocada em nvel ALTO. 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.

O dado envido para o LCD no formato ASCII. Se o display for de 4 bits, da


mesma forma que a programao de controle, necessrio enviar inicialmente o nibble
superior e posteriormente o nvel inferior.

4.2.5.1 Escrita direta do BYTE no LCD

Exemplo:

1. Escrever a palavra MACK no meio da linha superior do LCD em displays de 8 bits.

;LCD de 8 bits

#include "ioP89LPC935.h"
;DEFINE LABELS
RS DEFINE P0.1
E DEFINE P0.3
DADO DEFINE P2

ASEG

ORG 0
INICIO
MOV SP,#PILHA
CALL BIOS ;INICIALIZA LDC 8 BITS
CALL ES_MACK ;ESCREVE MACK LDC
;PROGRAMA MAIN DO APLICATIVO
..
;SUBROTINAS
BIOS
............
RET

90
;ESCREVE MACK NO MEIO DA PRIMEIRA LINHA -> END. 85H

ES_MACK
;COMANDO PARA ENDEREO LCD
CLR RS ;PINO CD EM NVEL BAIXO
MOV A,#85H
MOV DADO,A
SETB E
CLR E
CALL TEMPO15

;ESCREVE LCD STRING MACK


SETB RS
MOV A,#M ;ASCII M
MOV DADO,A
SETB E
CLR E
CALL TEMPO15
MOV A,#A
MOV DADO,A
SETB E
CLR E
CALL TEMPO15
MOV A,#C
MOV DADO,A
SETB E
CLR E
CALL TEMPO15
MOV A,#K
MOV DADO,A
SETB E
CLR E
CALL TEMPO15

RET

2. Escrever a palavra MACK no meio da linha inferior do LCD em displays de 4 bits.

;LCD de 4 bits

#include "ioP89LPC935.h"

;DEFINE LABELS
RS DEFINE P0.1
E DEFINE P0.3
D1 DEFINE P0.4
D2 DEFINE P0.5
D3 DEFINE P0.6

91
D4 DEFINE P0.7

BYTE_LCD DEFINE 0x30H ;BYTE A SER ESCRITO NO LDC 4 BITS

ASEG

ORG 0
INICIO
MOV SP,#PILHA
CALL BIOS ;INICIALIZA LDC 8 BITS
CALL ES_MACK ;ESCREVE MACK LDC
;PROGRAMA MAIN DO APLICATIVO
..
;SUBROTINAS
BIOS
............
RET

;ESCREVE MACK NO MEIO DA SEGUNDA LINHA -> END. C5H

;COMANDO PARA ENDEREO LCD


CLR RS ;PINO CD EM NVEL BAIXO - CONTROLE
;ENDEREO 0xC5
MOV NIBBLE_LCD,#0x0C
CALL WR_NIBBLE
CALL E_PULSO

MOV NIBBLE_LCD,#0x05
CALL WR_NIBBLE
CALL E_PULSO

;ESCREVE LCD STRING MACK


SETB RS ;PINO CD EM NIVEL ALTO - DADO
MOV DADO_LCD,#'M'
CALL WR_BYTE
MOV DADO_LCD,#'A'
CALL WR_BYTE
MOV DADO_LCD,#'C'
CALL WR_BYTE
MOV DADO_LCD,#'K'
CALL WR_BYTE

RET

;ROTINA ENVIA DADOS ASCII CONTIDO EM DADO_LCD PARA LCD


WR_BYTE
PUSH ACC
; SETB RS ;DADO

92
;TRATA NIBBLE SUPERIOR
MOV A,DADO_LCD
ANL A,#0xF0 ;ISOLA NIBBLE SUPERIOR
SWAP A ;TROCA NIBBLES
MOV NIBBLE_LCD,A
CALL WR_NIBBLE
CALL E_PULSO

;TRATA NIBBLE INFERIOR


MOV A,DADO_LCD
ANL A,#0x0F ;ISOLA NIBBLE INFERIOR
MOV NIBBLE_LCD,A
CALL WR_NIBBLE
CALL E_PULSO

POP ACC
RET

;ESCREVE NIBBLE_LCD NO NIBBLE DO LCD


WR_NIBBLE

RET

;GERA PULSO PINO ENABLE E AGUARDA 15 MSEG.


E_PULSO
...
RET

Exerccio

1. Explicar a funo e funcionamento das rotinas WR_BYTE e WR_NIBBLE

2. Escrever o seu primeiro nome no meio da primeira linha do LCD e seu ltimo sobre-
nome na linha inferior.

4.2.5.2 Escrita do BYTE no LCD utilizando tabela

Pode-se utilizar o conceito de tabela para envio de Strings para o LCD. Neste caso utiliza-
se a instruo MOVC A,@A+DPTR.

Exemplo: Enviar a String ENGENHARIA MACKENZIE para a primeira e segunda linha


do LCD de forma centralizada em um mdulo LCD de 4 bits

#include "ioP89LPC935.h"

93
;DEFINE LABELS
RS DEFINE P0.1
E DEFINE P0.3
D1 DEFINE P0.4
D2 DEFINE P0.5
D3 DEFINE P0.6
D4 DEFINE P0.7

BYTE_LCD DEFINE 0x30H ;BYTE A SER ESCRITO NO LDC 4 BITS


CONTADOR1 DEFINE 0x31H ;CONTADOR GENRICO

ASEG

ORG 0
INICIO
MOV SP,#PILHA
CALL BIOS ;INICIALIZA LDC 8 BITS

CALL L1_LCD ;ENVIA COMANDO LINHA 1 (0x80)


MOV DPTR,#TAB1
CALL STRING_LCD

CALL L2_LCD ;ENVIA COMANDO LINHA 1 (0xC0)


MOV DPTR,#TAB2
CALL STRING_LCD

;PROGRAMA MAIN DO APLICATIVO


..

;SUBROTINAS
BIOS
............
RET

;ENVIA DADO ASCII DE UMA TABELA CARREGADA EM DPTR PARA O LCD


STRING_LCD
PUSH ACC
SETB RS ;ATIVA COMANDO DE DADOS
MOV CONTADOR1,#00 ;INICIALIZA CONTADOR
LOOP_LCD
MOV A,CONTADOR1
MOVC A,@A+DPTR ;LE TABELA
MOV DADO_LCD,A ;CARREGA DADO TABELA
CALL WR_BYTE ;ENVIA DADO ASCII PARA LCD
INC CONTADOR1
MOV A,CONTADOR1
CJNE A,#16,LOOP_LCD

94
POP ACC
RET

;COMANDO PRIMEIRA LINHA LCD


;ENVIA 0x80 PARA O LCD COMO COMANDO
L1_LCD
CLR RS ;COMANDO
;ENVIA COMANDO LINHA SUPERIOR -> 80H
MOV NIBBLE_LCD,#0x08 ;ENVIA MODO 4 BITS LCD
CALL WR_NIBBLE ;ENVIA NIBBLE PARA OS PORTS
CALL E_PULSO ;ATIVA ENABLE

MOV NIBBLE_LCD,#0x00 ;ENVIA MODO 4 BITS LCD


CALL WR_NIBBLE ;ENVIA NIBBLE PARA OS PORTS
CALL E_PULSO ;ATIVA ENABLE
RET

;COMANDO PRIMEIRA LINHA LCD


;ENVIA 0xC0 PARA O LCD COMO COMANDO
L2_LCD
CLR RS ;COMANDO
;ENVIA COMANDO LINHA SUPERIOR -> C0H

MOV NIBBLE_LCD,#0x0C ;ENVIA MODO 4 BITS LCD


CALL WR_NIBBLE ;ENVIA NIBBLE PARA OS PORTS
CALL E_PULSO ;ATIVA ENABLE

MOV NIBBLE_LCD,#0x00 ;ENVIA MODO 4 BITS LCD


CALL WR_NIBBLE ;ENVIA NIBBLE PARA OS PORTS
CALL E_PULSO ;ATIVA ENABLE
RET

WR_BYTE:
.............
RET

WR_NIBBLE:
...........
RET

;TABELAS LCD
;COLOCAR 16 CARACTERES NA TABELA

TAB1 DB ' ENGENHARIA '


TAB2 DB ' MACKENZIE '

END

95
Exerccio

1. Escrever o seu primeiro nome no meio da primeira linha do LCD e seu ltimo sobre-
nome na linha inferior.

2. Escrever sequenciamente no LCD (tempo entre mensagens 1 seg.)

NOME
SOBRENONE

TURMA
SALA

CONTROLE LCD
ROTINA EXEMPLO

3. Considerar os bits: LED -> P1.6, RELE -> P0.0, BEEP -> P2.7, CHAVES2 -> P1.4 e
CHAVES3 -> P2.0. Ler a chave S2 do KIT LPC935. Se chave acionada ligar RELE e
colocar na primeira linha LCD RELE LIGADO. Caso contrrio RELE DESLIGADO.
Idem com a chave S3, segunda linha e o BEEP.

4. Considere o controle de um reservatrio de gua: Sensor Mximo (P1.6), Sensor


Mnimo (P1.4), Sensor Mnimo (P2.0), Motor (P0.0), Led indicador Motor Ligado (P1.6) e
Buzina (P2.7). Fazer um firmware para que o nivel de gua ficar sempre o mnimo e o
mximo, com o led indicando motor ligado. Ligar o BIP por 1 minuto quando o motor for
ligado. Indicar no LCD -> MOTOR LIGADO, MOTOR DESLIGADO, CAIXA CHEIA
(por 1 minuto aps o indicador Mximo indicar).

5. Fazer um controle de reservatrio de uma Usina Hidroeltrica, para controle das


comportas da usina. Considerar Sensor de Nvel Mximo e Mnimo. Quando o nvel
mnimo for atingido desligar comporta. Quando o nvel mximo for atingido ligar
comporta. Deixar o BEEP ligado por 10 minutos quando for atingir nvel mnimo e
mximo. O Led indicar comporta acionada. O LCD indicar RESERVATRIO
NORMAL (COMPORTA FECHADA) ou COMPORTA ABERTA.

96
Anexo I

SEGUNDO TRABALHO DE MICROPROCESSADORES

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


display. Utilizar 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.

Anexo II
Segunda Lista de Exerccios

Utilizando o microcontrolador LPC935 (RC interno, reset externo) fazer os


exerccios abaixo com o esquema solitados e o fimrware (preferencialmente
compilando no IAR e gerando o arquivo .LST e . HEX):

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

97
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.

98