Académique Documents
Professionnel Documents
Culture Documents
br
APOSTILA
MICROPROCESSADORES I EEUPM
1
PLANEJAMENTO DIDTICO PEDAGGICO DA DISCIPLINA
MICROPROCESSADORES I
UNIDADE: Engenharia
DISCIPLINA: Microprocessadores I
PROFESSOR: Ivair Reis Neves Abreu
DEPARTAMENTO: Eletrnica
ETAPA: 6
CARGA HORRIA: 2 aulas tericas / 2 aulas laboratrio
18/02 27/05
x------------------------------------------------------------------x
Pr-Requisito -> 14 semanas -> Objetivo Final
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).
CRITRIO DE AVALIAO:
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.
5
Figura - Estrutura de um sistema programvel
Exemplos:
6
Figura - Arquitetura Computador mais barramentos
Exemplo:
Ex:
- Microcontrolador 8051 da Intel (89S51 Atmel; LPC932 NXP)
- Microcontrolador PIC12F628A Microchip
- Microcontrolador MC9RS08LC60 Freescale.
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:
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.
9
Processador Pentium 4 com 50 milhes de transistores (130 nm)
Lembre-se:
1 bit -> 0 e 1
1 byte = 8 bits
1 word = 2 bytes
1 double-word = 4 bytes
EXERCCIOS
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.
11
Figura - Pinagem e tabela da verdade 74LS373
12
Figura - Representao de um barramento em um lay-out de circuito impresso
Exemplo:
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
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
FLASH (EEPROM rpida com nmero menor de gravaes). Hoje possui chips
compatveis com memrias RAM (exemplo AT29C256)
16
Memria Flash Atmel at45db041 (4 Mbits 512 kbytes x 8)
Exemplo:
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
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.
- 2 Mbytes memria Eprom (27C4000) e 2 Mbytes memria RAM (624000). Idem para
memria FLASH Serial Atmel.
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.
- Registradores:
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:
| S | Z | - | AC | - | P | - | C |
Exerccios
20
MOV A,CAH ;CARREGA ACUMULADOR COM O NMERO CA
ADD A,9DH ;SOMA A + 9D
JZ SALTO ;SALTA SE Z = 1
- 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)
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.
Exerccio
23
R = 100k
Freqncia: 100 Mhz
Nmero de clocks mnimo para reset: 100
1.9.3) - Interrupes:
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.
Exemplo:
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.
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.
Links:
http://en.wikipedia.org/wiki/Direct_memory_access
26
1.9.5) - Multiplexao de sinais em microprocessadores:
Ex:
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
28
CPU Memria
Decoficador
CS
Entrada
READY
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:
29
Anlise da arquitetura interna e pinagens: ver data-book
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).
- 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
Exemplo:
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.
http://www.intel.com/pressroom/kits/quickreffam.htm
http://en.wikipedia.org/wiki/List_of_Intel_microprocessors
http://pt.wikipedia.org/wiki/Categoria:Microprocessadores_da_Intel
33
Figura - Tabela comparativa entre microprocessadores Intel (4004-PentiumIII)
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).
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
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.
Timers - Temporizadores
36
Exemplo: Timer gerando interrupo a cada 50 msegundos para um alarme verificar os
sensores de presena / janela.
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.
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).
38
2) - Arquitetura de Microcontroladores
Planejamento (P):
- 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
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
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
HARVARD'.
- 256 instrues otimizadas para controle.
40
Figura - Arquitetura MCS-51 (fonte: Intel)
Arquitetura funcional
41
Pinagem:
- 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.
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
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..
RS1 e RS0 (PSW.4 E PSW.3): configura qual banco de registradores R0-R7 ser
acessado.
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).
- 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).
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).
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
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.
- Clock de 12 Mhz
- Reset automtico e manual.
- Controle de 12 motores .
- 12 entradas de chaves.
47
2.2.2 - Microcontrolador LPC935 (famlia LPC9xx)
48
Principais Caractersticas
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:
0 0 Bidirecional
0 1 Saida com resistor pull up.
1 0 Entrada (alta inpedncia).
1 1 Sada coletor aberto
mov P0M1,#0x00
mov P0M2,#0x00;
52
mov P1M1,#0x00
mov P1M2,#0x00;
mov P2M1,#0x00;
mov P2M2,#0x00;
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.
Se nvel baixo o pino P1.5 pode ser utilizado como pino de entrada. O circuito tpico de
um reset externo mostrado abaixo:
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:
54
Sistema Mnimo LPC935 Kit de Desenvolvimento QSP935
55
Controle de Entrada / Saida (utilizar transistor Mosfet BSS89 no lugar o NPN BC
547
56
Chave de seleo
57
Estrape Gravao e Alimentao
Exerccios
- 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.
58
3) - Linguagem Assembler
Planejamento (P):
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)
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;
Ex:
if (a = = 5)
teste = 1;
else
if (a = = 7)
teste = 2;
else
if (a = = 9)
{
teste = + +;
a=--;
}
Condicional FOR
Ex:
for (;;)
{
motor = desligado;
}
Condicional WHILE
61
Realiza uma operao enquanto uma determinada condio estiver sendo atendida.
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
switch (varivel)
{
case constante1:
{
62
(declaraes)
break;
}
case constante2:
{
(declaraes)
break;
}
case constante3:
{
(declaraes)
break;
}
}
2) VALOR_CTE equ 05
...
add a,#VALOR_CTE
3) mov dptr,#04ffh + 1
63
4) mov a,#8 AND 1
Ex.:
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:
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
ESCR_DSP: ...
RET
Exemplo:
MOV A,SBUF
CJNE A,#00,CONT1
MOV 30H,A
66
CONT1: POP PSW
POP ACC
RETI
- 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.)
67
- 1 byte: o cdigo de operao j especifica completamente a funo da instruo,
no necessitando de complemento algum.
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.
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.
Ex:
INICIO: MOV SP,70H ;CARREGA SP COM END. DA PILHA
------ ------- --------------------
label cd.oper. operando comentrio
- 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.
69
Simuladores -> EW8051, AVSIM51, SIM535
70
Figura - Simulador EMUL8051 (www.ivair.com.br)
- MOV A, 30H
- MOV A,# 30H
- MOV A, R0
- MOV A,@ R0
- MOV 50H, 40H
- MOVX A, @ DPTR
- MOVC A,@A+DPTR
Exemplo:
71
; EDITAR NO PROGRAMA NO BLOCO DE NOTAS -> EXEMPLO1.TXT
; COMPILAR -> ASM51 EXEMPL1.TXT
; SIMULAR NO AVSIM51 OU EMUL8051 OBSERVANDO A MOVIMENTAO DE
DADOS
; LABEL
PILHADEFINE Ox60
;INICIO DA CODIFICACAO
ORG 0 ;POSIO INICIAL DO PROGRAMA
;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.
- 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:
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
Exerccio
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.
- CALL rotina
- RET
- RETI
- PUSH ACC
- POP ACC
- CJNE A,#7Ah,SALTO
- DJNZ R3,LOOP
Os bits dos registradores especiais (SFR) podem ser designados pelos nomes do
registrador endereado pela posiao no bit ou pelo prprio nome do bit:
- 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
ORG 0
;SUBROTINA
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.
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.
78
4) - Display Cristal Lquido (LCD)
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:
80
Freescale -> MC9S08LC60
81
Figura -Arquitetura bsica dos displays L.C.D.
Figura - Display 16 x 2
82
- Vo: entrada de tenso para controle de luminosidade do display
83
4.2.3 Sistema mnimo com o mdulo LCD utilizando 4 bits de dados KIT
LPC935
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.
84
Os principais comandos utilizados so:
85
Tabela para LCD 40 x 4 (2 pinos de seleo E1 e E2)
A inicializao tpica para LCD de 8 bits, 2 linhas, mensagem para direita, sem cursor e
limpeza indicada a seguir:
;DEFINE LABELS
RS DEFINE P0.1
E DEFINE P0.3
DADO DEFINE P2
.......
;ROTINA DE INICIALIZAO NA BIOS
BIOS
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).
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
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
88
MOV NIBBLE_LCD,#0x08
CALL WR_NIBBLE
CALL E_PULSO
MOV NIBBLE_LCD,#0x0C
CALL WR_NIBBLE
CALL E_PULSO
MOV NIBBLE_LCD,#0x01
CALL WR_NIBBLE
CALL E_PULSO
RET
Exerccios
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).
Exemplo:
;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
RET
;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
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
MOV NIBBLE_LCD,#0x05
CALL WR_NIBBLE
CALL E_PULSO
RET
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
POP ACC
RET
Exerccio
2. Escrever o seu primeiro nome no meio da primeira linha do LCD e seu ltimo sobre-
nome na linha inferior.
Pode-se utilizar o conceito de tabela para envio de Strings para o LCD. Neste caso utiliza-
se a instruo MOVC A,@A+DPTR.
#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
ASEG
ORG 0
INICIO
MOV SP,#PILHA
CALL BIOS ;INICIALIZA LDC 8 BITS
;SUBROTINAS
BIOS
............
RET
94
POP ACC
RET
WR_BYTE:
.............
RET
WR_NIBBLE:
...........
RET
;TABELAS LCD
;COLOCAR 16 CARACTERES NA TABELA
END
95
Exerccio
1. Escrever o seu primeiro nome no meio da primeira linha do LCD e seu ltimo sobre-
nome na linha inferior.
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.
96
Anexo I
Anexo II
Segunda Lista de Exerccios
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.
98