98
1 www.mackenzie.com.br APOSTILA MICROPROCESSADORES I – EEUPM PRIMEIRO SEMESTRE 2011 PROF. IVAIR REIS N. ABREU 05 / 2011

APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

Embed Size (px)

Citation preview

Page 1: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

1

www.mackenzie.com.br

APOSTILA MICROPROCESSADORES I – EEUPM

PRIMEIRO SEMESTRE 2011

PROF. IVAIR REIS N. ABREU 05 / 2011

Page 2: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

2

PLANEJAMENTO DIDÁTICO PEDAGÓGICO DA DISCIPLINA

MICROPROCESSADORES I

ESCOLA DE ENGENHARIA - MODALIDADE ELETRÔNICA UNIDADE: Engenharia DISCIPLINA: Microprocessadores I PROFESSOR: Ivair Reis Neves Abreu DEPARTAMENTO: Eletrônica ETAPA: 6ª CARGA HORÁRIA: 2 aulas teóricas / 2 aulas laboratório Introdução: a proposta deste planejamento pedagógico baseia-se no processo de Qualidade Total (TQM) tendo como base o principio PDCA ou seja, PLAN, DO, CHECK e ACT. O planejamento é o próprio documento proposto, com objetivos, pré-requisitos, plano de aulas, avaliação e bibliografia deixando bem claro a proposta do curso de forma a ajustar as expectativas necessárias. A ênfase no ciclo e não apenas no processo de avaliação (comum em cursos pedagógicos) leva a entender que o objetivo é o processo de capacitação do aluno dentro do objetivo proposta através de um plano de aulas gradual, acompanhada de verificações contínuas e principalmente processo de ação corretiva.

18/02 27/05 x------------------------------------------------------------------x Pré-Requisito -> 14 semanas -> Objetivo Final

PRÉ-REQUISITOS: Eletrônica Digital (Combinacional e Sequencial) e Programação

Estruturada (Linguagem C).

OBJETIVO: Oferecer oportunidade para desenvolvimento das três dimensões:

Conhecimento: Conhecer os conceitos básicos de sistemas programáveis utilizando microprocessadores, processadores digitais de sinais e microcontroladores. Habilidades: Projetar circuitos eletrônicos utilizando conceitos de sistemas programáveis e programar os sistemas projetados utilizando linguagens de montagem ( “assembler”) e estruturada (linguagem C). Atitudes: Compreender as tecnologias embarcadas nos atuais sistemas eletrônicos incentivando o uso destas tecnologias com ganho de performance e menor custo.

Page 3: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

3

EMENTA: Revisão de Conceitos de Microcomputadores e Microprocessadores. Arquitetura Básica do Microcontrolador 8051. Linguagem Assembler (Montagem) com as Instruções do 8051. Projetos de Controle com Microcontroladores. Estudo de Periféricos Básicos: Display LCD.

METODOLOGIA Aula expositiva com auxílio de recursos audio-visuais (principalmente retroprojetor). O aluno deverá constantemente participar através de aplicação de exercícios e projetos. Uma apostila envolvendo todos os pontos abordados servirá de apoio didático durante as exposições. Trabalhos levarão o aluno a refletir sobre pontos avançados não abordados diretamente na sala de aula.

CONTEÚDO PROGRAMÁTICO 1. Revisão de Conceitos de Microprocessadores (Arquitetura e Linguagem Assembler). 2. Arquitetura do Microcontrolador 8051: 2.1. Definição da Arquitetura Típica de Microcontrolador. 2.2. Estudo da Arquitetura da Família 8051 Intel e Arquitetura LPC935 2.3. Sistema Mínimo 8051 / LPC935. 3. Linguagem Assembler 8051. 3.1. Definição do Código de Operaçâo de Instruções e Mneumônicos do 8051. 3.2 Instruções de Tranferência de Informação, Aritmética, Lógica, Transferência de Controle e Booleana. 3.3. Estudo de rotinas típicas de controle: rotinas de tempo, escrita e leitura de periféricos, memórias, etc. 3.4 – Linguagem C aplicada a microcontroladores (8051) 4. Projetos de Sistemas Práticos com Microntroladores: 4.1. Alarme residencial / Controle de Iluminação / Automação Industrial. 5. Interface com Displays (LCD): Sistema Mínimo e Programação.

CRITÉRIO DE AVALIAÇÃO: Média = (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 = médias de 2 trabalhos a serem entregues no dia das 2 avaliações oficiais. Bônus com valor máximo de 0,5 ponto.

Lab = laboratório

Page 4: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

4

Média > 7 -> aluno aprovado 5,5 < média < 6.9 -> aprovado se presença as aulas for maior que 80%

BIBLIOGRAFIA Básica: VIDAL, Antonio. Aplicações Práticas 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: Início: 18/02 Término: 27/05 Prazo entrega final das notas: 16/05 Falta Prevista: Reposição: ---- Feriado: --- Aulas Previstas: 15 semanas (1 reservado para avaliação P1 presencial).

Page 5: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

5

1) - Conceitos de Sistemas Programáveis

Planejamento (P): Este capítulo capacitará o aluno nos seguintes pontos: - Conceituar Sistema Programável - Estrutura de um computador: unidade central de processamento, memória semicondutora e periféricos de entrada / saída. - Definição de microprocessadores e microcontroladores. - Barramentos de dados, endereço e controle. - Revisar conceitos de eletrônica digital combinacional e seqüencial. - Revisar sistema numérico digital e hexadecimal. - Arquitetura de memória semicondutora volátil (RAM) e não volátil (ROM). Projetos com bancos de memória. - Arquitetura de um microprocessador: unidade lógica aritmética, decodificador de instruções e registradores. - Registradores acumulador, flag, contador de programa (PC) e apontador de pilha (SP). Conceito de pilha e sub-rotina. - Sistema de inicialização, “reset” e “watch dog”. - Sistema de temporização, ciclo de instrução e ciclo de máquina. - Sistema de interrupção. - Multiplexação de barramentos (A / D) em microprocessadores. - Acesso Direto a Memória (DMA). - Sincronização de memória / periféricos. - Estudo da arquitetura do microprocessador 8085. - Sistema Mínimo 8085. - Interpretação de diagramas de tempo em microprocessadores.

1.1) - Sistema Programável: A grande utilização dos microprocessadores nos sistemas eletrônicos atuais vem do fato de serem programáveis, ou seja, estes sistemas são compostos por um conjunto físico (Hardware) constante, com repetibilidade, dentro de um processo industrial e portanto com uma ótima relação custo / benefício que realizará determinada tarefa, orientado por uma seqüência de instruções conhecidas por programa (Software), proporcionando grande versatilidade e poder de processamento. Observem a determinação da tarefa do sistema a partir a mudança do programa, mantendo o sistema físico inalterado.

Page 6: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

6

Figura - Estrutura de um sistema programável

Exemplos: O computador pessoal (PC) é padronizado e pode realizar infinitas funções com a

simples troca de aplicativo. Este sistema jamais custaria o preço atual dos computadores pessoais se fosse customizado para cada aplicação. Um mesmo computador é capaz, sem alteração nenhuma na máquina, torna-se um poderoso processador de texto ou um grande parceiro em um jogo de xadrez apenas com a mudança do aplicativo.

O próprio ser humano é um sistema físico relativamente padronizado (a genética já prova a grande semelhança entre nós) mas com grandes diferenças de capacidade de acordo com a experiência de vida individual e oportunidade de aprendizado.

O sistema físico programável recebe normalmente a denominação de computador.

1.2) - Estrutura de um computador: Essencialmente os sistemas programáveis podem ter as suas estruturas resumidas a 3 blocos: Unidade Central de Processamento (C.P.U), Memória e Periféricos.

Page 7: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

7

Figura - Arquitetura Computador mais barramentos

1.2.1) - Unidade Central de Processamento:

Bloco com capacidade de realizar tarefas (controlar sinais de controle e temporização do sistema, bem como barramentos de dados e endereço) orientadas por instruções. É o principal elemento de decisão do computador, podendo ser comparado ao cérebro do computador “ser humano”. Quando a C.P.U. está encapsulada em um único chip, temos um MICROPROCESSADOR. As aplicações típicas de microprocessadores são voltadas a multimídia, onde temos processamento de som, imagem e comunicação simultaneamente.

Microprocessador -> CPU encapsulada em um único circuito integrado. Pelo fato de concentrar apenas a função de controle no “chip”, as aplicações de microprocessadores são complexas voltadas para multimídia (controle de som + imagem + comunicação). Exemplo: - Microprocessador Pentium IV da Intel. A aplicação do Pentium é em computadores multimídia. - Microprocessador ARM voltado para aplicações multimídia dedicadas. Microcontrolador -> CPU + MEMORIA + PERIFËRICOS encapsulados em um único circuito integrado. Dedicado a funções 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. Aplicações finais típicas: - Controladores Lógicos Programáveis (CLPs) em plantas industriais - Injeção eletrônica de automóveis.

DSP -> também utiliza o conceito de CPU dedicada, podendo ser microcontrolador ou apenas CPU dependendo da capacidade de processamento. Possui um poder de processamento intermediário entre produtos com microcontroladores (dedicados) e produtos com microprocessadores (multimídia). Exemplo: - DSP TMS320C5XXX da Texas Instruments ( www.ti.com ) - DSPIC da Microchip ( www.microchip.com ) Aplicações finais típicas:

Page 8: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

8

- Telecomunicações como telefone celular. - Controle de motores. - Processamento de imagem médica (tomografia computadorizada).

1.2.2) - Memória:

Bloco semicondutor com capacidade de armazenar informações. Armazena basicamente as instruções a serem processadas (através de seus códigos de operação), variáveis (como resultados de operações da C.P.U.) ou dados de entrada e saída dos periféricos. O programa a ser processado deve necessariamente estar presente na memória (por isso o tamanho cada vez maior das memórias voláteis - RAMs - dos computadores atuais, pois os programas têm tamanhos cada vez maiores). A memória dos computadores pode ser dividida em volátil (RAM estática / dinâmica) e não voláteis (ROM / PROM / EPROM / E2PROM - FLASH). Em computadores pessoais temos o conceito de BIOS (programa de inicialização de periféricos) + SISTEMA OPERACIONAL ( interface gráfica amigável ao usuário) + APLICATIVO (programa final).

Exemplo: BIOS inicializa placa de vídeo, interfaces seriais e paralelas, comunicação. Após este processo, existe a busca do sistema operacional (Windows) e aplicativos com a carga dos programas selecionados na memória volátil.

Em sistemas dedicados, temos o conceito de Firmware (software dedicado) normalmente residente em uma memória não volátil. Exemplo: Firmware contido em uma impressora a laser ou um alarme residencial. Os seres humanos, de maneira análoga, têm a memória para armazenamento de funções permanentes (aprendizado, controle dos órgãos internos) e armazenamento de funções temporárias (lembranças armazenadas apenas durante uma tarefa como dirigir entre a residência 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 funções específicas possuem FIRMWARE dedicado.

1.2.3) - Periféricos:

Bloco de comunicação do conjunto CPU / memória com o meio exterior. Pode ser caracterizado como entrada (teclado, mouse, etc.) ou saída (monitor, impressora, plotter, etc.). É a interface de comunicação com o usuário e a parte do sistema que normalmente tem acesso.

Page 9: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

9

Em microcontroladores estes periféricos são menos complexos, como PORTS, TIMERS, UARTS, CONVERSORES A/D e D/A, SPI / I2C, etc.

1.3) - Revisão dos conceitos de Eletrônica Digital Por que os computadores modernos são digitais e não analógicos como os seres humanos? Analisando sob a ótica da tecnologia disponível (integração de circuitos eletrônicos), é muito mais fácil integrar chaves eletrônicas (transistores de 2 estados) do que sistemas analógicos (amplificadores operacionais). Desta forma, mesmo considerando uma representação binária de um maior número de símbolos, é mais facilmente implementável um byte com 8 chaves eletrônicas do que um amplificador operacional representando 256 níveis diferentes. Atualmente consegue-me integrar milhões de transistores em uma pastilha, chaves que são a base da representação numérica digital. Um processador Pentium IV é implementado com cerca de 50 milhões de chaves eletrônicas (os primeiros processadores tinham um pouco mais de 10 mil transistores) com espaçamento de 130 nm entre os componentes. O transistor normalmente utilizado para compor um sistema lógico integrado é o Transistor de Efeito de Campo (FET) pelo fato do mesmo ter um processo construtivo mais simples (semelhante ao capacitor) e ser possível uma maior integração desta tecnologia quando comparado ao Transistor Bipolar.

Page 10: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

10

Processador Pentium 4 com 50 milhões de transistores (130 nm)

1.3.1) - Revisão sistema numérico binário (B) e hexadecimal (H).

Devido a facilidade de implementação do sinal binário (através de chaves transistorizadas - saturada ou cortada), toda a informação dentro do computador (com exceção de interfaces analógica / digitais) possui a forma binária. Por isso, é fundamental o perfeito conhecimento dos diversos sistemas de numeração, bem como a conversão entre cada base.

- Decimal -> base 10.

- Binário -> base 2 -> mais fácil de chavear (através de transistores, chaves, etc.) - Hexadecimal binário -> converte cada 4 números binários (nibble) em números de 0

(0000B) a F (1111B) - Decimal binário (B.C.D.) -> converte cada 4 números binários em números de 0

(0000B) a 9 (1001B) - Octal -> converte cada 3 números binários em números de 0 (000B) a 7 (111B).

Conversões importantes: Binário <-> Decimal Binário <-> Hexadecimal Lembre-se: 1 bit -> 0 e 1 1 byte = 8 bits 1 word = 2 bytes 1 double-word = 4 bytes EXERCÍCIOS 1) - 1010 0110 -> binário

Converter para hexadecimal -> *** 2) - 255 -> decimal

Converter para binário -> *** 3) - 2A0FH -> hexadecimal

Converter para decimal

Page 11: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

11

1.3.2 - Revisão de Sistema Digital Eletrônica Digital Combinacional: sem realimentação entre saída e entrada, a lógica dos circuitos combinacionais pode ser representado através de uma tabela da verdade. Portas Lógicas: AND, OR, OR-EXCLUSIVE, NOT

Decodificadores 3x8 -> procurar na Internet 74HC138

Figura - Pinagem e tabela da verdade 74LS138 Eletrônica Digital Seqüencial: baseado em elementos de memória flip-flops Flip-Flop tipo RS, D (procurar Latch Octal 74HC373) e JK

Page 12: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

12

Figura - Pinagem e tabela da verdade 74LS373

1.4 - Barramento do Sistema Programável

Conforme pode ser observado na figura representativa da arquitetura do computador, os barramentos são meios físicos (normalmente trilhas de circuito impresso) interligando a CPU, memória e os periféricos de entrada / saída. Em um circuito impresso, são as trilhas interligando os diversos pinos dos “chips” do sistema.

Page 13: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

13

Figura - Representação de um barramento em um lay-out de circuito impresso Considerando o tipo de INFORMAÇÃO presente no barramento, o mesmo pode ser classificado em: - Barramento de Dados (Data Bus): carrega a informação da instrução (através do código de operação), variável do processamento (cálculo intermediário de uma fórmula por exemplo) ou informação de um periférico de E/S (dado digitado em um teclado). O tamanho da via de dados determina respectivamente o máximo número de instruções (e portanto o potencial de processamento) e a precisão do processamento aritmético (através do cálculo de ponto flutuante) ou o número de símbolos possíveis a ser representado (por exemplo, pontos de uma foto). Exemplo: 1) - O processador 8085 possui 8 bits no barramento -> máximo de 256 instruções e variáveis numéricas entre -127 a +127 (ou 0 a 255). 2) - O processador Pentium possui 32 bits no barramento -> variáveis numéricas 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 são suficientes. Por outro lado, se há a necessidade de um processamento complexo (como os sistema de multimídia onde há a necessidade de processarmos milhões de pontos de imagem) processamento de até 128 bits já estão disponíveis. Obviamente existe a necessidade de aumentar igualmente a velocidade do sistema pois a “paciência” do usuário é a mesma ao ligar uma lâmpada ou processar uma imagem fotográfica.

Page 14: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

14

- Barramento de Endereço (Address Bus) : carrega a informação binária da localização de um dado de memória ou E/S. A capacidade de acesso é determinada pela expressão 2n. O tamanho do barramento de endereço acompanhou a evolução do poder de processamento do microprocessadores já que foi necessário cada vez mais memória para armazenar uma quantidade cada vez maior de dados. Exemplo: - 8085 -> 16 bits na via de endereço -> 216 = 65512 kbytes - 8088 -> 20 bits na via de endereço -> 1 Mbyte - Barramento de controle (Control Bus): leva todas os outros sinais que não são dado ou endereçamento. Exemplo: sinais de alimentação (Vcc e GND), sinais de temporização (clock), sinais de inicialização (reset) Barramento SPI:

Sugestão de Links: http://en.wikipedia.org/wiki/SPI_bus http://ww1.microchip.com/downloads/en/AppNotes/00909B.pdf

Page 15: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

15

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 Sugestão de Links: http://en.wikipedia.org/wiki/I%C2%B2C http://ww1.microchip.com/downloads/en/AppNotes/00974A.pdf 1.7 - Arquitetura de memória semicondutora Memória Semicondutora: será considerado memória o bloco de armazenamento de código e variável do programa executado pela CPU. Áreas de armazenamento como Disco Rígido, PenDrive ou servidores de rede armazenam programas / arquivos sem o processamento da CPU. 1.7.1 Memória Não Volátil ROM (Read Only Memory): ROM (o fabricante grava uma única vez), PROM (o usuário grava uma única vez) EPROM (o usuário grava milhares de vezes após um processo de apagamento por luz ultravioleta)

Page 16: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

16

Figura - Arquitetura da memória 27C64 EEPROM (o usuário grava milhões de vezes eletricamente) FLASH (EEPROM rápida com número menor de gravações). Hoje possui chips compatíveis com memórias RAM (exemplo AT29C256)

Memória Flash 8K x 8 AT29C256 (www.atmel.com)

Page 17: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

17

Memória Flash Atmel at45db041 (4 Mbits – 512 kbytes x 8) Exemplo: Fazer um projeto de 1 Mbyte utilizando 2 memórias FLASH serial de 512 Kbytes. Desabilitar a proteção de escrita (WP = 1). Considerar uma CPU que trabalha com barramento de 3V. 1.7.2 – Memória Volátil RAM (Random Access Memory) Memória de escrita e leitura com perda de dados ao desligar alimentação. Dividida em:

Memória RAM Dinâmica: principio de armazenamento capacitivo. Necessita de sinal de “refresh” periódico (msegundos). Utilizada com memória de massa utilizada em computadores.

Memória RAM Estática: princípio de armazenado através de flip-flops. Armazena dados sem sinal de “refresh”.

Page 18: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

18

Figura 1.6 - Arquitetura Memória RAM 6264

Exercício - Projetos de Bancos de Memória 1) - Banco de 8 K de Eprom (BIOS) com 27C64 + 8 K de Dados com 6264. Fazer mapa de memória. O que muda se utilizar memória FLASH? 2) - Banco com 32 K de Eprom com 27C64 e 32 K de RAM com 6264. Fazer mapa de memória. ***3) - Projetar bancos de memória com a seguinte característica: - 32 K memória Eprom (27C256) e 32 K memória RAM (62256). Idem para memória FLASH. - 2 Mbytes memória Eprom (27C4000) e 2 Mbytes memória RAM (624000). Idem para memória FLASH Serial Atmel. 1.8) - Arquitetura do Microprocessador:

Page 19: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

19

Figura - Arquitetura típica de um Microprocessador

- Decodificador de Instruções: Bloco lógico combinacional responsável por receber o código de operação das diversas instruções e a partir deste gerar sinais de controle externos e/ou internos, bem como sinais de temporização, com o objetivo de executar a instrução. É implementado através de lógica combinacional (tabela da verdade), onde as variáveis de entrada são o código de operação do microprocessador e as variáveis de saída os diversos sinais de controle e temporização internos/externos. - Unidade Lógica Aritmética (ULA): Unidade responsável pela realização de operações lógico / aritméticas no microprocessador. As operações aritméticas são todas baseadas na soma (implementada através de lógica ‘OU EXCLUSIVO’). Toda lógica de decisão dos programas é baseada em operações lógica / aritméticas. Por exemplo: a comparação entre duas variáveis é implementada através da operação de subtração que por sua vez é viabilizada pela operação 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 multimídia). Exemplos clássicos são os microprocessadores tipo D.S.P. (Processador Digital de Sinais) ou os coprocessadores aritméticos presentes na família de computadores PC até os microprocessadores 486-SX. - Registradores: Posições de memória internas (latchs tipo D) responsáveis pelo armazenamento temporário de informações gerais (registradores genéricos) ou específicas.

Page 20: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

20

Registradores para armazenamento de dados ou endereços dentro do microprocessador. São implementados através de “latchs” internos (podendo ser comparados a posições de memória dentro do microprocessador). Quanto maior o número de registradores internos maior é a velocidade de processamento, pois não é necessário o acesso à memória externa para armazenamento de variáveis. É comum os microcontroladores e os D.S.P.s possuírem algumas centenas de ‘posições de memória internas’, diminuindo em muito o tempo de acesso à memória. Outro exemplo bastante apropriado é a memória “caches” internas aos microprocessadores 486 e PENTIUM. Registradores Específicos:

- Acumulador: principal registrador de auxílio da U.L.A. Bastante acessado pelas instruções, é o registrador armazenador dos resultados da U.L.A. O número de bits do acumulador pode ser do tamanho da via de dados ou o dobro (para aumentar a precisão do resultado presente no acumulador).

- Flag: registrador sinalizador de algumas condições do acumulador (portanto do resultado) depois de realizadas operações lógico / aritméticas. As condições encontradas normalmente são: zero, sinal, “vai-um”, “overflow”, paridade, etc. Ex: Flag do 8085:

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

- S -> flag de sinal. Indica a condição do oitavo bit do acumulador. S = 0 -> positivo S=1 -> negativo

- Z -> flag indicar de zero. Z = 1 -> zero no acumulador , Z = 0 -> número diferente de zero.

- P -> flag de paridade. Indica o número de ‘1’ no acumulador. P = 1 -> número par , P = 0 -> número 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 1 0 1 1 1 0 1 1 FLAG: S Z - AC - P - C + 1 1 1 1 1 0 1 0 --------------- Exercícios 1) – Qual o conteúdo do Acumular e Flag da seguinte rotina? Haverá salto no programa?

Page 21: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

21

MOV A,CAH ;CARREGA ACUMULADOR COM O NÚMERO CA ADD A,9DH ;SOMA A + 9D JZ SALTO ;SALTA SE Z = 1 2) - Qual o conteúdo 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 endereço da próxima

instrução. Determina o fluxo do programa. Quando o programador altera o valor do PC, necessariamente desvia o programa (através de saltos sem retorno ou chamada de subrotinas).

Exemplo: - Instrução: JMP 2000H -> carrega o PC com o endereço 2000H. O conteúdo anterior do PC é destruído (por isso o programa não consegue voltar). - Instrução: CALL 2000H -> carrega o PC com o endereço 2000H. Neste caso, o conteúdo anterior do PC (PCH->SP-1 e PCL->SP-2) é salva em uma região de memória (interna ou externa ao microprocessador) conhecida por PILHA. Ao ser executada a instrução RET, o programa retorna ao ponto em que foi chamado. A rotina acessada pela instrução CALL é conhecida por subrotina. O conteúdo do registrador SP é decrementado de dois para possibilitar o salvamento de outros parâmetros na pilha (ou a chamada de outras subrotinas dentro de subrotinas)

- Apontador de Pilha (SP): registrador armazenador do endereço na área de pilha do

sistema. Será nesta área que serão armazenados endereços de retorno das sub-rotinas, bem como parâmetros dos diversos registradores.

1.9) - Conceitos Complementares de um Microprocessador:

1.9.1) - Temporização das Instruções - Ciclo de Instrução:

As atividades de um processador central são cíclicas. O processador busca a instrução na memória, executa a tarefa ligada ao código lido, busca a próxima instrução e assim por diante. A temporização de um computador depende basicamente do sinal de clock que sincroniza todas as operações do sistema. O clock é gerado a partir de um oscilador com freqüência determinada normalmente por um cristal. Este cristal pode estar interno ao microprocessador ou ser implementado através de um C.I. dedicado a isto.

A figura abaixo mostra um exemplo de clock gerado através de cristal, LC e RC :

Page 22: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

22

Figura - Oscilador do 8085 Ciclo de instrução: número de períodos de clock necessários para executar uma instrução. O ciclo de instrução é composto basicamente dos ciclos de máquina M1 e M2. Ciclo de Máquina: composto dos ciclos M1 ou busca da instrução (onde o código de operação é lido na memória) e ciclo M2 ou ciclo de execução. O ciclo de busca da instrução vai depender do número de bytes necessários para a leitura da instrução (por exemplo: o 8085 possui instruções de até 3 bytes que obviamente necessitam de 3 ciclos de busca de códigos na memória). O tempo total necessário para o ciclo de instrução é determinado pelo número de estados T (ou número de pulsos do clock) fornecidos pelo conjunto de instruções do microprocessador.

Exercícios 1) - Calcular os ciclos M1, M2 e o ciclo de instrução para a instrução MOV A,B utilizando fc = 6 Mhz, n = 3, M1 = 4 clocks e M2 = 3 clocks.

Page 23: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

23

*** 2) - Idem para a instrução OUT 10h, fc = 1 Mhz, n=4, M1 = 4 clocks, M2 = 3 clocks e M3 = 3 clocks.

1.9.2) - Circuito de Inicialização:

Também conhecido por “reset”, a entrada de inicialização nos microprocessadores carrega o registrador de endereço PC com o endereço 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 mínimo necessário 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 automático) e em pequenas quedas de rede (pois o microprocessador quando tem a tensão de alimentação abaixo do nível mínimo recomendado, passa a executar tarefas fora do controle). O circuito abaixo mostra o reset utilizado pelo 8085 (lógica positiva, reset manual e automático). Nota-se a função do diodo em descarregar rapidamente o capacitor em caso de queda de energia.

Figura - Sistema de Reset - Watch Dog: circuito supervisório que inicializa o microprocessador a cada período de tempo configurável (1 ou 2 segundos normalmente) se não 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 não gerar o referido sinal, o W.D. inicializará o microprocessador.

Exercício 1) - Determinar o mínimo valor de um capacitor para um circuito de reset automático considerando:

Vcc = 5V, Vreset = 2/3 Vcc

Page 24: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

24

R = 100k Freqüência: 100 Mhz Número de clocks mínimo para reset: 100

2) – Calcular o período dos ciclos M1 (4 clocks), M2 (3 clocks) e o ciclo de instrução para a instrução MOV A,B, freqüência do cristal de 6 Mhz. ***3) – Idem para a instrução OUT 10h, fc = 1 Mhz e M1=4clocks, M1’= 3 clocks e M2 = 3 clocks. 3) - Determinar o mínimo valor de um capacitor para um circuito de reset automático considerando: Vcc = 3,3 V

R = 10k Freqüência: 500 Mhz Número de clocks mínimo para reset: 500

1.9.3) - Interrupções:

Sinal de entrada no microprocessador gerado normalmente por periféricos, fazendo o microprocessador parar seu processamento, salvar o endereço atual, saltar para uma sub-rotina específica do periférico (endereçado pelo vetor de interrupção, que pode ser fixo ou variável) e posteriormente retornar ao ponto de parada (poderíamos comparar o processo a uma chamada de sub-rotina através de um sinal de hardware).

Exemplo -> Atendimento de Teclado: quando uma tecla é acionada, o teclado gera um

sinal positivo que ao entrar na interrupção do microprocessador faz o mesmo parar o processamento, salvar o endereço atual do PC na pilha e saltar para o endereço indicado no “vetor de interrupção” (variável ou fixo).

Page 25: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

25

Dentro dos microprocessadores estão disponíveis registradores de configuração que determinam interrupções pendentes e níveis de prioridade.

No caso do IBM-PC, os vetores das 16 interrupções disponíveis para periféricos (e programadas no 8259) são determinadas pelo sistema operacional.

1.9.4) - Acesso direto à memória (D.M.A):

Sistema onde o barramento do computador é retirado do microprocessador (colocando o mesmo em tri-state) e controlado através de um outro microprocessador (multiprocessamento) ou através de um controlador de D.M.A. (como o 8257) para transferência de dados entre periféricos e memória. Exemplo: 1) - Carga de programas de um “winchester” ou “floppy” para memória RAM de um computador. 2) - Co-processador aritmético nos computadores IBM-PC.

Page 26: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

26

LINK -> http://pt.wikipedia.org/wiki/Dma "O DMA é uma característica 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 memória, já que o acesso a dispositivo de periféricos através de barramentos periféricos é mais lento que a memória de dados. Durante a cópia dos dados a CPU ficaria indisponível para outras tarefas. Uma transferência por DMA essencialmente copia um bloco de memória de um dispositivo para outro. A CPU inicia a transferência, mas não executa a transferência. Para os chamados third party DMA, como é utilizado normalmente nos barramentos de computadores, a transferência é realizada pelos controladores DMA que são tipicamente parte do chipset da placa mãe. Projetos mais avançados de barramento, como o PCI, tipicamente utilizam bus-mastering DMA, onde o dispositivo toma o controle do barramento e realiza a transferência de forma independente. Um uso típico do DMA ocorre na cópia de blocos de memória da RAM do sistema para um "buffer" de dispositivo. Estas operações não bloqueiam o processador que fica livre para realizar outras tarefas. Transferências DMA são essenciais para sistemas embarcados de alto desempenho.

Por exemplo, um controlador DMA ISA de um computador tem 16 canais DMA dos quais 7 estão disponíveis para a CPU. Cada canal DMA é associado com um registador de endereço de 16 bits e um registador contador de 16-bit. Para iniciar uma transferência o driver do dispositivo inicializa o endereço e o contador com a direcção da transferência, leitura ou escrita. Ele instrui o hardware DMA para iniciar a transferência. Quando a transferência é completa o dispositivo interrompe a CPU.

A requisição DMA é chamada de DRQ e o acknowledge de DACK. Estes símbolos são geralmente vistos em esquemas de hardware que utilizam DMA. Eles representam os sinais electrónicos trocados entre a CPU e o controlador DMA."

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

Page 27: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

27

1.9.5) - Multiplexação de sinais em microprocessadores:

Consiste em um recurso de misturar 2 ou mais sinais em um terminal do microprocessador com o objetivo básico de economizar pinagem do chip. Um exemplo típico é a multiplexação da via de dados/endereço do 8085: os 8 bits de dados (D0-D7) são multiplexados no tempo com o byte menos significativo de endereço (A0-A7). O sinal de controle “ALE” (sigla de “Address Latch Enable”) indica a natureza da informação presente naquele instante.

ALE = 0 -> AD0-AD7 -> dados (D0-D7) ALE = 1 -> AD0-AD7 -> endereços (A0-A7)

Ex:

Figura - Sinal ALE

A separação da via de dados (D0-D7) da via de endereços (A0-A7) é necessária pelo fato de termos diversos dispositivos de memória e periférico com estes barramentos separados. A implementação desta separação pode ser realizada com os latchs octais 74373 (unidirecional) e 74245 (bidirecional). A figura abaixo mostra um circuito típico utilizado na demultiplexação dos sinais de dados/endereço do 8085.

Page 28: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

28

Figura - Separação do barramento A/D do 8085

Considerando que os sinais de Leitura (RD) e Escrita (WR) estão sincronizados a informação do dado (estes sinais só irão para nível baixo quando a informação do dado estiver disponível no barramento D0-D7), podemos simplificar o esquema acima eliminando o latch bidirecional 74LS245 (lembrando que durante a presença do sinal de endereço A0-A7 o barramento das memórias e dos periféricos).

1.9.6) – Sincronização de Dispositivos Lentos

O pino de entrada READY (em nível alto permite o funcionamento do microprocessador e em nível alto o mesmo permanece em estado de espera – “wait”). O dispositivo de sincronização de memória / periférico lento controla o sinal READY do processador de tal forma a fazer o mesmo aguardar uma diferença de velocidade de acesso.

Page 29: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

29

Figura - Circuito típico de Wait State

Ex: Qual o período de um pulso de espera (Wait State) para o acesso a uma escrita no disco rígido e a memória RAM dinâmica considerando:

Tempo de Acesso ao disco rígido: 100 micro-segundos.

Tempo de Acesso da memória RAM: 65 nano-segundos. 1.10) - Microprocessador 8085 (8 bits) Principais características do 8085:

- 8 bits na via de dados (possui 246 instruções). - 16 bits na via de endereço (acessa 64 k de memória e 256 periféricos). - 5 entradas para interrupções. - Interface serial. - Controle de D.M.A. - Controle de sincronização para periféricos lentos. - Clock típico de 3 Mhz.

CPU Memória

Gerador Wait State

Decoficador CS

Entrada READY

Tacesso memória

Page 30: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

30

Análise da arquitetura interna e pinagens: ver data-book

Figura - Arquitetura interna 8085 Descrição das principais funções internas: - U.L.A: realiza operações aritméticas (soma, subtração, incrementação e decrementação) e operações lógicas (AND, OR, OR EXCLUSIVO, Inversão, deslocamentos bit a bit e comparação). - FLAG: registrador que sinaliza o resultado de operações da U.L.A. - Acumulador: registrador de 8 bits com multiplas funções (armazena resultados e operandos da U.L.A., dados de dispositivos de E/S, máscara de interrupções, etc). - Registradores de uso geral: 6 registradores de 8 bits (armazenando dados) podendo ser utilizados como pares de 16 bits (armazenando endereços): BC, DE, HL (ponteiro) - Registrador contador de programa (PC): registrador de 16 bits com a função específica de armazenar o endereço de busca da próxima instrução. Quando carregado através de instrução altera o fluxo seqüencial do programa ( realizando uma salto simples - instrução ‘jump’ - ou chamando uma subrotina - instrução ‘call’).

Page 31: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

31

- Registrador apontador de pilha (SP): registrador de 16 bits com a função específica de armazenar o endereço final da área de memória denominada “pilha” (onde são armazenados parâmetros de retorno das subrotinas) - Decodificador de instruções: bloco lógico interno com a função de receber as instruções (códigos de operação que entram pela via de dados), decodificando-as e gerando sinais de controle e temporização. - Buffer de endereços alto (A8-A15): via de endereços mais significativa formando junto com A0-A7 os 16 bits totais da via de endereço. - Controle Serial: o 8085 possui uma saída serial de dados (SOD) controlada pela instrução SIM (coloca o oitavo bit do acumulador no pino SOD) e uma entrada serial de dados (SID), controlada pela instrução RIM (coloca o bit da entrada serial no oitavo bit do acumulador). Análise da pinagem do microprocessador 8085: - Alimentações +5V e GND: alimentação única. Recomenda-se a colocação de um capacitor cerâmico de desacoplamento com valor variando entre 10-100 nF para eliminar ruídos. - X1 e X2: pinos de entrada do cristal. Possui um oscilador interno com a função de gerar um sinal de clock de 2 fases. Dispensa o circuito dedicado gerador de clock. - CLOCKOUT: saída de clock para periféricos. Tem a metade da freqüência 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 instrução) quando temos um nível baixo por mais de 10 mseg. - RESETOUT: saída ativa em nível alto com a função de inicializar os periféricos ligados ao 8085. Sincronizado com o sinal RESETIN. - RD: saída ativa em nível baixo indicando processo de leitura de memória ou periférico. Coloca o barramento de dados como entrada. - WR: saída ativa em nível baixo indicando processo de leitura na memória ou periférico. Coloca o barramento de dados como saída. _ - IO/M: sinal de saída. Em nível alto indica acesso a periféricos. Em nível baixo indica acesso a memórias. - S0 e S1: sinais de saída indicando status. 0 0 -> 8085 parado (HALT) 0 1 -> processo de leitura 1 0 -> processo de escrita 1 1 -> processo de busca de instrução (“fetch”) - READY -> sinal de entrada com a função de sincronizar periférico ou memória mais lenta que o 8085. Em nível alto habilita a operação do 8085. Em nível baixo para o 8085, fazendo-o permanecer em estado de ‘WAIT’. - HOLD: sinal de entrada. Em nível alto coloca barramentos de dado, endereço e controle em “tri-state”. Desta forma, um sistema externo (controlador de D.M.A. ou um outro microprocessador mais prioritário) assume um controle do barramento: - HOLDA: saída ativa em nível alto indicando barramento em tri-state para o controlador de D.M.A. ou para o microprocessador paralelo.

Page 32: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

32

Sistema Mínimo com o 8085:

SKD85

Figura - Sistema Mínimo 8085 Exemplo: 1) – Projetar um sistema mínimo com o 8085 com as seguintes características:

Page 33: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

33

Clock – 4 Mhz Reset automático / manual 5 periféricos ligados a 5 interrupções Sistema DMA (representar em blocos) Desabilitar sinal READY. 32 Kbytes de memória EPROM (2764) 32 Kbytes de memória RAM (6264) 8 Periféricos (endereço 00 – ff). Representar cada periférico 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 História -> 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

Page 34: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

34

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

1.12 – Sistemas Complementares de Sistema Programáveis - Microcontroladores 1.12.1) – Memória Virtual e MMU (Memory Management Unit)

Para a implementação de Sistemas Operacionais em Computadores, normalmente ocupando uma grande área de memória, é necessário o gerenciamento do espaço disponível de memória atraves de técnicas de gerenciamento e paginação da memória. Alguns destes conceitos são colocados, de forma introdutória, abaixo: - Memória Virtual: técnica para aumentar a capacidade da memória através do chaveamento da memória dando a percepção para o operador de mais memória do que a capacidade real. Isto é realizado através da divisão do programa em blocos, armazenados em área intermediárias (memória secundária - "overlays") e copiando estes pedaços de programas para um mesmo bloco de memória. - Disco Rígido Físico: guarda todo o programa a ser rodado. - Memória Física Real: memória menor que a Memória Virtual. Para o programador o mapeamento é contínuo. O sistema de MMU (Memory Management Unit) gerencia a cópia do programa armazenado no disco rígido para pedaços da memória real através de registradores de páginas ("page table") e registrador do endereço de offset (segmentação). O endereço real (físico) é determinado pela MMU e o Sistema Operacional trabalha com o endereço total (virtual).

Page 35: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

35

Exemplo: 1. 1 Mbytes de Memória Virtual (20 bits de endereço) com um aplicativo com 8 Kbytes de Memória Real (13 bits de endereço). A memória virtual será dividida em 128 paginas de 8 Kbytes (128 x 8K = 1Mbytes). Endereço de Offset -> 13 endereços. Endereço de Página -> 7 endereços. O programa controla 1M mas a MMU controla 8Kbytes de memória real dividindo a memória 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 - Periféricos Embarcados

Ports

Page 36: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

36

Típico periférico de microcontroladores / DSP de Entrada / Saida para leitura / controle binário de um dispositivo. Podem ser configuráveis ou fixos. Exemplo: Entrada -> chaves, teclados, sensores binários. Saída -> rele, led, lâmpada, motor, solenóide, etc. Pode-se utilizar Latchs como Ports:

Figura - Utilização de 1 latch como controle de sáida (lâmpadas) Microcontroladores e DSP possuem Ports internos para controle binários de entradas e saídas.

UART - Comunicação Serial Interface, normalmente Full-Duplex (Tx e Rx simultâneamente), para comunicação serial. Garante a conectividade serial do equipamentos com redes externas (modem, rede Ethernet, Fibra-Otica, satélite, etc).

Timers - Temporizadores Contadores de tempo gerando interrupções / eventos temporizados no Microcontrolador. São configurados por software e sincronizados pelo oscilador do sistema ou pulso externo.

Page 37: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

37

Exemplo: Timer gerando interrupção a cada 50 msegundos para um alarme verificar os sensores de presença / janela. 1.10.4 - Conversor A/D Conversor Analógico / Digital responsável por amostrar (taxa de amostragem) sinal externos analógicos (normalmente de baixa frequencia em microntroladores) gerando valores digitais correspondentes. A precisão da conversão depende do número de bits utilizados (amostras = 2n onde n é o número de bits), taxa de amostragem de valor máximo (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 / Analógico converte dados digitais binários em valores analógicos correspondentes. Normalmente utilizados em sistemas reprodutores de som (MP3). Sua precisão depende o número de bits utilizado. 1.10.6 - PWM Bloco de Modulação por Fase, normalmente utilizado para gerar sinais com ciclo de trabalho programável. Tem como principal aplicação o controle de luminosidade de lâmpadas ou velocidade de motores. 1.10.7 - USB Interface Serial Universal: típica 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 específico de endereçamento. 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 vários segmentos) e um grande número de pinos para acesso a cada segmento do LCD. 1.10.10 - Barramento SPI

Page 38: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

38

Barramento Serial de 3 pinos, normalmente utilizado para acesso a perifericos seriais externo (A/D por exemplo) como memória Flash serial (ou interface SD de armazenamento de dados). 1.10.11 - Barramento I2C Barramento Serial de 2 pinos com funções similares ao barramento SPI. 1.10.12 - Barramento CAN Interface Serial de 2 fios, com protocolo específico, normalmente utilizado em ambientes ruidosos como os dispositivos em um veículo ou ambiente industrial. 1.10.13 - Barrramento para Emulação / Gravação Utilizado para gravação / depuração / desenvolvimento do aplicativo. Interage com o hardware do controlador. Normalmente segue o padrão JTAG (6 fios) ou ISP (3 fios)

Page 39: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

39

2) - Arquitetura de Microcontroladores

Planejamento (P): Este capítulo capacitará o aluno nos seguintes pontos: - Conceituar Microntrolador - Conhecer a arquitetura interna da família MCS-51 - Sistema Mínimo da família MCS-51 com e sem memória externa - Projetar CLPs utilizando ports de comunicação paralelo. Execução (D): 2.1 - Introdução Considerando as aplicações típicas e a tecnologia envolvida: Aplicação Multimídia - PC Sistema Aberto (BIOS + SO + Aplicativo)

X

Análise de Sinais - Sistema Dedicado (Firmware)

X

Controle Booleano / Sinal Analógico de baixa freqüência

X

Microcontrolador 8 / 16 bits

DSP 16 / 32 bits

Microprocessador 32 / 64 bits

Tecnologia

Sistemas com microcontroladores são utilizados para controle e sistemas dedicados. São típicos 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

Page 40: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

40

Características Microcontrolador Microprocessador Velocidade Lenta ( típico < 1Mhz) Rápida (típico > 1 Ghz) Consumo Baixo (uA) Alto ( ventilador, fonte

chav.) Memória de Programa Pequena capacidade (kbytes) Grande capacidade (mbytes) Memória de Dados Mínima (bytes) Grande capacidade (mbytes) Arquitetura de Memória Hardware (típica) Von- Newmann Barramento 8 bits (dados) > 64 bits (dados) Aplicação fechada, firmware aberta, multimidia

2.2.1) - Família de Microcontroladores INTEL MCS-51: Ao contrário da linha de microprocessadores (segue Lei de Moore no desenvolvimento), microcontroladores tem um “tempo de vida” de décadas. A Intel lançou “apenas” 2 famílias de microcontroladores: MCS-48 (meados da década de 70) MCS-51: presente até hoje de forma bastante atuante no mercado. Apesar de existirem diversas “famílias” importantes de microcontroladores no mercado (Microchip, Texas, Zilog, Motorola, Cypress, National), a linha da Intel continua bastante atuante no mercado (principalmente pelo grande número 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 memória externa). Os principais recursos dos microcontroladores MCS-51: - Memória de Programa de 4 kbytes: ROM (8051), OTP (8751), FLASH / EEPROM (89Sxx), ROMLESS (8031) com expansão até 64K. - 256 bytes de RAM (registradores) com expansão até 512 bytes - 4 ports (latchs bidirecionais programáveis) com 8 bits. Existem versões de 2 ports até 6 ports. - 2 temporizadores ("timers") de 16 bits. Expansão até 3 timers - 1 unidade serial assíncrona (UART) "full-duplex". - 5 interrupções (2 externas, 2 "timers" e 1 "UART"). - Oscilador interno para geração de temporização. - Acesso a até 64 Kbytes de RAM externa (dados) e 64 Kbytes de EPROM (programa) externa através do controle de 2 sinais de leitura (PSEN -> área de programa - RD -> área de dados). Esta estrutura é conhecida como 'arquitetura HARVARD'. - 256 instruções otimizadas para controle. Arquitetura do Microcontrolador 8051:

Page 41: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

41

Figura - Arquitetura MCS-51 (fonte: Intel)

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

Page 42: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

42

Pinagem: - Vcc,Gnd: alimentação única de 5 Vcc. - X1-X2: conectada ao cristal externo (12 Mhz típico). O sistema de temporização interno divide a freqüência do cristal por 12, proporcionando um ciclo típico de máquina de 1 mseg. - RST: entrada de inicialização ativa em nível alto __ - EA ("external acess"): em nível baixo, desabita os 4 kbytes de memória de programa interna. Toda a busca de instrução é realizada externamente (através de uma EPROM). Em nível alto habilita a memória interna.

- ALE ("Address Latch Enable"): na utilização de memória de programa externa, este pino tem a função de indicar a presença de endereço (em nível alto) ou dado (em nível baixo) no barramento de endereço/dado multiplexado (AD0-AD7). ____ - PSEN ("Program Strobe Enable"): em nível baixo indica leitura de uma instrução da área de programa. Normalmente ligado ao pino RD da memória de programa. - Port P0 (P0.0-P0.7): seus 8 pinos podem ter dupla função. Se não houver memória externa, são utilizados como sinais de entrada/saída do "latch" bidirecional P0. Se houver memória externa, atua como 8 sinais multiplexados de dados/endereço (AD0-AD7). O sinal de ALE indica a condição deste barramento. - Port P1 (P1.0-P1.7): 8 pinos de entrada/saída do "latch" bidirecional P1. - Port P2 (P2.0-P2.7): seus 8 pinos também podem ter dupla função. Se não houver memória externa com mais de 256 endereços, são utilizados como sinais de entrada/saída do "latch" bidirecional P2. Se houver necessidade de endereçamento maior que 8 bits, atua como 8 sinais de endereço A8-A15. - Port P3 (P3.0-P3.7): novamente, seus 8 sinais tem dupla função: - P3.0: RxD (recepção serial) / port P3.0 - P3.1: TxD (transmissão serial) / port P3.1 - P3.2: INT0 (interrupção 0) / port P3.2

Page 43: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

43

- P3.3: INT1 (interrupção 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 Descrição das funções internas: - U.L.A.: unidade lógia aritmética de 8 bits, responsável pela execução das 4 operações aritméticas básicas e das operações lógicas tradicionais (AND, OR, OR EXCLUSIVE, INVERSÃO e SHIFT). - Acumulador: registrador de 8 bits mais utilizado pelo microcontrolador. Normalmente utilizado para colocar resultados da U.L.A. ou fatores utilizados nas operações lógico / aritméticas. No caso das operações de multiplicação, o registrador B também é utilizado para colocação dos resultados, pois o resultado é apresentado em 16 bits. - Flag PSW: registrador sinalizador das operações aritméticas da U.L.A., configurador dos registradores R0-R7 e para uso geral. Abaixo é mostrado a posição e nome de seus 8 bits:

CY AC F0 RS1 RS0 OV - P CY (PSW.7): indica presença de bit CARRY (vai um) nas operações aritméticas da U.L.A. AC (PSW.6): indica presença do bit Auxiliar Carry quando ocorre vai um entre os 3 e 4 bits nas operações aritméticas 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 presença de bit CARRY (bit 8 ativado) nas operações de multiplicação da U.L.A. Auxilia também as operações de subtração. P (PSW.0): indica paridade do acumulador. Se setado, indica número par de '1' no acumulador. Caso contrário indica número ímpar. - Contador de Programa (PC): registrador de 16 bits que guarda o endereço da próxima instrução. Quando o 8051 é resetado, este registrador é zerado, fazendo o 8051 buscar a primeira instrução da memória. - Apontador de Pilha (SP): registrador de 8 bits indicador do endereço inicial da pilha do 8051. A pilha necessariamente tem que estar localizada entre os endereços 30H e

Page 44: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

44

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 endereços do PC e dos parâmetros da instrução PUSH). - Ponteiro de Memória Externo (DPTR): registrador de 16 bits utilizado para armazenar endereços de memória externa. - Registrador B: registrador auxiliar nas operações de multiplicação e divisão. - Decodificador e Registrador de Instruções / Controle e Temporização: sistema responsável pelo armazenamento, decodificação e execução dos códigos de operação (bytes) das 256 instruções do 8051. Controla os sinais externos de controle (reset, ALE, configuração da memória interna de programa e sinal de leitura da memória externa). - Timers: o 8051 possui 2 sistemas de temporização de 16 bits. Maiores detalhes serão fornecidos nos capítulos subsequentes. - Unidade Serial: sistema para comunicação serial assíncrona full-duplex. Maiores detalhes serão fornecidos nos capítulos seguintes. - Memória de Dados (SFR) e de Programa: o 8051 possui um estrutura de acesso ao sistema de memória conhecida como HARVARD, onde o acesso a memória de programa é diferenciado do acesso a memória de dados (através de sinais de leitura distintos). Desta forma, o microcontrolador não permite que um determinado programa fique localizado na área de dados ou vice-versa. A grande vantagem deste sistema é a otimizacão do sistema no acesso as instruções do programa e aos dados. O programa dos sistemas com microcontroladores normalmente são dedicados (FIRMWARE). Observe que este modo de acesso a memória é diferente dos microcomputadores padrão 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 memória RAM dentro dos computadores). - Memória de Dados (SRF): o 8051 possuir 256 bytes de memória de dados interna e permite o acesso de mais 64 Kbytes de memória de dados externa (unicamente através das instruções MOVX). Na maioria das vezes a memória interna de dados é suficiente, pois as aplicações de controle normalmente não exigem muita quantidade de memória volátil (já que os programas não são armazenados na área de RAM). A memória RAM interna é divida em 4 áreas: - Área de Registradores R0-R7 (00-1FH): o 8051 possui 4 bancos de registradores selecionados através dos bits RS1 e RS0 do registrador PSW. Normalmente estes registradores armazenam endereços da área de rascunho (modo de endereçamento indireto). - Área Booleana (binária) (20H-2FH): 16 bytes endereçados bit a bit (totalizando 128 bits). Pode-se acessar cada bit individualmente indicando uma determinada condição binária (por exemplo: a tecla A de um teclado foi acionada). Estes bits são acessados pelas instruções booleanas do 8051. - Área de Rascunho (30H-7FH): memória 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 função especial. O número destes registradores varia de acordo com as funções disponíveis dentro do processador. Os registradores especiais mais comuns são: - PO (80H): port P0. - P1 (90H). - P2 (A0H).

Page 45: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

45

- 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 habilitação do sistema de interrupções. - IP (B8H): registrador indicador de prioridade do sistema de interrupção. - 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 endereço dos registradores especiais (Databook Atmel 89S51 - www.atmel.com.br). Figura - Tabela de Endereço dos Registradores Dedicados (fonte: Atmel) Verificação (C)

Exercícios / 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 laboratório.

Page 46: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

46

Sistema Mínimo com o 8051: - 32 sinais de entrada/saída

- Interface serial (RxD e TxD), interrupções externas (INT0 e INT1), "timer" duplo externo (T0 e T1).

Verificação (C) Exercícios 1) – Sistema com o 8031 com as seguintes características:

Page 47: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

47

- Eprom Externa 27128. - RAM 6264 (end. 0 – 1fffh). - Clock de 11.059Mhz - Reset automático e manual - Alarme com uma chave liga/desliga, 4 sensores ultrasônicos, 1 lâmpada e 1 buzina. 2) – Sistema com o 89S51 com as seguintes características: - Clock de 12 Mhz - Reset automático 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 características: - Eprom Externa 27256. - RAM 62512 - Clock de 11.059Mhz - Reset automático e manual - 8 ports para um teclado. - Comunicacao serial - Previsão de utilizar 2 ports para controle de um display.

Page 48: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

48

2.2.2 - Microcontrolador LPC935 (família LPC9xx)

Arquitetura Interna LPC93x NXP

Page 49: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

49

Principais Características

Memória Flash de 4 / 8 / 16 Kbytes com fácil programação. Memória RAM 256 bytes + 512 bytes de memória auxiliar nas versões LPC935 /

936. Memória EEPROM 512 bytes 4 entradas multiplexadas de conversor ADC de 8 bits e 1 DAC. 2 comparadores analógicos com entrada selecionável. 2 timers de 16 bits (temporizador com “overflow” ou PWM). Sistema adicional de

timer de 23 bits podendo ser utilizado como RTC (relógio). UART com gerador de baund rate, detecção de parada e erro de comunicação. CCU (Capture Compare Unit) para geração de PWM e funções de comparação de

sinais. RC interno de alta precisão (erro < 1%) dispensando cristal externo. Alimentação de 2,4V a 3,6 V com pinos de I/O tolerantes a 5 V (resistor de pull-up).

Page 50: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

50

CPU 8051 de alta velocidade (6 vezes a velocidade 8051 – dividindo a frequencia do cristal / oscilador por 2. Cristal até 18 Mhz (ciclo de instrução de 111 nseg).

Gravação Serial (ISP) da memória Flash, facilitando a programação “in circuit”. Gravação In-Circuit Programming (ICP) permitindo processos produtivos ágeis e

proteção do código da memória. Watch Dog com oscilador independente (interno). Seleciona até 8 períodos de

Watch Dog. Detector de baixa tensão (Brown Out Detect) permitindo o desligamento suave do

sistema com opção de gerar uma interrupção. Modo Idle de economia de energia (ativa interrupção) e 2 modos de Power Down

com correntes de repouso menores que 1 uA. Reset externo ativo em nível alto (com detector de sinais espúrios). Sistema de

Reset interno. Oscilador interno com freqüência selecionada por programação. Frequência externa

de 20 Khz e 18 Mhz. Detector de falha de clock através do Watch Dog. Programação 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 restrições

máximas de corrente de cada chip. Controle de EMI (ruídos) nos ports, exigindo 10 nseg de tempo mínimo de subido

de cada sinal. Quando utilizado clock e reset interno exige apenas ligação dos pinos GND e Vcc. Interrupções com 4 níveis de prioridade. Interrupções de teclado de 8 entradas. Entradas com Schimitt Trigger. Suporte a emulação externa.

Page 51: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

51

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

Esquema Elétrico http://www.iar.com/website1/50.0.1.0/224/IAR_LPC935_revB.pdf

Page 52: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

52

Configuração dos Ports:

Os 3 ports são configurados individualmente de 4 formas (pag. 40, item 5.1 do Manual):

Bidirecional: configuração típica do 8051, pode ser configurado como entrada / saída (com resistor de pull-up).

Saída: sem resistor de pull-up (“open drain output”) Saída com resistor de “pull-up” Entrada com “scgnutt-trigger”

Registradores de configuração: 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 inpedância). 1 1 Saída coletor aberto

Exemplo: Configurar os 3 ports como bidirecionais mov P0M1,#0x00 mov P0M2,#0x00;

Page 53: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

53

mov P1M1,#0x00 mov P1M2,#0x00; mov P2M1,#0x00; mov P2M2,#0x00; Inicialização (Reset) – Item 7 (página 49 do Manual) O pinio P1.5 / RST pode ser ativo como reset externo (condição inicial após ligar). O bit RPE (Reset Pin Enable) do registrador UCFG1 (pág. 136 do Manual – Registrador da Memória Flash configurado na gravação da memória) quando colocado em 1 habilita o reset interno.

Registrador UCFG1 – Escrito na Memória Flash durante a Gravação Para ativar reset interno RPE=0 Se nível baixo o pino P1.5 pode ser utilizado como pino de entrada. O circuito típico de um reset externo é mostrado abaixo:

O gravador FlashMagic configura o registrador UCFG1 – função “DEVICE CONFIGURATION”

Page 54: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

54

Temporização (Clock) – Item 2 (pagina 25 do Manual) O LPC935 tem um oscilador interno podendo ser configurado com cristal externo. O registrador envolvido é o TRIM (endereço interno 0x96). Com o bit ENCKL = 0 (condição inicial do reset) o microcontrolador está configurado para operar com oscilador interno Registrador TRIM:

No processo de inicialização dos 5 bits TRIM são carregados no oscilador interno para aferição. Estes bits não devem ser ALTERADOS no processo de configuração 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 inicialização UTILIZAR CLOCK INTERNO DA INICIALIZAÇÃO ORL TRIM,#0x40 ;ENCLK = 1 -> CLOCK EXTERNO

Page 55: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

55

Sistema Mínimo LPC935 – Kit de Desenvolvimento QSP935 Ver no anexo 2 esquema do Kit QSP935 (arquivo PDF disponível no laboratório). Observar ligação dos Ports, Fonte de Alimentação e circuito serial de gravação.

CPU e o sistema mínimo com Reset, Clock e Alimentação.

Sistema de Teclado Matricial (4x3) com 4 linhas (saída) e 3 colunas (entradas)

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

Page 56: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

56

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

Relógio DS1307 com barramento SPI

Page 57: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

57

Chave de seleção

Fonte de Alimentação, Comunicação Serial e Programação:

Page 58: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

58

Estrape Gravação e Alimentação Estrape JP5 ativo -> alimenta microcontrolador (operação normal) Estrape JP6 ativo -> controla Reset através da programação ISP. Estrape JP7 -> alimentação USB Estrape JP8 -> alimentação fonte externa

Exercícios 1) – Sistema com o LPC935 com as seguintes características: - Clock de 12 Mhz - Reset automático e manual. - Controle de 12 motores . - 12 entradas de chaves. 2) – Fazer um CPL para controlar os ventiladores e lâmpadas da sua sala de aula, com comunicação serial e sensores de presença, temperatura e chave liga / desliga para ventiladores e lâmpadas. 3) – Fazer um alarme com o LPC935 com as seguintes características:

Cristal externo 12 Mhz Reset externo Comunicação Serial Chave liga/desliga 2 Buzinas 2 Lâmpadas. 1 Led 4 sensores para janelas 4 sensores

Page 59: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

59

3) - Linguagem Assembler

Planejamento (P): Este capítulo capacitará o aluno nos seguintes pontos: - Conceituar Programação estruturada. - Conhecer os mnemônicos do MCS-51 - Editar, compilar, simular e emular programas em Linguagem Assembler para o MCS-51 - Projetar CLPs utilizando ports de comunicação paralelo e programá-los em Linguagem Assembler. Execução (D):

3.1) - Introdução: A linguagem Assembler é uma linguagem de nível intermediária, composta basicamente de mnemônicos (palavra representando o código de operação da instrução), diretivas (pseudo-instruções), labels e comentários. Pelo fato de estar bem próxima a linguagem de microprocessador (linguagem de máquina composta de bits compreensível pelo processador), exige um compilador (programa que converte o programa fonte em linguagem de máquina) bastante simples e portanto rápido. É ideal para utilização na área de projeto e testes de microprocessadores, pois exige conhecimento da estrutura do microprocessador utilizado (ao contrário das linguagens superiores transparentes a estrutura do processador). Tem a desvantagem de não possuir a estrutura de linguagens como PASCAL e C.

Aplicativo (camada de programação interativa com o usuário)

Linguagem Superior (camada de programação composta de estrutura de programação (IF THEN < > ELSE <

>)) ↑

Linguagem Assembler (camada de programação composta de mnemônicos dos códigos de operação).

Linguagem de Máquina (camada de programação composta por códigos de operação presentes na memória e lida

pela CPU para executar uma tarefa) ↑

Hardware (camada física)

Page 60: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

60

A medida que a linguagem fica mais interativa ao programador, o compilador (converte os códigos da camada de linguagem em códigos de operação processados pelas CPU) necessita de ser mais complexo e portanto mais lento (ou exigindo mais velocidade do processo envolvido) Antes da edição de um programa, deve-se elaborar o algoritmo e se necessário o fluxograma (representando este algoritmo). 3.2) - Estruturas de programação O formato do programa estruturado blocos padronizado e simples. Todo o programa possui uma seqüência de instruções formando um sistema cíclico (loop). Toda linha de programação validade deve ser finalizada por ponto e vírgula. → declarações; /* declarações de variáveis */ → main () /* rotina principal obrigatória */ { declarações; /* declarações do programa principal */ } → rotina1 /* sub-rotinas */ { declarações; } ............. → rotina N { declarações; } → Condicional IF:

Testa uma condição, realizando-a se verdadeira. Caso contrário, ou sai da estrutura ou executa a declaração contida na estrutura 'else' if (estrutura de teste) { declarações /* para uma declaração simples não é necessário { } } else /* não obrigatório */ { declarações } Ex: if (teste = = a+b)

Page 61: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

61

{ 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 operação enquanto uma determinada condição não for atendida. for (inicial;condição;incremento) /*se estiver sem condição infinito */ { declaração ; } Ex: for (a=2; a < 101; a++) { teste = teste + a; resultado = ++; } for ( ; ; ) { motor = desligado; } → Condicional WHILE

Page 62: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

62

Realiza uma operação enquanto uma determinada condição estiver sendo atendida. while (condição) /* se a condição for 1, o condicional é infinito */ { declaração; /* se houver apenas uma declaração não é necessário {} */ } Ex: soma = 0; a = 0; while (a < 101) { soma = soma + a;

a++; }

→ Condicional DO / WHILE Estrutura que realiza uma declaração enquanto houver alguma condi;cão seja atendida. do { (declaração); } while (condição) Ex: do { b=++; motor = ligado; } while (chave = ligada) → Condicional SWITCH Testa uma variável e executa um grupo de declarações testando uma condição particular. switch (variável) { case constante1: {

Page 63: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

63

(declarações) break; }

case constante2: { (declarações) break; }

case constante3: { (declarações) break; } } 3.3) Estrutura básica da Linguagem Assembler: A linguagem Assembler relaciona estruturas mnemônicas e pseudo-instruções (diretivas) com códigos de operação (linguagem de máquina). Por ser uma representação direta dos códigos de operação do microprocessador, permite um total controle dos elementos físicos de um sistema microprocessado (acesso a registradores, posições absolutas de memória, controle de periféricos, etc.). Campos básicos de uma linha de Linguagem Assembler: LABEL CÓDIGO DE OPERAÇÃO OPERANDO COMENTÁRIOS Exemplo: MOV A,B ;carrega A com B Campo Label: rotula um endereço do programa com o objetivo de facilitar as instruções de salta do sistema (o compilador associa o nome do rótulo com o endereço absoluto). O label também é utilizado para nomear variáveis do sistema através da diretiva EQU (equate). O campo Label é separado do código de operação através de um caracter de espaço ou TAB. Código de Operação: estruturas mnemônicas relacionada com o código de operação real. Operando: contem informações de registros, valores numéricos, labels ou expressões numéricas que complementam o mnemônico. Ex.:1) mov a,#05

2) VALOR_CTE equ 05 ... add a,#VALOR_CTE 3) mov dptr,#04ffh + 1

Page 64: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

64

4) mov a,#8 AND 1 Comentários: explicação de um procedimento com o objetivo de esclarecer o funcionamento de determinada parte do programa. Normalmente o comentário vem seguido do símbolo do ponto e vírgula.

3.4) - Técnicas para programação Assembler:

É importante adotar um claro e consistente estilo na programação 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 básicos para a execução do trabalho facilita não apenas o trabalho em equipe como a programação de um único programador, pois agiliza a produção e possíveis correções do programa. Normalmente estes procedimentos são padronizados por processos de controle de qualidade que as empresas ou programadores adotam.

3.4.1) - Labels e utilização de EQUATES: A utilização de expressões identificadores de endereços das linhas de programação (seguida de : ) ou de números / endereços (com EQU) facilitam a documentação e compreensão do programa, agilizando a programação e principalmente o reparo / manutenção do sistema. A substituição do valor real do Label (variável / endereço) é providenciada pelo processo de compilação. Deve-se procurar utilizar nomes dos labels que sejam mnemônicos para as funções 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

Page 65: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

65

CALL INICIA_DSP ... ;SUBROTINAS ;INICIALIZA DISPLAY LCD INICIA_DSP: .... RET ;SUBROTINA INTERRUPCAO LE_IO: ... RETI

3.4.2) - Comentários: As linhas de comentários, normalmente precedidas por ponto e vírgula, devem ser utilizadas para indicar, ao programador, as funções básicas da rotina em questão e de determinadas instruções. Seu uso não deve ser indiscriminado (indicando situações obvias e redundantes) mas sim esclarecer a função das rotinas comentadas. As estruturas de decisão (utilizando JZ, JNZ, CJNZ, DJNZ, etc) devem sempre estar objetivamente comentadas. Os programadores e empresas mais capacitadas normalmente estabelecem formatos para os comentários, de tal forma a padronizar a documentação. Um exemplo é sempre existir um comentário no início do programa descrevendo a função do programa de forma genérica, as interrupções utilizando, histórico de alterações, datas, programadores envolvidos, pendências, etc. Cada sub-rotina deve ser acompanhada de um cabeçalho contendo: - Descrição objetiva da rotina. - Parâmetros de entrada - Parâmetros de saída - Registradores alterados / utilizados Exemplo: ;*********** ;* ROTINA EXEMPLO - F.C.I MACKENZIE ;* ;* Data Início: 01/03/2000 ;* Programadores: José, João e Maria ;* Descrição: esta rotina tem como função exemplificar a forma de documentação ;* ;* Histórico de Alterações: ;* 01/03 -> inicio da programação. ;* ;* Pendências: ;* - Melhorar rotina de cálculo do CheckSun ;* ;************ ;***

Page 66: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

66

;* ÁREA DE LABELS ;*** ... ... ;*** INÍCIO DAS SUBROTINAS ;*** ROTINA DE ESCRITA NO DISPLAY ;* ;* DESCRIÇÃO: rotina com a função de escrever os dados da memória pré-estabelecida no DSP ;* ;* Parâmetros de Entrada: End. 50h-5fh -> primeira linha DSP ;* Parâmetros de Saída: ;* Registradores alterados: Acc, DPTR, R0 ;* ;* Histórico de alteração: ;* Início: 01/03/2000 ;* ;*** ESCR_DSP: ... RET

3.4.3) - Salvamento de Registradores na Pilha: Para a correta estruturação do programa é fundamental garantir que uma sub-rotina não venha a interferir o funcionamento de outras rotinas no programa. Esta transparência é garantida pelo controle dos registradores alterados na rotina e seu devido salvamento na pilha quando não se tratar de registradores utilizados para passagem de parâmetros de saída. Portanto, é necessário a utilização das instruções PUSH e POP para garantir a integridade dos registradores alterados. Exemplo: ;*** SUBROTINA DE RECEPÇÃO SERIAL ;* ;* Descrição: rotina acessada pela interrupção serial. Lê SBUF, carregando o dado no ;* endereço 30H se o mesmo for diferente de 00. ;* Registradores de Entrada: SBUF ;* Registradores de Saída: 30H ;* Registradores alterados: ACC, PSW LESERIAL: PUSH ACC PUSH PSW MOV A,SBUF CJNE A,#00,CONT1 MOV 30H,A

Page 67: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

67

CONT1: POP PSW POP ACC RETI

3.4.4) - Utilização de Sub-rotinas: O princípio básico da programação estruturada e bem feita é a divisão do programa em sub-rotinas, dividindo a solução para facilitar a obtenção do algoritmo de cada parte do programa. A divisão do programa também auxilia na divisão de tarefas e procedimento de testes de cada parte do programa. A idéia básica é a mesma quando temos um grande problema para resolver e o dividimos para facilitar a solução final. O conceito de sub-rotina também 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 função, é claro que existirá uma grande economia de códigos de programação. As sub-rotinas podem estar ligadas ao sistema de interrupção. Neste caso, sua função está ligada diretamente a característica da própria interrupção. Ex.: a interrupção serial está ligada a função de receber e transmitir dados seriais. No planejamento do programa devemos dividir o programa em rotina principal, sub-rotinas de interrupção e sub-rotinas genéricas. Cada um destes blocos poderá ser criado e testado separadamente (inclusive com auxílio de programas de LINK / LOCATE), existindo no final apenas um teste final interligando todas as rotinas.

3.4.5) - Organização do Programa: Normalmente os programas são ordenados da seguinte forma: - Comentário Inicial - Área de Labes (equates) - Vetores e chamada de Interrupção - Programa Principal (normalmente em loop) - Área de Sub-rotinas genéricas. - Área de Sub-rotinas de interrupção. - Área de tabelas (DB, DW, etc.) O algoritmo do programa deverá ser estruturado baseado na ordem acima. 3.5) - Endereçamento dos operandos 8051 Instrução: código binário composto de 1 ou mais bytes com a função de orientar o processador a realizar uma tarefa específica. Estes códigos serão lidos seqüencialmente da memória e, através da via de dados, entrarão no decodificador de instruções do microprocessador, gerando uma série de sinais internos e externos de controle. Tamanho das instruções no 8085: podem ocupar 1, 2 ou 3 bytes de memória.

Page 68: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

68

- 1 byte: o código de operação já especifica completamente a função da instrução, não necessitando de complemento algum. D7 D6 D5 D4 D3 D2 D1 D0 -> código de operação Ex: MOV B,A (desloca o dado do acumulador para o registrador B) -> não necessita de complemento Código de operação -> 01000111 - 47H - 2 bytes: necessita de 1 byte de complemento D7 D6 D5 D4 D3 D2 D1 D0 -> código de operação 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 (cód. operação) -> 00111110 - 3EH Segundo Byte (complemento) -> 00000111 - 07H - 3 bytes: necessita de 2 bytes de complemento D7 D6 D5 D4 D3 D2 D1 D0 -> código de operação 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 (cód. operação) -> 00100001 - 21H Segundo Byte (primeiro compl.)-> 00000000 - 00H Terceiro Byte (segundo compl.)-> 00000010 - 20H Modos de endereçamento do 8051: Direto: o dado do operando indica o endereço de transferência do dado. Ex: MOV A,50H ; o dado do endereço 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

Page 69: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

69

Indireto (@Rn): o dado armazenado no endereço da memória com endereço guardado no registrado Rn é transferido para o destino Ex.:

MOV R0,#50H ; o dado 50H é carregado em R0 MOV A,@R0 ; o dado do endereço 50H é carregado no acumulador. 3.6) - Estrutura e diretivas da Linguagem Assembler: Um programa em assembler é composto basicamente de comentários, códigos de operação, operandos, pseudo-instruções (diretivas) e labels. Os comentários são sempre precedidos de ponto e vírgula e tem a função de documentar o programa, esclarecendo funções e procedimentos. O "label" (rótulo) pode ser de 2 tipos: quando seguido de ':', determinada com um nome um determinado endereço. Quando seguido da expressão EQUATE (EQU), associa um nome a uma constante. Uma linha de programação em Linguagem Assembler completa possuiu a seguinte estrutura: LABEL: CÓDIGO DE OPERAÇÃO OPERANDO ;COMENTÁRIO Ex: INICIO: MOV SP,70H ;CARREGA SP COM END. DA PILHA ------ ------- -------------------- label cód.oper. operando comentário As pseudo-instruções (diretivas) são instruções especiais, não codificáveis (para linguagem de máquina), com o objetivo de melhorar a estrutura do programa e facilitar o processo de programação. As diretivas mais utilizadas são: - ORG (origem): indica endereço inicial da memória onde devem ser armazenadas as instruções posteriores. Um programa pode possuir mais de uma diretiva ORG. - EQU (equate): define equivalência entre nomes (labels) de dados ou endereços que serão substituídos no processo de compilação para se obter os códigos executáveis finais. Tem a função de otimizar possíveis alterações nos dados e endereços nomeados pelo EQU. - DB (define byte): define valor a ser colocado na memória - DS (define espaço): define número de espaços reservados na memória para posterior utilização. - END: finaliza a edição 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 EDIÇÃO, COMPILAÇÃO, LINKER, SIMULAÇÃO e EMULAÇÃO.

Page 70: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

70

Simuladores -> EW8051, AVSIM51, SIM535

Page 71: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

71

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

3.7) - Códigos de operação do microcontrolador MCS-51: Com o objetivo de introduzir as instruções do 8051 da forma mais didática possível, os 256 mnemônicos são dividos em 5 grupos: instruções de transferência de informação, aritméticas, lógicas, transferência de controle e booleana. Todo o conjunto de instruções e seu significado podem ser obtidos no Manual ATMEL MICROCONTROLLERS 8051 HARDWARE MANUAL (ver em www.ivair.com.br / ferramentas). As principais tabelas são colocadas no anexo desta apostila. A seguir são colocadas apenas as principais instruções para as primeiras práticas.

3.6.1) - Instruções de transferência de informação: - 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 INSTRUÇÒES DE TRANSFERÊNCIA DE INFORMACAO

Page 72: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

72

; EDITAR NO PROGRAMA NO BLOCO DE NOTAS -> EXEMPLO1.TXT ; COMPILAR -> ASM51 EXEMPL1.TXT ; SIMULAR NO AVSIM51 OU EMUL8051 OBSERVANDO A MOVIMENTAÇÃO DE DADOS #include “ioP89LPC935.h ;biblioteca LPC935 (EW8051) ; LABEL PILHADEFINE Ox60 ;INICIO DA CODIFICACAO ORG 0 ;POSIÇÃO 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 MEMÓRIA (30H) MOVX @DPTR,A ;DADO DO ACC NA MEMÓRIA EXTERNA (2000H) MOV DPTR,#TABELA MOV A,#00 MOVC A,@A+DPTR ;LE TABELA MOV @R1,A ;GUARDA DADO DA TABELA NA MEMÓRIA JMP INICIO ;TABELA TABELA: DB 42H END Resultado da compilação

Page 73: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

73

Figura - Simulador EMUL8051 com o resultado do EXEMPLO1.TXT Exercício Carregar o dígito verificado do seu código de matricula nos registrados R3, R4, na memória interna 50H, na memória externa 1000H. Criar uma tabela com o código ASCII da primeira letra do seu nome e carregá-lo na memória externa 1050h. Simular o exercício no simulador do laboratório.

3.6.2) - Instruções Aritméticas e Lógicas: - 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

Page 74: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

74

- 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 / ARITMÉTICAS #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 memória 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 lógica 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

Page 75: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

75

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 - Simulação do programa EXEMPLO2.TXT utilizando o AVSIM51

Exercício 1) - Carregar o dado do PORT P1 nos registradores internos R0-R7 do terceiro banco. 2) - Somar o dado do endereço 30H da memória interna com o dado 30H da memória externa. Complementar o resultado e fazer uma operação AND com o dado do PORT P1. Guardar o resultado no endereço 50H da memória interna.

3.6.3) - Instruções de Transferência de Controle e Booleanas: - JMP 1050h ; carrega PC com o endereço longo 1050h - JNZ ON_FAN

Page 76: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

76

- JZ OFF_FAN - CALL rotina - RET - RETI - PUSH ACC - POP ACC - CJNE A,#7Ah,SALTO

- DJNZ R3,LOOP Instruções que envolvem processamento booleano são típicas de sistemas de controle. Muito comuns em operações de controle onde ligamos/desligamos equipamentos (motores, solenóides, lâmpadas, leds, etc) ou lemos entradas (chaves, sensores, etc) que estão 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 endereçado pela posiçao no bit ou pelo próprio nome do bit: - PSW.7 ou Cy-> bit carry do flag O bit Cy (ou simplesmente C) é bastante utilizado nas instruções boolenas. - CLR C - CLR MOTOR - SETB RELE - CPL LED - JNC LIGA_LED - JB CHAVE,LIGA_VEN

Page 77: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

77

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 endereço inicial 70H Cristal Interno -> 7,373 Mhz LPC935 -> 2 x 8051 -> divide cristal por 6 Tempo = 0,81 useg cada ciclo instrução ; 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

Page 78: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

78

Verificação (C) Exercícios

1. Carregar a memória RAM interna booleana (20H-2FH) e byte (30H a 7FH) do 8051 com o dado AAH. 2. Idem para uma área de memória RAM externa entre 8000H e FFFFH. 3. Carregar o Acumulador e os registradores R0 a R7 com o seu código de matrícula. Somar todos os caracteres e colocar o resultado no endereço 0x30 da memória interna de 0x2000 da memória externa. 4. Ler o conteúdo do Port P0. Inverter todos os bits. Fazer uma operação 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 nível alto. 7. Projetar um sistema mínimo com o LPC935 para um sensor fotoelétrico (P1.4) ligar 8 lâmpadas (port P2) 1 minuto apos o sensor indicar condição de escuro e desligar 1 minuto após o sensor indicar claridade. 8. Projetar um sistema de alarme com o LPC935 com as seguintes características:

- Alarme com 1 chave liga/desliga (P1.4), 1 sensor ultra-sônico (P2.0) e 1 buzina (P2.7) - Cristal de 12 Mhz

- Reset automático 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 violação 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 período máximo de 5 minutos. 10. Idem para 8 sensores.

Page 79: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

79

4) - Display Cristal Líquido (LCD)

4.1 Display LCD com acionamento direto nos segmentos Composto de 3 camadas sendo duas de vidro e o líquido cristal líquido no meio. A camada superior possuiu a “impressão” dos segmentos ativos ligados a pinos individuais. A camada inferior de vidro compõe 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/)

Page 80: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

80

Para acender o segmento específico, basta ligar o segmento com potencial invertido

em relação ao polarizador. Em função desta característica, é comum a utilização de chips de controle ou microcontroladores com “driver” LCD embarcado.

Exemplo: Microchip -> PIC16F46

Page 81: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

81

Freescale -> MC9S08LC60

4.2 Módulo de Display LCD:

4.2.1 – Funcionamento básico Atualmente está disponível no mercado uma grande variedade de Displays de Cristal Líquido com circuitos de controle e processamento interno que visam facilitar o projeto de hardware e a rotina de programação destes tipos de dispositivos de saída. A figura a seguir mostra os principais controles destes tipos de displays:

Page 82: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

82

Figura -Arquitetura básica dos displays L.C.D.

Figura - Display 16 x 2

Descrição dos sinais: - D0-D7: barramento de dados com dupla função: envio dos comandos de programação do display (posicionamento do cursor, endereço do caracter a ser utilizado, etc.) e dos dados a serem escritos no display.

_ - C/D (RS): em nível baixo, indica que o barramento de dados D0-D7 carrega a informação de controle (configuração geral do display). Em nível alto, informação de dados (informação a ser mostrado no display). Sinal normalmente ligado ao endereço A0 (endereço ímpar -> dado; endereço par -> controle) - E: sinal que em nível alto habilita o display. Nos modelos com 4 linhas, utilizamos um sinal E1 para a habilitação das 2 primeiras linhas e um sinal E2 para a habilitação das 2 últimas linhas.

_ - R/W: sinal de entrada indicando em nível baixo processo de escrita (barramento de dados como entrada) e em nível alto processo de leitura (barramento de dados como saída).

Page 83: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

83

- Vo: entrada de tensão para controle de luminosidade do display

Circuito recomendado para controle de luminosidade

- Vss/GND: entrada de alimentação única de +5 Vcc. Para display de 40 x 2 ou 40 x 4 temos 2 sinais de seleção “Enable” (E).

Figura 2.5 - Display 40 x 4

4.2.2 Sistema mínimo com o módulo LCD utilizando 8 bits de dados

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

Page 84: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

84

4.2.3 Sistema mínimo com o módulo 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 / Inicialização Módulo LCD Com o sinal C/D (RS) colocado em nível baixo é possível escrever comandos de INICIALIZAÇÃO (podem ser utilizados como comandos individuais como limpeza do LCD) e ENDEREÇAMENTO. Os principais comandos de inicialização são listados na tabela abaixo disponível nos manuais dos principais fabricantes de LCD.

Page 85: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

85

Os principais comandos utilizados são:

Número 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 é necessário enviar um comando de endereçamento, sendo a 1ª Posição Superior o endereço 80H e a 1ª Posição Inferior o endereço C0H. Tabela para LCD 16 x 2 (1 pino de seleção – E)

Page 86: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

86

Tabela para LCD 40 x 4 (2 pinos de seleção – E1 e E2)

4.2.4.2 Inicialização módulo LCD 8 bits A inicialização típica 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 é necessário controlar o pino R/W) Exemplo: considerando o sistema mínimo indicado anteriormente para sistema de 8 bits, incializar um LCD para 2 linhas, sem cursor, limpeza e 1ª posição 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 INICIALIZAÇÃO 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

Page 87: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

87

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 POSIÇÃO SUPERIOR (80H) MOV A,#80H MOV DADO,A SETB E CLR E CALL TEMPO15 RET

Exercício 1. Inicializar um LCD (considerar sistema mínimo) para 1 linha, mensagem para direita, cursor piscando, limpeza e primeira posição 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 Inicialização módulo LCD 4 bits A inicialização do LCD de 4 bits necessita um controle de nibbles enviados. O nibble mais significativo da instrução é 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:

3 – 3 – 3 – 2 - 2 – 8 – 0 – C – 0 – 1

Page 88: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

88

Exemplo: considerando o sistema mínimo indicado anteriormente para sistema de 4 bits, inicializar um LCD para 2 linhas, mensagem a direita, sem cursor, limpeza e 1ª posição 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 INICIALIZAÇÃO 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

Page 89: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

89

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 Exercícios 1. Explicar a função e funcionamento das rotinas WR_NIBBLE e E_PULSO.

Page 90: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

90

2. Inicializar um LCD (considerar circuito descrito no sistema mínimo) para 1 linha, mensagem para direita, cursor piscando, limpeza e primeira posição 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 Programação de Dados (C/D = 1) Para a escrita de dados no display a entrada C/D é colocada em nível ALTO. O display necessita ser inicializado e o cursor posicionado na posição do primeiro caracter. Uma vez posicionado este caracter, automaticamente o display incrementa a posição do cursor, não necessitando de reprogramações 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 programação de controle, é necessário enviar inicialmente o nibble superior e posteriormente o nível 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

Page 91: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

91

;ESCREVE MACK NO MEIO DA PRIMEIRA LINHA -> END. 85H ES_MACK ;COMANDO PARA ENDEREÇO LCD

CLR RS ;PINO CD EM NÍVEL 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

Page 92: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

92

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 ENDEREÇO LCD CLR RS ;PINO CD EM NÍVEL BAIXO - CONTROLE ;ENDEREÇO 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

Page 93: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

93

;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 Exercício 1. Explicar a função 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 instrução MOVC A,@A+DPTR. Exemplo: Enviar a String ENGENHARIA MACKENZIE para a primeira e segunda linha do LCD de forma centralizada em um módulo LCD de 4 bits #include "ioP89LPC935.h"

Page 94: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

94

;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 GENÉRICO

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

Page 95: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

95

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

Page 96: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

96

Exercício 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 contrário “RELE DESLIGADO”. Idem com a chave S3, segunda linha e o BEEP. 4. Considere o controle de um reservatório de água: Sensor Máximo (P1.6), Sensor Mínimo (P1.4), Sensor Mínimo (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 mínimo e o máximo, 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 após o indicador Máximo indicar). 5. Fazer um controle de reservatório de uma Usina Hidroelétrica, para controle das comportas da usina. Considerar Sensor de Nível Máximo e Mínimo. Quando o nível mínimo for atingido desligar comporta. Quando o nível máximo for atingido ligar comporta. Deixar o BEEP ligado por 10 minutos quando for atingir nível mínimo e máximo. O Led indicará comporta acionada. O LCD indicará RESERVATÓRIO NORMAL (COMPORTA FECHADA) ou COMPORTA ABERTA.

Page 97: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

97

Anexo I

SEGUNDO TRABALHO DE MICROPROCESSADORES

Fazer um projeto de um CLP com microcontrolador 89S51 ou LPC935 com display. Utilizar as entradas / saídas (ports) caracterizar o produto final (ex: alarme, controle de iluminação, semáforo, controle de nível em tanques, etc.). Entregar o firmware no formato LST com comentários explicando o funcionamento do produto.

Anexo II

Segunda Lista de Exercícios Utilizando o microcontrolador LPC935 (RC interno, reset externo) fazer os exercícios 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 através de 2 chaves (chave ligado, led ligado). Piscar os 2 leds no início. 2) – Pesquisar o projeto acima utilizando o PIC10F200. 3) – Projetar um CLP para controle de 4 motores através 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 semáforo de 1 cruzamento de 2 vias (2 semáforos com 3 lâmpadas cada). Prever o verde ficar acionado 30 segundos para cada lado e o amarelo ficar ligado 5 segundos. 5) – Fazer um controle de nível de reservatório com 1 motor de pressurização de 5 HP para elevar a água do nível do solo até o vigésimo andar de 1 prédio, 1 bóia de nível máximo e 1 bóia de nível mínimo. Deixar o reservatório entre o nível máximo e mínimo. Colocar um LCD neste projeto (endereço 0-1fffh). Escrever CHEIO ou VAZIO de acordo com a situação 6) – Fazer um controle de iluminação de 1 andar comercial com 4 salas com 1 lâmpada em cada e 4 sensores de presença. Se houver pessoas dentro das salas ligar as lâmpadas da respectiva sala. 7) – Fazer um CLP para controlar um aquário com as seguintes características: 1 sensor de temperatura (indicando 1 para nível acima de 20 graus e 0 para nível acima de 20 graus), 1 aquecedor, 1 detector de nível baixo, 1 detector de nível alto, 1 válvula solenóide para encher água, 1 buzina, 1 sensor de PH (em nível

Page 98: APOSTILA MICROPROCESSADORES I – EEUPMhal9k.ifsc.usp.br/~smaira/Graduação/6º Semestre... · The 8051 Family of Microcontrollers. 1995: Prentice Hall. MACKENZIE, Scott. The 8051

98

alto indicando alcalino e em nível baixo indicando ácido / neutro) e 1 LCD (endereço e000h ~ ffffh). Ligar a comunicação 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 nível da água estiver baixo acionar o solenóide de enchimento até a

água atingir o nível máximo. 8) – Fazer um alarme com chave liga / desliga, 8 sensores de presença, 2 buzinas e 1 modem GSM. Ligar a buzina por 5 minutos se qualquer sensor indicar invasão (esperar 10 segundos para disparar as saídas). 9) – Fazer uma seqüencial 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.