Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051...

78
1 Faculdade de Ciˆ encia e Tecnologia Engenharia de El´ etrica Disciplina: Microprocessadores e Microcontroladores Professor: Vitor Le˜ ao Filardi Apostila de Programa¸ ao em 8051

Transcript of Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051...

Page 1: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

1

Faculdade de Ciencia e TecnologiaEngenharia de EletricaDisciplina: Microprocessadores e MicrocontroladoresProfessor: Vitor Leao Filardi

Apostila de Programacao em 8051

Page 2: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

2

Page 3: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Sumario

1 Primeira Unidade 7

1.1 Explicacao Intuitiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2 Princıpios Basicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2.1 Conceitos Basicos da Computacao . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2.2 Blocos Basicos de microcomputadores . . . . . . . . . . . . . . . . . . . . . . . 9

1.3 Arquitetura do Microprocessador/Microcontrolador . . . . . . . . . . . . . . . . . . . . 12

1.4 A CPU Internamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.5 O Microcontrolador 8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.5.1 Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.5.2 Circuito de Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.5.3 O Gerador de Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

1.5.4 Interrupcao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

1.5.5 Registro de Controle das Interrupcoes . . . . . . . . . . . . . . . . . . . . . . . 29

1.5.6 Tempo para Atendimento das Interrupcoes . . . . . . . . . . . . . . . . . . . . 32

1.5.7 Ajuste das Interrupcoes Externas para serem Ativas em Nıvel ou Transicao . . 32

1.5.8 Hardware para expandir as possibilidade de Interrupcao Externa . . . . . . . . 33

1.5.9 Exercıcios Resolvidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

1.5.10 Conjunto de Instrucoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2 Segunda Unidade 41

2.1 Ciclos de Maquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

2.2 Portas de I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

2.2.1 Princıpio de Funcionamento e Utilizacao . . . . . . . . . . . . . . . . . . . . . . 42

2.2.2 Caracterısticas Gerais e de Tempo dos Ports . . . . . . . . . . . . . . . . . . . 45

2.2.3 Uso das Portas de I/O para a Expansao da Memoria de Dados e Programa . . 46

2.2.4 Selecao de Programa Externo ou Interno . . . . . . . . . . . . . . . . . . . . . . 47

2.2.5 Uso dos Pinos da Porta 3 como funcoes Alternativas . . . . . . . . . . . . . . . 47

2.2.6 Capacidade de Corrente nos Pinos de I/O . . . . . . . . . . . . . . . . . . . . . 48

2.3 Modos de Enderecamento das Instrucoes . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.3.1 Enderecamento por Registrador . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.3.2 Enderecamento Direto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.3.3 Enderecamento Indireto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2.3.4 Enderecamento Imediato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

2.3.5 Enderecamento Relativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

2.3.6 Enderecamento Absoluto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

2.3.7 Enderecamento Longo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

2.3.8 Enderecamento Indexado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

2.4 Temporizadores e Contadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

2.4.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

2.4.2 Registros Envolvidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

2.4.3 Modos de operacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

2.4.4 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583

Page 4: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

4 SUMARIO

3 Terceira Unidade 653.1 Comunicacao Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3.1.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653.1.2 Registros Envolvidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653.1.3 Modos de Operacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.1.4 Cuidados com a Porta Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703.1.5 Comunicacao entre varios 8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . 723.1.6 Comunicacao serial entre o 8051 e o PC . . . . . . . . . . . . . . . . . . . . . . 733.1.7 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

3.2 Programacao em Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763.2.1 Introducao teorica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763.2.2 Estrategias de elaboracao de programas . . . . . . . . . . . . . . . . . . . . . . 773.2.3 Fluxogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Page 5: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Referencias Bibliograficas

GIMENEZ, S. P. Microcontroladores 8051. [S.l.]: Editora Pearson Education do Brasil, 2002.

NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000.

SILVA, V. P. da. Aplicacoes Praticas do Microcontrolador 8051. [S.l.]: Editora Erica, 1998.

5

Page 6: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas
Page 7: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Capıtulo 1

Primeira Unidade

O que e Microcontrolador

1.1 Explicacao Intuitiva

Vamos fazer de conta que somos meros aprendizes de cozinheiros, o chefe de cozinha teve que saire chega um pedido de uma torta de chocolate do gerente da casa. O primeiro passo que nos vamosdar e em direcao ao livro de receitas onde devera ter impresso a rotina de como fazer uma ”Tortade Chocolate”

Tudo bem ate aqui. E agora como vamos acessar a receita da torta? De que se compoe uma receita?

Pois bem, vamos procurar a pagina que contem o tıtulo ”Torta de Chocolate”, encontra-seentao a receita que e equivalente a um ”software” de construcao da torta, que esta gravada em umpagina ”ABC” do livro de receitas. Notemos que, na pagina, apenas lemos; nao escrevemos nadala, ou seja, em trocado de miudo sera a nossa futura ”ROM” - Read Only Memory - e pagina o nossoendereco, pois toda vez quisermos tal informacao basta acessar tal endereco e obte-la.

Poderıamos ainda necessitar de uma cobertura para a torta caso fossemos mostrar servico parao chefe da casa, vejamos que no livro de receita exista em uma outra pagina a rotina ”Coberturapara Tortas” e que esta por sua vez estava seperada por servir para mais de um tipo de torta, epoderıamos partir para a sua execucao e depois retornar a torta, o que e chamado tambem comosubrotina de um programa.

Agora se fossemos complicar um pouco mais a nossa receita e fossemos fazer uma receita e meia datorta? Precisarıamos de uma folha de rascunho (a memoria ”RAM”) para ajustarmos a receita,umavez que na receita da torta nao devo anotar nada nela. Esta memoria temporaria, sera utilizada paracalculos, e depois podemos nos desfazer do seu conteudo, ou seja, jogar no lixo.

Vejamos como ficaria esta estrutura intuitiva na figura abaixo.

Quais sao as diferencas sutis e importantes entre o microprocessador e o cozinheiro e suas an-otacoes?

Bem, e que o microprocessador, por ser uma maquina limitada, nao atende ao rico vocabulariodo ser humano cozinheiro que, alem de rico, e sofisticado, impreciso e de multipla interpretacao, queso uma maquina inteligente como o homem entede ( vejamos o exemplo: para o homem as seguintespalavras sao equivalentes: fazer = realizar = trabalhar. Para o microprocessador, o vocabulario e bemreduzido e especıfico; nao existem adjetivos, sinonimos, etec...).

Entao vimos que o microprocessador entende apenas algumas instrucoes basicas e se nos quisermosque ele faca alguma coisa precisamos estudar e compreender precisamente a sua linguagem e limitar-

Page 8: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Cozinheiro

Livro de Receitas

Complexa)

EscrevoLeio

Ingredientes

+

Utensilios

HARDWARE SOFTWARE

(Linguagem SoLeio

Folha de Rascunho

Microproc. Especifica

Perifericos:

Etc....

HARDWARE SOFTWARE

Linguagem SoLeio

(Programa deTeclado,mouse

WRITE

READ RAM (Dados)

ROM

Figura 1.1: Analogia da estrutura Intuitiva

se a ela para fazer a maquina trabalhar. Este e o ASSEMBLER do microprocessador, que e o seuconjunto de instrucoes.

1.2 Princıpios Basicos

1.2.1 Conceitos Basicos da Computacao

Antes de iniciarmos o estudo de microcomputadores, vamos nos familiarizar com os termos tecnicose saber o seu significado individualmente.

1.Bit: abreviacao de dıgito binario (binary digit), que corresponde ao valor zero logico(0) ou aovalor um logico(1). Podemos fazer uma analogia ao sistema numerico como sendo uma unidadede um valor qualquer.

2.Byte: representacao numerica composta de 8 bits. Pode representar numeros de 00h(=010) aFFh(=25510). Essa representacao e vastamente utilizada na representacao das instrucoes queo microcontrolador e capaz de executar. Novamente fazendo analogia, teremos o similaridadecomo as dezenas, centenas etc..., lembrando que em eletronica digital corresponde como sendouma palavra.

3.Registradores: conjunto de flip-flop, geralmente do tipo D que sao interligados em paraleloentre si. Eles sao responsaveis pelo armazenamento de uma informacao que pode ter 8, 16,32, 64 ou 128 bits, dependendo de quantos flip-flops do tipo D estao interligados entre si. Osregistradores apresentam caracterısticas volateis e , quando eles sao desenergizados, perdem suasinformacoes.

Pagina 8

Page 9: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

4.Microcomputador: equipamento compacto cujo objetivo principal e simular eletronicamenteo sistema chamado ser humano. Suas principais vantagens sao: grande velocidade do proces-samento das informacoes e alta confiabilidade nas atividades executadas. Ele e composto portres blocos basicos: Unidade Central e de Processamento, Unidade de Memoria e Unidade deentrada e saıda de informacoes.

5.Instrucao: define uma unica acao (tarefa) que o microcomputador pode executar por vez. Asacoes das instrucoes podem corresponder a operacoes de leitura e escrita nos conteudos dos reg-istradores ou nas posicoes de memorias, a operacao logica e aritmeticas, etc.

6.Equipamento Inteligente: equipamento com microprocessador ou com microcontrolador.Tambem chamada de eletronica embarcada

7.Programa ou software: definido por um conjunto de instrucoes arranjadas de maneira or-ganizada por um programador, com o objetivo de informar ao microcomputador o que ele deveexecutar, ou seja, o programa informa ao microcomputador quais as tarefas que devem ser exe-cutadas ao longo do tempo. Existem varias classificacoes de programas: os programas de sistemaoperacional( linux, DOS, windows e etc.), os utilitarios( Anti-virus,scandisk e etc.) e os aplica-tivos (WORD, EXCEL, Kile e etc.)

8.Firmware: programa (software) que esta exclusivamente armazenado em uma memoria nao-volatil(ROM/PROM/EPROM/E2PROM) de um equipamento inteligente. No mınimo o firmwaretem a finalidade principal de programar a forma de operacao do hardware (numero de portas deentrada e saıda, forma de comunicacao serial, forma de operacao dos timers/contadores etc.) ede definir suas condicoes iniciais de operacao.

9.Hardware: sao as partes eletronicas que compoem um microcomputador, como a mother board(placa mae que contem pelo menos o microprocessador ou o microcontrolador de um microcom-putador), a placa de vıdeo de um microcomputador etc.

10.Microprocessador ou Unidade Central de Processamento(CPU):mais conhecido comoCPU. Fazendo analogia com o sistema ser humano, o microprocessador, ou CPU, de um mi-crocomputador corresponde ao cerebro de um ser humana. Fisicamente e um dispositivo semi-condutor (circuito integrado,CI) constituıdo por milhoes de transistores que implementam umavariedade de circuitos (registradores, maquinas sequenciais, circuitos logicos e etc.). Ele e re-sponsavel pela busca de um programa na memoria e por sua execucao.

11.Microcontrolador: dispositivo semicondutor em forma de CI, que integra todas as partesbasicas de um microcomputador - microprocessador(CPU), memorias nao-volateis (ROM /PROM/EPROM /E2PROM), memorias volateis(RAM, SRAM, DRAM, Flash RAM), portas de en-trada e saıdas (portas de comunicacao paralela e/ou serial, conversores analogicos/digitais,conversoresdigitais/analogicos etc.). Ele e conhecido como ummicrocomputador implementado em um unicoCI.

1.2.2 Blocos Basicos de microcomputadores

Qualquer computador, seja ele microcomputadores, computadores de medio porte ou ainda com-putadores de grande porte, sao constituıdos por tres blocos basicos: a unidade central de processamento(CPU), a unidade de memoria (na qual sao armazenados os programas e as informacoes) e a unidadede entrada e saıda (dispositivos que fazem a comunicacao com o mundo externo).

Pagina 9

Page 10: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

CPU

A CPU e responsavel pela inteligencia da maquina, ou seja, e ela que tem a capacidade de tomardecisoes (acoes) no sistema microcomputadorizado, por meio da execucao de um programa. E ela queexecuta o programa armazenado na memoria do microcomputador, que foi projetado por um progra-mador. Ao executar um programa, ela e responsavel pela obtencao das informacoes a serem analisadaspor meio de dispositivos de entrada (teclado, canal de comunicacao serial etc.), pelo processamento(interpretacao, manipulacao, ordenacao, modificacao, calculos logicos ou matematicos etc.) das in-formacoes e pela resposta (acao) do sistema microcomputadorizado a uma determinada situacao decontrole para a qual ele foi projetado a fim de controlar, por meio de um dispositivo de saıda (escritana memoria de vıdeo, transmissao de dados para outro microcomputador, acionamento de um rele,acionamento de um bip,etc.). Assim, por exemplo, um microcomputador projetado para funcionarcomo um caixa eletronico de banco deve fazer as seguintes operacoes: leitura das informacoes conti-das no cartao magnetico (obtencao de informacoes), decodificacao da senha digitada no teclado pelousuario, busca de saldo bancario nos bancos de dados do banco (processamento), disponibilizacao dosaldo bancario no monitor de vıdeo e a impressao em papel do referido saldo bancario (resposta dosistema por meio da acao de gerar informacoes no monitor de vıdeo e tambem pela impressao empapel das informacoes organizadas solicitadas pelo usuario).

De maneira simplificada, pode-se dizer que a unidade de processamento central (microprocessador)apresenta duas funcoes basicas:

a)Leitura (busca) e interpretacao do programa alocado na memoria, instrucao por in-strucao: como o programa fica alocado na memoria do microcomputador, e nao dentro do micro-processador/CPU, em primeiro lugar, o microprocessador precisa buscar as instrucoes, uma por uma,na memoria. Isso e feito por meio da operacao de leitura de um byte na memoria que correspondea uma determinada instrucao e depois e realizada a interpretacao da instrucao lida (decodificacao),pois o microprocessador tem uma determinada quantidade de instrucoes que ele e capaz de executar.Dessa maneira, ele precisa verificar qual dessas instrucoes deve ser executada. Assim, ao finalizaressa etapa, o microprocessador/CPU sabe o que deve fazer. O proximo passo e a execucao da in-strucao.

b)Execucao do programa, instrucao por instrucao: a palavra execucao de uma instrucao podesignificar a transferencia de dados dos registradores internos do microprocessador/CPU para amemoria ou para os dispositivos de entrada e saıda, e vice-versa. Pode tambem significar a ex-ecucao de operacoes logicas e aritmeticas etc.

Esse processo de buscar, interpretar e executar instrucao por instrucao e uma atividade contınua domicroprocessador e, dessa forma, um programa e processado por inteiro. A unidade de processamentocentral (microprocessador) e constituıda por tres partes principais: a unidade logica e aritmetica, osregistradores internos e o bloco de temporizacao e controle.

a)Unidade Logica e Aritmetica (ULA): muitas vezes, tambem e chamada de ALU (ArithmeticLogic Unit). Ela e responsavel, principalmente, pela execucao das instrucoes correspondentes asoperacoes aritmeticas e logicas. Alem disso, uma caracterıstica muitıssimo importante que deveser destacada, referente a ULA, e que, ao executar uma instrucao de uma operacao aritmetica oulogica, ela tambem define a condicao numerica do resultado por meio de alguns bits sinalizadores,chamados de flags de sinalizacao, tornando-os iguais a um (setando-os) ou tornando-os iguais azero (resetando-os), e pela utilizacao de outras instrucoes que sao ca- pazes de testar esses flags desinalizacao. Isso faz com que o sistema microcomputadorizado possa gerenciar uma determinadasituacao de projeto ou desempenhar uma determinada tarefa bem-definida.

b)Registradores internos: sao compostos por m registradores de n bits interligados em paraleloentre si. Os valores m e n dependem das caracterısticas de cada microprocessador/microcontrolador

Pagina 10

Page 11: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

(p. ex.: 32 registrado- res de 8 bits etc.). Como sao formados por flip-flops, e possıvel realizaroperacoes de leitura e escrita de informacoes. Quando a CPU e ”desenergizada”por apresentar car-acterısticas volateis, essas informacoes sao perdidas. Geralmente, eles sao capazes de armazenar:

•um byte se forem constituıdos por registradores de 8 bits;

•um duplo byte ou address ou word, se forem constituıdos por registradores de 16 bits;

•um duplo address ou duplo word, se forem constituıdos por registradores de 32 bits etc.

Um microcomputador e chamado de microcomputador de 8 bits se ele for capaz de processar in-formacoes de oito em oito bits por vez (operacoes de movimentacao de informacoes e operacoesaritmeticas e logicas). Analogamente, para os microcomputadores de 16 e 32 bits, quanto maior fora quantidade de bits processados em paralelo por vez, maior sera sua capacidade de processamento.A unidade utilizada para medir a capacidade de processamento e o Mips (milhoes de informacoespor segundo).

c)Bloco de temporizacao e controle: responsavel pelo controle do fluxo de informacoes do micro-processador para as unidades de memoria e para as unidades de entrada e saıda. E esse bloco quedefine os sinais de controle de temporizacao para o sincronismo do fluxo de informacoes no sistemamicrocomputadorizado (p. ex.: liberacao de informacoes da ULA para os registradores, memoriae unidades de entrada e saıda etc.) por meio da definicao dos sinais de leitura (read), de escrita(write), de inicializacao do sistema (reset), de liberacao dos barramentos de dados e enderecos, entreoutros.

Unidades de Memorias

As unidades de memorias sao divididas em duas partes: memoria de armazenamento de programae memoria de armazenamento de informacoes (dados, bytes, bits etc.).

a)Memoria de armazenamento de programa: todo microcomputador deve ter uma area dememoria na qual sera armazenado o programa que definira as tarefas que o microcomputador /CPU deve executar. Esse programa define a funcao de um microcomputador e tambem diz ao mi-crocomputador, instrucao por instrucao, o que ele deve fazer ao longo do tempo. Esse programa deveser implementado por um programador tecnico, conhecedor do hardware do sistema microcomputa-dorizado e das instrucoes do microprocessador. O microcomputador nao funcionara se nao existirum programa armazenado em sua memoria de programa. Assim, uma vez energizado o microcom-putador, esse programa sera buscado e executado pelo microprocessador. Esse programa define acaracterıstica funcional do microcomputador (p. ex.: operar como um forno de microondas, comouma maquina de lavar roupas ou como uma injecao eletronica de automovel etc.). Esse programanao pode ser perdido na ausencia de energia eletrica, pois isso acarretaria a perda da funcionalidadedesse microcomputador, para a qual foi projetado. Assim, o tipo de memoria em que esse programadeve ser armazenado e a memoria nao-volatil.

b)Memoria de armazenamento de informacoes: todo microcomputador deve ter uma area dearmazenamento de informacoes. Essa memoria deve permitir a escrita e a leitura de informacoes.Para entender melhor, considere um microcomputador controlando uma determinada atividade.Caso existam informacoes definidas pelo mundo externo por meio de chaves, sensores, teclados etc.,elas devem ser lidas e armazenadas na memoria, para depois serem lidas novamente e analisadas(tratadas) pelo microprocessador por meio de um programa. Como exemplo, considere o aciona-mento das teclas do teclado de um microcomputador, ou seja, uma vez acionada uma tecla, a CPUdevera ler a informacao que foi gerada pelo hardware associado a essa tecla e executar o armaz na-mento dessa informacao na memoria. Depois, devera fazer a leitura dessa informacao, a fim deanalisa-la (interpreta- la), para verificar qual tecla foi acionada. Alem disso, a informacao deveraser mostrada no monitor de vıdeo. Repare que foram necessarias, nesse exemplo, varias operacoes

Pagina 11

Page 12: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

de leitura e escrita na memoria, para a realizacao dessa tarefa. Assim, e preciso utilizar umamemoria que tenha a caracterıstica de realizar leitura e escrita de informacoes. Portanto, deve-seutilizar memorias RAM (Random Access Memory). Lembre-se de que essas memorias apresentama caracterıstica de se- rem volateis. Portanto, sempre que o microcomputador for desenergizado, asinformacoes contidas nesse tipo de dispositivo serao perdidas.

Unidade de Entrada e Saıda

Unidade de entrada e saıda (E/S): tambem chamada pela abreviacao de I/O (Input/Output),e responsavel pelo interfaceamento das informacoes entre o microcomputador e o mundo externo.Geralmente sao circuitos integrados (CIs) capazes de ler e armazenar as informacoes vindas do mundoexterno, por exemplo, informacoes originarias do teclado, do canal de comunicacao serial de um mi-crocomputador etc.; e que tambem podem definir informacoes do microcomputador para o mundoexterno, por exemplo, o acionamento de bips, alto-falantes, leds indicadores, displays, interfaces decomunicacao seriais e paralelas etc.

1.3 Arquitetura do Microprocessador/Microcontrolador

Como vimos ate aqui o microprocessador e um elemento eletronico, desenvolvido para execu-tar tarefas especıficas, que dependem de uma linguagem propria para cada famılia de micropro-cessadores/microcontroladores. Quando falo em famılias estou me referindo ao tipo de linguagemque o meu microprocessador/microcontrolador sera capaz de interpretar, isto quer dizer que a lin-guagem a qual irei utilizar no programa esta diretamente relacionada ao modelo do meu micropro-cessador/microcontrolador. Podemos ter no mesmo circuito diversos tipos de famılias diferentes quetrabalham entre si sem problemas, desde de que se respeite o programa individual de cada um, porexemplo: o nosso celular nao conecta no computador, um palm idem, sao todos eles pertencentes adiversas famılias, mas que interagem entre si.

Assim, ao programarmos a ROM com os codigos compatıveis com a linguagem ou famılia perten-centes ao microprocessador, ele sera capaz de executar as tarefas por esse codigo designadas. Cabe aoprojetista entender perfeitamente o conjunto de instrucoes da maquina (o tao famoso ASSEMBLER)e a sua estrutura fisica, e de interfaces, tambem conhecida como hardware.

Vejamos como os tres blocos visto ate aqui se comunicam entre si para dar funcionalidade aomicroprocessador. As vias de comunicacao entre os blocos basicos sao chamadas de barramentos oudo ingles bus. Cada barramento e constituıdo por um numero de vias (trilhas de cobre), nas quaisfluem informacoes em paralelo. Sao tres os barramentos existentes: o barramento de enderecos, detemporizacao e controle e o de dados.

1.Barramento de enderecos: A CPU utiliza esse barramento para definir os enderecos dasposicoes de memoria de programa em que ela ira buscar as instrucoes a serem executadas etambem para definir os enderecos de memoria de dados ou dos dispositivos de entrada e saidapara a troca de informacoes. Esse barramento e unidirecional.

2.Barramento de temporizacao e controle: A CPU utiliza esse barramento para definir ossinais de temporizacao e controle para gerenciar o tempo e a direcao do fluxo de informacoesnas operacoes de leitura e escrita nos dispositivos (unidades de memoria ou unidades de entradae saida). Esse barramento e unidirecional.

3.Barramento de dados: A CPU utiliza esse barramento para receber as informacoes vindas damemoria ou dos dispositivos de entrada e saida ou entao definir as informacoes para a memoriaou para os dispositivos de entrada e saıda. Esse barramento e bidirecional. Vale ressaltar que

Pagina 12

Page 13: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

nem todos os microprocessadores/microcontroladores nao trocam informacoes diretamente comos dispositivos de entrada e saida.

4.Oscilador: E o elemento que gera o ”marcapasso”da CPU, que permite que o microprocessadorrealize as suas tarefas internas e externas de maneira sincronizada e com velocidade predetermi-nada.

5.Reset: E o elemento que faz a CPU iniciar suas rotinas internas e realizar tambem a primeiraleitura de instrucao no endereco 0000h.

6.Interrupcoes: Sao pinos de acesso externo que permitem interromper o microprocessador, queentao interrompe suas tarefas atuais e atende aquelas planejadas pela interrupcao solicitada.

Microprocessador

ou Nao−Volatil(ROM)

Volatil (RAM)

Mem´oria

ou

E/S

I/OUnidade Cental deProcessamento

Bus Endereco

BUS Dados

Oscilador

Reset

Interupcao

BUS de Temp.Controle

Figura 1.2: Arquitetura basica de um microprocessador

Como o computador so interpreta codigos binarios, nao existe a necessidade que nos programadoresconverse no mesmo nıvel, podemos utilizar os outros tipos de codificacao Octal, Hexadecimal, Deci-mal e por Nomes Simbolicos, que representam uma instrucao, como por exemplo: ”add”= ”Soma”=Codigo Hexa 24 ou 00100100 em binario (no exemplo, add=add A,#valor), para o microprocessador8051. A CPU so entende dıgitos binarios, mas nos a memorizarmos por ”add”, que e mais facil dese lembrar. Assim atraves de um software (interpretador) ira transformar este ”add”em 00100100,quando gravamos a ROM.

1.4 A CPU Internamente

Veremos algumas de suas funcionalidades mais importantes

a)Registradores: Sao equivalentes a uma RAM, so que interna a CPU. Servem para armazenamentotemporario de informacoes de utilidade interna e externa a CPU. Existem registradores com funcaodefinida: por exemplo, aquele que e imagem ou espelho de uma porta de ”I/O”. O sinal na portade I/O pode ser lido diretamente no registrador equivalente; por exemplo, a porta PO”tem um reg-istrador imagem de ”PO”, cujo conteudo e o reflexo do que ha na entrada fısica dessa porta. Existemregistradores de Funcao Geral, que podem ser acessados pelas instrucoes do Mp (microprocessador)e ainda podem ser conhecidos por nomes (registradores R0, R1 etc.) ou sem nomes (registradores20h, 21h, etc.).

Pagina 13

Page 14: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

b)Contador de Programa (Program Counter ou PC): E o indicador de endereco de memoria ex-terna. Ele serve para enderecar a proxima instrucao a ser lida pelo Mp, a fim de que ela ”saiba”ondeestava e para onde deve ir (ler nova instrucao no proximo endereco).

c)Registradores de Instrucao (Instruction Register ou IR): E o local para onde se dirige ocodigo da instrucao que foi retirada da ROM por meio do endereco dado pelo PC no ciclo de busca(fetch) da instrucao da memoria. O IR e necessario para que, depois da busca, um decodificadorpossa decodificar, ”abrir”a instrucao e envia-la a unidade de processamento (ALU-Aritmetic LogicUnit), a fim de que, neste local, ela seja ”executada”.

d)Unidade de Decodificacao (Decode Unit): E o local em que a instrucao e decodificada, etambem sao gerados os controles que, junto com a Unidade de Controle, permitem executar ainstrucao na ALU.

e)Unidade Logica e Aritmetica (ALU-Arithmetic Logic Unit): E o local em que sao realizadasas operacoes de: logica, aritmetica e decisao/comparacao. E o ”cerebro”da maquina.

f)Acumulador (Accumulator): E um registrador principal e muito ”popular”, pois varias in-strucoes se referem a ele para operar.

g)Unidade de Controle (Control Unit): E o local em que se processa o controle do fluxo dasinformacoes a fim de realizar a instrucao recebida.

Exemplo de Funcionamento: Suponha que o Mp foi ler uma instrucao na ROM. Os seguintespassos serao dados:

1.O endereco de PC e posto na via de endereco (que e o endereco desta proxima instrucao a serlida).

2.O sinal de controle da ROM, e ativado (pois vamos ler a ROM e nao a RAM).

3.A instrucao e lida da ROM, no endereco dado pelo PC (no caso, o endereco ”n”), e e lida pelavia de dados. Estes tres itens correspondem ao ciclo de busca ou fetch.

4.A instrucao e carregada e armazenada no IR (Registrador de Instrucoes).

5.O PC e incrementado para ler a proxima instrucao (apontara para ”n+1”).

6.Inicia-se outro ciclo, o de execucao interna da instrucao, auxiliado pela Unidade de Controle epelos registradores, decodificado pela Unidade de Decodificacao e executado pela ALU.

1.5 O Microcontrolador 8051

O 8051 e um microcontrolador rapido com clock tıpico de 12 MHz sendo que existem versoes de ate30 MHz, fornecidas por diversos fabricantes, e suas caracterısticas de hardware e software permitemusa-lo como um poderoso controlador, sobretudo em sistemas para logica sequencial e combinatoria.

Entre as suas caracterısticas de hardware, podemos destacar:

1)2 Kbytes de memoria de programa (Flash)

2)128 Bytes de memoria RAM

3)Duas portas de I/O de 8 bits

4)Comparador de tensao on-chip

5)Controlador de interrupcao de 6 entradas com estrutura Nesting*

6)Canal serial UART Full-Duplex programavelPagina 14

Page 15: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

7)Dois contadores/temporizadores de 16 bits

8)Modos Power-Down e Power-Idle

[*] ”Nesting”e o nome que se da ao processo pelo qual uma interrupcao pode interromper outra queja estiver sendo atendida, desde que tenha maior prioridade.

Entre as caracterısticas de software podemos destacar a capacidade de executar complexas operacoesaritmeticas e logicas (multiplicacao, divisao, permuta, e deslocamento de bits,. . . ), trabalhar com ban-cos de registradores nominais e inclusive trabalhar com 128 bits individualmente enderecaveis na RAM.

Ha um tempo nao muito distante, para realizar um projeto utilizando microcontroladores comtodas estas funcionalidades, era necessario agrupar diversas pastilhas com as funcoes descritas ante-riormente. Isto tornava prototipo fisicamente maior, aumentaria o consumo de energia, diminuindo aautonomia das baterias e inviabilizando a sua portabilidade que hoje sao fundamentais para os sis-temas embarcados.

Para compreendermos melhor o 8051 torna-se necessario conhecer a estrutura interna do micro-controlador e estudarmos cada uma delas detalhadamente. Para isso nos dividiremos da seguinteforma:

1)Memoria

2)Circuito de Reset

3)Gerador de Clock

4)Controlador de Interrupcao

5)Conjunto de Instrucoes

Com esta divisao ficara mais claro definirmos todas as instrucoes realizadas pelo 8051 e, o fun-cionamento dos demais componentes associados ao microcontrolador.

1.5.1 Memoria

Vejamos, o diagrama de blocos do 89C2051 na figura 1.3. Neste diagrama de blocos, temos umanocao geral dos elementos internos ao 8051 e de suas ligacoes com o mundo externo.

A memoria de programa do 8051 e do tipo Flash ROM (E2PROM), podendo sofrer um ciclo deescrita/apagamento de 1000 vezes. Este tipo de memoria de programa torna as tarefas de teste edepuracao dos programas bastante agradaveis, pois a antiga etapa de apagar a memoria em luz ultra-violeta nao se faz mais necessaria.

O segmento de programa da memoria se inicia no endereco 0000h e pode ocupar todos os 2048bytes da memoria, a ATMEL oferece tambem outros modelos de microcontroladores com uma ROMinterna maior para que possamos utilizar programas maiores.

A memoria RAM se divide conforme a figura 1.4Os registradores de funcoes especiais incluem locacoes referentes as portas de I/O, ponteiros do

sistema, registros de interrupcao, registros da porta serial, dos temporizadores e registros aritmeticos.

A CPU trata os registros de funcoes especiais da mesma forma que trata a RAM, podendo aliefetuar alteracoes e, o mais importante, enderecar algumas dessas posicoes como bit.

Esta facilidade de enderecar bits e muito interessante, pois facilita a vida do programador. Vamossupor que temos de zerar o quinto bit de uma certa posicao de memoria. O metodo tradicional consisteem fazer uma operacao AND entre o conteudo da memoria especificada e o numero binario 11011111,

Pagina 15

Page 16: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Figura 1.3: Organizacao Interna do 8051

pois 1 AND X resulta X, logo nao alteramos os bits 7, 6, 4, 3, 2, 1 e 0. Mas temos que 0 AND Xresulta 0, e desta forma zeramos o quinto bit.

Quando o sistema trabalha com bits, basta dar uma instrucao do tipo ”zere o bit 5 na posicao N”eteremos efetuado a operacao, sem nos preocuparmos com os demais bits.

A parte baixa da memoria RAM interna (daqui a diante chamaremos apenas de RAM) esta di-vidida em porcoes distintas, que incluem 4 bancos de registradores de 8 bytes cada, uma porcao de16 bytes cujos bits sao individualmente enderecaveis pela CPU e o restante da memoria, que somentepode ser enderecado byte a byte.

Os bancos de registradores sao simples posicoes de memoria RAM que permitem seu enderecamentopelo nome dado a cada registro, alem de seu enderecamento pela posicao de memoria.

Pagina 16

Page 17: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Figura 1.4: Organizacao da RAM Interna do 8051

A vantagem dos bancos de registradores esta em seu uso pelo sistema, como ındice para en-derecamento e pela facilidade de lembranca de seu nome, alem de serem amplamente utilizados porcompiladores de linguagem de alto nıvel.

Por exemplo, e mais facil lembrar que um certo dado esta no registro R2 do que lembrar que omesmo esta na posicao 02 de memoria (Supondo Banco 0).

Pagina 17

Page 18: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

A selecao de um certo banco de registradores se da pelo valor dos bits RS1 e RS0 conforme atabela a seguir:

Posicao de Memoria Nome do Registrador Bit RS1 Bit RS0 BANCO

1F R7 1 1

3

1E R6 1 11D R5 1 11C R4 1 11B R3 1 11A R2 1 119 R1 1 118 R0 1 1

17 R7 1 0

2

16 R6 1 015 R5 1 014 R4 1 013 R3 1 012 R2 1 011 R1 1 010 R0 1 0

0F R7 0 1

1

0E R6 0 10D R5 0 10C R4 0 10B R3 0 10A R2 0 109 R1 0 108 R0 0 1

07 R7 0 0

0

06 R6 0 005 R5 0 004 R4 0 003 R3 0 002 R2 0 001 R1 0 000 R0 0 0

Tabela 1.1: Tabela de registradores do banco de memoria

Conforme visto anteriormente, temos 16 bytes na RAM cujos bits sao individualmente enderecaveispela CPU, conforme podemos ver pela tabela abaixo, dispostos da seguinte forma.

Pagina 18

Page 19: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Enderecos Individuais dos bits Enderecos dos bytes

7F 7E 7D 7C 7B 7A 79 78 2F

77 76 75 74 73 72 71 70 2E

6F 6E 6D 6C 6B 6A 69 68 2D

67 66 65 64 63 62 61 60 2C

5F 5E 5D 5C 5B 5A 59 58 2B

57 56 55 54 53 52 51 50 2A

4F 4E 4D 4C 4B 4A 49 48 29

47 46 45 44 43 42 41 40 28

3F 3E 3D 3C 3B 3A 39 38 27

37 36 35 34 33 32 31 30 26

2F 2E 2D 2C 2B 2A 29 28 25

27 26 25 24 23 22 21 20 24

1F 1E 1D 1C 1B 1A 19 18 23

17 16 15 14 13 12 11 10 22

0F 0E 0D 0C 0B 0A 09 08 21

07 06 05 04 03 02 01 00 20

Tabela 1.2: Enderecos de Memoria enderecavel por byte e bit

Temos tambem alguns registros de funcoes especiais que tem seus bits enderecaveis, sendo que al-guns deles tem, inclusive, um nome mnemonico, para maior facilidade de desenvolvimento de softwareem compiladores.

Antes de estudarmos o mapa de memoria dos registros de funcoes especiais, vamos estudar cadaum deles em separado para melhor compreensao do funcionamento interno do 89C2051.

Em seguida ao nome de cada registro, temos seu endereco em hexadecimal na RAM:

P1 (90) - Porta P1

P3 (B0) - Porta P3

Sao posicoes da RAM que contem os dados das portas de I/O do micro, caso as mesmas sejamusadas como tal.

Uma escrita num desses registros altera automaticamente o conteudo presente na saıda do chip, euma leitura dos mesmos coloca o estado presente nos pinos (ou nos latchs de saıda, conforme veremosadiante) dentro da posicao desejada. Essa operacao e possıvel devido aos buffers e latchs de cadaporta, que so sao ativos na leitura ou escrita das mesmas.

Pagina 19

Page 20: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

SP (81) - Stack Pointer

E um registrador de 8 bits que contem o endereco de topo de uma ”pilha”realizada com os registradores,em que se acumulam enderecos de retorno, quando se trabalha com sub-rotinas e interrupcoes. Vocepode EMPURRAR (PUSH) dados para a pilha (STACK) ou TIRAR (POP) dados da pilha(STACK).

A instrucao PUSH incrementa o SP ”antes”de escrever os dados e a instrucao POP le o dadoda pilha e ”depois decrementa”o SP. A pilha e formada inicialmente dentro da RAM interna quandose tem o RESET da maquina, e neste caso o SP e carregado com valor 07h. Isto e, qualquer dadoa ser armazenado na pilha causara primeiro o incremento do SP, isto e, ira para 08h, e depois seragravado o dado na pilha nesta posicao 08h. Isto e, ela estara ocupando a posicao 08h da RAM que eo registrador R0 do banco 1! Se voce quiser utilizar esse banco e os outros seguintes, e melhor, logode ınicio, carregar o SP com outro valor de ponteiro, a partir do qual ele ira formar a pilha.

TH1 (8D) - Timer High 1

TL1 (8B) - Timer Low 1

TH0 (8C) - Timer High 0

TL0 (8A) - Timer Low 0

Sao os registros de dados dos temporizadores/contadores (1 e 0 respectivamente). Contem os val-ores contados, no caso de usarmos as funcoes desse importante periferico do 89C2051.

TCON (88) - Timer Control Register

TMOD (89) - Timer Mode Register

Registradores de controle e de modo de operacao dos temporizadores/contadores. E nestes reg-istros que efetuamos a programacao de como queremos que esses perifericos trabalhem. Vale lembrarque o 89C2051 possui dois temporizadores/contadores internos.

PCON (87) - Power Control

Este registro permite-nos adaptar o chip para situacoes em que nao ha processamento, mas naodesejamos perder o conteudo das memorias internas do chip, como pode ocorrer numa falha da ali-mentacao, assim podemos controlar o consumo de energia do sistema.

SCON (98) - Serial Port Control Register

SBUF (99) - Serial Buffer

No SCON, colocamos os bits que nos permitirao trabalhar com a porta de comunicacao serial con-forme desejamos, e o SBUF e o registro no qual a porta armazenara o dado recebido, ou escrevemoso dado a ser transmitido.

IE (A8) - Interrupt Priority

IP (B8) - Interrupt Enable

Estes registros permitem-nos escolher qual ou quais interrupcoes serao habilitadas (ou desabili-tadas) e qual a prioridade (maior ou menor) de cada uma.

Pagina 20

Page 21: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

PSW (D0) - Program Status Word

O Program Status Word contem bits que indicam quais as ocorrencias da ALU na ultima operacaologica e aritmetica, alem de indicar qual banco de registradores foi acessado pela ultima vez. Equivaleaos Flags dos microprocessadores de 8bits.

ACC (E0) - Accumulator

B (F0)

Equivalem ao acumulador e ao registro B dos microprocessadores de 8 bits. O interessante aqui eque, inclusive os registros da CPU sao acessıveis como simples posicoes de memoria.

DPH (83) - Data Pointer High

DPL (82) - Data Pointer Low

Estes dois registros de 8 bits podem ser referenciados como um registro de 16 bits, chamado DPTR-Data Pointer. Este registro e usado quando desejamos fazer enderecamento indireto para a leitura deconstantes armazenadas na memoria de programa, para ler ou escrever variaveis na memoria externade dados e para desvio para memoria de programa de ate 64 Kbytes.

Nao sao todos os registros de funcoes especiais que tem seus bits individualmente enderecaveis.Temos na tabela abaixo, os registros e seus bits com seus respectivos enderecos. Assim como nosregistros enderecaveis (que sao bytes), alguns destes bits tambem tem um nome mnemonico.

Este componente possui um poderoso conjunto de instrucoes que permite usar diversos modos deenderecamento, admitindo desvios e leitura/escrita em toda a memoria.

No momento oportuno, veremos como e acessada uma posicao de memoria, e tambem como a CPUfaz para acessar fisicamente essas posicoes.

1.5.2 Circuito de Reset

Agora, estudaremos como se processa a operacao de RESET no 89C2051. E atraves desta funcaoque o chip se prepara para trabalhar, seja ao ligarmos a alimentacao do sistema, ou forcosamente.

Embora o RESET nao seja propriamente uma interrupcao, muitas vezes e assim chamado devidoa semelhanca de suas acoes, ja que o RESET interrompe o processamento e reinicializa o sistema.

O RESET no 89C2051 e ativo quando o pino 1 (RST/VPP) permanecer em nıvel alto por dois oumais ciclos de maquina.

Neste caso, a CPU executa o que chamamos de reset interno, que consiste em preencher seus reg-istros internos com os valores predeterminados, a saber:

a)O PC, o acumulador, o registro B, os flags, o DPTR e todos os registros dos tempo-rizadores/contadores sao ZERADOS.

b)No SP e colocado o valor 07h.

c)As portas P1 e P3 terao o valor FFh

Pagina 21

Page 22: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Enderecos Individuais dos bits Registradores

E7 E6 E5 E4 E3 E2 E1 E0 ACC

F7 F6 F5 F4 F3 F2 F1 F0 B

97 96 95 94 93 92 91 90 P1

B7 B6 B5 B4 B3 B2 B1 B0 P3

EA ES ET1 EX1 ET0 EX01 0 0

AF AC AB AA A9 A8 IE

PS PT1 PX1 PT0 PX01 0 0

BC BB BA B9 B8 IP

CY AC FD RS1 RS0 OV P

D7 D6 D5 D4 D3 D2 D0 PSW

SM1 SM2 SM3 REN TB8 RB8 T1 R1

9F 9E 9D 9C 9B 9A 99 98 SCON

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

8F 8E 8D 8C 8B 8A 89 88 TCON

Tabela 1.3: Mnemonicos de cada bit

d)O SBUF estara com conteudo indeterminado e o registro de controle da porta serial SCONsera zerado.

e)O registro PCON tera apenas seu bit mais significativo zerado.

f)Os registros de controle de interrupcao (IE e IP) terao ambos o valor binario XXX00000,onde X = irrelevante (pode ser 0 ou 1).

A RAM interna nao e afetada pelo reset forcado, sendo que ao ligar (power-up), o seu valor ealeatorio, mas pode ser lido por software.

Geralmente, ao ligarmos o sistema, desejamos que o mesmo execute uma sequencia de funcoes deinicializacao, dividida em dois blocos, inicializacao do sistema basico, que sempre ocorre no RESET,e a inicializacao do sistema montado, que prepara o equipamento para a operacao para o qual foiprojetado, por exemplo, ajustando os contadores, as portas entre outros.

Embora estas funcoes sejam executadas pelo software que comeca a rodar apos o RESET, no en-dereco 0000h da memoria de programa, costumamos chama-lo de rotina de inicializacao.

O 89C2051 pode ser automaticamente resetado ao ligar a fonte, pela colocacao de um resistor de8,2 kΩ entre seu pino seu pino de RESET e o terra, e pela colocacao de um capacitor (preferencial-mente de tantalo) de 10 µF entre o pino e o +Vcc, o que garante que este pino estara em nıvel altopor mais de 2 ciclos de maquina apos a ligacao da alimentacao, pois o capacitor comporta-se comoum curto-circuito, provocando uma circulacao de corrente pelo resistor, que tera uma tensao inicialda ordem de +Vcc.

Apos algum tempo, o capacitor ”estara carregado”e nao circulara mais corrente na resistencia, edesta forma a diferenca de potencial sobre a mesma sera nula, garantindo que o pino RST/VPP esteja

Pagina 22

Page 23: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Figura 1.5: Mapa de Registradores e Valores de Reset do 8051

no nıvel 0.

Na eventualidade de necessitarmos provocar o reset (reset forcado), basta entao colocarmos umachave de contato momentaneo NA (push-botton NA) em paralelo com o capacitor, e ao pressiona-lae solta-la teremos provocado uma nova operacao de reset.

Na entrada, o chip possui um Schmidt Trigger para garantir rejeicao a ruıdo, sendo que a saıda domesmo e amostrada a cada ciclo de maquina pelo hardware, para ver a ocorrencia de reset.

Durante o reset, o nıvel logico dos pinos e indeterminado, indo a nıvel logico 1 ?apos? a execucaoda rotina interna de reset, de tal forma que devemos prever esta situacao no projeto do hardware,para evitar acionamento indesejavel de qualquer periferico externo.

Pagina 23

Page 24: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Figura 1.6: Circuito de reset

1.5.3 O Gerador de Clock

Temos duas possibilidades para excitar o sistema: clock externo ou clock interno.

O uso do clock externo ajuda a economizar componentes quando do uso do sistema junto de outrosque ja possuam um sinal TTL que possa ser aproveitado, como por exemplo, para trabalho junto acontadores e outros equipamentos sequenciais rapidos.

Sua implementacao e simples, bastando desconectar o pino 4 (XTAL2) (deixar em aberto), e inje-tar o sinal externo no pino 5 (XTAL1), que desta forma ira diretamente para o sistema de controle etemporizacao do chip (conforme a figura 1.7).

Figura 1.7: Clock Externo para o 8051

Se utilizarmos o clock gerado pelo oscilador interno, deveremos intercalar aos pinos XTAL1 eXTAL2 um cristal ou um filtro ceramico (o cristal e o mais indicado) na frequencia desejada, e doiscapacitores de realimentacao conforme a figura 1.8

Os valores recomendados dos capacitores sao os seguintes:

40 pF +/- 10 pF para filtro ressonante de ceramica.

30 pF +/- 10 pF para cristal oscilador.

Em qualquer caso, a frequencia de oscilacao mınima e de 3.5 MHz, e a maxima pode ser de 24MHz conforme o modelo utilizado. Existem atualmente versoes de outros fabricantes que trabalhamcom frequencia de 30 MHz e superiores, sendo que o seu custo tambem e relativamente superior.

Pagina 24

Page 25: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Figura 1.8: Oscilador Interno

Quanto ao layout do circuito deve-se destacar o fato de que as ligacoes devem ser mantidas asmais curtas possıveis, para evitar capacitancias parasitas que venham a interferir no funcionamentodo circuito, assim como uma boa malha de terra deve ser providenciada em toda a placa.

Figura 1.9: Layout Recomendado para o Oscilador Interno

1.5.4 Interrupcao

A interrupcao e, provavelmente, uma das mais importantes ferramentas nos sistemas de controlemicroprocessados, pois e o processo pelo qual a execucao de um programa e interrompida (ou nao),de acordo com as necessidades de eventos externos ou internos.

Temos dessa forma, que existem tres fontes de interrupcao: a interrupcao por Software (instrucao),a pedida por periferico externo e a interrupcao pedida por periferico interno (timer/counter, portaserial, etc. . .).

A interrupcao e um sinal, gerado de uma das tres formas acima descritas, que pede para a CPUparar o processamento corrente e efetuar outro, referente a interrupcao solicitada, desde que a mesmaesteja habilitada e possa ser aceita.

A vantagem da interrupcao esta na simplificacao do Hardware, pois nao precisamos fazer com quenosso sistema fique monitorando o funcionamento de certos dispositivos perifericos. Por exemplo, noscomputadores didaticos simples, e mesmo em alguns sistemas industriais, o teclado e um perifericoque e lido constantemente pelo monitor do sistema, para verificar se alguma tecla foi ou nao apertada.

Pagina 25

Page 26: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Ja nos computadores da linha IBM-PC, isso nao ocorre, pois o teclado e um periferico inteligente, quepossui um microcontrolador interno que, caso uma tecla seja pressionada, pede uma interrupcao aomicroprocessador para poder enviar o codigo da tecla pressionada para o mesmo.

Muitas vezes as entradas de interrupcao sao as principais entradas do sistema. Para o perfeitoentendimento das interrupcoes, devemos antes relembrar os seguintes conceitos:

a)Mascaramento

E a possibilidade de impedirmos, geralmente por Software, que uma certa interrupcao seja atendida.Existem sistemas que possuem interrupcoes nao-mascaraveis, ou seja, jamais podem ser desabilitadaspor Software.

b)Prioridades

No caso do sistema poder atender mais de uma interrupcao, devemos ter uma tabela de sequenciade prioridades, para que o microprocessador saiba como agir, no caso de duas ou mais interrupcoeschegarem simultaneamente.

c)Interrupcao Vetorada e Nao Vetorada

As interrupcoes vetoradas sao aquelas que possuem o vetor de interrupcao (endereco de inıcio dainterrupcao) fixo, e nao pode ser mudado pelo usuario. E o caso do 8051, onde cada vetor de in-terrupcao ja esta definido pelo fabricante. As interrupcoes nao vetoradas sao aquelas nas quais osenderecos de desvios do programa sao escolhidos pelo programador, como e o caso do COP 68705.U3da Motorola, por exemplo.

d)Tipo de Ativacao das Interrupcoes

Existem tres maneiras pelas quais um sistema pode reconhecer um sinal logico:

•Pelo nıvel (alto ou baixo).

•Pela borda de subida ou de descida.

•Pela soma de borda (subida ou descida) e um nıvel correspondente.

Estudo das Interupcoes no 8051

0 8051 pode ser interrompido de 5 maneiras:

1)Pela interrupcao externa INTO\;

2)Pela interrupcao externa INT1\;

3)Pelo timer/counter interno TIMER0;

4)Pelo timer/counter interno TIMER1;

5)Pelo canal de comunicacao serial.

O canal serial e as interrupcoes externas usam alguns pinos da porta tres, conforme a seguir:

1.Porta 3, pino 0 = Receptor de dados seriais (RX);Pagina 26

Page 27: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

2.Porta 3, pino 1 = Transmissor de dados seriais (TX);

3.Porta 3, pino 2 = Entrada da interrupcao externa INTO\;.

4.Porta 3, pino 3 = Entrada da interrupcao externa INT1\.

OBSERVACAO: Dessa forma, se usarmos algumas dessas interrupcoes, devemos tratar a portatres como porta de I/O apenas bit enderecavel.

No 8051, cada interrupcao pode ser individualmente habilitada ou nao, e podemos tambem desabil-itar todas de uma so vez.

As interrupcoes podem ter apenas dois nıveis de prioridade, e dessa forma, se duas ou mais ocor-rerem ao mesmo tempo (algo ”praticamente”impossıvel), a de maior prioridade sera atendida primeiro.

Caso uma interrupcao de prioridade 0 (menor) esteja em andamento, uma interrupcao de priori-dade 1 (maior) interrompera aquela e sera atendida. Ao seu fim, a CPU retorna ao atendimento dainterrupcao de nıvel 0 que foi interrompida.

Este Microcontrolador possui ainda um processo de prioridade interno, para o caso de duas inter-rupcoes de mesma prioridade estarem aguardando atendimento.

Neste caso, esta e a ordem de atendimento das interrupcoes (IP):

1)Interrupcao Externa 0 −→ Maior prioridade Timer 0

2)Interrupcao Externa 1 Timer 1

Se a interrupcao que chegar for de nıvel igual ou menor da que ja esta sendo atendida, ficaraaguardando o fim desta para ser servida.

Quando atende uma interrupcao, 0 8051 salva no Stack o valor do PC, ”mas nao salva o acu-mulador e o registro Program Status Word (PSW)”. Os mesmos devem ser salvos e devolvidos pelarotina de interrupcao, se assim for necessario, assim como qualquer outro registro importante.

Enderecos de Desvio

Neste Microcontrolador, cada interrupcao e desviada para um certo endereco fixo, no qual comecaa nossa rotina de interrupcao.

Sao os seguintes os enderecos de desvio:

1.INT0\ −→ 03h

2.Timer/Counter 0 −→ 0Bh

3.INT1\ −→ 13h

4.Timer/Counter 1 −→ 1Bh

Como vimos, o Reset inicia em 00h, e desta forma, por exemplo, se usarmos todas as interrupcoesteremos que usar os tres Bytes disponıveis para o reset, num desvio incondicional para outra parte damemoria, onde realmente teria inıcio o programa.

Pagina 27

Page 28: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

As interrupcoes INT0\, Timer/counter 0, INT1\ e Timer/counter 1 possuem apenas 8 Bytesdisponıveis antes de sobrepor se com a proxima, e desta forma, provavelmente, deveremos efetuar umdesvio para outra parte da memoria, sendo a unica excecao a interrupcao do canal serial, que por sera ultima nao se sobrepoe a nenhuma outra. Temos na figura 1.10, um mapa parcial da memoria deprograma com destaque para os enderecos de desvio de cada interrupcao.

00h ←− Inicio01h02h03h ←− End. de INT0\04h05h06h Diferenca de 8 bits...

0Ah ↓0Bh ←− End. do Timer/Counter 00Ch0Dh

...11h12h13h ←− End. de INT1\14h...

1Ah1Bh ←− End. do Timer/Counter 11Ch1Dh

...22h23h ←− End. do Canal Serial24h25h

Figura 1.10: Mapa parcial da memoria de programa do 8051 com destaque ao inıcio das interupcoes

Pagina 28

Page 29: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

1.5.5 Registro de Controle das Interrupcoes

O 8051 possui dois registro de 8 bits cada um, na sua memoria RAM mais alta (Registros deFuncoes especiais-SFR) que servem para habilitacao ou nao das interrupcoes, e indica para a CPU aprioridade de cada uma delas.

Sempre que uma interrupcao e requisitada, um certo bit de controle dessa interrupcao sera setadoe assim permancera ate que essa interrupcao seja atendida.

Excecao e a esta regra e a interrupcao serial, que deve ter seu bit de controle resetadopelo Software.

O primeiro de todos estes registros e o IE que tem por funcao indicar qual das interrupcoes estaou nao habilitada.Vejamos a figura 1.11

Bit 7 . . . Bit 0

EA X X ES ET1 EXT1 ET0 EX0

Figura 1.11: Resgistro IE

EA - Enable All: Localizado no bit numero 7, significa habilitar todos. Quando o em nıvel 0,desabilita todas as interrupcoes de forma geral, independente de qualquer outro controle. Se em nıvel1, permite-nos escolher qual interrupcao em particular sera habilitada, em funcao dos bits de controleindividuais a seguir.

ES: Enable Serial: Localiza-se no bit 4, significa habilitar a serial, quando em nıvel logico 1,libera a interrupcao pedida pelo canal serial.

ET1 - Enable Timer 1: Localiza-se no bit 3, significa habilitar a interrupcao do timer 1 e quandoem nıvel logico 1, libera a interrupcao pedida pelo Timer/Counter 1.

EX1 - Enable External 1: Localiza-se no bit 2, significa habilitar a interrupcao externa (INT1\e quando em nıvel logico 1, libera a interrupcao pedida pelo dispositivo externo ligado a INT1\.

ET0 - Enable Timer 0: Localiza-se no bit 1, significa habilitar a interrupcao do timer 0 e quandoem nıvel logico 1, libera a interrupcao pedida pelo Timer/Counter 0.

EX1 - Enable External 0: Localiza-se no bit 0, significa habilitar a interrupcao externa (INT0\e quando em nıvel logico 1, libera a interrupcao pedida pelo dispositivo externo ligado a INT0\.

Prioridade Natural das interrupcoes

1.INT0\

2.TIMER/COUNTER0

3.INT1\

4.TIMER/COUNTER1

5.Serial

Veremos agora o registro IP, nele fixaremos qual o nıvel de prioridade de nossas interrupcoes. Ve-jamos o formato deste registro.

PS: Priority Serial: Localiza-se no bit 4, significa prioridade serial, quando em nıvel logico 1,indica prioridade alta a interrupcao gerada pelo canal serial, se a mesma estiver habilidade. Quando

Pagina 29

Page 30: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Bit 7 . . . Bit 0

X X X PS PT1 PX1 PT0 PX0

Figura 1.12: Resgistro IP

em nıvel 0, indica prioridade baixa.

PT1 - Priority Timer 1: Localiza-se no bit 3, significa prioridade do timer 1 e quando emnıvel logico 1, indica prioridade alta a interrupcao gerada pelo Timer/Counter 1, se a mesma estiverhabilidade. Quando em nıvel 0, indica prioridade baixa.

PX1 - Priority External 1: Localiza-se no bit 2, significa habilitar a interrupcao externa (INT1\e quando em nıvel logico 1, indica prioridade alta a interrupcao externa 1, se a mesma estiver habili-dade. Quando em nıvel 0, indica prioridade baixa.

PT0 - Priority Timer 0: Localiza-se no bit 1, significa prioridade do timer 0 e quando emnıvel logico 1, indica prioridade alta a interrupcao gerada pelo Timer/Counter 0, se a mesma estiverhabilidade. Quando em nıvel 0, indica prioridade baixa.

PX1 - Priority External 0: Localiza-se no bit 0, significa habilitar a interrupcao externa (INT0\e quando em nıvel logico 1, indica prioridade alta a interrupcao externa 0, se a mesma estiver habili-dade. Quando em nıvel 0, indica prioridade baixa.

Pagina 30

Page 31: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Veremos como e o registrador PSW (Program Status Word)Lembrando que neste registrador representa o status da ultima operacao realizada no acumulador,vejamos a seguinte figura 1.13

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0

CY AC F0 RS1 RS0 OV - P

Figura 1.13: Resgistros bit a bit do PSW

CY - Carry E um indicador de ”vai um”em operacoes aritmeticas: vai para 1 quando uma somacom A ”estoura”na sua capacidade (isto e, o setimo bit ou ACC.7 vai um para uma proxima casa quenao existe; seria um nono bit, que e um ”estouro”da conta). Vai para ”1”se existir um emprestimo do7 bit no caso de uma subtracao com o acumulador.Por exemplo:Se ACC=FFh e apos isto aparece a instrucao: acc A,#01h: A soma de FFh com 01h fara com queo resultado de A seja 00h e ”vai 1”para o carry, isto e,”CY”e setado no registrador PSW.O carry ”CY”tambem e utilizado como se fosse o ”acumulador para um so bit”. Existem variasinstrucoes booleanas que usam o ”C”, isto e, o carry, como operando, em que se posiciona o resultadodas operacoes. Por exemplo:anl C,ACC.0: Executa um AND booleano entre o carry e o bit ACC.0. O resultado da operacaofica em ”C”(ele e equivalente ao acumulador para operacao com bytes), isto e, o resultado volta paraele mesmo.

AC - Auxiliary Carry E um indicador de ”vai um”entre os quatro primeiros bit do acumulador,isto e, e o ”vai um”de um ”nible”para outro ”nible”do acumulador.Isto e muito util em aritmetica BCD em que os nibbles que correspodem a 4 bits sao representadospor um numero codificado em binario, mas que representa um decimal de 0 a 9.

Flag 0 E um bit registrador de uso geral, nao tem nenhuma funcao especial e nao indica nada.(literalmente”sobrou”dentro do PSW, sem funcao)

RS1 e RS0 Sao dois bits que fazem mudar o banco de registradores a que se referem os nomesR0 a R7, utilizados nas instrucoes que trabalham com esses registradores (por ex.: mov A,R0 = movepara o ”A”o conteudo de ”R0”; mas qual R0? Os bits RS0 e RS1 e que dizem a qual R0 de qual bancoesta se referindo).Vejamos na tabela 1.4

RS1 RS0 BANCO

0 0 Banco 0

0 1 Banco 1

1 0 Banco 2

1 1 Banco 3

Tabela 1.4: Selecao do banco de registradores pelos bit do PSW

Quando se da o reset da maquina, ele aponta para o banco 0, isto e, as instrucoes que se referirema R0,R1,. . .R7 estao se referindo ao ”Rn”do banco O. Podemos utilizar a mudanca de bancos e usar osmesmos apelidos de R0 a R7 para o outro banco, ou usar o endereco absoluto de cada registrador. Emgeral, deixa-se que o microcontrolador aponte para o banco 0 direto e os outros registradores utilizamos enderecos absolutos deles, so para nao ter i trabalho de mudar toda hora de banco. Isto dependedo gosto do programador.Quando se ”reseta”a maquina, os bits RS1 e RS0 ficam em 00h,isto e, estao se referindo ao banco 0.

Pagina 31

Page 32: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

OV E um bit que vai para 1 quando, apos um adicao ou subtracao, acontece um ”estouro”daconta. Resultados maiores que +127 ou menores que -128 ”setarao”o bit ”OV”. Paor exemplo:

0F ⇒ +15+7F ⇒ +1278E e ”OV” +142

Note que 8E e -116, que nao e a resposta desejada +142, por isto OV e setado.

PSW.1 Nao e um bit disponıvel ao usuario.

P - Parity Bit que e ”setado”em ”1”quando a paridade do conteudo do acumulador e par.Por exemplo, seja A, contendo os seguintes dados:Observacao: Paridade e o resultado par ou ımpar do somatorio binario do acumulador.

N de ”1s” = ImparA= 1001 1110 −→ P=1

N de ”1s” = ImparA= 1001 1111 −→ P=0

E util quando se trabalha com o canal serial, pois ele muitas vezes necessita desta informacao. Outramaneira de saber se P e ”1”ou ”0”, e pensar que a soma dos bits ”1”do acumulador mais o”P”tem sempre que ser par.

1.5.6 Tempo para Atendimento das Interrupcoes

Um certo tempo decorrera entre o reconhecimento da interrupcao, alteracoes nos registros internose efetivo desvio para o endereco. O melhor caso ocorre quando uma interrupcao chega pouco antesdos ultimos 14 perıodos de clock, que correspondam ao final da instrucao; a proxima instrucao naoseja multiplicacao ou divisao; e temois mais 24 perıodos de clock para a chamada da sub-rotina. Estestempos incorrem em atraso de 38 perıodos de clock ou 3.2 µs para um clock de 12 MHz.

O pior caso ocorre se a interrupcao chegar apos os 14 ultimos perıodos da instrucao em vigor, ese a proxima instrucao for multiplicacao ou divisao, que consomem 48 perıodos de clock, que resultanum atraso de 86 perıodos, ou 7.2 µs para clock de 12 MHz.

1.5.7 Ajuste das Interrupcoes Externas para serem Ativas em Nıvel ou Transicao

Podemos ajustar as interrupcoes externas para serem detectadas por transicao de 1 para 0, ou pelonıvel 0. Os bits de controle das interrupcoes externas estao no registro TCON (Controle do Timer),e os que nos interessam sao os quadro bits menos significativos.

Bit 7 . . . Bit 0

IE1 IT1 IE0 IT0

Figura 1.14: Resgistro TCON com os bits relevantes as interrupcoes

IT0 - Interrupcao Externa 0 (INT0\) : Localizado no bit 0 do TCON, indica qual o processopara a chamada da interrupcao INT0\ sera aceita na transicao de 1 para 0 do nıvel pino, devendopermanecer em 0 por pelo menos 12 perıodos de clock. Se em nıvel 0, INT0\ sera aceita apenas pelonıvel 0 presente no pino.

Pagina 32

Page 33: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

IE0 - Habilitacao da Interrupcao Externa 0 (INT0\): Bit para o hardware de controle dainterrupcao INT0\, localiza-se no bit 1. Este bit e setado pelo Hardware interno quando for detec-tada uma transicao de 1 para 0 no pino INT0\. Tem por funcao sinalizar internamente o pedido dainterrupcao. E resetado logo que a interrupcao seja atendida.

IT1 - Interrupcao Externa 1 (INT1\) : Localizado no bit 2 do TCON, indica qual o processopara a chamada da interrupcao INT1\ sera aceita na transicao de 1 para 0 do nıvel pino, devendopermanecer em 0 por pelo menos 12 perıodos de clock. Se em nıvel 0, INT1\ sera aceita apenas pelonıvel 0 presente no pino.

IE1 - Habilitacao da Interrupcao Externa 1 (INT1\): Bit para o hardware de controle dainterrupcao INT1\, localiza-se no bit 3. Este bit e setado pelo Hardware interno quando for detec-tada uma transicao de 1 para 0 no pino INT1\. Tem por funcao sinalizar internamente o pedido dainterrupcao. E resetado logo que a interrupcao seja atendida.

Como vimos, se a interrupcao for ativa pela transicao, e a esta que a CPU devera detectar para aten-der a interrupcao, por isso temos que esperar um perıodo de 12 ciclos de clock, porque na amostragemanterior, a CPU detectou nıvel 1 e agora devemos esperar que a mesma detecte o nıvel 0.

Ja na deteccao por nıvel, a entrada devera estar em nıvel 0, apenas durante a amostragem queocorre ao fim de cada instrucao executada. O interessante e que neste caso, o pino pode permanecerem nıvel 0 durante a execucao da rotina de interrupcao, mas deve estar em nıvel 1 ao fim desta, senaoo sistema atendera novamente a interrupcao, visto que na amostragem da ultima instrucao da rotina,encontrara este pino em nıvel adequado para a interrupcao, o que nao ocorre no caso anterior, pois laa CPU deve sentir a TRANSICAO do nıvel 1 para o O.

1.5.8 Hardware para expandir as possibilidade de Interrupcao Externa

Na figura 1.15, temos uma porta AND de 8 entradas na qual todas as NOVAS 8 entradas de inter-rupcao estarao ligadas. Estas 8 entradas tambem estao ligadas a um lacth, por exemplo o 74LS374.

A saıda desta porta sera ligada diretamente ao pino de interrupcao externa INT0\, por exemplo,e tambem a um inversor, e daı ao ”gate”do lacth, e as saıdas do lacth estao ligadas a porta P1.

Caso ocorra uma transicao de 1 para 0 na porta AND, teremos sua saıda indo para o nıvel 0tambem, ocasionando o pedido de interrupcao e ”travando”o estado dos pinos I1 a I8 no lacth.cc

No momento do atendimento da interrupcao, o valor a ser lido na porta P1 contera o estado dosbits que geraram a interrupcao, e uma rotina verificara qual bit esta em 0. Este bit e responsavel pelopedido de interrupcao, e basta ao Software encarregar-se de executar a rotina apropriada.

Pagina 33

Page 34: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

7430

8051

74LS374

D0D1D2D3D4D5D6D7

Q0Q1Q2Q3Q4Q5Q6Q7

I8

I1

+Vcc

P1.0

P1.7

INT0\

Figura 1.15: Detalhe do Hardware para expandir o numero de interrupcoes.

1.5.9 Exercıcios Resolvidos

Questao 1 No microcontrolador da famılia 8051, programar as palavras IE (Interrupt Enable),IP (Interrupt Priority) e TCON (Timer Control) de modo a:

a)INT1\ seja habilitado na maxima prioridade.

b)Timer/Counter1 seja habilitado em segunda prioridade.

c)INT0\ seja habilitado na terceira prioridade.

d)Serial e Timer/Counter0 nao habilitadas.

Passo a):Interrupcoes liberadas pela palavra IEINT0,INT1 e Timer1 liberadosBit EA - Enable All ligadoTimer0 e Serial desativadas

EA - - ES ET1 EX1 ET0 EX0

1 0 0 0 1 1 0 1

Assim carrega-se o valor 8Dh para a palavra IE atraves do seguinte comando:MOV IE,8Dh

Pbsso b):Prioridade programadas pela palavra IPINT1 e Timer1: alta prioridadeINT0: baixa prioridade

Pagina 34

Page 35: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

- - - PS PT1 PX1 PT0 PX0

- - - X 1 1 X 0

Questao 2 Obter a outra representacao do endereco do bit 5Dh? (Ver tabela 1.2) Solucao:

•Transformar o endereco do bit de hexadecimal para decimal 5 ∗ 161 + 13 ∗ 160 = 9310

•Dividir o valor do endereco em decimal (9310) por 8 → 93/8, obtendo o quociente q=1110 e oresto r=510

•Transformar o quociente (q) e o resto (r) em hexadecimal: q=1110=Bh e r=510=5h.

•Aplicar a formula: 5Dh = [20h+Bh]h.5=2Bh.5, ou seja, o endereco do bit 5 e igual a 2Bh.5.

Para transformar o endereco de um bit da representacao 2Xh.Y para ZWh(2Xh.Y−→ZWh),bastaseguir o procedimento:

•Obter o quociente e o resto. O quociente (q) e obtido subtraindo 2Xh de 20h e transformando-oem decimal, e o resto e obtido atraves do numero apos o ponto (.) de tal representacao. Multi-plicando o quociente em decimal por 8 e somando com o resto em decimal, obtem-se o enderecoem decimal. O valor do endereco em decimal deve ser transformado para hexadecimal.

Questao 3 Obter a outra representacao do endereco do bit 2Ah.3? (Ver tabela 1.2)

•Obter o quociente (q) e o resto (r): q= 2Ah - 20h = Ah e r=3h.

•Transformar q e r de hexadecimal para decimal:q=Ah = 1010 e r 3h = 310

•Multiplicar o quociente por 8 e somar o resultado com o resto em decimal: 10*8+3=8310

•Transformar o endereco de decimal para hexadecimal: 8310 = 5 ∗ 161 + 3 ∗ 160=53h

Questao 4 Defina o tipo de enderecamento de cada uma das instrucoes dadas a seguir:

a)ADDC A,20hResposta: Enderecamento direto.

b)MOV @R0,55hResposta: Enderecamento combinado (misto), formado pelos enderecamentos direto e indireto ouindexados por registrador.

c)MOV R7,6AhResposta: Enderecamento indireto, pois R7 (Rn) e um registrador indexado (mnemonico).

Questao 6 Crie um programa que faca a operacao OR-Exclusivo entre o conteudo do acumulador(A) e a constante 33h. O resultado deve ser armazenado no conteudo do registrador R5 do segundobanco de registradores.Resposta:

XRL A,#33h (A)←−(A)or-ex #33hMOV PSW,#08h (PSW)←−#08h=#00001000 =⇒ (RS1)=0 e (RS0)=1=⇒ define o se-

gundo banco de registradores (B1).MOV R5,A Armazena, no conteudo do registrador R5 do segundo banco de reg-

istradores, o conteudo do acumulador A.

Pagina 35

Page 36: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

1.5.10 Conjunto de Instrucoes

Instrucoes Aritmeticas

Mnemonico FuncaoOpcode Bytes Clocks Flags Afetados

CY AC OV

ADD A,Rn Soma o conteudo de Rn ao acumu-lador

0010/1abc

B 1 12 ? ? ?

ADD A,Direto Soma o conteudo da posicao dememoria ao acumulador

25 H 2 12 ? ? ?

ADD A,@Ri Soma o conteudo da RAM en-derecada por Ri ao acumulador

0010/011iB 1 12 ? ? ?

ADD A,DADO Soma o dado ao acumulador 24 H 2 12 ? ? ?

ADDC A,Rn Soma o conteudo de Rn e o carry aoacumulador

0011/1abc

B 1 12 ? ? ?

ADDCA,DIRETO

Soma o conteudo da posicao dememoria e o carry o acumulador

35 H 2 12 ? ? ?

ADDC A,@Ri Soma o conteudo da RAM en-derecada por Ri e o carry ao acu-mulador

0011/011iB 1 12 ? ? ?

ADDCA,#DADO

Soma o dado e o carry ao acumu-lador

34 H 2 12 ? ? ?

SUBB A,Rn Subtrai o conteudo de Rn e o Bor-row do acumulador

1001/1abc

B 1 12 ? ? ?

SUBBA,DIRETO

Subtrai o conteudo da posicao dememoria e o Borrow do acumulador

95 H 2 12 ? ? ?

SUBB A,@Ri Subtrai o conteudo da RAM en-derecada por Ri e o Borrow do acu-mulador

1001/011iB 1 12 ? ? ?

SUBBA,#DADO

Subtrai o dado e o Borrow do acu-mulador

94 H 2 12 ? ? ?

INC A Soma 1 ao acumulador 04 H 1 12 - - -

INC Rn Soma 1 ao conteudo de Rn 0000/1abc

B 1 12 - - -

INC DIRETO Soma 1 a posicao de memoria 05 H 2 12 - -

INC @Ri Soma 1 a RAM enderecada por Ri 0000/011i

B 1 12 - - -

DEC A Subtrai 1 do acumulador 14 H 1 12 - - -

DEC Rn Subtrai 1 do conteudo de Rn 0001/1abc

B 1 12 - - -

DEC DIRETO Subtrai 1 da posicao de memoria 15 H 2 12 - - -

DEC @Ri Subtrai 1 da RAM enderecada porRi

0001/011i

B 1 12 - - -

INC DPTR Soma 1 ao registrador DPTR A3 H 1 24 - - -

MUL AB Multiplica A e B resultado: BA A4 H 1 48 0 - ?

DIC AB Divide A e B resultado: A inteiro Bresto

84 H 1 48 0 ? 0

DA A Ajuste decimal do acumulador D4 H 1 12 ? ? -

Pagina 36

Page 37: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Operacoes Logicas

Mnemonico FuncaoOpcode Bytes Clocks Flags Afetados

CY AC OV

ANL A,Rn ”e”entre registro e acumulador 0101/1abc

B 1 12 - - -

ANL A,DIRETO ”e”entre memoria e acumulador 55 H 2 12 - - -

ANL A,@Ri ”e”entre RAM indireta e acumu-lador

0101/011iB 1 12 - - -

ANL A,#DADO ”e”entre dado e acumulador 54 H 2 12 - - -

ANL DIRETO,A ”e”entre acumulador e memoria.Resultado na memoria

52 H 2 12 - - -

ANL DI-RETO,#DADO

”e”entre dado e memoria 53 H 3 12 - - -

ORL A,Rn ”ou”entre registro e acumulador 0100/1abc

B 1 12 - - -

ORL A,DIRETO ”ou”entre memoria e acumulador 45 H 2 12 - - -

ORL A,@Ri ”ou”entre RAM indireta e acumu-lador

0100/011iB 1 12 - - -

ORL A,#DADO ”ou”entre DADO e acumulador 44 H 2 12 - - -

ORL DIRETO,A ”ou”entre acumulador e memoria.Resultado na memoria

42 H 2 12 - - -

ORL DI-RETO,#DADO

”ou”entre DADO e memoria 43 H 3 12 - - -

XRL A,Rn ”ou exclusivo”entre registro e acu-mulador

0110/1abc

B 1 12 - - -

XRL A,Direto ”ou exclusivo”entre memoria e acu-mulador

65 H 2 12 - - -

XRL A,@Ri ”ou exclusivo”? entre RAM indiretae acumulador

0110/011iB 1 12 - - -

XRL A,#DADO ”ou exclusivo”entre dado e acumu-lador

64 H 2 12 - - -

XRL DIRETO,A ”ou exclusivo”entre acumulador ememoria. Resultado na memoria

62 H 2 12 - - -

XRL DI-RETO,#DADO

”ou exclusivo”entre dado e memoria 63 H 3 12 - - -

CRL A Faz A = 0 E4 H 1 12 - - -

CPL A Inverte o estado dos bits do acumu-lador

F4 H 1 12 - - -

RL A Desloca o acumulador a esquerda 23 H 1 12 - - -

RL C Desloca o acumulador a esquerdaatraves do carry

33 H 1 12 ? - -

RR A Desloca acumulador a direita 03 H 1 12 - - -

RRC A Desloca acumulador a direta atravesdo carry

13 H 1 12 ? - -

SWAP A Troca os nibbles do acumulador.Equivale a 4 RR A ou 4 RL A

C4 H 1 12 - - -

Pagina 37

Page 38: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Operacoes de Transferencia de Dados

Mnemonico FuncaoOpcode Bytes Clocks Flags Afetados

CY AC OV

MOV A,Rn Move o registro para o acumulador 1110/1abc

B 1 12 - - -

MOV A,Direto Move memoria para o acumulador E5 H 2 1 2 - - -

MOV A,@Ri Move RAM enderecada por Ri aoacumulador

1110/0111B 1 12 - - -

MOV A,#DADO Move o dado para o acumulador 74 H 2 12 - - -

MOV Rn,A Move o acumulador para o registro 1111/1abc

B 1 12 - - -

MOV Rn,Direto Move memoria para o registro 1010/1abc

B 2 24 - - -

MOVRn,#DADO

Move o dado para o registro 0111/1abc

B 2 12 - - -

MOV Direto,A Move acumulador para a memoria F5 H 2 12 - - -

MOV Direto,Rn Move o registro para a memoria 1000/1abc

B 2 24 - - -

MOV Di-reto1,Direto2

Mova o conteudo da memoria Di-reta2 para Direta1

85 H 3 24 - - -

MOV Direto,@Ri Move RAM enderecada por Ri paraa memoria

1000/011iB 2 24 - - -

MOV Di-reto,#DADO

Move o dado para a memoria 75 H 3 24 - - -

MOV @Ri,A Move o acumulador para a RAM en-derecada por Ri

1111/011iB 1 12 - - -

MOV @Ri,Direto Move a memoria para a RAM en-derecada por Ri

1010/011iB 2 24 - - -

MOV@Ri,#DADO

Move o dado para a RAM indireta 0111/011iB 2 12 - - -

MOVDPTR,#DADO16

Move dado de 16 bits para o DPTR 90 H 3 24 - - -

MOVC A, @A +DPTR

Soma A + DPTR obtendo um en-dereco de 16 bits na memoria de pro-grama. Carrega acumulador comesta memoria

93 H 1 24 - - -

MOVC A,@A+PC

Idem ao anterior, mas soma A + PC 83 H 1 24 - - -

MOVX A,@Ri Move RAM externa (End. 8 bits)para o acumulador

1110/001iB 1 24 - - -

MOVX A,@DPTR

Move RAM externa (End. 16 bits)para o acumulador

E0 H 1 24 - - -

MOVX @Ri, A Move o acumulador para a RAM ex-terna (End. 8 bits)

1111/001iB 1 24 - - -

MOVX @DPTR,A

Move o acumulador para a RAM ex-terna (End. 16 bits)

F0 H 1 24 - - -

OBS: Continua na proxima pagina . . .

Pagina 38

Page 39: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Mnemonico FuncaoOpcode Bytes Clocks Flags Afetados

CY AC OV

PUSH Direto Incrementa o SP e entao coloca amemoria no stack

C0 H 2 24 - - -

POP Direto Retira dado do stack e coloca namemoria, depois decrementa SP

D0 H 2 24 - - -

XCH A,Rn Troca entre si o conteudo do acumu-lador e do registro

1100/1abc

B 1 12 - - -

XCH A,Direto Troca memoria com acumulador C5 H 2 12 - - -

XCH A,@Ri Troca RAM indireta com acumu-lador

1100/011iB 1 12 - - -

XCHD A,@Ri Troca nibble menos significativo doacumulador e da RAM indireta en-tre si

1101/011iB 1 12 - - -

Instrucoes para Variaveis Booleanas

Mnemonico FuncaoOpcode Bytes Clocks Flags Afetados

CY AC OV

CLR C Zera o Carry C3 H 1 12 0 - -

CLR bit Zera o bit enderecado C2 H 2 12 - - -

SETB C Seta o carry D3 H 1 12 1 - -

SETB bit Seta o bit enderecado D2 H 2 12 - - -

CPL C Inverte o estado do carry B3 H 1 12 ? - -

CPL bit Inverte o estado do bit enderecado B2 H 2 12 - - -

ANL C,bit ”e”entre o bit enderecado e o carry 82 H 2 24 ? - -

ANL C,/bit ”e”entre o complemento do bit en-derecado e o carry

B0 H 2 24 ? - -

ORL C,bit ”ou”entre o bit enderecado e carry 72 H 2 24 ? - -

ORL C,/bit ”ou”entre o complemento do bit en-derecado e o carry

A0 H 2 24 ? - -

MOV C,bit Move o bit enderecado para o carry A2 H 2 12 ? - -

MOV bit,C Move o carry para o bit enderecado 92 H 2 24 - - -

JC rel Desvia se o carry estiver setado 40 H 2 24 - - -

JNC rel Desvia se o carry estiver zerado 50 H 2 24 - - -

JB bit,rel Desvia se o bit enderecado estiversetado

20 H 3 24 - - -

JNB bit,rel Desvia se o bit enderecado estiverzerado

30 H 3 24 - - -

JBC bit,rel Desvia se o bit enderecado estiversetado e depois zera o bit

10 H 3 24 - - -

Pagina 39

Page 40: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 1aUnidade - Prof. Vitor Leao Filardi

Instrucoes de Desvio

Mnemonico FuncaoOpcode Bytes Clocks Flags Afetados

CY AC OV

ACALL END11 Chama sub-rotina numa faixa de2kbytes da atual posicao

- - 2 24 - - -

LCALL END16 Chama sub-rotina em qualquerposicao da memoria de programa

12 H 3 24 - - -

RET Retorne da sub-rotina 22 H 1 24 - - -

RETI Retorne da interrupcao 32 H 1 24 - - -

AJMP END11 Desvia para outro endereco numafaixa de 2kbytes da atual posicao

- - 2 24 - - -

LJMP END16 Desvia para qualquer posicao damemoria de programa

02 H 3 24 - - -

SJMP rel Desvio curto relativo 80 H 2 24 - - -

JMP @A +DPTR

Desvia para o endereco obtido dasoma do acumulador e do DPTR

73 H 1 24 - - -

JZ rel Desvia se o acumulador for zero 60 H 2 24 - - -

JNZ rel Desvia se o acumulador nao for zero 70 H 2 24 - - -

CJNE A,Direto,rel

Compara e desvia se o acumuladorfor diferente da memoria enderecada

B5 H 3 24 ? - -

CJNEA,#Dado,rel

Compara e desvia se o acumuladorfor diferente do dado

B4 H 3 24 ? - -

CJNERn,#Dado,rel

Compara e desvia se o registro fordiferente do dado

1011/1abc

B 3 24 ? - -

CJNE@Ri,#Dado,rel

Compara e desvia se a RAM indi-reta for diferente do dado

1011/011iB 3 24 ? - -

DJNZ Rn, rel Decrementa o registro e desvia se fordiferente de zero

1101/1abc

B 2 24 - - -

DJNZ Direto, rel Decrementa a memoria e desvia sefor diferente de zero

D5 H 3 24 - - -

NOP Nenhuma Operacao 00 H 1 12 - - -

Pagina 40

Page 41: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Capıtulo 2

Segunda Unidade

Dispositivos do 8051

2.1 Ciclos de Maquina

Como vimos na unidade passada o clock e o relogio interno do microprocessador para a execucaosequencial de qualquer atividade interna ou externa a maquina, ou seja, e o elemento que gera e con-trola os ciclos de trabalho da maquina. Cada ciclo de oscilacao chamaremos de ”P”de pulso. A cadadois pulsos ”P”caracteriza-se um estado ”S”. Uma sequencia de seis estados, S1 a S6, corresponde aum ciclo de maquina. Todas as atividades internas e externas do microprocessador sao comandadaspor esses pulsos e seus seis estados.

Um ciclo de maquina se constitui de seis estados (S1 a S6) que, por sua vez, correspondem adoze pulsos P do ”clock”.

P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2

1 Ciclo de Maquina

S1 S2 S3 S4 S5 S6

1 Estado 2 Pulsos X

Estados

Figura 2.1: Ilustracao de um ciclo de maquina do MSC8051

Por exemplo, o instante marcado como ”X”na figura e o ”S6P1”. Assim podemos ter um linguagemcomum de definicao de instantes de um ciclo de maquina. Cada pulso P1 depende da frequencia doclock. Por exemplo, se o circuito oscilador for a cristal de 12MHz, teremos um ciclo de maquina = 12x (Perıodo de Clock) = 12 x (1/12*106)= 1µs.

Page 42: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

2.2 Portas de I/O

Temos no 8051 quatro grupos de saıdas denominados de PORTS, sao eles P0,P1,P2 3 P3, com-forme a versaoo do 8051 utilizado. No 8051 (ROM Interna) temos todos os quatro ports disponıveis;no 8031 (EPROM Externa) so temos os ports P1 e P3 disponıveis como ”I/O”. Cada port tem oito lin-has que podem ser programadas como entrada ou como saıda, ou trabalhar com os perifericos internos.

2.2.1 Princıpio de Funcionamento e Utilizacao

O uso das linha de I/O e simples e necessita apenas de que escrevamos o valor desejado (na casode utilizacao como saıda), ou efetuarmos a leitura (no caso de entrada). Se o dado presente numaporta configurada como entrada variar, a variacao nao sera sentida pelo sistema, ate que efetuemosuma nova leitura dessa entrada.

Isto ocorre porque cada linha e, na realidade, um Buffer tri-state de um bit. Ja no caso da escrita,temos associado a esta linha um flip-flop D (latch) de um bit.

Na figura 2.2, temos um esquema simplificado de um bit de I/O, que nos ajudara a compreendero funcionamento da porta. Os circuitos reais sao ligeramente diferentes para cada uma das portas, emais complexos do que o apresentado aqui, mas para fins ditaticos e de entendimento este diagramabasico e suficiente.

ESCREVE

LE PINO

VIA DE DADOSINTERNA

LE LATCH

D

CLK

Q

QPINO

+

Figura 2.2: Diagrama em blocos simplificado de um pino de I/O

Quando escrevemos um bit na porta, o mesmo vai pela via interna ate a entrada D do flip-flop, eentao um pulso de clock em CLK coloca este bit em Q, que atraves da eletronica associada leva estenıvel ao pino externo.

Ja no caso da leitura, algumas instrucoes leem o pino enquanto outras leem o estado do latch, em Q.

As instrucoes que leem o latch sao aquelas que costumam ler, modificar e reescrever o bit, a saber: INC, DEC, CPL, JBC, DJNZ, ANL, ORL, XRL, MOV Px.n,C, CLR Px.n e ainda SETB Px.n,conforme vimos na unidade anterior.

As demais instrucoes de acesso aos ports leem o estado presente nos pinos. E dai, qual a diferencaentao?

Vamos supor que temos a base de um transistor NPN sendo acionada pelo pino de I/O. Quandoescrevemos 1 neste pino o transistor entrara em conducao, e se a CPU ler o estado deste pino paraeventual confirmacao, lera a tensao na base do transistor e interpretara como nıvel ZERO, entao neste

Pagina 42

Page 43: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

caso deve ser lido o valor de latch, que estara corretamente indicando nıvel UM.

Um exemplo simples de conexao das linhas seria um sistema que em funcao de um certo bit, porexemplo o bit 5 da porta 3 (escrito como P3.5), fara com que os leds colocados nos 8 pinos da porta1 sejam acesos sequencialmente, conforme o estado daquele bit. Na figura 2.3, temos um diagramasimples para este exemplo, e a seguir o Software simbolico para esta funcao.

Pagina 43

Page 44: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

+

8051 P1.7

P1.1

P1.0

P3.5

+ +

+

Figura 2.3: Exemplo simples de utilizacao

SOFTWARE SIMBOLICOInicio:

Faz acu-mulador =00000001binario

Lebit:Se P3.5 = 0entao

roda acumulador a esquerda (coloca o bit D0 em D1, e assimpor diante, ate colocar o bit D7 em D0).move acumulador para a porta 1perde um tempovolta para ”lebit”

Senao (so podeser P3.5 =1)

roda acumulador a direita (coloca o bit D7 em D6, e assimpor diante, ate colocar o bit D0 em D7).move acumulador para a porta 1perde um tempovolta para ”lebit”

Pagina 44

Page 45: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

Port P0

O P0 e uma estrutura de port bidirecional. Um certo pino ”i”do port Po e tomado como ilus-tracao. O barramento interno do MC e utilizado para ler/escrever no latch interno, ou ler o pino fısico”P0.i”em questao. Quando se utiliza uma instrucao que ”escreve”um valor no Port P0.i, o dado seapresenta na entrada D do flip-flop. Um pulso de ”escreve”(o ”CLK”do flip-flop) e imposto no fli-flop,que transfere esse dados as saıdas ”Q”e ”Q”do latch.

O sinal de ”controle”atua para permitir que esse dado saia fisicamente no pino P0.i. Este sinalde controle simboliza o gerenciamento que esse port tem para apresentar o dado fisicamente a saıda.Existem instrucoes que leem o conteudo armazenado no latch. Existem instrucoes que leem o estado di-retamente do pino. Em geral, as instrucoes que ”leem o latch”sao do tipo ”READ-MODIFY-WRITE”,isto e, le o conteudo do latch, modifica conforme a instrucao imposta e escreve de novo no latch. Saoas instrucoes INC, DEC, CPL, JBC, DJNZ, ANL, ORL e XRL.

Quando P0 e usado como port, e como se ele fosse ”dreno aberto”, isto e, devemos utilizar resistoresde ”Pull-Up”nesses pinos para podermos excitar devidamente o ambiente externo ao MC. Quando elee usado apenas para controle de memoria externa, esses resistores nao sao necessarios, e neste caso oport P0 e visto como um port ”Tri-State”.

O port P0 e multiplexado entre ”dados”e ”enderecos”quando gerencia memoria externa e, entao,utiliza o pino ALE para captar o endereco em um latch externo ao MC.

Port P1

Para finalizar este item, basta dizer que as possibilidades de uso destas linha de I/O sao pratica-mente ilimitadas, ficando a cargo do projestista desenvolver novas aplicacoes para tal.

Os ports 1,2 e 3 possuem pull-ups internos e sao chamadas de quase bidirecionais. Esta carac-terısticas faz com que seus pinos tenham sempre um estado definido, ou seja, 0 ou 1, de forma quemesmo quando as usamos como entrada, podemos medir seu nıvel como se fosse de saıda. Os portsP1 e P3 podem ser configurados, pino a pino (bit a bit), ou totalmente (byte) como entrada ou saıda.Nao se pode esquecer que o port P3 e utılizado como meio de comunicacao externa entre os perifericos”Timers”e ”Serial”e entao os pınos so estarao disponıveis para I/0, dependendo de utilizar ou nao osperifericos desse Mc.

O port 0 nao possui estas caracterısticas, e quando configurada como entrada, tera seu nıvel flu-tuando na ausencia de nıvel fixo no pino. Entretanto, para todos os efeitos de uso, podemos consideraras portas como simples portas de I/O bidirecionais como veremos a seguir.

2.2.2 Caracterısticas Gerais e de Tempo dos Ports

Instrucoes que Alteram diretamente o Conteudo dos Ports

E necessario ter cuidado com as instrucoes do tipo ”Read-Modify-Wrıte”citadas neste item, quandosao manipuladas diretamente com os ports. Por exemplo, a operacao:

orl P1,#11111110b ; vai executar a leitura do Port P1 pelo ”latch”, vai operar a instrucao”OR”com o dado e devolver o resultado em P1.

Se a intencao e so realizar uma ”mascara”para ler o bit ”P1.0”, esta instrucao esta sendo mal apli-cada, pois ela, alem de realizar a mascara, pos valor ”1”em todos os outros bits do port P1, alterandoseus valores originais!

Pagina 45

Page 46: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

Assim, se queremos so uma ”mascara”, devemos operar ”fora de P1”, isto e:mov A,Pi ;le P1 e carrega em Aorl A,11111110b ;faz a ”mascara”sem alterar P1

Esta e outras instrucoes abaixo listadas correm este ”perigo”de utilizacao e precisamos saber ex-atamente o que queremos antes de aplica-las direto aos ports:

Instrucao e Forma Basica Funcao Exemplo

INC INC P1

DEC DEC P3

CPL CPL P1

JBC JBC P1.0,#XX

DJNZ DJNZ P1,#XX

ANL ANL PO,A

ORL ORL PO,A

XRL XRL P1,#XX

Tabela 2.1: Instrucoes que afetam diretamente os ports quando aplicadas junto a eles.

Condicoes de Tempo Envolvendo os Ports

Cada pino do port e amostrado perto da ”descida”do pulso ”ALE”no instante de leitura de in-strucao, entre o perıodo S5 do ciclo de maquina. E possıvel que, se o pino, neste instante, estiver emtransicao, o Mc possa ler dado errado. Quando se ”escreve”um dado no latch do pino do port, ele jaaparece efetivamente na saıda do latch durante o perıodo S6P2 do ultimo ciclo de maquina necessariopara finalizacao da referida instrucao. Assim, so aparecera fisicamente no pino, no instante S1P1 doproximo ciclo de maquina.

Observe que so se pode ler com confiabilidade um dado no pino do port que fique presente portempo acima de 1 valor de ”S”(com clock de 12 MHz teremos → perıodo S ¿ 1 µs ou genericamente,perıodo maior que 1 ciclo de maquina).

2.2.3 Uso das Portas de I/O para a Expansao da Memoria de Dados e Programa

As portas 0 e 2 possuem como funcao alternativa, enderecar memoria extema, para que possamosexpandir a capacidade de dados e de programas no 8051. Neste caso, a porta 2 fornece a parte alta doendereco (A8-A15) e a porta 0 fornece, multiplexada no tempo, a parte baixa de endereco (AO-A7) ea via de dados (DO-D7).

0 pino 30 fornece o sinal ALE, que habilitara o latch de enderecos a segurar a parte baixa domesmo, para que os dados possam transitar peia porta 0. Os outros sinais de controle sao o PSEN\,o RD\ e o WR\.

0 sinal PSEN\ habilita a saıda da memoria de programa (permite a (eitura na Eprom externa) deforma que e ativo quando a CPU deseja ler programa da memoria externa. Neste instante, os sinaısRD\ e WR\ estao em nıvel 1.

Os sinais RD\ e WR\ somente sao ativos caso a CPU execute instrucoes de leitura e escrita namemoria de dados externa (lembre-se de que as instrucoes para memoria externa sao diferentes dasinstrucoes para memoria interna). Temos entao, que para leitura o pino RD\ ira a nıvel 0, mantendoo pino WR\ = 1, e vice-versa para escrita. LEMBRETE: OS SINAIS RD\ E WR\ SAO GER-ADOS ATRAVES DE PINOS DA PORTA 3 CONFORME VEREMOS NO ITEM 2.2.5

Pagina 46

Page 47: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

2.2.4 Selecao de Programa Externo ou Interno

O pino 31 tem a funcao EA\ (extemal address) e quando em nıvel 1 diz a CPU para procu-raros primeiros 4 KBytes de programa intemamente, e o que exceder esta memoria sera procuradoextemamente. Quando em nıvel 0, informa a CPU que deve procurar todos os passos de programaexternamente, ignorando a memoria interna.

OBSERVACAO:Nao confundir este pino com o bit EA, presente no registro IE.

Esta e a opcao utilizada quando se usa o 8031, que e um 8051 mas que nao tem a ROM interna,ou quando nao se deseja arcar com as despesas de encomendar grande quantidade de pecas do 8051gravadas em fabrica.

DEVE FICAR CLARO QUE QUANDO SE UTILIZA MEMORIA EXTERNA DE PROGRA-MAS, EM QUALQUER OPCAO NAO PODEREMOS MAIS UTILIZAR OS PINOS DAS PORTAS0 E 2 COMO I/0.

Na figura 2.4, temos um esquema de Hardware onde colocamos 8 KBytes de programa e 8 KBytesde dados externos, sendo que neste caso, temos toda a memoria de programa externa, utilizando 0 8031.

RD\ WR\ Funcao1 1 Espera0 1 Lendo na RAM1 0 Escrevendo na RAM0 0 Nao ocorre

Tabela 2.2: Tabela de Acesso a RAM.

Figura 2.4: Selecao Externa

2.2.5 Uso dos Pinos da Porta 3 como funcoes Alternativas

A porta 3, conformeja foi visto, pode ter seus pinos usados de forma independente como pinos defuncoes especiais. Por exemplo, para a expansao de memoria de dados vista acima, sao dois pinos daporta 3 que fomecem os sinais RD\ e WR\ para controle.

Quando usamos os temporizadores internos como contadores de eventos, sao outros dois pinosdesta porta que servem como entrada para o sinal de contagem. Se nosso projeto necessitar de inter-rupcao extema, sera atraves de dois pinos desta porta que as mesmas serao sinalizadas a CPU.

E finalmente, nos dois pinos restantes, temos os que permitem a implementacao do canal serial. Amaneira pela qual utilizamos ou nao uma funcao especial da porta 3, sera vista no momento em quea estudarmos o canal serial.

Com relacao aos pinos RD\ e WR\ sao os unicos com os quais nao precisamos nos preocupar, poisseu controle e efetuado pela CPU, e fica claro que se desejamos utilizar memoria de dados externa,nao utilizaremos estes pinos como I/0.

CASO QUALQUER UMA DAS FUNCOES ESPECIAIS ESTEJA SENDO UTI-LIZADA, NAO PODEREMOS MAIS ACESSAR A PORTA 3 COMO PORTA DE I/0PARA BYTE, APENAS COMO BIT ENDERECAVEL.

Pagina 47

Page 48: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

2.2.6 Capacidade de Corrente nos Pinos de I/O

A porta 0, devido as suas caracterısticas de construcao de dreno aberto (open-drain), pode fomecerou absorver 2 cargas TTL, e as portas 1, 2 e 3 podem absorver ou suprir uma carga TTL.

2.3 Modos de Enderecamento das Instrucoes

As instrucoes operam com dados que podem ser enderecados de varias formas, motivo pelo qualdevemos saber muito bem os modos de enderecamento que o microprocessador aceita. No caso dafamılia 8051/52, etc, dispoe-se dos seguintes modos:

1.Registrador

2.Direto

3.Indireto

4.Imediato

5.Relativo

6.Absoluto

7.Longo

8.Indexado

2.3.1 Enderecamento por Registrador

As instrucoes do 8051, quando se referem a registradores internos do microcontrolador, apresentam-se como oito registradores com nomes R0, R1, R2, R3, R4, R5, R6 e R7. 0 nome generico destesregistradores e Rn.Por exemplo: add A,RO: Soma o conteudo de ”A”com o conteudo de ”RO”e o resultado fica em ”A”.Nao se esqueca que, neste caso, precisamos saber antes para qual banco esta apontado o microcontro-lador (nos bits PSW.4 e PSW.3).As instrucoes que trabalham com registradores, acusam-no com o nome generico Rn”, em que ”n eo registrador especıfico (n = 0 a 7). Este tipo de instrucao e codificado em apenas 1 byte.

OP CODE RN

1 BYTE

2.3.2 Enderecamento Direto

As instrucoes do 8051, que usam enderecamento direto, referem-se aos registradores internos daRAM do microprocessador pelo seu ”mnemonico”(apelido) ou seu endereco absoluto. Por exemplo:a) mov A,P3: Move para ”A o conteudo do registrador ”P3”, que e o mesmo que o port fısico P3. b)mov A,30h: Move para ”A”o conteudo do registrador. interno de endereco 30h. Este tipo de instrucaoe codificado em 2 bytes.

Pagina 48

Page 49: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

2 BYTE

END. DIRETOOP CODE

2.3.3 Enderecamento Indireto

As instrucoes do 8051, que usam enderecamento indireto, fazem uso de um registrador, que sopode ser o RO ou R1, para se referir a outra posicao de memoria RAM. Por isto que e indireto: oregistrador RO ou R1 aponta para um endereco, isto e, ele contem o endereco de outra posicao dememoria. Utiliza-se o sımbolo ” para indicar que a operacao e de endereco indireto. O nome genericodesse registrador indireto e Ri (i = 0 ou 1). Por exemplo: Supondo que temos na posicao ”30h”daRAM interna o valor ”05”em hexa e queremos nos referir a posicao 30h indiretamente pelo registrador”R1 ”, podemos fazer (vide figura 2.5)

CONTEUDO

01h

00h

30R1

30h05

Posicao de Memoria

INTRAM

MOV A,@R1 A=05

CONTEUDO

Figura 2.5: Ilustracao da operacao de enderecamento indireto

•mov 30h,#05h: Carrego a posıcao da RAM interna de endereco ”30h”, com o valor ”05”(conteudo=05).

•mov R1,#30h: Carrego o registrador ”R1”com o valor ”30”(conteudo=30h).

•mov A,@Rl: Carrego ou movo para ”A”o conteudo da memoria apontada por R1,que e 30h,isto e, ele sabe que e endereco indireto. Logo, ele sabe que o valor ”30h”dentro de R1 e umendereco e nao um conteudo. Assim, ele vai na posicao de memoria com endereco ”30h”, pega

Pagina 49

Page 50: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

o conteudo de ”30h”, que e ”05”, e carrega em A.Logo, A = 05 e nao A = 30; entendeu?

Olhando a ilustracao da figura 2.5 deste item para melhor compreensao e leia este texto de novo.Este tipo de instrucao e codificado em 1 byte.

1 BYTE

OP CODE Ri

2.3.4 Enderecamento Imediato

As instrucoes do 8051, quando se referem a enderecamento imediato, significam que o codigo dainstrucao ja e codificado junto com uma constante, chamado ”dado imediato”. Operandos do tipoimediato sao precedidos do sinal ”#”. Por exemplo:

•mov A,#25: Move para A o valor 25 em decimal.

•mov A,#25h: Move para A o valor 25 em hexadecimal.

•mov A,#00100101b: Move para A o valor 25h em binario.

•mov DPTR,#1FFFh: Move para o DPTR, o endereco ”1FFF”em hexadecimal.

As instrucoes deste tipo sao de 2 bytes, ou de 3 bytes quando se usa o DPTR.

1 BYTE 1 OU 2 BYTES

OP CODE VALOR IMEDIATO

A unica excecao e a ınstrucao [mov DPTR,#data(16)], que e de 3 bytes, pois o endereco dela e de2 bytes (16 bits).

2.3.5 Enderecamento Relativo

As instrucoes do 8051, com enderecamento relativo, sao utilizadas com instrucoes que permitemrealizar um ”pulo”direto no passo cadenciado de um programa. Este endereco relativo (chamado ”off-set”) e um dado de 8 bıts com sınal, ısto e, realiza um salto relatıvo ao endereco que esta no ProgramCounter, PC, de -128 a +127 posıcoes. Este endereco relativo e lıgado a instrucao por um outro byte.Antes de achar o endereco fınal de salto, o PC e incrementado ao endereco da proxima instrucao e estee o endereco ao qual se soma o endereco relativo: vide ilustracao seguinte, pois a explicacao verbal emuito difıcil de absorver. Vejamos o exemplo:

Pagina 50

Page 51: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

01010102010301040105010601070108

0100

ROM

8003

SJMP DESVIO= Salto pequeno para ¨ DESVIO¨

Exemplo 1: 80 DESVIO = 8003h

CODIGONA ROM

Codigo do comando

Endereco de DESVIO=03

xx

PC (Apos o inicio da instrucao SJMP 03=8003h)

PC+3

OBS: Em geral, nao fazemos estas contas, pois o compilador, quando usamos ”la-bels”(nomes) como desvio, calcula tudo isto sozinho automaticamente.

As instrucoes deste tipo sao de 2 bytes

OP CODE PONTO RELATIVO

2.3.6 Enderecamento Absoluto

Instrucoes do 8051, que se utilizam de endereco absoluto, sao as ACALL e AJMP. Sao instrucoesde 2 bytes que permitem desvio de ate 2 Kbytes relativo, em apenas 2 bytes (endereco total dafaixa teria que ser em 3 bytes; nao e?).

2.3.7 Enderecamento Longo

As instrucoes no 8051, que usam enderecamento do tipo longo, sao LCALL e LJMP. Permitemenderecamento de 16 bits que mapeia todo o espaco disponıvel de enderecos (64 Kbytes). A unicadesvantagem destas instrucoes e que elas consomem 3 bytes de programa, o que so seraum problema quando o processo exigir tempo de execucao muito pequeno (em que 1 µs amais ou a menos e vital, por exemplo). Tem o problema, tambem, de ser um endereco absoluto quenao muda; logo, se voce necessita executar esse programa em outra parte do espaco de memoria, deverepensar neste endereco absoluto, ou se utilizar sempre de ”labels”na criacao do programa, para que,na compilacao, o compilador acerte os enderecos absolutos para voce.Este tipo de instrucao consome 3 bytes:

2.3.8 Enderecamento Indexado

As instrucoes do 8051, que usam enderecamento do tipo indexado, sao JMP ou MOVC em umade suas formas. Sao instrucoes cujo endereco de destino depende nao so do endereco inserido nainstrucao, mas tambem do conteudo de ”A”naquele instante. E melhor explica-los com um exemplo:

jmp @A+DPTR: Salta para a posicao dada pelo DPTR + conteudo de ”A”, isto e, o ”A”podeser um contador de passos e o DPTR um ponteiro de faixas. Supondo que: ”DPTRH = meses doano e ”An = dias do mes. Logo, o DPTR aponta para a ucabeca”da tabela de cada mes, e em ”A”euinsiro 0 ”ındice”do dia do mes desejado. Assim, se vario ”An, ja estou alterando o dia daquele mesfixo, sem alterar mais o DPTR.

Pagina 51

Page 52: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

2.4 Temporizadores e Contadores

2.4.1 Introducao

O 8051 tem dois registros contadores de 16 bits, denominados TIMER 0 e TIMER 1, dedicadosas funcoes de contagem e temporizacao (counter/timer-contador/temporizador). Ha uma importantedistincao entre os conceitos de contador e temporizador.

Quando opera como temporizador, o registro e incrementado a cada ciclo de maquina (usa comobase o cristal da CPU). O sinal de contagem aparece com 1/12 da frequencia do clock.

Quando opera como contador, o registro e incrementado de acordo com o sinal que se coloca nasentradas T1 e T0, ou seja, o contador opera a cada transicao de 1 para 0 (borda de descida ↓) naentrada T0 ou T1.

Deve-se ter um cuidado quando em operacoes em modo contador: ja se sabe que as entradas saoamostradas durante S5P2 de cada ciclo de maquina (figura 2.1). Quando em um ciclo de maquina aentrada e detectada em 1 e depois em 0, no proximo ciclo o contador e incrementado. O incrementoacontece em S3P1 do ciclo seguinte ao que foi detectada a transicao. Para garantir que o nıvel corretotenha sido amostrado, e necessario que o sinal de entrada (o sinal que vai acionar os contadores) per-maneca pelo menos um ciclo de maquina em nıvel alto e pelo menos outro ciclo de maquina em nıvelbaixo, quer dizer, a maxima frequencia que respondera o contador e de 1/24 da frequencia de clock. Osinal de entrada pode ter qualquer ”duty cycle”, desde que se respeite a restricao antes mencionada.

2.4.2 Registros Envolvidos

Dois registros SFR sao utilizados para controlar as funcoes e operacoes do temporizador/contador:em TMOD especifica-se o modo de operacao e em TCON controla-se a operacao. A figura 2.6 ilustrao registro TMOD e a figura 2.7 ilustra o registro TCON.

Pagina 52

Page 53: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

Figura 2.6: Descricao do Registro TMOD

GATE → especifica como sera feito o controle:se GATE = 1 → conta somente se TR1=1 e INT1=high, (idem para TR0 e INT0)se GATE = 0 → conta somente se TR1=1 (controle somente por software)(GATE especifica se INT1 sera usado para controlar o funcionamento do conta-dor/temporizador ⇒ pode ser usado para medir a largura de pulsos externos ligados aINT0 ou INT1)

C/*T → seleciona modo contador ou temporizador:se C/*T = 1 modo contador (conta usando a entrada T1)se C/*T = 0 modo temporizador (conta a cada ciclo de maquina)

M1 M0 → seleciona o modo de operacao:0 0 → THi e temporizador/contador de 8 bits e TLi e um pre-scaler de 5 bits,0 1 → THi e TLi formam um temporizador/contador de 16 bits,1 0 → contador/temporizador de 8 bits com auto-recarga (TLi conta e THi valor para recarga),1 1 → TL0 contador/temporizador de 8 bits (usando TR0, *INT0 e TF0)

→ TH0 contador/temporizador de 8 bits (usando TR1, *INT1 e TF1)→ TH1 e TL1 parado (mas pode operar em outros modos)

Pagina 53

Page 54: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

Figura 2.7: Descricao do Registro TCON

TF1 → flag de transbordamento (overflow) do contador/temporizador 1. Ativado por hardwarequando ha transbordamento no timer 1. E apagado por hardware quando o processamentoe desviado para a rotina de interrupcao.

TR1 → bit de partida/parada (run/stop) do contador/temporizador 1.TF0 → flag de transbordamento (overflow) do contador/temporizador 0. Ativado por hardware

quando ha transbordamento no timer 0. E apagado por hardware quando o processamentoe desviado para a rotina de interrupcao.

TR0 → bit de partida/parada (run/stop) do contador/temporizador 0.IE1 → flag da interrupcao externa 1. Ativada por hardware quando e detectada uma interrupcao.

Apagado por hardware (somente se for modo borda) quando a interrupcao e processada,ou seja, quando se desvia para a rotina de interrupcao.

IT1 → indica se a interrupcao externa 1 opera por borda ou por nıvel:1 → borda de descida (↓),0 → nıvel baixo.

E0 → flag da interrupcao externa 0. Ativada por hardware quando e detectada uma interrupcao.Apagado por hardware (somente se for modo borda) quando a interrupcao e processada,ou seja, quando se desvia para a rotina de interrupcao.

IT0 → indica se a interrupcao externa 0 opera por borda ou por nıvel:1 → borda de descida (↓),0 → nıvel baixo.

Pagina 54

Page 55: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

2.4.3 Modos de operacao

Os dois contadores/temporizadores (timer1 e timer0) podem trabalhar em 4 modos de operacaoque sao selecionados empregando os bits M1 e M0 do registro TMOD. Os modos 0, 1 e 2 sao iguaispara os 2 contadores/temporizadores mas o modo 3 e diferente.

Modo 0

Este modo e identico para os dois contadores/temporizadores. Neste modo tem-se um contadorde 8 bits com um divisor (pre-scaler) de 5 bits. Resulta entao em um contador/temporizador de 13bits, compatıvel com o que havia no MCS-48. Os 13 bits sao formados pelos 8 bits do registro THie pelos 5 bits menos significativos do registro TLi. Os outros 3 bits do TLi sao indeterminados. Otransbordamento (overflow) e gerador quando a contagem faz a transicao de 1FFFH para 0000; nesteinstante ativa-se o bit de overflow (TF1 ou TF0).A figura 2.8 apresenta um diagrama em blocos do contador/temporizador 1 operando em modo 0. Amesma figura e valida para o contador/temporizador 0.

O controle da contagem e simples:

•se GATE = 0, TR1 controla o contador/temporizador (controle por software)

•se GATE = 1, TR1 e INT1 controlam o contador/temporizador (permite tambem um controleexterno por hardware)

Figura 2.8: Diagrama de Blocos para o TIMER 1 em MODO 0

Pagina 55

Page 56: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

Modo 1

Este modo de operacao e o mais simples e por isto e muito utilizado. E identico ao modo 0, masos contadores sao de 16 bits. A figura 2.9 ilustra o diagrama em blocos para este modo, que e identicopara os dois timers.

Figura 2.9: Diagrama de Blocos para o TIMER 1 em MODO 1

Modo 2

Neste modo tem-se um contador/temporizador de 8 bits (TLi) com registro de recarga (THi) paraquando ocorre o transbordamento. Neste modo os dois contadores/temporizadores operam de formaidentica. O transbordamento (overflow) nao somente ativa TFi como tambem recarrega TLi com ovalor guardado em THi (este permanece inalterado). O valor de recarga deve ser fornecido por software.

Figura 2.10: Diagrama de Blocos para o TIMER 1 em MODO 2

Pagina 56

Page 57: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

Modo 3

Este e o unico modo onde os contadores/temporizadores tem um comportamento diferente. Nestemodo, o contador/temporizador 1 simplesmente suspende a contagem (e como se estivesse comTR1=0), enquanto o contador/temporizador 0 se divide em dois contadores de 8 bits:

•TH0 → contador/temporizador de 8 bits usando C/*T, GATE, TR0, *INT0 e TF0,

•TL0 → contador/temporizador de 8 bits usando TR1 e TF1 (ou seja, provoca a interrupcao dotimer 1).

E como se existem 2 contadores/temporizadores de 8 bits (TH0 e TL0) e outro de 16 bits (timer 1). Otimer 1, entretanto, pode ser usado para operar em qualquer outro modo (0, 1 ou 2) e usa-se o modo3 para dete-lo. Nao ha problemas porque os modos sao independentes. Tambem se pode usar o timer1 (em modo 2) para gerar o ”baud rate”da porta serial.

Figura 2.11: Diagrama de Blocos para o TIMER 1 em MODO 3

Pagina 57

Page 58: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

2.4.4 Exercıcios

LED 10HZ

Acender os leds vermelho, amarelo e verde a uma frequencia de 10 Hz. Para solucionar esseexercıcio e necessario gerar um retardo equivalente ao perıodo de 10 Hz. A figura 2.12 ilustra o calculodo valor do contador para gerar esse retardo.

Figura 2.12: Calculo de N para determinar uma frequencia

Se F=10 Hz e CLOCK=3,575611 Hz, entao N=29797. Como este e um contador que conta paracima, temos que subtrair este valor de 65536. Com isto, N=65536-29797=35739 ou 8B9BH. Narealidade, a frequencia gerada nao sera exatamente 10 Hz mas de um valor muito proximo:F = 3,575611 / 12*29797 = 9,99 Hz Sera utilizado o timer 0 no modo 1; a cada interrupcao a rotinaacende um novo led e recarrega o timer.

TMOD GATE C/*T M1 M0 GATE C/*T M1 M0

0 0 0 0 0 0 0 1

IE EA - - ES ET1 EX1 ET0 EX0

1 0 0 0 0 0 1 0

;LED_10HZ.ASM;

DEFSEG PROG, CLASS=CODE, START=0

SEG PROG

;

DEZ_HZ EQU 35739

;

ORG RESET

AJMP INIC

;

ORG TIMER0

AJMP TIM0

;

ORG 50H

INIC

MOV TL0,#LOW DEZ_HZ

MOV TH0,#HIGH DEZ_HZ

MOV TMOD,#1 ;TIMER 0 EM MODO 1

MOV IE,#82H

MOV P1 ,#0 ;APAGAR TODOS OS LEDS

MOV A,#01001001B

CLR C

SETB TR0

SJMP $

;

ORG 100H

TIM0 MOV TL0,#LOW DEZ_HZ ;REINICALIZAR

MOV TH0,#HIGH DEZ_HZ ;O CONTADOR

RLC A

MOV P1,A

RETI

ENDPagina 58

Page 59: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

Notar que na rotina de interrupcao esta a recarga dos temporizadores que e feita com a instrucao”MOV direto,#data”mas que consome 2 ciclos de maquina, ou seja, que ha um retardo que se acu-mula. Para evitar ou corrigir isso, pode-se adicionar ao contador o retardo da instrucao; e mais precisousar ”MOV TL0,# LOW (DEZ HZ+2)”.

Quando existem varias interrupcoes, nao se sabe com certeza quando uma interrupcao do tempo-rizador pode ser aceita; isso implica um erro maior que se acumula. Ha uma solucao simples porquedepois do transbordamento o temporizador segue contando e esta contagem e exatamente o tempoque atrasou o servico da interrupcao; basta usar esse valor na recarga.As instrucoes a seguir ilustram a ideia.

MOV A,#LOW (DEZ_HZ+2)

ADD A,TL0 ;1 ciclo

MOV TL0,A ;1 ciclo

MOV TH0,#HIGH (DEZ_HZ+2)

Pagina 59

Page 60: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

LED 1HZ

Acender os leds vermelho, amarelo e verde a uma frequencia de 1 Hz. A solucao e identica aoexercıcio anterior, mas vai surgir uma dificuldade ao calcular os valores de recarga:CLOCK=3575611 Hz e F=1 HzN=3575611 / 12*1 = 297968

Como se pode ver, o valor de recarga e muito grande (297 968 > 65 536) e impede a utilizacao dotemporizador. Uma boa saıda e utilizar o esquema do exercıcio anterior (com 10 Hz) e adicionar, porsoftware, um divisor por 10.

;LED_1HZ.ASM

;

DEFSEG PROG, CLASS=CODE, START=0

SEG PROG

;

DEZ_HZ EQU 32203

DIVISOR EQU 10

;

ORG RESET

AJMP INIC

;

ORG TIMER0

AJMP TIM0

;

ORG 50H

INIC MOV TL0,#LOW DEZ_HZ

MOV TH0,#HIGH DEZ_HZ

MOV R7,#DIVISOR ;PREPARAR DIVISAO POR 10

MOV TMOD,#1 ;TIMER 0 EM MODO 1

MOV IE,#82H

MOV P1,#0 ;APAGAR TODOS OS LEDS

MOV A,#01001001B

CLR C

SETB TR0

SJMP $

;

ORG 100H

TIM0 MOV TL0,#LOW DEZ_HZ ;REINICALIZAR

MOV TH0,#HIGH DEZ_HZ ;O CONTADOR

DJNZ R7,FIM ;DIVIDIR POR 10

MOV R7,#DIVISOR

RLC A

MOV P1,A

FIM RETI

END

Pagina 60

Page 61: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

ONDA1

Gerar atraves de P1.7 uma onda com o seguinte formato:

Figura 2.13: Sinal a ser gerado na P1.7

Usando N = (t*CLOCK)/12, calcula-se o valor de recarga para o temporizador. Serao programadosdois retardos alternadamente de forma a gerar o sinal pedido.Para t=1 ms → N=298 → 65536-298=65238Para t=40 µs → N=12 → 65536-12 =65524;ONDA1.ASM

DEFSEG PROG, CLASS=CODE, START=0

SEG PROG

;

SAIDA EQU P1.7

R_1MS EQU 65238 ;RETARDO DE 1 MILISEG

R_40MICRO EQU 65524 ;RETARDO DE 40 MICROSEG

;

ORG RESET

AJMP INICIO

;

ORG TIMER0

AJMP TIM0

;

ORG 50H

INICIO MOV TL0,#LOW R_1MS

MOV TH0,#HIGH R_1MS

MOV TMOD,#1 ;TIMER 0 EM MODO 1

MOV IE,#82H ;EA=1 E ET0=1

CLR SAIDA

SETB TR0 ;PARTIDA DO TIMER 0

SJMP $ ;LOOP INFINITO

;

TIM0 JB SAIDA,LB1 ;2 CICLOS

MOV TH0,#LOW (R_40MICRO+4) ;2 CICLOS

MOV TL0,#HIGH (R_40MICRO+4) ;2 CICLOS

SETB SAIDA ;1 CICLO

RETI ;2 CICLOS

LB1 MOV TH0,#LOW (R_1MS+4)

MOV TL0,#HIGH (R_1MS+4)

CLR SAIDA

RETI

END

Notar que a rotina que atualiza o temporizador para gerar o retardo de 40 µs consome 9 ciclos demaquina, quer dizer, consome 30,2 µs. Pode parecer que se o tempo de 40 µs fosse mudado para 25µs nao haveria solucao.

Pagina 61

Page 62: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

ONDA2

Gerar atraves de P1.7 uma onda com o seguinte formato:

Figura 2.14: Sinal a ser gerado na P1.7

Usando N = (t*CLOCK)/12, calcula-se o valor de recarga para o temporizador. O segredo seratrabalhar com o temporizador em modo 2 (os dois valores de recarga sao menores que 256) e a rotinade interrupcao apenas muda o valor da recarga (que esta em TH0).Para t=600 µseg → N=179 → 256-179=77Para t=25 µseg → N=7 → 256-7 =249

;ONDA2.ASM

DEFSEG PROG, CLASS=CODE, START=0

SEG PROG

;

SAIDA EQU P1.7

R_600MICRO EQU 77 ;RETARDO DE 600 MICROSEG

R_25MICRO EQU 249 ;RETARDO DE 25 MICROSEG

;

ORG RESET

AJMP INICIO

;

ORG TIMER0

AJMP TIM0

;

ORG 50H

INICIO MOV TL0,#R_600MICRO ;PRIMEIRA CONTAGEM

MOV TH0,#R_25MICRO ;CONTAGEM SEGUINTE

MOV TMOD,#2 ;TIMER 0 EM MODO 2

MOV IE,#82H ;EA=1 E ET0=1

CLR SAIDA

SETB TR0 ;PARTIDA DO TIMER 0

SJMP $ ;LOOP INFINITO

;

TIM0 JB SAIDA,LB1 ;2 CICLOS

MOV TH0,#R_25MICRO ;2 CICLOS

SETB SAIDA ;1 CICLOS

RETI ;2 CICLOS

;

LB1 MOV TH0,#R_600MICRO

CLR SAIDA

RETI

END

Pagina 62

Page 63: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 2aUnidade - Prof. Vitor Leao Filardi

LEDS1

Acender os leds vermelho, amarelo e verde em sequencia, mudando a cada 10 pulsos em T1. Serausado o contador/temporizador 1 como contador e programado para operar em modo 2, com um valorde recarga igual a 246 (256-10). O acumulador e carry serao usados para acender os leds na sequenciacorreta.

TMOD GATE C/*T M1 M0 GATE C/*T M1 M0

0 1 1 0 0 0 0 1

IE EA - - ES ET1 EX1 ET0 EX0

1 0 0 0 1 0 0 0

;LEDS1.ASM

DEFSEG PROG, CLASS=CODE, START=0

SEG PROG

;

CONTA_10 EQU 246

;

ORG RESET

AJMP INICIO

;

ORG TIMER1

AJMP TIM1

;

INICIO: ORG 50H

MOV A,#01001001B

CLR C

MOV P1,A

MOV TL1,#CONTA_10 ;CARREGAR CONTADOR

MOV TH1,#CONTA_10 ;VALOR DE RECARGA

MOV TMOD,#60H ;CONTADOR 1, MODO 2

MOV IE,#88H ;EA=1, ET1=1

SETB TR1 ;LIGAR CONTADOR

SJMP $ ;LOOP INFINITO

;

TIM1:

RLC A

MOV P1,A

RETI

END

A chave SW3 aciona diretamente a entrada T1, mas ha bouncing e por isso serao notadas mu-dancas nos leds antes de 10 acionamentos. Para esse caso especıfico o bouncing devera ser eliminadopor hardware.

Pagina 63

Page 64: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas
Page 65: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Capıtulo 3

Terceira Unidade

Porta Serial

3.1 Comunicacao Serial

3.1.1 Introducao

A porta serial existente na famılia MCS-51 e ”full duplex”, quer dizer, pode transmitir e receberdados simultaneamente. Tem um buffer que permite receber um segundo byte antes que o byte previ-amente recebido tenha sido retirado (lido) do registro de recepcao. Mas, se o primeiro byte nao tiversido lido no tempo em que o segundo byte se completa, um dos dois sera perdido.

3.1.2 Registros Envolvidos

A porta serial possui um registrador chamado SBUF, o mesmo que se usa para enviar ou receberdados pela porta serial. Na realidade, o nome SBUF se refere a dois registros, um somente para leiturapor onde se recebem os dados que chegam pela porta serial e outro somente para escrita por onde setransmitem dados pela porta serial.

O modo de operacao da porta serial e controlado pelo registro SCON, que e ilustrado na figura3.1. A figura 3.2 apresenta um resumo dos modos de operacao.

Figura 3.1: Descricao do Registro SCON

Page 66: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

SM0 SM1 MODO DESCRICAO FREQUENCIA

0 0 0 registro de deslocamento clock/12

0 1 1 UART de 8 bits variavel

1 0 2 UART de 9 bits clock/12 ou clock/64

1 1 3 UART de 9 bits variavel

SM2 → comunicacao multiprocessador (habilitada com SM2=1):

•SM2=1 e em modo 1 ==¿ interrupcao (RI=1) com o bit de parada (stop bit) igual a 1.

•SM2=1 e em modo 2 ou 3 ==¿ interrupcao (RI=1) se for recebido RB8=1.

REN → habilita a recepcao serial (Reception Enable)

TB8 → oitavo bit a ser transmitido nos modos 2 e 3.

RB8 → oitavo bit recebido nos modos 2 e 3.

TI → flag de interrupcao por termino de transmissao pela porta serial:

•MODO 0 → ativado no final do oitavo bit

•DEMAIS → ativado no comeco do bit de parada

RI → flag de interrupcao por recepcao pela porta serial:

•MODO 0 → ativado no final do oitavo bit.

•DEMAIS → ativado na metade do bit de parada.

Observacao: Os flags TI e RI nao sao apagados por hardware e por isso a rotina de interrupcaodeve faze-lo, ou seja, estes flags devem ser zerados por software.

O registro PCON tambem toma parte na geracao do baud rate da porta serial. Este registro eilustrado na figura 3.2.

Figura 3.2: Descricao do Registro PCON

Page 67: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

3.1.3 Modos de Operacao

Existem quatro modos de operacao da porta serial, cada um com uma finalidade. Sera apresentadoum resumo de cada modo:

Modo 0 (sıncrono, 8 bits)

Neste modo os dados entram e saem pelo pino RXD. O pino TXD fornece o clock para o desloca-mento (shift). Sao transmitidos e recebidos dados de 8 bits (LSB primeiro). O baud rate e de 1/12da frequencia do clock (igual a 1 ciclo de maquina).

Figura 3.3: Esquema da Porta Serial em MODO 0

Este modo pode ser utilizado para expandir as portas de I/O do microcontrolador, utilizando oesquema a seguir:

Figura 3.4: Expansao das Portas de I/O

Pagina 67

Page 68: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

Modo 1 (assıncrono, 8 bits)

No Modo 1 sao operados 10 bits com um baud rate programavel. Recebe-se pelo pino RXD etransmite-se pelo pino TXD. A tabela 3.1 ilustra o frame de bits serial. O bit de partida (START) esempre zero e o bit de parada (STOP) e sempre um na transmissao. Na recepcao o bit de parada ecolocado no bit RB8.

START Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 STOP

Tabela 3.1: Frame de bits gerado pela porta serial em MODO 1

Neste modo o baud rate e gerado pelo contador/temporizador 1. A cada 16 (SMOD=1) ou 32(SMOD=0) transbordamentos (overflows) e enviado um pulso para o circuito serial. A figura 3.5ilustra o esquema do gerador do baud rate e tambem apresenta algumas formulas para o calculo dovalor a ser programado no contador/temporizador.

Figura 3.5: Esquema para a geracao do Baud Rate (BR) em MODO 1

Usando o contador/temporizador 1 programa-se qualquer baud rate. Na grande maioria dos casostem-se o baud rate e e buscado o valor N a ser programado no contador/temporizador 1 (o maiscomodo e usar o modo 2 - auto recarga). Um problema que sempre existe e o erro gerado pela aprox-imacao do valor a ser programado no contador/temporizador. Isto provoca a geracao de baud ratesligeiramente diferentes.

Exemplo: Usando um cristal de 3,575611 MHz, qual e o valor a ser programado no timer 1 paraoperar a 9600 bauds (usar SMOD=0)?N = 3575611 / (384*9600) = 0,9699 (aproximadamente 1)Usando timer 1 no modo 2 tem-se: 256 - 1 = 255 (TH1=TL1=255).

Observacao: a transferencia do dado recebido para o registro SBUF (e RB8, que guarda o stopbit) e a ativacao do flag RI somente acontecera se:RI = 0 e (SM2= 0 ou o bit de parada =1).

Pagina 68

Page 69: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

Modo 2 (assıncrono, 9 bits, baud rate fixo)

Este modo opera com 11 bits e o baud rate pode ser de 1/32 ou 1/64 do clock. O bit TB8/RB8serve para transmitir a paridade ou gerar um segundo bit de parada (TB8=1). O frame de bits usadoneste modo e ilustrado na tabela 3.2.

START Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 TB8 STOP

Tabela 3.2: Frame de bits gerado pela porta serial em MODO 2

O unico controle que se tem sobre o baud rate e atraves do uso do bit SMOD. Se SMOD=0,trabalha-se com BR=clock/32 e se SMOD=1, trabalha-se com BR=clock/64. A figura 3.6 ilustra oesquema para geracao do baud rate no modo 2.

Figura 3.6: Esquema para a geracao do Baud Rate (BR) em MODO 2

Na transmissao o bit 8 e copiado do bit TB8. Na recepcao o bit 8 e copiado para o bit RB8. Osbits TB8 e RB8 estao no registro SCON.

O dado recebido somente e carregado no SBUF (e RB8) se:RI=0 e (SM2=0 ou bit 9 (stop bit) = 1).

Pagina 69

Page 70: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

Modo 3 (assıncrono, 9bits, baud rate variavel)

E identico ao modo 2, exceto que a geracao do baud rate e identico ao modo1. A tabela 3.3 efigura 3.7 ilustra o frame de bits e a geracao do baud rate.

START Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 TB8 STOP

Tabela 3.3: Frame de bits gerado pela porta serial em MODO 3

Figura 3.7: Esquema para a geracao do Baud Rate (BR) em MODO 3

3.1.4 Cuidados com a Porta Serial

Nos quatro modos a transmissao se inicia quando e escrito um byte em SBUF. A recepcao e ha-bilitada quando REN=1 (no MODO 0 exige-se tambem RI=0). Nao se esqueca de que somente existeuma unica interrupcao dedicada a porta serial, portanto ela e gerada por duas condicoes:

a)Termino da transmissao de um byte → flag TI

b)Termino da recepcao de um byte → flag RI

Deve-se testar os flags RI e TI para determinar se a interrupcao foi por transmissao ou por recepcao.Os flags RI e TI devem ser apagados por software.

Um outro cuidado muito importante e com a geracao do baud rate. Muitas vezes nao se conseguea comunicacao serial devido a imprecisao do baud rate. Portanto o problema a seguir e proposto:Programar o contador/temporizador 1 para gerar 9600 bauds para a porta serial operando em modo3, sendo que o cristal e de 4 MHz.

Solucao: N = 4000000/(384*9600) = 1,085 (SMOD=0).

Na solucao calculou-se que N=1,085 mas somente podem ser programados numeros interos; assim,caso se aproxime para 1, o baud rate gerado sera de BR=4000000/384=10416,7. Sera que ira funcionarbem com esse baud rate ?

Para responder esta pergunta e necessario compreender o que acontece com a transmissao serial.Esta transmissao e assıncrona, quer dizer, pode iniciar em qualquer instante; o inicio e caracterizadopela presenca de um bit de partida (START). Uma vez iniciada, deve-se garantir a duracao de cadabit. Para cada byte e transmitido um bit de partida, os bits de dados e um ou dois bits de parada.O que se deve buscar e garantir que nao haja um erro muito grande neste frame de bits. A figura 3.8ilustra o caso da porta serial operando em modo 3.

Pagina 70

Page 71: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

Figura 3.8: Erros provocados pela diferenca no baud rate

A fase mais critica e a recepcao do ultimo bit porque podera apresentar uma defasagem muitogrande (rotuladas de E1 e E2 na figura). Nao se pode especificar um valor limite para esses erros poisdiversos fatores, particulares para cada caso, precisam ser levados em consideracao. Como um valorpratico e que funciona na grande maioria dos casos arbitra-se que o valor do erro, para o ultimo bit,deve ser menor que 40% da duracao de um bit (usando BR exato).

|11

BRp−

11

BR|≤

40

100∗

1

BR

A equacao pode ser simplificada para: |11

BRp−

11

BR|≤

1

27, 5 ∗BR

Como pode ser verificado, com um cristal de 4Mhz nao se conseguira transmitir a 9600 pois o baudrate sera muito grande.

|11

10416, 7−

11

9600|≤

1

27, 5 ∗ 9600

8,167 µs≤3,788µs→falso

Pagina 71

Page 72: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

3.1.5 Comunicacao entre varios 8051

Figura 3.9: Comunicacao entre varios 8051

Os modos 2 e 3 permitem interligar varios 8051, sendo um mestre e varios escravos. Nestes modostemos:

*1 start bit;

*8 bits de dados;

*um nono bit que vai para o bit RB8 ( na recepcao) ou pode ser escolhido 0 ou 1 na transmissaoescrevendo-se em TB8;

*1 stop bit

Note que se SM2 = 1 e RB8 = 1, a interrupcao da serial sera atendida.

O algoritmo de comunicacao consiste em:

1)No inıcio, todos os escravos estao com SM2 = 1

2)Quando o mestre quiser enviar dados para algum escravo, ele escrevera 1 em seu bit TB8 eentao enviara serialmente o endereco do escravo desejado, e como teremos todos os bits RB8em 1, todos escravos serao interrompidos para verificar se e seu o endereco enviado.

3)O escravo selecionado zerara o seu bit SM2 e estara preparado para receber os dados, os quaisterao agora o nono bit (RB8) em 0.

4)Os demais escravos permanecerao com SM2 em 1 e, dessa forma, nao serao mais interrompidospois os dados tem RB8 = 0.

5)Em resumo, o mestre envia enderecos com o nono bit em 1 e os dados com o nono bit em 0,portanto, se o mestre desejar se comunicar com outro escravo basta enviar o novo enderecocom o nono bit em 1.

Pagina 72

Page 73: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

3.1.6 Comunicacao serial entre o 8051 e o PC

Devido a diferenca de tensao entre os nıveis TTL e os usados no padrao RS-232C (PC), e necessariousar circuitos conversores para interfacear o microcontrolador com a porta serial do PC. A conversaopode ser feita atraves de circuitos transistorizados discretos (veja as figuras 11.10,11.11 e 11.12 e leiaa secao 11.4) ou atraves de circuitos integrados como o 1488 (conversor de TTL para RS-232C) e o1489 (conversor de RS-232C para TTL). A seguir estao os esquemas dos dois integrados e o esquemabasico de interligacao entre o 8051 e a serial do PC.

Figura 3.10: Esquema de ligacao entre o computador(PC) e o 8051

Pagina 73

Page 74: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

3.1.7 Exercıcios

TX SER

Usando um loop infinito, transmitir pela porta serial todos os caracteres ASCII de ”0”a ”Z”. Usar9600 bauds, 8 bits de dados, 1 bit de partida e 2 bits de parada.

Para este caso o modo 3 e o mais adequado e TB8=1 sera usado para gerar um bit de parada. Atransmissao sera feita por interrupcao, quer dizer, a cada byte transmitido havera uma interrupcao.O contador/temporizador 1 sera programado para modo 2 (auto-recarga).

SCON SM0 SM1 SM2 REN TB8 RB8 TI RI

1 1 0 0 1 0 0 0

TMOD GATE C/*T M1 M0 GATE C/*T M1 M0

0 0 1 0 0 0 0 0

IE EA - - ES ET1 EX1 ET0 EX0

1 - - 1 0 0 0 0

Calculo do divisor formado pelo contador/temporizador 1:N = 3575611/(384*9600) = 0,9699 ∼= 1. (TH1 = TL1 = 256 - 1 = 255).

;TX_SER.ASM

DEFSEG PROG, CLASS=CODE, START=0

SEG PROG

;

BR_9600 EQU 255

;

ORG RESET

AJMP INIC

;

ORG SINT

AJMP SERIAL

;

ORG 50H

INIC: MOV TMOD,#20H ;TIMER 1 EM MODO 2

MOV TH1,#BR_9600 ;PROGRAMAR BAUD RATE

MOV TL1,#BR_9600

SETB TR1 ;INICIAR TIMER 1

MOV SCON,#0C8H ;MODO 3 COM TB8=1

MOV IE,#90H ;HAB INTERRUP SERIAL

MOV A,#"0" ;PRIMERO ASCII

SETB TI ;TX PRIMEIRO ASCII

SJMP $ ;LOOP INFINITO

;

ORG 100H

SERIAL: CLR TI ;APAGAR FLAG

MOV SBUF,A ;TRANSMITIR

INC A

CJNE A,#"Z"+1,SER1 ;FOI O ULTIMO ?

MOV A,#"0" ;REINICIALIZAR

;

SER1: ACALL RETARDO ;ATRASAR TRANSMISSAO

RETI

;

RETARDO: MOV R7,#0

;

AQUI: DJNZ R7,AQUI

RET

;

END

Pagina 74

Page 75: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

RX SER

O circuito devera responder aos seguintes comandos que chegam pela porta serial:

1 → acender todos os leds 0 → apagar todos os ledsR → acender led vermelho r → apagar led vermelhoA → acender led amarelo a → apagar led amareloV → acender led verde v → apagar led verde

Estes comandos vao chegar pela porta serial usando o formato: 1 bit de partida, 8 bits de dados,2 bits de parada, com um baud rate de 9600.

;RX_SER.ASM DEFSEG PROG, CLASS=CODE, START=0SEG PROG

;

BR_9600 EQU 255

LED_VERMELHO EQU P1.0

LED_AMAR EQU P1.1

LED_VERDE EQU P1.2

CHEGOU EQU 32.0

;

ORG RESET

AJMP INIC

;

ORG SINT

AJMP SERIAL

;

ORG 50H

INIC: MOV TMOD,#20H ;TIMER 1 EM MODO 2

MOV TH1,#BR_9600 ;PROGRAMAR BAUD RATE

MOV TL1,#BR_9600

SETB TR1 ;INICIAR TIMER 1

MOV SCON,#0D0H ;MODO 3 COM REN=1

MOV IE,#90H ;HAB INTERRUP SERIAL

CLR CHEGOU ;APAGAR FLAG

;

ESPERA:

JNB CHEGOU,ESPERA ;AGUARDAR UM COMANDO

CLR CHEGOU

;

CJNE A,#"0",LB1 ;CHEGOU 0

CLR LED_VERMELHO

CLR LED_AMAR

CLR LED_VERDE

SJMP ESPERA

;

LB1:

CJNE A,#"1",LB2 ;CHEGOU 1

SETB LED_VERMELHO

SETB LED_AMAR

SETB LED_VERDE

SJMP ESPERA

;

LB2:

CJNE A,#"R",LB3 ;CHEGOU R

SETB LED_VERMELHO

SJMP ESPERA

;

LB3:

CJNE A,#"r",LB4 ;CHEGOU r

CLR LED_VERMELHO

SJMP ESPERA

;

LB4:

CJNE A,#"A",LB5 ;CHEGOU A

SETB LED_AMAR

SJMP ESPERA

Pagina 75

Page 76: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

;

LB5:

CJNE A,#"a",LB6 ;CHEGOU a

CLR LED_AMAR

SJMP ESPERA

;

LB6:

CJNE A,#"V",LB7 ;CHEGOU V

SETB LED_VERDE

SJMP ESPERA

:

LB7:

CLR LED_AMAR ;CHEGOU v

SJMP ESPERA

;

SERIAL:

CLR RI ;APAGAR FLAG DE INTERRUP

MOV A,SBUF ;COLOCAR DADO NO Acc

SETB CHEGOU

RETI

END

3.2 Programacao em Assembly

3.2.1 Introducao teorica

Este parte da apostila e de fundamental importancia para quem deseja adquirir conhecimentosbasicos em programacao (software). Aqui, e ensinado passo a passo o procedimento da elaboracao deprogramas simples e com loops; utilizando a linguagem Assembly aplicada aos microcontroladores dafamılia MCS-Sl da Intel.

Uma vez que nos aprendemos e praticamos as tecnicas de programacao ensinadas, poderemosaplicar tal metodologia de implementacao de programas a qualquer outra linguagem de programacao,seja ela de baixo, medio ou alto nıvel.

Existem muitas linguagens de programacao que podem ser utilizadas na programacao de sistemasinteligentes, utilizando mierocontroladores, alem do Assembly (nıvel baixo), tais como as linguagensestruturadas de programacao C (nıvel medio), BASIC e PL/M (nıvel alto). A escolha de uma delasna elaboracao de um projeto de software e muito importante e envolve o conhecimento tecnico espe-cializado.

A caracterıstica de uma linguagem de nıvel baixo, como o Assembly, e a de apresentar o mesmoconjunto de instrucoes que aquele definido pelo fabricante da famılia de microprocessadores ou mi-crocontroladores, com a qual se deseja desenvolver os projetos de programa. Isso permite um totalcontrole sobre os registradores intemos do dispositivo e as posicoes de memoria e, consequentemente,sao gerados programas muito mais compactos em relacao as outras linguagens. Assim, sempre que ex-istirem limitacoes de memoria (pouca memoria) e limitacoes de velocidade de processamento (maximavelocidade de processamento), recomenda-se a utilizacao da linguagem de programacao de nıvel baixo,ou seja, o Assembly. Portanto, pelas proprias caracterısticas dos microcontroladores, e muito comuma utilizacao do Assembly na elaboracao de projetos de equipamentos inteligentes. Em contrapartida, aunica desvantagem da linguagem Assembly em relacao as outras linguagens e sua caracterıstica de serrica em detalhes, solicitando dos programadores um conhecimento bastante grande sobre o dispositivoa ser programado.

A caracterıstica de uma linguagem de nıvel medio, como o C, e a de apresentar os aspectos deuma linguagem de nıvel baixo (manipulacao bit a bit ou byte a byte dos registradores internos e dasposicoes de memoria), como tambem as caracterısticas de uma linguageni de nıvel alto, que definimosa seguir. Atualmente, essa e uma das linguagens de programacao mais utilizadas em projetos deequipamentos inteligentes.

Pagina 76

Page 77: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

A caracterıstica de uma linguagem de nıvel alto e a de ser muito mais proxima da linguagem doser humano. Trata-se de uma linguagem descritiva, cujas instrucoes sao palavras escritas em ingles eque estao muito longe das instrucoes em Assembly. Cada instrucao de uma linguagem de nıvel altoe representada por muitas instrucoes de uma linguagem de nıvel baixo. Programar utilizando umalinguagem de nıvel alto e muito mais facil que programar com uma linguagem de nıvel baixo ou medio.Mas quando se utiliza uma linguagem de programacao de nıvel alto, sao gerados programas maiores ecom menor velocidade de processamento. Outra desvantagem da linguagem de nıvel alto, que muitasvezes e interpretada como vantagem, e a de nao exigir do programador o conhecimento completo edetalhado do dispositivo que se deseja programar.

Um programa em codigo de maquina (codigo-objeto) e composto por bytes que representam asinstrucoes do dispositivo. E a linguagem que o microcontrolador sabe e pode executar. Assim, sem-pre que for desenvolvido um programa em uma determinada linguagem de programacao, e necessariofazer a compilacao desse programa para transforma-lo em linguagem de maquina. O programa emlinguagem de maquina deve ser simulado por meio de um simulador (AVSIM5l, Pinnacle etc.) ougravado em uma memoria para verificar seu funcionamento por meio da utilizacao do proprio hard-ware do produto. A seguir inicia-se o estudo das tecnicas de programacao em Assembly para a famıliade microcontroladores MCS-51 da Intel.

3.2.2 Estrategias de elaboracao de programas

E muito importante para um programador, antes de implementar um programa, seguir uma de-terminada metodologia. A seguir, e descrita uma metodologia de elaboracao de programas que eindependente da linguagem de programacao.

Pre-requisitos do tecnico que desenvolvera o projeto

a)Conhecer a estrutura interna (hardware) do dispositivo com que se deseja desenvolver o pro-jeto;

b)Conhecer o conjunto de instrucoes do dispositivo.

Viabilidade do projeto

a)Obter e entender claramente as especificacoes do cliente (desejos do cliente, caracterısticasdo produto e do sistema, modo de funcionamento etc.);

b)Elaborar diferentes estrategias de solucoes para o projeto. Isso pode ser feito utilizando-sediagramas de fluxo de dados (DFD), diagramas de blocos, desenhos etc.;

c)Elaborar a viabilidade do projeto com relacao ao hardware e ao software para verificar apossibilidade de sua implementacao junto ao cliente. Algumas perguntas sao utilizadas paragarantir a viabilidade do projeto: Quais sao as necessidades de hardware? Qual sera o custofinal do produto (o cliente pagara por esse valor)? Qual sera a quantidade de equipamen-tos a ser fabricada (a fabrica comporta essa quantidade)? Como serao feitas as entregas doproduto? Existem fornecedores de componentes no Brasil? Quais componentes devem serimportados? Existem concorrentes? etc.;

d)Escolher a melhor solucao junto com o cliente, ou seja, aquela que utilizara o menor numerode componentes e a que apresenta maior velocidade de processamento. Isso afeta diretamenteo custo final do hardware e traz uma maior flexibilidade funcional do produto.

Pagina 77

Page 78: Apostila de Programa˘c~ao em 8051 e contoladores.… · NICOLOSI, D. E. C. Microcontrolador 8051 Detalhado. [S.l.]: Editora Erica, 2000. SILVA, V. P. da. Aplica˘c~oes Pr aticas

Microprocessadores e Microcontroladores - 3aUnidade - Prof. Vitor Leao Filardi

Implementacao do projeto

a)Elaborar o fluxograma do programa em Assembly: os fluxogramas devem ser implementadosdesde o nıvel de ’macrodetalhamento’ ate o nıvel de ’microdetalhamento’. Um fluxogramarepresentando o nıvel de ’macrodetalhamento’ deve conter as ideias e os objetivos dentro dosblocos representativos. Um fluxograma representando o nıvel de ’microdetalhamento’ deveutilizar as representacoes simbolicas dos mnemonicos das instrucoes dentro dos blocos repre-sentativos. Exemplo: dentro de um bloco do fluxograma, representar (A) ← (B): significaa instrucao MOV A,B;

b)A partir do fluxograma, gerar o programa-fonte na linguagem de programacao escolhida (ar-quivo em codigo ASCII que contem as instrucoes que compoem o programa);

c)Compilar o programa-fonte para gerar o arquivo binario que corresponde ao programa emcodigos de maquina;

d)Fazer a linkagem dos arquivos binarios para agrupar de maneira organizada, os diferentesblocos de programa que compoem o programa final;

e)Efetuar a simulacao do programa para verificar seu funcionamento e corrigir os possıveis errosde logica. Nessa fase, nao e necessario 0 hardware do produto;

f)Realizar a gravacao da EPROM, insercao no hardware do produto e teste fısico de sua fun-cionalidade;

g)Efetuar a emulacao do programa (e necessario um sistema emulador) para corrigir erros delogica ou eventuais falhas de algum componente, utilizando o proprio hardware do produto;

h)Fazer testes rapidos de bancada para verificar o funcionamento do produto final;

i)Realizar testes de longa duracao (confiabilidade), em condicoes de estresse’, para a ho-mologacao do produto.

3.2.3 Fluxogramas

Essa ferramenta de programacao e fundamental para a implementacao de qualquer rotina de umprograma de microcomputador. E por meio dessa ferramenta que se pode observar como foi imple-mentada a estrategia de solucao de uma necessidade de programacao elaborada por um programador.O fluxograma representa como o fluxo de informacoes sera processado pelo microprocessador.

Pagina 78