microcontrolador 8051

Embed Size (px)

Citation preview

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

    Apostila de Programacao em 8051

  • 2

  • Sumario

    1 Primeira Unidade 7

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

    1.2 Princpios 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 Nvel ou Transicao . . 32

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

    1.5.9 Exerccios 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 Princpio de Funcionamento e Utilizacao . . . . . . . . . . . . . . . . . . . . . . 42

    2.2.2 Caractersticas 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 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583

  • 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 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

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

  • 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

  • Captulo 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 ttulo 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.

    Poderamos 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, epoderamos 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? Precisaramos 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 especfico; 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-

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

    Co

    z

    in

    he

    ir

    o

    Livro de Receitas

    Complexa)

    EscrevoLeio

    Ingredientes +

    Utensilios

    HARDWARE SOFTWARE

    (Linguagem SoLeio

    Folha de Rascunho

    Mic

    r

    o

    pr

    o

    c. 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 Princpios 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 dgito 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 caractersticas volateis e , quando eles sao desenergizados, perdem suasinformacoes.

    Pagina 8

  • 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 sada 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 mnimo o firmwaretem a finalidade principal de programar a forma de operacao do hardware (numero de portas deentrada e sada, 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 vdeo 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) constitudo 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 sadas (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 constitudos 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 sada (dispositivos que fazem a comunicacao com o mundo externo).

    Pagina 9

  • 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 sada (escritana memoria de vdeo, 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 vdeo e a impressao em papel do referido saldo bancario (resposta dosistema por meio da acao de gerar informacoes no monitor de vdeo 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 sada, 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 contnua domicroprocessador e, dessa forma, um programa e processado por inteiro. A unidade de processamentocentral (microprocessador) e constituda 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 a`soperacoes aritmeticas e logicas. Alem disso, uma caracterstica muitssimo 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 caractersticas de cada microprocessador/microcontrolador

    Pagina 10

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

    (p. ex.: 32 registrado- res de 8 bits etc.). Como sao formados por flip-flops, e possvel realizaroperacoes de leitura e escrita de informacoes. Quando a CPU e desenergizadapor apresentar car-actersticas volateis, essas informacoes sao perdidas. Geralmente, eles sao capazes de armazenar:

    um byte se forem constitudos por registradores de 8 bits;

    um duplo byte ou address ou word, se forem constitudos por registradores de 16 bits;

    um duplo address ou duplo word, se forem constitudos 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 sada. 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 sada 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 acaracterstica 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 vdeo. Repare que foram necessarias, nesse exemplo, varias operacoes

    Pagina 11

  • 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 caracterstica de realizar leitura e escrita de informacoes. Portanto, deve-seutilizar memorias RAM (Random Access Memory). Lembre-se de que essas memorias apresentama caracterstica de se- rem volateis. Portanto, sempre que o microcomputador for desenergizado, asinformacoes contidas nesse tipo de dispositivo serao perdidas.

    Unidade de Entrada e Sada

    Unidade de entrada e sada (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 especficas, que dependem de uma linguagem propria para cada famlia de micropro-cessadores/microcontroladores. Quando falo em famlias 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 famlias 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 famlias, mas que interagem entre si.

    Assim, ao programarmos a ROM com os codigos compatveis com a linguagem ou famlia 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 constitudo 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 sada. Esse barramento e bidirecional. Vale ressaltar que

    Pagina 12

  • 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 marcapassoda 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 NaoVolatil(ROM)

    Volatil (RAM)

    Memoria

    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 nvel, 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 dgitos binarios, mas nos a memorizarmos por add, que e mais facil dese lembrar. Assim atraves de um software (interpretador) ira transformar este addem 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 POtem um reg-istrador imagem de PO, cujo conteudo e o reflexo do que ha na entrada fsica 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

  • 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 saibaondeestava 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, abrira 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 cerebroda 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 tpico de 12 MHz sendo que existem versoes de ate30 MHz, fornecidas por diversos fabricantes, e suas caractersticas de hardware e software permitemusa-lo como um poderoso controlador, sobretudo em sistemas para logica sequencial e combinatoria.

    Entre as suas caractersticas 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

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

    7)Dois contadores/temporizadores de 16 bits

    8)Modos Power-Down e Power-Idle

    [*] Nestinge 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 caractersticas 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 a`s 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

  • 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 Neteremos 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

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

    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

  • 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

  • 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 sada do chip, euma leitura dos mesmos coloca o estado presente nos pinos (ou nos latchs de sada, conforme veremosadiante) dentro da posicao desejada. Essa operacao e possvel devido aos buffers e latchs de cadaporta, que so sao ativos na leitura ou escrita das mesmas.

    Pagina 19

  • 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 pilharealizada 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 antesde escrever os dados e a instrucao POP le o dadoda pilha e depois decrementao 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

  • 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 acessveis 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 nvel 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

  • 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 nvel 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 carregadoe 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

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

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

    no nvel 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 rudo, sendo que a sada domesmo e amostrada a cada ciclo de maquina pelo hardware, para ver a ocorrencia de reset.

    Durante o reset, o nvel logico dos pinos e indeterminado, indo a nvel 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

  • 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 mnima 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

  • 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 possveis, 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

  • 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 incio 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 nvel (alto ou baixo).

    Pela borda de subida ou de descida.

    Pela soma de borda (subida ou descida) e um nvel 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

  • 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 nveis de prioridade, e dessa forma, se duas ou mais ocor-rerem ao mesmo tempo (algo praticamenteimpossvel), 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 nvel 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 nvel 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 disponveis para o reset, num desvio incondicional para outra parte damemoria, onde realmente teria incio o programa.

    Pagina 27

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

    As interrupcoes INT0\, Timer/counter 0, INT1\ e Timer/counter 1 possuem apenas 8 Bytesdisponveis 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 incio das interupcoes

    Pagina 28

  • 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 nvel 0,desabilita todas as interrupcoes de forma geral, independente de qualquer outro controle. Se em nvel1, 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 nvel 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 nvel 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 nvel 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 nvel 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 nvel 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 nvel de prioridade de nossas interrupcoes. Ve-jamos o formato deste registro.

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

    Pagina 29

  • 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 nvel 0, indica prioridade baixa.

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

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

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

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

    Pagina 30

  • 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 umem operacoes aritmeticas: vai para 1 quando uma somacom A estourana 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 estouroda conta). Vai para 1se 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 1para o carry, isto e,CYe setado no registrador PSW.O carry CYtambem 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 umentre os quatro primeiros bit do acumulador,isto e, e o vai umde um niblepara outro nibledo 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.(literalmentesobroudentro 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 Ao 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 Rndo 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 resetaa maquina, os bits RS1 e RS0 ficam em 00h,isto e, estao se referindo ao banco 0.

    Pagina 31

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

    OV E um bit que vai para 1 quando, apos um adicao ou subtracao, acontece um estourodaconta. Resultados maiores que +127 ou menores que -128 setaraoo 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 disponvel ao usuario.

    P - Parity Bit que e setadoem 1quando 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 1ou 0, e pensar que a soma dos bits 1do acumulador mais oPtem 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 perodos de clock, que correspondam ao final da instrucao; a proxima instrucao naoseja multiplicacao ou divisao; e temois mais 24 perodos de clock para a chamada da sub-rotina. Estestempos incorrem em atraso de 38 perodos de clock ou 3.2 s para um clock de 12 MHz.

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

    1.5.7 Ajuste das Interrupcoes Externas para serem Ativas em Nvel ou Transicao

    Podemos ajustar as interrupcoes externas para serem detectadas por transicao de 1 para 0, ou pelonvel 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 a`s 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 nvel pino, devendopermanecer em 0 por pelo menos 12 perodos de clock. Se em nvel 0, INT0\ sera aceita apenas pelonvel 0 presente no pino.

    Pagina 32

  • 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 nvel pino, devendopermanecer em 0 por pelo menos 12 perodos de clock. Se em nvel 0, INT1\ sera aceita apenas pelonvel 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 perodo de 12 ciclos de clock, porque na amostragemanterior, a CPU detectou nvel 1 e agora devemos esperar que a mesma detecte o nvel 0.

    Ja na deteccao por nvel, a entrada devera estar em nvel 0, apenas durante a amostragem queocorre ao fim de cada instrucao executada. O interessante e que neste caso, o pino pode permanecerem nvel 0 durante a execucao da rotina de interrupcao, mas deve estar em nvel 1 ao fim desta, senaoo sistema atendera novamente a` interrupcao, visto que na amostragem da ultima instrucao da rotina,encontrara este pino em nvel adequado para a interrupcao, o que nao ocorre no caso anterior, pois laa CPU deve sentir a TRANSICAO do nvel 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 sada desta porta sera ligada diretamente ao pino de interrupcao externa INT0\, por exemplo,e tambem a um inversor, e da ao gatedo lacth, e as sadas do lacth estao ligadas a` porta P1.

    Caso ocorra uma transicao de 1 para 0 na porta AND, teremos sua sada indo para o nvel 0tambem, ocasionando o pedido de interrupcao e travandoo 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

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

    7430

    8051

    74LS374D0D1D2D3D4D5D6D7

    Q0Q1Q2Q3Q4Q5Q6Q7

    I8

    I1

    +Vcc

    P1.0

    P1.7

    INT0\

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

    1.5.9 Exerccios Resolvidos

    Questao 1 No microcontrolador da famlia 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

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

  • 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

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

    Operacoes Logicas

    Mnemonico FuncaoOpcode Bytes Clocks Flags Afetados

    CY AC OV

    ANL A,Rn eentre registro e acumulador 0101/1abc

    B 1 12 - - -

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

    ANL A,@Ri eentre RAM indireta e acumu-lador

    0101/011iB 1 12 - - -

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

    ANL DIRETO,A eentre acumulador e memoria.Resultado na memoria

    52 H 2 12 - - -

    ANL DI-RETO,#DADO

    eentre dado e memoria 53 H 3 12 - - -

    ORL A,Rn ouentre registro e acumulador 0100/1abc

    B 1 12 - - -

    ORL A,DIRETO ouentre memoria e acumulador 45 H 2 12 - - -

    ORL A,@Ri ouentre RAM indireta e acumu-lador

    0100/011iB 1 12 - - -

    ORL A,#DADO ouentre DADO e acumulador 44 H 2 12 - - -

    ORL DIRETO,A ouentre acumulador e memoria.Resultado na memoria

    42 H 2 12 - - -

    ORL DI-RETO,#DADO

    ouentre DADO e memoria 43 H 3 12 - - -

    XRL A,Rn ou exclusivoentre registro e acu-mulador

    0110/1abc

    B 1 12 - - -

    XRL A,Direto ou exclusivoentre 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 exclusivoentre dado e acumu-lador

    64 H 2 12 - - -

    XRL DIRETO,A ou exclusivoentre acumulador ememoria. Resultado na memoria

    62 H 2 12 - - -

    XRL DI-RETO,#DADO

    ou exclusivoentre 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

  • 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

  • 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 eentre o bit enderecado e o carry 82 H 2 24 ? - -

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

    B0 H 2 24 ? - -

    ORL C,bit ouentre o bit enderecado e carry 72 H 2 24 ? - -

    ORL C,/bit ouentre 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

  • 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

  • Captulo 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 Pde pulso. A cadadois pulsos Pcaracteriza-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 Xna 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 (Perodo de Clock) = 12 x (1/12*106)= 1s.

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

    2.2 Portas de I/O

    Temos no 8051 quatro grupos de sadas 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 disponveis;no 8031 (EPROM Externa) so temos os ports P1 e P3 disponveis como I/O. Cada port tem oito lin-has que podem ser programadas como entrada ou como sada, ou trabalhar com os perifericos internos.

    2.2.1 Princpio 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 sada), 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

    Q PINO

    +

    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 estenvel 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 nvel ZERO, entao neste

    Pagina 42

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

    caso deve ser lido o valor de latch, que estara corretamente indicando nvel 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

  • 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

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

    Port P0

    O P0 e uma estrutura de port bidirecional. Um certo pino ido port Po e tomado como ilus-tracao. O barramento interno do MC e utilizado para ler/escrever no latch interno, ou ler o pino fsicoP0.iem questao. Quando se utiliza uma instrucao que escreveum valor no Port P0.i, o dado seapresenta na entrada D do flip-flop. Um pulso de escreve(o CLKdo flip-flop) e imposto no fli-flop,que transfere esse dados a`s sadas Qe Qdo latch.

    O sinal de controleatua 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` sada.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 latchsao 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-Upnesses 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 dadose enderecosquando 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-tersticas 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 nvel como se fosse de sada. Os portsP1 e P3 podem ser configurados, pino a pino (bit a bit), ou totalmente (byte) como entrada ou sada.Nao se pode esquecer que o port P3 e utlizado como meio de comunicacao externa entre os perifericosTimerse Seriale entao os pnos so estarao disponveis para I/0, dependendo de utilizar ou nao osperifericos desse Mc.

    O port 0 nao possui estas caractersticas, e quando configurada como entrada, tera seu nvel flu-tuando na ausencia de nvel 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 Caractersticas 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`tecitadas 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 instrucaoORcom o dado e devolver o resultado em P1.

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

    Pagina 45

  • 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 mascarasem alterar P1

    E