Microcontrolador 8051- Prof_ Hugo Vieira Neto

download Microcontrolador 8051- Prof_ Hugo Vieira Neto

of 97

Transcript of Microcontrolador 8051- Prof_ Hugo Vieira Neto

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    1/97

    MICROCONTROLADORESMCS51

    Hugo Vieira Neto, M.Sc.([email protected])

    Curitiba, 2002

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    2/97

    SUMRIO

    Sistemas Microprocessados.............................................................................2Hardware ...............................................................................................2Software.................................................................................................5

    Microcontroladores ...........................................................................................7

    Microcontroladores MCS51..............................................................................8Parte 1 Hardware Bsico

    Disposio dos Terminais ......................................................................9Descrio Funcional dos Terminais .....................................................10Arquitetura Interna ...............................................................................12Organizao da Memria.....................................................................13Bancos de Registros............................................................................14Registros Bit Endereveis ..................................................................15Registros de Funo Especial .............................................................15Clock....................................................................................................17Reset....................................................................................................18Memrias Externas de Programa e de Dados .....................................19

    Parte 2 - SoftwareProgramao .......................................................................................25Modos de Endereamento...................................................................25Conjunto de Instrues ........................................................................26Linguagem Assembly...........................................................................47Tpicos Importantes em Programao ................................................49

    Linguagem C........................................................................................51Parte 3 Hardware AvanadoPorts de Entrada e Sada.....................................................................52Interrupes .........................................................................................60Temporizadores / Contadores de Eventos...........................................67Interface Serial .....................................................................................80Modos de Reduo de Consumo.........................................................84

    Bibliografia......................................................................................................86

    Informaes teis na Internet.........................................................................87

    AnexosConjunto de Instrues MCS51Manual da Placa P51Manual do Paulmon

    Tutoriais

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    3/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 2

    SISTEMAS MICROPROCESSADOS

    Sistemas microprocessados dividem-se basicamente em hardware esoftware. O hardware constitudo dos componentes fsicos do sistema(dispositivos eletrnicos) e o software constitudo dos componentes lgicos

    (programas e dados). Chama-se de firmware o conjunto de programasgravados em ROM, especficos para o funcionamento de um determinadosistema microprocessado.

    HARDWARE

    Principais Dispositivos de Hardware

    Microprocessador (CPU): Constitui o bloco "inteligente" do sistema. Segueuma seqncia de instrues previamente armazenadas, chamada deprograma. o responsvel pela execuo de operaes lgicas, aritmticase de controle.

    Memria no-voltil (ROM, PROM, EPROM): Armazena a seqncia deinstrues do programa a ser executado.

    Memria voltil (SRAM, DRAM): Armazena temporariamente os dadosrelativos ao programa. Tambm pode armazenar programas de maneiratemporria.

    Perifricos (interface paralela, interface serial, temporizadores / contadores

    de eventos, entre outros): So os responsveis pela comunicao com omundo externo ao sistema (entrada e sada de dados).

    Decodificador de endereos: Seleciona o dispositivo a ser acionado pelomicroprocessador, auxiliando o microprocessador no gerenciamento dobarramento de dados.

    Circuito de reset: o responsvel pela inicializao do sistema.

    Circuito de clock: Fornece a cadncia (velocidade) de execuo dasinstrues do programa pelo microprocessador.

    Principais Sinais Digitais Barramento de Dados (Data Bus): Consiste no conjunto de sinais digitais

    por onde trafegam dados entre diferentes dispositivos. Trata-se de uma viabidirecional compartilhada entre todos os componentes do sistemamicroprocessado. Normalmente apenas dois dispositivos fazem uso dobarramento de dados em cada instante de tempo (transmissor e receptor),ficando os demais em alta impedncia. Quem comanda o barramento dedados o microprocessador, atravs dos barramentos de endereos e decontrole, exceto durante operaes de DMA (Acesso Direto Memria),quando o controle cedido a algum perifrico.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    4/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 3

    Barramento de Endereos (Address Bus): o conjunto de sinais digitaisatravs do qual so selecionados dispositivos conectados ao barramento dedados. Cada componente do sistema corresponde a um endereo ou faixade endereos, atendendo quando solicitado pelo microprocessador ou poroutro dispositivo, no caso de DMA.

    Barramento de Controle (Control Bus): Conjunto de sinais digitais queauxiliam o endereamento dos diversos dispositivos de um sistemamicroprocessado, sinalizando o tipo de operao a ser efetuada. atravsdo barramento de controle que se definem operaes de leitura ou escrita,acesso memria, acesso aos perifricos ou requisies de DMA. Tambm atravs de sinais especiais do barramento de controle que so realizadasinterrupes no processamento do programa para atender a eventos demaior prioridade.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    5/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 4

    E/S

    BarramentodeDados

    BarramentodeEndereoseControle

    Memria

    dePrograma

    (ROM)

    Circuito

    DeClock

    Micropro-

    cessa

    dor

    (CPU)

    Memria

    DeDados

    (RAM)

    Perifricos

    Decodificador

    deEndereos

    (Seleo)

    Circuito

    deReset

    Interrupes

    DiagramaemB

    locosdeumS

    istemaMicroproce

    ssadoGenrico

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    6/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 5

    SOFTWARE

    Principais Conceitos de SoftwareSistemas microprocessados operam segundo a execuo seqencial de

    instrues e operandos armazenados em memria. A essa lista de instruesd-se o nome de programa armazenado. Como a execuo do programa seqencial, apenas uma instruo executada a cada instante de tempo.Chama-se de algoritmo uma seqncia de operaes simples para se realizaruma determinada tarefa mais complexa.

    Uma das formas mais comuns e acessveis de se representar umalgoritmo o fluxograma, uma tcnica que consiste em representar na formade diagrama a seqncia das operaes e decises a serem realizadas para asua execuo. O grau de refinamento das operaes representadas em umfluxograma depende em grande parte dos recursos oferecidos pela linguagemde programao a ser utilizada.

    Exemplo: Fluxograma para a Troca de uma Lmpada

    INCIO

    FIM

    Acionar o interruptor

    A lmpada acendeu?Sim

    Apanhar lmpada nova

    No

    Posicionar escada

    Subir na escada

    Retirar lmpada antiga

    Colocar lmpada nova

    O uso de uma linguagem de programao faz-se necessrio para aimplementao real de um algoritmo na forma de programa executvel, a fimde estruturar as instrues e seus respectivos operandos na seqncia a serseguida pelo microprocessador. Cada microprocessador possui suas prpriasinstrues, as quais so codificadas de maneira nica e constituem a chamadalinguagem de mquina ou cdigo de mquina da CPU.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    7/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 6

    Linguagens de ProgramaoA principal funo das linguagens de programao proporcionar ao

    programador uma ferramenta para elaborao de programas que os torne maisinteligveis do que a linguagem de mquina. Sendo assim, existem linguagensde programao que se aproximam mais da linguagem do microprocessador,

    chamadas linguagens de baixo nvel (como a linguagem Assembly), e existemlinguagens que se aproximam mais da linguagem do programador, chamadaslinguagens de alto nvel (como a linguagem C).

    Os programas implementados em linguagens diferentes da linguagemde mquina necessitam ser traduzidas para que possam ser devidamenteexecutadas pelo microprocessador. Aplicativos que realizam a tarefa decodificar os programas para linguagem de mquina recebem os nomes demontador (assembler), no caso da linguagem Assembly, e compilador no casoda linguagem C ou qualquer outra linguagem de alto nvel. Existem tambm oschamados interpretadores, os quais codificam e executam programas emlinguagens de alto nvel em tempo real. bastante comum interpretadores paraa linguagem BASIC.

    Pode-se dividir um programa grande em vrios arquivos contendocdigo-fonte, facilitando a sua manuteno (modularidade). Um outro aplicativochamado link-editor (linker) o reponsvel pela ligao dos diversos mdulosdo programa para constituir a sua forma final em linguagem de mquina oucdigo-objeto. O link-editor tambm o responsvel pela ligao do cdigo-objeto de bibliotecas de funes utilizadas em linguagens de alto nvel.

    Atualmente existem ambientes integrados de desenvolvimento desoftware, constitudos de editor de cdigo-fonte, montador, compilador, link-editor e simulador de programas em um nico aplicativo.

    Ferramentas de DesenvolvimentoAlm dos aplicativos necessrios para o desenvolvimento de programas

    tambm so necessrias ferramentas para a validao do funcionamento dosistema como um todo (hardware e software). Para essa finalidade existemprogramas simuladores de hardware e software, programas monitores(debuggers), emuladores de memrias ROM e RAM, e emuladores demicroprocessadores e microcontroladores, podendo estes ltimos operar emtempo real ou no.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    8/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 7

    MICROCONTROLADORES

    Os microcontroladores, tambm chamados de "microcomputadores desomente um chip", vm revolucionando o projeto de sistemas eletrnicosdigitais devido enorme versatilidade de hardware e software que oferecem.

    Um microcontrolador rene em apenas um componente os elementos deum sistema microprocessado completo, antes desempenhados por diversosdispositivos (memria ROM, memria RAM, interface paralela, interface serial,temporizadores / contadores de eventos, controlador de interrupes, entreoutros).

    Talvez a vantagem mais marcante dos microcontroladores seja apossibilidade de ter seus programas gravados internamente na fabricao docomponente, impedindo a engenharia reversa ou cpias no autorizadas.

    Famlias de Microcontroladores

    MCS51 Intel e outros fabricantes M68HC11 Motorola

    Z8 Zilog

    COP8 National

    PIC Microchip

    AVR - Atmel

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    9/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 8

    MICROCONTROLADORES MCS51

    HistricoA famlia de microcontroladores MCS51 uma das mais antigas

    existentes e, talvez por este motivo, uma das mais conhecidas e utilizadas.Graas a essa caracterstica, a quantidade de ferramentas de desenvolvimentoe bibliotecas de software bastante ampla e variada.

    Alm da Intel (fabricante original do 8051), diversas outras empresaspassaram a comercializar diferentes verses da famlia MCS51, tais como:Atmel, Dallas Semiconductor, Intregrated Silicon Solutions, Philips, InfineonTechnologies, entre outras.

    ModelosOs microcontroladores da famlia MCS51 possuem internamente ROM

    (memria de programa) e RAM (memria de dados); temporizadores /

    contadores de eventos; controlador de interrupes; interfaces de entrada /sada de 8 bits e interface serial sncrona / assncrona. Os principais modelosso:

    8031 sem ROM (ROMLESS), 128 bytes de RAM e 2 T/C

    8051 com 4KB de ROM, 128 bytes de RAM e 2 T/C

    8751 com 4KB de EPROM, 128 bytes de RAM e 2 T/C

    8032 sem ROM (ROMLESS), 256 bytes de RAM e 3 T/C

    8052 com 8KB de ROM, 256 bytes de RAM e 3 T/C

    8752 - com 8KB de EPROM, 256 bytes de RAM e 3 T/C

    Variaes 80C31, 80C32, 80C51 e 80C52 verses CMOS, incluindo modos de baixo

    consumo de energia

    80LV31, 80LV32, 80LV51 e 80LV52 verses low-voltage (ISSI)

    89C51 e 89C52 verses com memria Flash reprogramvel (Atmel, ISSI,Philips)

    89C1051, 89C2051 e 89C4051 verses com memria Flash

    reprogramvel, comparadores analgicos e invlucro reduzido (Atmel) 80C320 verso com clock otimizado (trs vezes mais veloz), capaz de

    operar em at 33MHz (Dallas Semiconductor)

    C505L verso com 32KB de ROM, 512 bytes de RAM, conversor A/D de10 bits e interface para LCD (Infineon Technologies)

    P51XA-G3, P51XA-H3 e P51XAS3 verses com arquitetura de 16 bits(Philips)

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    10/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 9

    DISPOSIO DOS TERMINAIS

    AT89C51 (DIP40)

    AT89C1051 (DIP20)

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    11/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 10

    DESCRIO FUNCIONAL DOS TERMINAIS

    Pino Nome E/S Funo1-8 P1.0-P1.7 E/S O Port 1 uma interface de E/S bidirecional com 8 bits

    individualmente endereveis e resistores de pull-up internos.

    Terminais que estejam no estado lgico 1 podem ser utilizadoscomo entradas.9 RST E Quando aplicado nvel lgico 1 a este terminal durante 2 ciclos de

    mquina (com o oscilador operando) ocorre o reset domicrocontrolador. Um resistor interno conectado a VSS permite opower-on-reset com apenas um capacitor externo conectado a VCC.

    10-17 P3.0-P3.7 E/S O Port 3 uma interface de E/S bidirecional com 8 bitsindividualmente endereveis e resistores de pull-up internos.Terminais que estejam no estado lgico 1 podem ser utilizadoscomo entradas. O Port 3 tambm contm os terminais deinterrupes, contadores, interface serial e expanso de memriade dados externa*.

    18 XTAL2 Sada do amplificador inversor do oscilador.

    19 XTAL1 Entrada do amplificador inversor do oscilador e entrada do gerador de clock interno.

    20 VSS Potencial de referncia (terra).21-28 P2.0-P2.7 E/S O Port 2 uma interface de E/S bidirecional com 8 bits

    individualmente endereveis e resistores de pull-up internos.Terminais que estejam no estado lgico 1 podem ser utilizadoscomo entradas. O Port 2 tambm gera a parte mais significativados endereos durante acessos s memrias externas deprograma ou dados.

    29 PSEN\ S PROGRAM STORE ENABLEHabilita o acesso memria de programa externa durante a buscade instrues. Permanece em nvel lgico 1 durante o acesso damemria de programa interna.

    30 ALE S ADDRESS LATCH ENABLEFornece o sinal para armazenamento da parte menos significativado endereo durante acessos s memrias externas de programaou dados.

    31 EA\ E EXTERNAL ACCESSQuando em nvel lgico 1, as instrues da memria de programainterna so executadas. Quando em nvel lgico 0, todas asinstrues so buscadas na memria de programa externa. Nocaso do 8031 este terminal deve sempre estar em nvel lgico 0.

    32-39 P0.0-P0.7 E/S O Port 0 uma interface de E/S bidirecional com 8 bitsindividualmente endereveis em dreno aberto. Terminais queestejam no estado lgico 1 podem ser utilizados como entradas de

    alta impedncia. O Port 0 tambm atua como barramento de dadose gera de maneira multiplexada a parte menos significativa dosendereos durante acessos s memrias externas de programa oudados. No caso de acesso a memrias externas so utilizadosresistores de pull-up internos.

    40 VCC Potencial de alimentao (+5V).

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    12/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 11

    *Funes Especiais do Port 3

    Pino Nome FunoP3.0 RXD/data Receptor da interface serial assncrona ou entrada e sada de dados da

    interface serial sncrona.

    P3.1 TXD/clock Transmissor da interface serial assncrona ou sada de clock da interfaceserial sncrona.P3.2 INT0\ Entrada de interrupo externa 0 ou sinal de controle para o contador 0.P3.3 INT1\ Entrada de interrupo externa 1 ou sinal de controle para o contador 1.P3.4 T0 Entrada externa para o contador 0.P3.5 T1 Entrada externa para o contador 1.P3.6 WR\ Sinal de escrita na memria externa de dados.P3.7 RD\ Sinal de leitura na memria externa de dados.

    atravs das funes especiais dos terminais do Port 3 que se obtmacesso a perifricos internos do microcontrolador (interface serial, contadoresde eventos e controlador de interrupes). Os sinais de controle de leitura e

    escrita da memria de dados externa tambm so fornecidos atravs determinais do Port 3. No entanto, o Port 3 pode ser utilizado apenas como E/Ssimples.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    13/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 12

    EA\

    CPU

    MCS51

    Gerador

    deClock

    Memria

    DePrograma

    Interna(ROM)

    Memria

    DeDados

    Interna(RAM)

    Temporizadores/

    Contadoresde

    Eventos(16bits)

    Controledo

    Barramento

    deExpanso

    Interfacesde

    Entrada/Sada

    Programveis

    Interface

    Serial

    Programvel

    Ba

    rramentodeDadosInterno

    Interrupe

    s

    Internas:

    -T/C0

    -T/C1

    -Serial

    XTAL1

    XTAL2

    T0

    T1

    ARQUITET

    URAINTERNA:

    Ports

    RXD

    TXD

    ALE

    PSEN\

    RD\

    WR\

    INT1\

    INT0\

    RST

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    14/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 13

    ORGANIZAO DA MEMRIA

    O 8051 acessa as memrias de programa e dados atravs de sinais decontrole diferentes, resultando em mapas de memria separados paraprogramas e dados.

    Memria de Programa

    ROMINTERNA

    ROMEXTERNA

    0FFFH1000H

    0000H

    FFFFH

    PSEN\=0

    EA\=1

    PSEN\=1

    ROMEXTERNA PSEN\=0

    EA\=0

    0000H

    FFFFH

    A memria de programa pode ser expandida atravs de barramentosexternos. Aps o reset, o microcontrolador 8051 ir buscar a primeira instruono endereo 0000H da memria de programa. O nvel lgico presente noterminal EA\ determina se o microcontrolador dever iniciar a busca dasinstrues na memria interna ou exclusivamente na memria externa,

    ignorando a memria interna, se a mesma existir. O sinal PSEN\ habilita oacesso memria de programa externa.

    Memria de Dados

    RAM

    INTERNA

    REGISTROSESPECIAIS

    00H

    FFH

    RAM

    EXTERNA

    0000H

    FFFFH

    RD\

    WR\

    BANCOS DEREGISTROS

    REGISTROSENDEREVEIS

    POR BIT

    RAM DEUSO GERAL

    1FH20H

    2FH30H

    7FH80H

    00H

    7FH

    De maneira similar, possvel expandir a memria de dados utilizandobarramentos externos. Entretanto, as memrias de dados interna e externa sotratadas pelo 8051 de maneira radicalmente diferente: a interna acessadaatravs de endereos de 8 bits (MOV) e a externa atravs de endereos de 16

    bits (MOVX). Os sinais RD\ e WR\ so os responsveis pelos acessos deleitura e escrita, respectivamente, na memria de dados externa.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    15/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 14

    BANCOS DE REGISTROS

    Os microcontroladores da famlia MCS51 possuem quatro conjuntos deregistros, chamados de bancos de registros. Cada banco possui 8 registros,chamados de R0 a R7. Os registros de R0 a R7 normalmente so utilizados

    como operandos de instrues, armazenando dados temporrios na execuodo programa.

    Pode-se comutar o banco de registros em uso atravs do estado dos bitsde controle RS1 e RS0, existentes no registro de funo especial PSW. O usode diferentes bancos de registros especialmente til na implementao desubrotinas e rotinas de atendimento a interrupes, minimizando o uso da pilhapara o salvamento de dados.

    Quando uma instruo utiliza o modo registro de endereamento, oendereo fsico de memria de dados interna a ser acessado depende doestado dos bits de controle RS1 e RS0, que determinam qual o banco deregistros em uso no momento, como mostra a tabela abaixo.

    Banco PSW:RS1 PSW:RS0 Endereo Registro00H R001H R102H R203H R304H R405H R506H R6

    0 0 0

    07H R708H R009H R10AH R20BH R30CH R40DH R50EH R6

    1 0 1

    0FH R710H R011H R112H R213H R314H R415H R516H R6

    2 1 0

    17H R718H R0\19H R1\1AH R2\1BH R3\1CH R4\1DH R5\1EH R6\

    3 1 1

    1FH R7\

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    16/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 15

    REGISTROS BIT-ENDEREVEIS

    Nos microcontroladores da famlia MCS51, a faixa que vai do endereo20H ao endereo 2FH da memria de dados interna chamada de regio deregistros bit-enderecveis. Estas posies da memria de dados interna

    possuem uma caracterstica especial que permite a alterao individual decada bit atravs de instrues especialmente destinadas a este fim. Destamaneira, cada bit enderevel possui um endereo individual especfico, comomostra a tabela abaixo.

    Endereos Individuais dos BitsRegistro bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

    20H 07H 06H 05H 04H 03H 02H 01H 00H21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H22H 17H 16H 15H 14H 13H 12H 11H 10H23H 1FH 1EH 1DH 1CH 1BH 1AH 19H 18H

    24H 27H 26H 25H 24H 23H 22H 21H 20H25H 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H26H 37H 36H 35H 34H 33H 32H 31H 30H27H 3FH 3EH 3DH 3CH 3BH 3AH 39H 38H28H 47H 46H 45H 44H 43H 42H 41H 40H29H 4FH 4EH 4DH 4CH 4BH 4AH 49H 48H2AH 57H 56H 55H 54H 53H 52H 51H 50H2BH 5FH 5EH 5DH 4CH 5BH 5AH 59H 58H2CH 67H 66H 65H 64H 63H 62H 61H 60H2DH 6FH 6EH 6DH 6CH 6BH 6AH 69H 68H2EH 77H 76H 75H 74H 73H 72H 71H 70H2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H

    REGISTROS DE FUNO ESPECIAL

    Os registros de funo especial (special function registers) so osresponsveis pelo controle e execuo das instrues do programa e pelaconfigurao dos perifricos internos, determinando as suas formas deoperao. O 8051 possui os seguintes registros de funo especial (osendereos na memria de dados interna encontram-se entre parntesis):

    PC Program CounterContador de Programa: indica o endereo da prxima instruo a serexecutada (16 bits).

    PSW (D0H) Program Status WordContm os sinalizadores (flags) que indicam as ocorrncias na execuo daltima operao lgica ou aritmtica. Contm tambm os bits de controle paraa seleo do banco de registros em uso.

    SP (81H) Stack PointerPonteiro da Pilha: indica o topo da pilha (ltimo dado colocado).

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    17/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 16

    A (E0H) e B (F0H)Trata-se do acumulador (A), empregado nas operaes lgicas e aritmticas daCPU, e de um registro secundrio (B), empregado apenas nas operaes demultiplicao e diviso. So registros intimamente relacionados com a UnidadeLgica e Aritmtica da CPU.

    DPH (83H) e DPL (82H)Registros de 8 bits que compem respectivamente os bytes mais e menossignificativos do ponteiro de dados de 16 bits chamado DPTR, utilizado paraendereamento indireto da memria de programa e da memria externa dedados.

    P0 (80H), P1 (90H), P2(A0H) e P3(B0H)Registros que contm cpias dos estados dos quatro Ports de E/S. A escritanesses registros altera automaticamente o contedo na sada do Port

    correspondente. A leitura carrega o estado de entrada presente nos terminaisdo Port no registro correspondente.

    IE (A8H) Interrupt Enable e IP (B8H) Interrupt PriorityRegistros de habilitao / desabilitao das interrupes e de definio daprioridade de atendimento de cada uma delas.

    PCON (87H) Power ControlPresente apenas na verso CMOS, este registro permite colocar o 80C51 emmodos de reduo de consumo de energia, preservando o contedo damemria interna.

    TCON (88H) Timer Control e TMOD (89H) Timer ModeRegistros de controle e modo de operao dos temporizadores / contadores deeventos.

    TH1 (8DH), TL1 (8BH), TH0 (8CH) e TL0 (8AH)Registros de dados dos temporizadores / contadores de eventos 1 e 0,respectivamente. Contm os valores das contagens realizadas (16 bits).

    SCON (98H) Serial Control e SBUF (99H) Serial BufferRegistros de controle da interface serial e de armazenamento dos dados aserem transmitidos (escrita) ou recebidos (leitura).

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    18/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 17

    Registros de Funo Especial Bit-Endereveis

    Da mesma forma que ocorre na regio de registros bit-endereveis,existem alguns registros de funo especial que tambm possuem bitsindividualmente endereveis, como mostra a tabela abaixo.

    Endereos Individuais dos BitsRegistro bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

    P0 87H 86H 85H 84H 83H 82H 81H 80HP1 97H 96H 95H 94H 93H 92H 91H 90HP2 A7H A6H A5H A4H A3H A2H A1H A0HP3 B7H B6H B5H B4H B3H B2H B1H B0HA E7H E6H E5H E4H E3H E2H E1H E0HB F7H F6H F5H F4H F3H F2H F1H F0H

    TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON

    8FH 8EH 8DH 8CH 8BH 8AH 89H 88HSM1 SM2 SM3 REN TB8 RB8 T1 R1

    SCON9FH 9EH 9DH 9CH 9BH 9AH 99H 98HEA ES ET1 EX1 ET0 EX0

    IEAFH ACH ABH AAH A9H A8H

    PS PT1 PX1 PT0 PX0IP

    BCH BBH BAH B9H B8HCY AC F0 RS1 RS0 OV P

    PSWD7H D6H D5H D4H D3H D2H D0H

    CLOCK

    O 8051 possui um oscilador interno destinado a gerar o sinal de clock dosistema. Pode-se fazer uso de um cristal oscilador na freqncia de operaodesejada, conectado-o aos terminais XTAL1 e XTAL2, juntamente com doiscapacitores de realimentao conectados ao terra do circuito.

    Para fazer uso de um circuito de clock externo ao 8051, basta conectar oterminal XTAL1 ao potencial de terra do circuito (GND) e aplicar o sinal externoao terminal XTAL2. Dessa maneira o sinal de clock externo ir diretamente aocircuito de temporizao e controle do microcontrolador.

    A freqncia de operao do 8051 pode chegar a um mximo de 8, 10ou 12MHz conforme o modelo utilizado, embora existam atualmente tambm

    verses que operam em at 24MHz (89C51) e 33MHz (80C320).A freqncia de clock dividida internamente por 12 para a gerao dos

    ciclos de mquina necessrios execuo das instrues. Sendo assim, osciclos de mquina do 8051 tm a durao de 12 ciclos de clock, embora emalgumas verses otimizadas (80C320) os ciclos de mquina durem apenas 4ciclos de clock, sendo portanto 3 vezes mais velozes que a verso original.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    19/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 18

    RESET

    O reset do 8051 ativado quando o terminal RST levado a nvel lgico1 por dois ou mais ciclos de mquina. Consiste basicamente na inicializao dealguns registros com valores predeterminados:

    Os registros A, B, PSW, DPTR, PC e todos os registros dos temporizadores/ contadores de eventos so zerados.

    O registro SP carregado com o valor 07H.

    Os Ports P0, P1, P2 e P3 so carregados com FFH. Durante o reset o nvellgico dos terminais indeterminado, assumindo valor 1 aps a execuoda seqncia de reset interna.

    O registro SCON zerado e o registro SBUF fica com valor indeterminado.

    O registro PCON tem apenas o seu bit mais significativo zerado.

    Os registros IE e IP so carregados com o valor XXX00000B,(X=indeterminado).

    A RAM interna no tem o seu contedo afetado pelo reset.

    Um circuito reset automtico ao ligar o sistema (power-on-reset) podeser implementado com a conexo de um capacitor externo entre o potencial dealimentao e o terminal RST.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    20/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 19

    MEMRIAS EXTERNAS DE PROGRAMA E DE DADOS

    Os Ports 0 e 2 podem ser utilizados para acessar memrias externascomo funo alternativa, possibilitando a expanso da capacidade de memriade programa e de dados do 8051. Nesse modo de operao, o Port 2 atua

    como a parte mais significativa (A15-A8) e o Port 0 atua como a parte menossignificativa (A7-A0) do barramento de endereos externo. Os sinais dobarramento de dados externo (D7-D0) tambm so fornecidos em seguida peloPort 0, multiplexados com a parte menos significativa dos endereos.

    8051

    Latch EPROM RAM

    D0-D7

    A0-A7

    A8-A15

    D0-D7

    A0-A7

    A8-A15

    AD0-AD7

    ALE

    PSEN\

    RD\

    WR\

    CK

    OE\ OE\ WR\

    O sinal ALE indica quando a parte menos significativa dos endereosest disponvel no Port 0. Este sinal serve para habilitar um latch de 8 bitsexterno, destinado a armazenar a parte menos significativa do barramento deendereos (A7-A0). Aps o armazenamento dos sinais A7-A0, o Port 0

    apresenta os sinais D7-D0. desta forma que ocorre a demultiplexao dobarramentos de dados e endereos.O sinal PSEN\ habilita a leitura da memria de programa externa,

    tornando-se ativo quando o 8051 busca instrues externamente. O terminalEA\ quando em nvel lgico 1 informa ao 8051 que os primeiros 4KB damemria de programa esto na memria de programa interna e o restante namemria externa, se estiver presente. Quando em nvel lgico 0, o terminal EA\determina que o microcontrolador busque todas as instrues de programa namemria externa, ignorando completamente a memria interna, se esta existir.

    Os sinais RD\ e WR\ somente so ativados no caso de leitura ou escrita,respectivamente, na memria de dados externa (as instrues que acessam a

    memria de dados externa MOVX so distintas das que acessam amemria interna MOV).

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    21/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 20

    Os sinais RD\, WR\ e PSEN\ nunca so ativados simultaneamente,conforme mostra a tabela abaixo.

    PSEN\ RD\ WR\ Funo

    1 1 1 Nenhum Acesso Externo1 1 0 Escrita na Memria de Dados

    1 0 1 Leitura da Memria de Dados

    0 1 1 Leitura da Memria de Programa

    Os sinais de acesso s memrias externas possuem comportamentosbem definidos, apresentados nos diagramas de tempo a seguir.

    Ciclo de Leitura na Memria de Programa Externa

    ALE

    PSEN\

    Port 0

    Port 2 A8-A15 A8-A15

    A0-A7 A0-A7Instruo

    Ciclo de Leitura na Memria de Dados Externa

    ALE

    PSEN\

    Port 0

    Port 2 P2.0-P2.7 / A8-A15 (DPH) A8-A15 (PCH)

    A0-A7(Ri / DPL) Dado

    RD\

    Instr.A0-A7(PCL)

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    22/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 21

    Ciclo de Escrita na Memria de Dados Externa

    ALE

    PSEN\

    Port 0

    Port 2 P2.0-P2.7 / A8-A15 (DPH) A8-A15 (PCH)

    A0-A7(Ri / DPL) Dado

    WR\

    Instr.A0-A7(PCL)

    Expanso das Interfaces de E/SPode-se empregar uma tcnica conhecida como E/S mapeada em

    memria (memory mapped I/O) para se expandir as capacidades de E/S dosistema microcontrolado. O mtodo consiste em destinar uma frao da faixade endereos da memria de dados externa para o acesso a perifricosexternos. Sob o ponto de vista do software os perifricos externos so tratadoscomo se fossem posies da memria de dados externa, utilizando as mesmasinstrues de acesso (MOVX). A desvantagem est no aumento considervel

    do tamanho do sistema devido necessidade componentes externos. Almdisso, o acesso a perifricos externos consome o dobro do tempo de acessoaos Ports do microcontrolador.

    Flip-Flops DS0-S7

    Endereos

    Barramento de Dados

    CK

    BufferTri-

    StateE0-E7

    G1\ G2\

    Decod.

    RD\

    WR\

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    23/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 22

    Nas pginas a seguir so apresentados alguns diagramas esquemticosde possveis sistemas baseados em microcontroladores da famlia MCS51.

    O primeiro deles (Sistema Mnimo) utiliza a menor quantidade possvelde componentes externos, apenas para implementar os circuitos de clock epower-on-reset. Neste caso, todos os pinos de E/S ficam disponveis para

    interconexo com outros dispositivos externos no representados no diagrama.Em seguida so apresentados diagramas esquemticos de sistemas quefazem uso de memrias externas. So apresentados sistemas com apenasmemria de programa externa (Sistema com ROM Externa), apenas memriade dados externa (Sistema com RAM Externa) e, finalmente, com memrias deprograma e de dados externas (Sistema com ROM e RAM Externas). Os Ports0 e 2 ficam comprometidos com a implementao dos barramentos externos dedados e de endereos. O Port 3 fica parcialmente comprometido com aimplementao dos sinais de acesso memria de dados externa, quando estafor utilizada. Deve-se observar a presena do latch para demultiplexao dosbarramentos externos e a forma de conexo dos sinais do barramento de

    controle (ALE, EA\, PSEN\, RD\ e WR\).O diagrama esquemtico de um sistema que utiliza a tcnica de E/S

    mapeada em memria (Sistema com E/S Mapeada em Memria) tambm apresentado. Deve-se notar a presena de um decodificador de endereospara gerar os sinais de habilitao dos dispositivos de E/S, que neste caso soapenas flip-flops D (sadas) e buffers tri-state (entradas).

    Por fim, apresentado o diagrama esquemtico de um sistema commemrias externas de programa e de dados, E/S mapeada em memria(interface para display inteligente de cristal lquido) e interface serial padroRS-232. O Sistema Completo apresentado bastante similar placa P51 (veranexos) e possui algumas cactersticas especiais quanto forma de acesso smemrias externas, possibilitando o seu uso com o programa monitorPAULMON (ver anexos).

    Programas monitores como o PAULMON permitem que se armazene eexecute programas na memria RAM externa do sistema. Entretanto, para queisso seja possvel, o hardware deve prever alguma forma de acesso RAMexterna como se fosse memria de programa. No diagrama esquemtico doSistema Completo o sinal de leitura da RAM externa gerado atravs de umaoperao lgica E entre os sinais PSEN\ e RD\ (componente U7:A). Destaforma, a RAM externa acessada tanto como memria de dados externa(quando o sinal RD\ estiver ativo) quanto como memria de programa externa

    (quando o sinal PSEN\ estiver ativo). Esta caracterstica faz com que os mapasde memria de programa e de dados se sobreponham, sendo necessrio,portanto, um decodificador de endereos para atribuir faixas de endereosdistintas para a habilitao da ROM e da RAM externas (decodificadorcomposto pelos componentes U3 e U7:B,C,D).

    O mesmo decodificador de endereos gera sinais de habilitao parapossveis perifricos mapeados em memria, bem como o sinal de habilitaopara um display inteligente de cristal lquido (CN9) mapeado em memria(componentes U3 e U8:A,B,C,D).

    O Sistema Completo apresentado possui diversos jumpers (JP1 a JP10)para a configurao do sistema (ver legenda no canto inferior esquerdo do

    diagrama esquemtico).

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    24/97

    U1

    AT89C52

    EA/VPP

    31

    PSEN

    29

    P11/T2EX

    2

    ALE/PROG

    30

    P00/AD0

    39

    P01/AD1

    38

    P02/AD2

    37

    P03/AD3

    36

    P04/AD4

    35

    P05/AD5

    34

    P06/AD6

    33

    P07/AD7

    32

    P20/A8

    21

    P21/A9

    22

    P22/A10

    23

    P23/A11

    24

    P24/A12

    25

    P25/A13

    26

    P26/A14

    27

    P27/A15

    28

    P37/RD

    17

    P36/WR

    16

    P35/T1

    15

    P34/T0

    14

    P33/INT

    1

    13

    P32/INT

    0

    12

    P31/TXD

    11

    P30/RX

    D

    10

    XTAL2

    18

    P17

    8

    P16

    7

    P15

    6

    P14

    5

    P13

    4

    P12

    3

    RST

    9

    XTAL1

    19

    P10/T2

    1

    C1

    10u

    F

    C3

    33p

    F

    C2

    33p

    F

    X1

    11

    .0

    592MHz

    HUGO

    1.0 1

    1

    SISTEMAMIN

    IMO

    MINIMO51

    .S01

    03/2002

    P2

    .7

    P2

    .6

    P2

    .5

    P2

    .4

    P2

    .3

    P2

    .2

    P2

    .1

    P2

    .0

    P0

    .7

    P0

    .6

    P0

    .5

    P0

    .4

    P0

    .3

    P0

    .2

    P0

    .1

    P0

    .0

    P3

    .7

    P3

    .6

    P3

    .5

    P3

    .4

    P3

    .3

    P3

    .2

    P3

    .1

    P3

    .0

    P1

    .0

    P1

    .1

    P1

    .2

    P1

    .3

    P1

    .4

    P1

    .5

    P1

    .6

    P1

    .7

    A

    B

    C

    D

    4321

    D

    C

    B

    A

    1 2 3 4

    A4

    Rev

    Num

    ber

    Title

    Size

    Da

    te

    Filename

    Drawn

    by

    of

    Shee

    t

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    25/97

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    26/97

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    27/97

    U1

    8

    0C32

    ALE

    30

    EA

    31

    PSEN

    29

    P11/T2

    EX

    2

    P00/AD0

    39

    P01/AD1

    38

    P02/AD2

    37

    P03/AD3

    36

    P04/AD4

    35

    P05/AD5

    34

    P06/AD6

    33

    P07/AD7

    32

    P20/A8

    21

    P21/A9

    22

    P22/A10

    23

    P23/A11

    24

    P24/A12

    25

    P25/A13

    26

    P26/A14

    27

    P27/A15

    28

    P37/RD

    17

    P36/WR

    16

    P35/T1

    15

    P34/T0

    14

    P33/INT1

    13

    P32/INT0

    12

    P31/TX

    D

    11

    P30/RX

    D

    10

    XTAL2

    18

    P17

    8

    P16

    7

    P15

    6

    P14

    5

    P13

    4

    P12

    3

    RST

    9

    XTAL1

    19

    P10/T2

    1

    U2

    74HC373

    8Q

    19

    7Q

    16

    6Q

    15

    5Q

    12

    4Q

    9

    3Q

    6

    2Q

    5

    1Q

    2

    8D

    1

    8

    7D

    1

    7

    6D

    1

    4

    5D

    1

    3

    4D

    8

    3D

    7

    2D

    4

    1D

    3

    C

    1

    1

    OC

    1

    C3

    33p

    F

    C2

    33p

    F

    X1

    11.0

    592MHz

    C1

    10u

    F

    27C512

    U3

    E

    20

    G/VPP

    22

    Q8

    19

    Q7

    18

    Q6

    17

    Q5

    16

    Q4

    15

    Q3

    13

    Q2

    12

    Q1

    11

    A15

    1

    A14

    27

    A13

    26

    A12

    2

    A11

    23

    A10

    21

    A9

    24

    A8

    25

    A7

    3

    A6

    4

    A5

    5

    A4

    6

    A3

    7

    A2

    8

    A1

    9

    A0

    10

    U4

    62256

    OE

    22

    WE

    27

    CS

    20

    A14

    1

    A13

    26

    A12

    2

    A11

    23

    A10

    21

    A9

    24

    A8

    25

    A7

    3

    A6

    4

    A5

    5

    A4

    6

    A3

    7

    A2

    8

    A1

    9

    A0

    10

    D0

    11

    D1

    12

    D2

    13

    D3

    15

    D4

    16

    D5

    17

    D6

    18

    D7

    19

    RO

    MRAM51

    .S01

    HUGO

    1.0 1

    1

    SISTE

    MACOM

    ROM

    ERAM

    EXTERNAS

    03

    /2002

    P1

    .7

    P1

    .6

    P1

    .5

    P1

    .4

    P1

    .3

    P1

    .2

    P1

    .1

    P1

    .0

    D7

    D6

    D5

    D4

    D3

    D2

    D1

    D0

    D0

    D1

    D2

    D3

    D4

    D5

    D6

    D7

    A0

    A1

    A2

    A3

    A4

    A5

    A6

    A7

    P3

    .0

    P3

    .1

    P3

    .2

    P3

    .3

    P3

    .4

    P3

    .5

    A8

    A9

    A10

    A11

    A12

    A13

    A14

    A15

    A7

    A6

    A5

    A4

    A3

    A2

    A1

    A13

    A12

    A11

    A10

    A9

    A8

    A0

    A14

    A15

    D7

    D6

    D5

    D4

    D3

    D2

    D1

    D0

    PSEN

    A7

    A6

    A5

    A4

    A3

    A2

    A1

    A13

    A12

    A11

    A10

    A9

    A8

    A0

    A14

    D7

    D6

    D5

    D4

    D3

    D2

    D1

    D0

    WR

    RD

    A

    B

    C

    D

    4321

    C

    A3

    Rev

    Num

    ber

    Title

    Size

    Da

    te

    Filename

    Drawn

    by

    of

    Shee

    t

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    28/97

    U3:A

    74HC139

    Y3

    7

    Y2

    6

    Y1

    5

    Y0

    4

    G

    1

    B

    3

    A

    27

    4HC139

    U3:B

    A

    14

    B

    13

    G

    15

    Y0

    12

    Y1

    11

    Y2

    10

    Y3

    9

    74HC244

    U6:B

    G

    19

    A1

    11

    A2

    13

    A3

    15

    A4

    17

    Y1

    9

    Y2

    7

    Y3

    5

    Y4

    3

    U6:A

    74HC244

    Y4

    12

    Y3

    14

    Y2

    16

    Y1

    18

    A4

    8

    A3

    6

    A2

    4

    A1

    2

    G

    1

    U7

    7

    4HC273

    8Q

    19

    7Q

    16

    6Q

    15

    5Q

    12

    4Q

    9

    3Q

    6

    2Q

    5

    1Q

    2

    8D

    18

    7D

    17

    6D

    14

    5D

    13

    4D

    8

    3D

    7

    2D

    4

    1D

    3

    CLK

    11

    CLR

    17

    4HC273

    U5

    CLR

    1

    CLK

    11

    1D

    3

    2D

    4

    3D

    7

    4D

    8

    5D

    13

    6D

    14

    7D

    17

    8D

    18

    1Q

    2

    2Q

    5

    3Q

    6

    4Q

    9

    5Q

    12

    6Q

    15

    7Q

    16

    8Q

    19

    74HC244

    U4:A

    G

    1

    A1

    2

    A2

    4

    A3

    6

    A4

    8

    Y1

    18

    Y2

    16

    Y3

    14

    Y4

    12

    U4:B

    74HC244

    Y4

    3

    Y3

    5

    Y2

    7

    Y1

    9

    A4

    17

    A3

    15

    A2

    13

    A1

    11

    G

    19

    U1

    AT89C52

    EA/VPP

    31

    PSEN

    29

    P11/T2EX

    2

    ALE/PROG

    30

    P00/AD0

    39

    P01/AD1

    38

    P02/AD2

    37

    P03/AD3

    36

    P04/AD4

    35

    P05/AD5

    34

    P06/AD6

    33

    P07/AD7

    32

    P20/A8

    21

    P21/A9

    22

    P22/A10

    23

    P23/A11

    24

    P24/A12

    25

    P25/A13

    26

    P26/A14

    27

    P27/A15

    28

    P37/RD

    17

    P36/WR

    16

    P35/T1

    15

    P34/T0

    14

    P33/INT1

    13

    P32/INT0

    12

    P31/TXD

    11

    P30/RXD

    10

    XTAL2

    18

    P17

    8

    P16

    7

    P15

    6

    P14

    5

    P13

    4

    P12

    3

    RST

    9

    XTAL1

    19

    P10/T2

    1

    10u

    F

    C1

    11

    .0592MHz

    X1

    33p

    F

    C2

    33p

    F

    C3

    74HC373

    U2

    OC

    1

    C

    11

    1D

    3

    2D

    4

    3D

    7

    4D

    8

    5D

    13

    6D

    14

    7D

    17

    8D

    18

    1Q

    2

    2Q

    5

    3Q

    6

    4Q

    9

    5Q

    12

    6Q

    15

    7Q

    16

    8Q

    19

    03

    /2002

    SISTEMA

    COM

    E/SMAPEADAEM

    MEMORIA

    1

    11

    .0

    HUGO

    ESMEM51

    .S01

    RD0

    RD1

    WR

    RD

    RD0

    WR1

    WR0

    RD1

    A7

    A6

    A7

    A6

    RD2

    RD3

    WR3

    WR2

    S15

    S14

    S13

    S12

    S11

    S10

    S9

    S8

    E15

    E14

    E13

    E12

    E11

    E10

    E9

    E8

    D7

    D6

    D5

    D4

    D3

    D2

    D1

    D0

    D7

    D6

    D5

    D4

    D3

    D2

    D1

    D0

    WR1

    WR0

    D0

    D1

    D2

    D3

    D4

    D5

    D6

    D7

    D0

    D1

    D2

    D3

    D4

    D5

    D6

    D7

    E0

    E1

    E2

    E3

    E4

    E5

    E6

    E7

    S0

    S1

    S2

    S3

    S4

    S5

    S6

    S7

    P2

    .7

    P2

    .6

    P2

    .5

    P2

    .4

    P2

    .3

    P2

    .2

    P2

    .1

    P2

    .0

    P3

    .5

    P3

    .4

    P3

    .3

    P3

    .2

    P3

    .1

    P3

    .0

    A7

    A6

    A5

    A4

    A3

    A2

    A1

    A0

    D7

    D6

    D5

    D4

    D3

    D2

    D1

    D0

    D0

    D1

    D2

    D3

    D4

    D5

    D6

    D7

    P1

    .0

    P1

    .1

    P1

    .2

    P1

    .3

    P1

    .4

    P1

    .5

    P1

    .6

    P1

    .7

    A

    B

    C

    D

    4321

    C

    A3

    Rev

    Num

    ber

    Title

    Size

    Da

    te

    Filename

    Drawn

    by

    of

    Shee

    t

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    29/97

    100k

    P1

    U1

    AT89C52

    EA/VPP

    31

    PSEN

    29

    P11/T2EX

    2

    ALE/PROG

    30

    P00/AD0

    39

    P01/AD1

    38

    P02/AD2

    37

    P03/AD3

    36

    P04/AD4

    35

    P05/AD5

    34

    P06/AD6

    33

    P07/AD7

    32

    P20/A8

    21

    P21/A9

    22

    P22/A10

    23

    P23/A11

    24

    P24/A12

    25

    P25/A13

    26

    P26/A14

    27

    P27/A15

    28

    P37/RD

    17

    P36/WR

    16

    P35/T1

    15

    P34/T0

    14

    P33/INT1

    13

    P32/INT0

    12

    P31/TXD

    11

    P30/RXD

    10

    XTAL2

    18

    P17

    8

    P16

    7

    P15

    6

    P14

    5

    P13

    4

    P12

    3

    RST

    9

    XTAL1

    19

    P10/T2

    1

    JP1

    C1

    C3

    C2

    11

    .0592MHz

    X1

    33p

    F

    C2

    33p

    F

    C3

    10u

    F

    C1

    CON6M

    CN7

    1 2 3 4 5 6

    CN8

    CON4M

    4321

    CN6

    CON4M

    4321

    CON8M

    CN1

    1 2 3 4 5 6 7 8

    CON8M

    CN2

    1 2 3 4 5 6 7 8

    CON8M

    CN3

    1 2 3 4 5 6 7 8

    CON8M

    CN4

    1 2 3 4 5 6 7 8

    CON8M

    CN5

    1 2 3 4 5 6 7 8

    CN9

    CON14M

    10987654321

    11

    12

    13

    14

    U8:B

    74HC02

    4

    65

    U8

    :A

    74H

    C02

    1

    32

    74HC08

    U7:B

    4 5

    6

    J

    P7

    C2

    C3

    C1

    74HC08

    U7:A

    1 2

    3

    74HC373

    U2

    OC

    1

    C

    11

    1D

    3

    2D

    4

    3D

    7

    4D

    8

    5D

    13

    6D

    14

    7D

    17

    8D

    18

    1Q

    2

    2Q

    5

    3Q

    6

    4Q

    9

    5Q

    12

    6Q

    15

    7Q

    16

    8Q

    19

    JP3

    C2

    C3

    C1

    JP2

    C2

    C3

    C1

    JP6

    C2

    C3

    C1

    U5

    62256

    OE

    22

    WE

    27

    CS

    20

    A14

    1

    A13

    26

    A12

    2

    A11

    23

    A10

    21

    A9

    24

    A8

    25

    A7

    3

    A6

    4

    A5

    5

    A4

    6

    A3

    7

    A2

    8

    A1

    9

    A0

    10

    D0

    11

    D1

    12

    D2

    13

    D3

    15

    D4

    16

    D5

    17

    D6

    18

    D7

    19

    JP4

    C2

    C3

    C1

    U4

    27C512

    A0

    10

    A1

    9

    A2

    8

    A3

    7

    A4

    6

    A5

    5

    A6

    4

    A7

    3

    A8

    25

    A9

    24

    A10

    21

    A11

    23

    A12

    2

    A13

    26

    A14

    27

    A15

    1

    Q1

    11

    Q2

    12

    Q3

    13

    Q4

    15

    Q5

    16

    Q6

    17

    Q7

    18

    Q8

    19

    G/VPP

    22

    E

    20

    JP5

    C2

    C3

    C1

    U3

    74HC138

    Y7

    7

    Y6

    9

    Y5

    10

    Y4

    11

    Y3

    12

    Y2

    13

    Y1

    14

    Y0

    15

    G2B

    5

    G2A

    4

    G1

    6

    C

    3

    B

    2

    A

    1

    74HC02

    U8:C

    8 9

    10

    74HC02

    U8:D

    11

    12

    13

    U7:D

    74HC08

    11

    13

    12

    U7:C

    74HC08

    8

    109

    JP8

    C2

    C3

    C1

    C7

    10u

    F

    MAX232

    U6

    R1IN

    13

    T2OUT

    7

    T1OUT

    14

    V-

    6

    V+

    2

    C1+

    1

    C1

    -

    3

    C2+

    4

    C2

    -

    5

    T1IN

    11

    T2IN

    10

    R1OUT

    12

    R2OUT

    9

    R2IN

    8

    C6

    10u

    F

    10u

    F

    C4

    10u

    F

    C5

    D1

    1N

    4001

    U9

    VAL

    7805

    VI

    1

    G2

    VO

    3

    C12

    100nF

    C11

    100nF

    C8

    100uF

    C9

    33nF

    C10

    100nF

    RST

    C 1C 2

    8k2

    R1

    R2

    1

    50k

    JP9

    C1

    C3

    C2

    JP10

    C1

    C3

    C2

    CO

    MPLE51

    .S01

    1

    11

    .0

    HUGO

    C1-

    C3

    C1-

    C2

    C1-

    C3

    C1-

    C3

    C1-

    C3

    C1-

    C3

    C1-

    C3

    C1-

    C3

    C1-

    C2

    C1-

    C2

    C1-

    C2

    C1-

    C2

    C1-

    C2

    C1-

    C2

    7654321

    ROM

    INTERNA

    ROM

    EXTERNA

    27512

    27256/512

    2764/128/256

    ROM

    64K

    ROM

    8K

    6264

    62256

    RAM

    0000H

    RAM

    2000H

    DADOS

    2764/128

    CONFIGURACOES

    SISTEMACOMPLETO

    03

    /2002

    DADOS/PROG

    .

    PASSO

    APASSO

    C1-

    C3

    C1-

    C2

    EXEC

    .NORMAL

    8

    PSEN

    CS2

    CS1

    D7

    D6

    D5

    D4

    D3

    D2

    D1

    D0

    D0D1D2D3D4D5D6D7D7D6D5D4D3D2D1D0

    TX

    RX

    DSR

    DTR

    A0

    A1

    A2

    A3

    A4

    A5

    A6

    A7

    A8

    A9

    A10

    A11

    A12

    A13

    A14

    A15

    P1

    .0

    P1

    .1

    P1

    .2

    P1

    .3

    P1

    .4

    P1

    .5

    P1

    .6

    P1

    .7

    P3

    .0

    P3

    .1

    P3

    .2

    P3

    .3

    P3

    .4

    P3

    .5

    P3

    .6

    P3

    .7

    D0

    D1

    D2

    D3

    D4

    D5

    D6

    A1

    A0

    D7

    P3

    .7

    PSEN

    A15

    A14

    A13

    A12

    A11

    A10

    A9

    A8

    P3

    .7

    P3

    .6

    P3

    .5

    P3

    .4

    P3

    .3

    P3

    .2

    P3

    .1

    P3

    .0

    A7

    A6

    A5

    A4

    A3

    A2

    A1

    A0

    D7

    D6

    D5

    D4

    D3

    D2

    D1

    D0

    D0

    D1

    D2

    D3

    D4

    D5

    D6

    D7

    P1

    .0

    P1

    .1

    P1

    .2

    P1

    .3

    P1

    .4

    P1

    .5

    P1

    .6

    P1

    .7

    PSEN

    A15

    A14

    A14

    A0

    A12

    A11

    A10

    A9

    A8

    A7

    A6

    A5

    A4

    A3

    A2

    A1

    A0

    A8

    A9

    A10

    A11

    A12

    A13

    A1

    A2

    A3

    A4

    A5

    A6

    A7

    A13

    P3

    .6

    A13

    A14

    A15

    CS1

    CS2

    P3

    .6

    P3

    .7

    P3

    .3

    P3

    .0

    DSR

    RX

    DTR

    TX

    P3

    .1

    +V

    +V

    P3

    .5

    P3

    .4

    A

    B

    C

    D

    4321

    C

    A3

    Rev

    Num

    ber

    Title

    Size

    Da

    te

    Filename

    Drawn

    by

    of

    Shee

    t

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    30/97

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    31/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 24

    b) O levantamento dos requisitos necessrios para determinado sistemabaseado na arquitetura MCS51 revelou a necessidade de pelo menos 6KBde memria de programa, pelo menos 200 bytes de memria de dados epelo menos 12 bits de E/S. Com base nessas informaes, projete o

    hardware para tal sistema.

    c) Deseja-se um sistema baseado no microcontrolador 89C51 que possuaexatamente 2KB de memria de dados externa e pelo menos 6 bits deentrada e 8 bits de sada a mais que os bits disponveis nos Ports de E/S.Projete o hardware de um sistema que atenda a esses requisitos, utilizandoa tcnica de E/S mapeada em memria para a implementao dos bits deE/S adicionais.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    32/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 25

    PROGRAMAO

    O 8051 utiliza cdigos de instruo de 8 bits. Entretanto, suas instruespodem ter extenso varivel entre um e trs bytes.

    As instrues de apenas um byte de extenso no requerem operandos

    ou ento j os possuem embutidos nos 8 bits do cdigo da instruo. Asinstrues de dois ou trs bytes de extenso so as que possuem um ou doisbytes adicionais, correspondentes ao(s) operando(s).

    Para cada instruo o tempo de execuo pode ser de um a quatrociclos de mquina (cada ciclo de mquina corresponde a 12 ciclos de clock),conforme a complexidade da operao a ser executada e o nmero de bytesextras a serem buscados na memria de programa.

    Na programao em linguagem Assembly (baixo nvel) so utilizadossmbolos mnemnicos para representar os cdigos das instrues, facilitando oentendimento por parte do programador, evitando que seja necessrio decoraros cdigos de cada instruo. A codificao do programa propriamente dita realizada por um aplicativo montador (assembler).

    No caso do uso de uma linguagem de programao de alto nvel como alinguagem C utiliza-se um compilador, que o responsvel pela traduo parao Assembly e posterior montagem do cdigo.

    MODOS DE ENDEREAMENTO

    Modo ImediatoPermite carregar constantes em posies da memria de dados interna.

    Nas instrues da famlia MCS51, as constantes so precedidas pelo smbolo#.

    Modo DiretoEssa forma de endereamento utiliza diretamente o endereo da posio

    da memria de dados interna na qual ser efetuada a operao.

    Modo IndiretoNesse caso o endereo da posio de memria onde ser efetuada a

    operao indicado de forma indireta pelos registros R0 ou R1 do banco deregistros em uso ou pelo registro DPTR. Os registros R0, R1 e DPTR atuamcomo ponteiros nessas instrues, sendo R0 e R1 ponteiros para endereos de8 bits e DPTR um ponteiro para endereos de 16 bits. Nas instrues da famliaMCS51, os ponteiros so precedidos pelo smbolo @.

    Modo RegistroPermite o acesso aos registros R0 a R7 do banco de registros em uso

    (working registers), definido pelos bits de controle RS1 e RS0 existentes noregistro de funo especial PSW.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    33/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 26

    CONJUNTO DE INSTRUES

    O conjunto das instrues do 8051 pode ser dividido em 5 grupos:transferncia de dados, operaes lgicas, operaes aritmticas, manipulaode variveis booleanas e controle de programa. A seguir sero analisadas

    algumas das instrues de cada grupo.

    Transferncia de DadosFazem parte do grupo de transferncia de dados as instrues MOV,

    MOVC, MOVX, PUSH, POP, XCH e XCHD.A instruo MOV copia o contedo de um endereo da memria de dados

    interna (ou uma constante) para outro endereo da memria de dados interna,utilizando a seguinte sintaxe:

    MOV ,

    O contedo do operando copiado para o operando, sendo possvel utilizar todos os modos de endereamento(imediato, direto, indireto e registro).

    MOV A, #dadoCarrega no acumulador o valor da constante de 8 bits (dado). O valor da

    constante pode estar em decimal (sem sufixo), hexadecimal (sufixo H) oubinrio (sufixo B).

    Exemplo: MOV A, #01010101B

    MOV A, diretoCarrega no acumulador o contedo do endereo da memria de dados

    interna (direto).Exemplo: MOV A, 12H

    MOV A, @RiCarrega no acumulador o contedo do endereo da memria de dados

    interna apontado pelo registro R0 ou R1 (@Ri).Exemplo: MOV A, @R0

    MOV A, RnCarrega no acumulador o contedo do registro R0, R1, R2, R3, R4, R5,

    R6 ou R7 (Rn) do banco de registros em uso.Exemplo: MOV A, R0

    MOV DPTR, #dado16Carrega no registro DPTR o valor da constante de 16 bits (dado16).Exemplo: MOV DPTR, #1234H

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    34/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 27

    A instruo MOVC copia o contedo da memria de programa (interna ouexterna) para o acumulador, utilizando a seguinte sintaxe:

    MOVC A,

    O operando sempre ir empregar o modo de endereamentoindireto atravs de ponteiros. Trata-se da nica forma de leitura de constantesgravadas na memria de programa, como por exemplo, tabelas de dados (look-up tables).

    MOVC A, @A+DPTRAdiciona o valor contido no acumulador ao valor contido no registro de

    DPTR, utilizando o resultado como ponteiro para enderear uma posio damemria de programa e carrega o seu contedo no acumulador.

    A instruo MOVX copia o contedo de uma posio da memria dedados externa para o acumulador ou vice-versa, utilizando as seguintessintaxes:

    MOVX A,

    MOVX , A

    Os operandos e sempre iro utilizar o modo deendereamento indireto atravs de ponteiros. Trata-se da nica forma de leituraou escrita na memria de dados externa e de perifricos externos mapeadosem memria.

    MOVX A, @DPTRCarrega o acumulador com o contedo da posio de memria de dados

    externa apontada pelo registro DPTR.

    MOVX @DPTR, ACarrega a posio de memria de dados externa apontada pelo registro

    DPTR com o contedo do acumulador.

    As instrues PUSH e POP trabalham com o armazenamento temporrio

    de dados, utilizando a seguinte sintaxe:

    PUSH

    POP

    possvel utilizar apenas o modo de endereamento direto.

    PUSH diretoO registro SP incrementado e em seguida o contedo do endereo da

    memria de dados interna (direto) carregado no topo da pilha.Exemplo: PUSH ACC

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    35/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 28

    POP diretoO topo da pilha carregado no endereo da memria de dados interna

    (direto). Em seguida o registro SP decrementado.Exemplo: POP ACC

    A instruo XCH efetua a troca de contedos entre o acumulador e um segundooperando, utilizando a seguinte sintaxe:

    XCH A,

    possvel utilizar todos os modos de endereamento (imediato, direto,indireto e registro).

    XCH A, diretoTroca os contedos do acumulador e do endereo da memria de dados

    interna (direto).Exemplo: XCH A, 34H

    A instruo XCHD efetua a troca dos nibbles menos significativos entre oacumulador e um segundo operando, utilizando a seguinte sintaxe:

    XCHD A,

    possvel utilizar apenas o modo de endereamento indireto componteiros de 8 bits (R0 ou R1).

    XCHD A, @RiTroca apenas o nibble menos significativo dos contedos do acumulador

    e do endereo da memria de dados interna apontada pelo registro R0 ou R1(@Ri).

    Exemplo: XCHD A, @R0

    Para se ter noo de todas as instrues de transferncia de dadosexistentes para a famlia MCS51 deve-se consultar a tabela de instruescompleta que se encontra nos anexos.

    Exerccios1) Sabendo que a instruo MOVC envolve o acesso memria de programa

    do microcontrolador 8051, explique o que ocorre com os barramentosexternos durante a execuo da instruo MOVC A, @A+DPTR. Leve emconsiderao os casos de acesso a endereos existentes na memria deprograma interna e externa.

    2) Sabendo que a instruo MOVX envolve o acesso memria de dadosexterna do microcontrolador 8051, explique o que ocorre com osbarramentos externos durante a execuo das instrues MOVX A, @DPTR

    e MOVX @DPTR, A. Qual instruo realiza uma escrita e qual instruorealiza uma leitura na memria de dados externa?

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    36/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 29

    3) Execute o programa dado a seguir no simulador do ambiente Proview e tireconcluses sobre o efeito de cada instruo executada. Para uma melhornoo do que ocorre, sugere-se que o programa seja executado passo apasso, visualizando-se as janelas Main Registers e Data View.

    INICIO: MOV SP, #20HMOV DPTR, #1234HMOV A, #56MOV 01H, #02HMOV R0, AMOV @R1, APUSH DPHPUSH DPLPUSH ACCPUSH PSWMOV PSW, #00011000B

    MOV A, #78MOV R0, AMOV @R1, APOP DPLPOP DPHPOP PSWPOP ACCLJMP INICIO

    4) Implemente programas em Assembly da famlia MCS51 para realizar astarefas a seguir. Sugere-se que os programas implementados sejam

    simulados no ambiente Proview.

    a) Defina o banco de registros 1, carregue o registro R0 com o valor 32H e oregistro R1 com o valor E5H. Depois efetue a troca dos contedos de R0 eR1 utilizando apenas instrues MOV.

    b) Refaa o programa anterior utilizando as instrues POP e PUSH paraefetuar a troca dos contedos de R0 e R1.

    c) Carregue no acumulador o contedo do endereo 36H da memria dedados interna utilizando endereamento direto. Depois carregue o endereo7FH da memria de dados interna com o valor armazenado no acumuladorutilizando endereamento direto.

    d) Refaa o programa anterior utilizando endereamento indireto.

    e) Leia o contedo do endereo 0000H da memria de programa noacumulador e depois carregue os endereos 2000H e 3000H da memriade dados externa com o valor armazenado no acumulador.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    37/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 30

    Operaes LgicasFazem parte do grupo de operaes lgicas as instrues CLR, CPL,

    ANL, ORL, XRL, RL, RLC, RR, RRC e SWAP.A instruo CLR zera o contedo do acumulador, possuindo uma nica

    sintaxe:

    CLR A

    CLR AZera o contedo do acumulador.

    A instruo CPL complementa o contedo do acumulador bit a bit,possuindo uma nica sintaxe:

    CPL A

    CPL AComplementa o contedo do acumulador bit a bit.

    As instruesANL, ORL e XRL realizam as operaes lgicas E, OU eOU-EXCLUSIVO, respectivamente, utilizando as seguintes sintaxes:

    ANL ,

    ORL ,

    XRL ,

    O resultado da operao armazenado no , que pode sero acumulador ou uma posio da memria de dados interna endereadadiretamente. O pode utilizar todos os modos de endereamento(imediato, direto, indireto e registro).

    ANL A, #dadoEfetua a operao lgica E entre o contedo do acumulador e a

    constante (dado) bit a bit. O resultado armazenado no acumulador.Exemplo:ANL A, #0FH

    ORL A, diretoEfetua a operao lgica OU entre o contedo do acumulador e o

    endereo da memria de dados interna (direto) bit a bit. O resultado armazenado no acumulador.

    Exemplo: ORL A, 3FH

    XRL A, RnEfetua a operao lgica OU-EXCLUSIVO entre o contedo do

    acumulador e o contedo do registro R0, R1, R2, R3, R4, R5, R6 ou R7 (Rn). Oresultado armazenado no acumulador.

    Exemplo: XRL A, R1

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    38/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 31

    As instrues RL e RLC deslocam o contedo do acumulador um bit esquerda, passando ou no pelo flag de carry. Possuem as seguintes sintaxesnicas:

    RL A

    RLC A

    RL ADesloca o contedo do acumulador 1 bit esquerda. O valor do bit 0 vai

    para o bit 1, o valor do bit 1 vai para o bit 2 e assim sucessivamente. O valor dobit 7 vai para o bit 0 e nenhum flag afetado.

    RLC ADesloca o contedo do acumulador 1 bit esquerda passando pelo flag

    de carry. O valor do bit 0 vai para o bit 1, o valor do bit 1 vai para o bit 2 e

    assim sucessivamente. valor do bit 7 vai para o flag de carry e o valor do flagde carry vai para o bit 0.

    As instrues RR e RRC deslocam o contedo do acumulador um bit esquerda, passando ou no pelo flag de carry. Possuem as seguintes sintaxesnicas:

    RR A

    RRC A

    RR ADesloca o contedo do acumulador 1 bit direita. O valor do bit 7 vai

    para o bit 6, o valor do bit 6 vai para o bit 5 e assim sucessivamente. O valor dobit 0 vai para o bit 7 e nenhum flag afetado.

    RRC ADesloca o contedo do acumulador 1 bit direita passando pelo flag de

    carry. O valor do bit 7 vai para o bit 6, o valor do bit 6 vai para o bit 5 e assimsucessivamente. valor do bit 0 vai para o flag de carry e o valor do flag de carryvai para o bit 7.

    A instruo SWAP troca o nibble mais significativo pelo nibble menossignificativo do acumulador, possuindo a seguinte sintaxe nica:

    SWAP A

    SWAP ATroca o nibble mais significativo pelo nibble menos significativo do

    acumulador.

    Para se ter noo de todas as operaes lgicas existentes para a

    famlia MCS51 deve-se consultar a tabela de instrues completa que seencontra nos anexos.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    39/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 32

    Exerccios1) Analise o programa em Assembly da famlia MCS51 dado a seguir e

    fornea a equao lgica do resultado final armazenado no acumulador emfuno dos registros utilizados:

    LOGICA: MOV A, R0CPL A

    ANL R1MOV B, AMOV A, R2

    ANL A, R3CPL AXRL R4ORL A, BLJMP LOGICA

    2) Implemente um programa em Assembly da famlia MCS51 que realize aseguinte equao lgica: ACC= [(R0+R1).R3]R4\

    3) Apresente 2 formas de se zerar o contedo do acumulador utilizandoinstrues lgicas do Assembly da famlia MCS51.

    4) Apresente 2 formas de se complementar o contedo do acumuladorutilizando instrues lgicas do Assembly da famlia MCS51.

    5) Implemente um programa em Assembly da famlia MCS51 que seja capazde setar apenas o bit 7 e de zerar apenas o bit 0 do registro de funoespecial B, sem alterar o estado dos seus demais bits.

    6) Qual o significado aritmtico de uma rotao esquerda do acumulador?

    7) Qual o significado aritmtico de uma rotao direita do acumulador?

    Operaes AritmticasFazem parte do grupo de operaes aritmticas as instruesADD,

    ADDC, SUBB, INC, DEC, MUL, DIV e DA.A instruoADD realiza a adio entre o contedo do acumulador e o

    contedo de um endereo da memria de dados interna (ou uma constante),utilizando a seguinte sintaxe:

    ADD A,

    O resultado da adio armazenado no acumulador, sendo possvelutilizar para o todos os modos de endereamento (imediato,direto, indireto e registro). O flag de carry afetado conforme o resultado daoperao.

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    40/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 33

    ADD A, RnAdiciona o contedo do acumulador ao contedo do registro R0, R1, R2,

    R3, R4, R5, R6 ou R7 (Rn). O resultado armazenado no acumulador e o flagde carry afetado conforme o resultado da operao.

    Exemplo:ADD A, R2

    A instruoADDC realiza a adio entre o contedo do acumulador, ocontedo de uma posio da memria de dados interna (ou uma constante) e oflag de carry, utilizando a seguinte sintaxe:

    ADDC A,

    O resultado da adio armazenado no acumulador, sendo possvelutilizar para o todos os modos de endereamento (imediato,direto, indireto e registro). O flag de carry afetado conforme o resultado da

    operao.Esta instruo permite que adies com mais de 8 bits possam serimplementadas graas ao aproveitamento do flag de carry da operaoanterior.

    ADDC A, @RiAdiciona o contedo do acumulador ao contedo do endereo da

    memria de dados interna apontado por R0 ou R1 (@Ri) e ao flag de carry. Oresultado armazenado no acumulador e o flag de carry afetado conforme oresultado da operao.

    Exemplo:ADDC A, @R0

    A instruo SUBB realiza a subtrao entre o contedo do acumulador, ocontedo de uma posio da memria de dados interna (ou uma constante) e oflag de carry (borrow), utilizando a seguinte sintaxe:

    SUBB A,

    O resultado da subtrao armazenado no acumulador, sendo possvelutilizar para o todos os modos de endereamento (imediato,direto, indireto e registro). O flag de carry (borrow) afetado conforme o

    resultado da operao.Esta instruo permite que subtraes com mais de 8 bits possam serimplementadas graas ao aproveitamento do flag de carry (borrow) daoperao anterior.

    SUBB A, @RiSubtrai do contedo do acumulador o contedo do endereo da memria

    de dados interna apontado por R0 ou R1 (@Ri) e o flag de carry (borrow). Oresultado armazenado no acumulador e o flag de carry (borrow) afetadoconforme o resultado da operao.

    Exemplo: SUBB A, @R1

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    41/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 34

    A instruo INC incrementa o operando de uma unidade, utilizando aseguinte sintaxe:

    INC

    possvel utilizar todos os modos de endereamento (imediato, direto,indireto e registro) e ainda o registro de 16 bits DPTR.

    INC DPTRIncrementa o valor do registro de 16 bits DPTR.

    A instruo DEC decrementa o operando de uma unidade, utilizando aseguinte sintaxe:

    DEC

    possvel utilizar todos os modos de endereamento (imediato, direto,indireto e registro).

    DEC ADecrementa o valor do acumulador.

    A instruo MUL realiza a multiplicao entre o acumulador e o registrode funo especial B, possuindo uma nica sintaxe:

    MUL AB

    MUL ABMultiplica o contedo do acumulador pelo contedo do registro de

    funo especial B, armazenando a parte mais significativa do resultado em B ea parte menos significativa no acumulador.

    A instruo DIV realiza a diviso entre o acumulador e o registro defuno especial B, possuindo uma nica sintaxe:

    DIV AB

    DIV ABDivide o contedo do acumulador pelo contedo do registro de funo

    especial B, armazenando o quociente no acumulador e o resto em B. Se B fornulo o resultado da operao ser indefinido.

    A instruo DA realiza o ajuste decimal do acumulador aps operaesde adio em BCD, possuindo uma nica sintaxe:

    DA A

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    42/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 35

    DA ARealiza o ajuste decimal do acumulador. Deve ser utilizada apenas aps

    operaes de adio cujos operandos estejam codificados em BCD. O flag decarry afetado conforme o resultado do ajuste.

    Para se ter noo de todas as operaes aritmticas existentes para afamlia MCS51 deve-se consultar a tabela de instrues completa que seencontra nos anexos.

    Exerccios1) Execute os programas dados a seguir no simulador do ambiente Proview e

    tire concluses sobre o efeito de cada instruo executada. Para umamelhor noo do que ocorre, sugere-se que os programas sejamexecutados passo a passo, visualizando-se as janelas Main Registers eData View.

    a) SOMA1: MOV PSW, #00H ;adicao de 16 bits:MOV R0, #23H ; R0R1MOV R1, #90H ;+R2R3MOV R2, #14H ;-----MOV R3, #59H ; R4R5

    MOV A, R1ADD A, R3 ;adiciona R1 e R3MOV R5, A ;LSB em R5MOV A, R0

    ADDC A, R2 ;adiciona R0 e R2MOV R4, A ;MSB em R4LJMP SOMA1

    b) SOMA2: MOV PSW, #00H ;adicao de 16 bits em BCD:MOV R0, #23H ; R0R1MOV R1, #90H ;+R2R3MOV R2, #14H ;-----MOV R3, #59H ; R4R5

    MOV A, R1

    ADD A, R3 ;adiciona R1 e R3DA A ;ajusta resultadoMOV R5, A ;LSB em R5MOV A, R0

    ADDC A, R2 ;adiciona R0 e R2DA A ;ajusta resultadoMOV R4, A ;MSB em R4LJMP SOMA2

    c) SUBT: MOV PSW, #00H ;subtracao de 16 bits:MOV R0, #23H ; R0R1

    MOV R1, #90H ;-R2R3MOV R2, #14H ;-----

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    43/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 36

    MOV R3, #59H ; R4R5

    MOV A, R1SUBB A, R3 ;subtrai R3 de R1MOV R5, A ;LSB em R5

    MOV A, R0SUBB A, R2 ;subtrai R2 de R0MOV R4, A ;MSB em R4LJMP SUBT

    d) MULT: MOV PSW, #00H ;multiplicacao de 16 bits:MOV R0, #23H ; R0R1MOV R1, #90H ; xR2R3MOV R2, #14H ;--------MOV R3, #59H ;R4R5R6R7

    MOV A, R1MOV B, R3MUL AB ;multiplica R1 e R3MOV R7, A ;LSB em R7MOV R6, B ;MSB em R6R7

    MOV A, R1MOV B, R2MUL AB ;multiplica R1 e R2

    ADD A, R6MOV R6, A ;adiciona LSB em R6

    MOV A, BADDC A, #00HMOV R5, A ;MSB em R5

    MOV A, R0MOV B, R3MUL AB ;multiplica R0 e R3

    ADD A, R6MOV R6, A ;adiciona LSB em R6MOV A, B

    ADDC A, R5 ;adiciona MSB em R5

    MOV R5, A

    MOV A, R0MOV B, R2MUL AB ;multiplica R0 e R2

    ADD A, R5MOV R5, A ;adiciona LSB em R5MOV A, B

    ADDC A, #00HMOV R4, A ;MSB em R4LJMP MULT

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    44/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 37

    Manipulao de Variveis Booleanas (Bits)Fazem parte do grupo de manipulao de variveis booleanas as

    instrues CLR, SETB, CPL,ANL, ORL, e MOV.A instruo CLR reseta uma varivel booleana, possuindo a seguinte

    sintaxe:

    CLR

    O corresponde ao endereo individual do bit que deseja-sezerar (da regio da memria interna de dados enderevel bit-a-bit ou de umregistro de funo especial enderevel bit-a-bit).

    CLR bitReseta o valor da varivel booleana endereada (bit).Exemplo: CLR 35H

    A instruo SETB seta uma varivel booleana, possuindo a seguintesintaxe:

    SETB

    O corresponde ao endereo individual do bit que deseja-sesetar (da regio da memria interna de dados enderevel bit-a-bit ou de umregistro de funo especial enderevel bit-a-bit).

    SETB bitSeta o valor da varivel booleana endereada (bit).Exemplo: SETB TR0

    A instruo CPL complementa uma varivel booleana, possuindo aseguinte sintaxe:

    CPL

    O corresponde ao endereo individual do bit que deseja-secomplementar (da regio da memria interna de dados enderevel bit-a-bit ou

    de um registro de funo especial enderevel bit-a-bit).

    CPL bitComplementa o valor da varivel booleana endereada (bit).Exemplo: CPL C

    As instruesANL, e ORL realizam as operaes lgicas E e OU com oflag de carry, respectivamente, utilizando as seguintes sintaxes:

    ANL C,

    ORL C,

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    45/97

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    46/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 39

    Controle de ProgramaFazem parte do grupo de controle de programa as instrues LJMP,

    AJMP, SJMP, JMP, LCALL,ACALL, RET, RETI, JNZ, JZ, JNC, JC, JNB, JB, JBC,CJNE, DJNZ e NOP.

    Este grupo de instrues atua em endereos da memria de programa,

    causando desvios na seqncia natural de execuo do programa (registro defuno especial PC).

    As instrues LJMP, AJMP e SJMP so instrues de desvioincondicional e possuem as seguintes sintaxes:

    LJMP

    AJMP

    SJMP

    JMP @A+DPTR

    O da instruo LJMP um endereo de 16 bits damemria de programa. Atravs dessa instruo possvel realizar desvios paraqualquer endereo dos 64Kb de memria de programa.

    LJMP end16Efetua um desvio incondicional da execuo para o endereo (end16) da

    memria de programa.Exemplo: LJMP 2000H

    O da instruoAJMP um endereo de 11 bits damemria de programa. Atravs dessa instruo possvel realizar desviosapenas para a mesma pgina de 2Kb da memria de programa onde encontra-se a referida instruo.

    AJMP end11Efetua um desvio incondicional da execuo na mesma pgina de 2Kb

    da memria de programa. O endereo de 16 bits do desvio obtido pela CPUcompletando os 11 bits (end11) com os 5 bits mais significativos do endereocontido no registro de funo especial PC.

    Exemplo:AJMP DESVIO

    O da instruo SJMP um valor de 8 bits correspondenteao deslocamento relativo desejado em relao ao atual endereo de execuo(registro de funo especial PC). Atravs dessa instruo possvel realizardesvios relativos de 128 a +127 posies na memria de programa, pois odeslocamento dado em complemento de dois.

    SJMP relEfetua um desvio incondicional relativo da execuo do programa. O

    endereo de 16 bits do desvio obtido pela CPU somando-se o valor relativo(rel) ao endereo contido no registro de funo especial PC.

    Exemplo: SJMP VOLTA

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    47/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 40

    As instrues LCALL e ACALL so instrues de chamadas desubrotinas (funes) e possuem as seguintes sintaxes:

    LCALL

    ACALL

    O da instruo LCALL um endereo de 16 bits damemria de programa. Atravs dessa instruo possvel realizar chamadasde subrotinas em qualquer endereo dos 64Kb de memria de programa.

    LCALL end16Salva o contedo do registro de funo especial PC na pilha (o registro

    SP incrementado 2 vezes, pois trata-se de um registro de 16 bits). Emseguida efetua um desvio para o endereo da subrotina (end16). O valor salvona pilha constitui o endereo de retorno a ser restaurado pela instruo RET aofinal da subrotina.

    Exemplo: LCALL 3000H

    O da instruoACALL um endereo de 11 bits damemria de programa. Atravs dessa instruo possvel realizar chamadasde subrotinas apenas para a mesma pgina de 2Kb da memria de programaonde encontra-se a referida instruo.

    ACALL end11Salva o contedo do registro de funo especial PC na pilha (o registro

    SP incrementado 2 vezes, pois trata-se de um registro de 16 bits). Em

    seguida efetua um desvio para o endereo da subrotina (end11) na mesmapgina de 2KB da memria de programa. O valor salvo na pilha constitui oendereo de retorno a ser restaurado pela instruo RET ao final da subrotina.

    Exemplo:ACALL TEMPO

    As instrues RET e RETI so instrues que realizam o retorno dechamadas de subrotinas e interrupes, respectivamente, possuindo asseguintes sintaxes:

    RET

    RETI

    As instrues de retorno recuperam o endereo original contido noregistro de funo especial PC no momento da chamada da subrotina ouinterrupo.

    RETRetorna de uma subrotina. O endereo de retorno recuperado da pilha

    e armazenado no registro de funo especial PC (o registro SP decrementado 2 vezes, pois trata-se de um registro de 16 bits).

    Exemplo: RET

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    48/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 41

    RETIRetorna de uma subrotina. O endereo de retorno recuperado da pilha

    e armazenado no registro de funo especial PC (o registro SP decrementado 2 vezes, pois trata-se de um registro de 16 bits). A diferena emrelao instruo RET que a instruo RETI habilita novamente

    interrupes de menor ou igual prioridade, anteriormente desabilitadas naocorrncia da interrupo.

    Exemplo: RETI

    As instrues JNZ, JZ, JNC e JC so instrues de desvio condicional epossuem as seguintes sintaxes:

    JNZ

    JZ

    JNC

    JC

    A condio de desvio dada pelo mnemnico da instruo utilizada:JNZ efetua um desvio se o contedo do acumulador for diferente de zero, JZefetua um desvio se o contedo do acumulador for igual de zero, JNC efetuaum desvio se o estado do flag de carry for igual a zero e JC efetua um desviose o estado do flag de carry for igual a um. O de todas essasinstrues sempre um valor de 8 bits correspondente ao deslocamento dodesvio relativo desejado em relao ao atual endereo de execuo (registrode funo especial PC). Atravs dessa instruo possvel realizar desviosrelativos de 128 a +127 posies na memria de programa, pois o

    deslocamento dado em complemento de dois.

    JNZ relTesta o contedo do acumulador e efetua um desvio relativo no

    programa se for diferente de zero. O endereo de 16 bits do desvio obtidopela CPU somando-se o valor relativo (rel) ao endereo contido no registro defuno especial PC, se o resultado do teste for verdadeiro.

    Exemplo: JNZ VOLTA

    JZ rel

    Testa o contedo do acumulador e efetua um desvio relativo noprograma se for igual a zero. O endereo de 16 bits do desvio obtido pelaCPU somando-se o valor relativo (rel) ao endereo contido no registro defuno especial PC, se o resultado do teste for verdadeiro.

    Exemplo: JZ ZERO

    JNC relTesta o flag de carry e efetua um desvio relativo no programa se for igual

    a zero. O endereo de 16 bits do desvio obtido pela CPU somando-se o valorrelativo (rel) ao endereo contido no registro de funo especial PC, se o

    resultado do teste for verdadeiro.Exemplo: JNC SEM

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    49/97

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    50/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 43

    A instruo CJNE realiza uma comparao entre 2 operandos e, casono sejam iguais, efetua um desvio na execuo do programa. Possui aseguinte sintaxe:

    CJNE , ,

    O pode ser o acumulador, um registro do banco deregistros em uso ou um ponteiro, o pode ser um endereo damemria de dados interna ou uma constante e o sempre umvalor de 8 bits correspondente ao deslocamento do desvio relativo desejado, aser efetuado no caso do e do serem diferentes.O deslocamento dado em complemento de dois.

    CJNE A, direto, relCompara o contedo do acumulador com o contedo da posio de

    memria de dados interna (direto). Se os valores forem iguais, o programaprossegue normalmente para a prxima instruo. Caso contrrio, um desvio realizado pela CPU somando-se o valor relativo (rel) ao endereo contido noregistro de funo especial PC.

    Exemplo: CJNE A, 1FH, TECLA

    A instruo DJNZ realiza uma decremento e, caso o resultado sejadiferente de zero, efetua um desvio na execuo do programa. Possui aseguinte sintaxe:

    DJNZ ,

    O pode ser um registro do banco de registros em uso ouum endereo da memria de dados interna ou uma constante e o sempre um valor de 8 bits correspondente ao deslocamento do desviorelativo desejado, a ser efetuado no caso do ser diferente dezero. O deslocamento dado em complemento de dois.

    DJNZ Rn, relDecrementa o contedo do registro R0 a R7 (Rn) do banco de registros

    em uso, ocorrendo um desvio no programa caso o resultado seja diferente de

    zero. Se o resultado aps o decremento for nulo o programa prossegue para aprxima instruo. Caso ocorra um desvio, o endereo de desvio calculadopela CPU somando-se o valor relativo (rel) ao endereo contido no registro defuno especial PC.

    Exemplo: DJNZ R0, LOOP

    A instruo NOP aguarda o tempo de um ciclo de mquina da CPU semefetuar nenhuma operao. Possui a seguinte sintaxe:

    NOP

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    51/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 44

    NOPSem operao, apenas aguarda o tempo relativo a um ciclo de mquina.Exemplo: NOP

    Para se ter noo de todas as instrues de manipulao de variveisbooleanas existentes para a famlia MCS51 deve-se consultar a tabela deinstrues completa que se encontra nos anexos.

    Exerccios1) Implemente uma subrotina que receba um valor no registro R0 como

    entrada e retorne esse valor elevado ao quadrado nos registros R1 e R2(R1 dever conter o byte mais significativo e R2 o menos significativo).

    2) Implemente uma subrotina que receba um valor no acumulador e retorneum valor no registro B, seguindo a correspondncia dada na tabela a seguir:

    A 10H 20H 30H 40HB 98H 76H 54H 23H

    3) A instruo NOP bastante utilizada em laos de repetio para gerartemporizaes atravs de software, como mostrado na subrotina a seguir.Consultando a tabela de instrues completa para obter os tempos deexecuo de cada instruo e supondo uma freqncia de clock de 6MHz,calcule o tempo gerado pela subrotina ATRASO.

    ;**********************************************************

    ; ATRASO gera um tempo de atraso por software; ENTRADA: nada; SAIDA: tempo de atraso; DESTROI: R1 e R2 do banco de registros em uso;**********************************************************

    ATRASO: MOV R1, #80HA1: MOV R2, #90HA2: NOP

    NOPDJNZ R2, A2DJNZ R1, A1

    RET

    4) Como a instruo DA A somente pode ser usada para o ajuste decimal doacumulador aps operaes de adio, foi desenvolvida uma subrotina parao ajuste decimal do acumulador aps operaes de subtrao. Analise ofuncionamento da subrotina DAASUB, cuja listagem mostrada a seguir etire concluses sobre o seu funcionamento.

    ;**********************************************************; DAASUB - ajuste decimal do acumulador apos subtracoes; ENTRADA: A; SAIDA: A;**********************************************************

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    52/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 45

    DAASUB: PUSH PSWPUSH A

    ANL A, #0FHCLR CSUBB A, #0AH

    JC SEM0 ;inferior precisa de ajuste?POP ACLR CSUBB A, #06H ;ajusta nibble inferiorPUSH A

    SEM0: CPL C ;nao ajusta nibble inferiorPOP APUSH A

    ANL A, #F0HCLR CSUBB A, #A0H

    JC SEM1 ;superior precisa de ajuste?POP ACLR CSUBB A, #60H ;ajusta nibble superiorPUSH A

    SEM1: CPL C ;nao ajusta nibble superiorPOP APOP PSWRET

    5) A subrotina mostrada em seguida realiza a comparao de valores de 24

    bits. As variveis de entrada so ponteiros para os bytes mais significativosdos valores a serem comparados. Analise o funcionamento da subrotinaCOMP3 e determine como o programador deve modific-la caso queiraampliar o nmero de bytes dos valores a serem comparados.

    ;**********************************************************; COMP3 compara valores de 3 bytes apontados por R0 e R1; ENTRADA: R0 e R1 = ponteiros para MSB; SADA: se Z = 1 -> R0=R1; se CY = 0 -> R0>R1; se CY = 1 -> R0

  • 7/27/2019 Microcontrolador 8051- Prof_ Hugo Vieira Neto

    53/97

    Microcontroladores MCS51 Hugo Vieira Neto, M.Sc Curitiba, 2002 46

    Exerccios PrticosElabore os seguintes programas em Assembly da famlia MCS51,

    verifica