Download pdf - 8051 Ricardo

Transcript
  • MICRO CONTROLADORES

    MCS-51

    RICARDO ZELENOVSKY ASESSOR TCNICO ESPE

  • DEDICATRIA: a Maria Antonia, Guilherme e Henrique.

  • MICRO

    CONTROLADORES

    MCS-51

    RICARDO ZELENOVSKY

    *RD

    MEMORIAS

    AO..A15

    *RD

    *WR

    *PSEN

    BOOT

    *BOOTAD0..AD7

    *RD

    RST

    P1.7

    GRAVADOR

    A0..A15

    *RD

    *WR

    RST

    P1.7

    P1.6

    AD0..AD7

    VCC

    R247KD11N4148

    R182

    SW1

    SW PUSHBUTTON

    C1

    10u

    1 2U5A

    74LS14P1.6 *WR *WR

    *PSEN

    BOOT

    *BOOT

    A0A1A2

    AD0AD1AD2

    D0 3 Q0 2D1 4 Q1 5D2 7 Q2 6D3 8 Q3 9D4 13 Q4 12D5 14 Q5 15D6 17 Q6 16D7 18 Q7 19

    OC 1G 11

    U2

    74LS373

    AD0AD1AD2

    EA/VP 31

    X1 19

    X2 18

    RESET 9

    INT0 12INT1 13T0 14T1 15

    P1.0 1P1.1 2P1.2 3P1.3 4P1.4 5P1.5 6P1.6 7P1.7 8

    P0.0 39P0.1 38P0.2 37P0.3 36P0.4 35P0.5 34P0.6 33P0.7 32

    P2.0 21P2.1 22P2.2 23P2.3 24P2.4 25P2.5 26P2.6 27P2.7 28

    RD 17WR 16

    PSEN 29ALE/P 30

    TXD 11RXD 10

    U1

    8031

    C330p

    RST

    C2

    30p

    X13575611Hz

    *RST11 10 U5E

    74LS14

    VCC

    LED6

    Q_AM

    R9220

    VCC

    R4

    220

    R5

    220

    LED3

    R_AM

    LED2

    R_VMP1.0 3 4 U5B

    74LS14

    5 6 U5C74LS14

    RST

    BOOT RST

    AD3AD4AD5AD6AD7

    A8A9

    AD3AD4AD5AD6AD7

    ALE

    A3A4A5A6A7

    VCC

    TXD

    INTERF-SERIAL

    TXD

    RXD

    VCC

    25V

    A10A11A12A13A14A15

    *RD*WR

    P1.0P1.1P1.2P1.3

    *INT0*INT1T0T1

    RAM

    X

    LED1 (Q_VD)ON --> BOOT SERIAL

    1 ROM

    0 RAM

    P1.1

    P1.2 9 8 U5D74LS14

    R6

    220

    LED4

    R_VD

    SW2

    SW PUSHBUTTON

    SW3

    SW PUSHBUTTON

    P1.3

    *INT1T1

    OFF --> PROG RAM(BOOT=1)

    (BOOT=0)

    VCC

    R92K2

    P1.4P1.5P1.6P1.7

    LED1

    Q_VD

    PSEN

    TXDRXD

    BOOT

    RXD25V

    *BOOTR3220

    D 2

    Q 5

    CLK 3

    Q 6

    PR

    4

    CL

    1

    U8A

    74LS74

    C41u

    LED5

    Q_VM

    11 10U5E

    74LS14

    R7220

    *INT0

    VCC

    SW4

    SW SPST

    R88K2

    FECHADA

    ABERTA S STEP

    (Q_VM OFF)

    (Q_VM ON)

    RST

    VCC

    BOOT

    *BOOTRUN

    *PSEN *RD *WR

  • PREFCIO

    viii MICROCONTROLADORES (MCS-51)

    PREFCIO

    Este trabalho surgiu para concretizar os conhecimentos e idias desenvolvidas nos

    Seminrios de Microcontroladores ministrados na Faculdade de Eletrnica da Escola Politcnica

    Superior do Exrcito Equatoriano. Nestes seminrios se desenvolveu um conjunto hardware-software

    que provou ser muito didtico para a aprendizagem de microcontroladores da famlia MCS-51.

    Aqui se pretende estudar de forma prtica a famlia MCS-51. Portanto, junto com a

    exposio da teoria sero provados os conceitos no hardware desenvolvido. Isto permitir uma slida

    aprendizagem por parte dos estudantes. Este hardware recebe os programas pela porta serial de um

    computador e os executa em seguida. Isso permite uma interao dinmica por parte dos estudantes

    que podem escrever programas e testa-los imediatamente. Se houver erros, estes so corrigidos e o

    novo programa novamente enviado ao hardware.

    Todo o estudo se baseia no 8031, o membro mais simples da famlia MCS-51. Sero

    estudadas entretanto as principais diferenas para os demais membros. Neste estudo se supe que

    os estudantes possuem conceitos de eletrnica, microprocessadores (8080, 8085 ou Z-80) e

    programao assembly. Tambm ser til a disponibilidade de um computador compatvel com IBM

    PC.

    O texto est organizado por captulos e apndices.

    No Captulo 1 foi feita uma pequena reviso histrica, se conceitua o que um

    microcontrolador e se apresenta uma pequena relao com os principais fabricantes da famlia MCS-

    51.

    No Captulo 2 se conceitua a famlia MCS-51 e so apresentados os principais

    membros desta. Aqui se estuda a conexo com as memrias e tambm a arquitetura da RAM

    interna.

    No Captulo 3 so apresentados todos os pinos do microcontrolador e descritas suas

    funes. Tambm so estudados os diagramas de tempo. Neste captulo apresentado o hardware

    a ser construdo.

    O Captulo 4 trata do estudo e prtica do conjunto de instrues da famlia MCS-51. Ao

    final so propostos diversos exerccios de programao, parte deles com as respostas.

    No Captulo 5 so apresentadas as ferramentas de programao. Basicamente se

    utilizar o assembler e simulador da Avocet (AVMAC51, AVLINK, AVSIM51). As ferramentas mais

    importantes sero o assembler e o linker. O simulador estudado somente para ser usado como um

    meio auxiliar.pois se tem um hardware para testar os programas desenvolvidos.

  • PREFCIO

    MICROCONTROLADORES (MCS-51) ix

    A partir do Captulo 6 sero estudados e praticados os recursos que a famlia MCS-51

    oferece. Neste Captulo so estudadas as portas paralelas e em seguida se fazem prticas com o

    hardware.

    No Captulo 7 so apresentadas as interrupes e tambm prticas no hardware. Aqui

    se propem os princpios para realizao de um controle passo a passo.

    No Captulo 8 so estudados e praticados os contadores/temporizadores.

    O Captulo 9 aborda a porta serial. Aqui tambm se prope um pequeno programa que

    permite ao hardware receber os programas do PC via porta serial.

    No Captulo 10 se estuda a economia de energia e a programao da EPROM que h

    em alguns membros da famlia. Aqui se prope um pequeno gravador para essa EPROM.

    No Apndice 1 se descreve completamente o programa "BOOT SERIAL" que permite

    ao hardware receber os programas que o PC envia pela porta serial. Aqui est a listagem completa

    do programa.

    No Apndice 2 descrito o programa "SINGLE STEP" que permite ao hardware o

    controle passo a passo. apresentada uma listagem completa dos programas.

    No Apndice 3 se faz um pequeno estudo das portas seriais do PC. Aqui se explica o

    programa "TODO" e tambm uma listagem completa em C.

    Este trabalho uma realidade graas amizade de Brasil e Equador, em particular, se

    deve cooperao que h entre os Exrcitos destes dois pases irmos. Agradeo o apoio recebido

    na ESPE, particularmente por parte do Departamento de Ensino e da Faculdade de Eletrnica. Aos

    professores desta Faculdade se deve o desenvolvimento dos seminrios e sugestes aqui presentes.

    A traduo para espanhol pde ser feita graas ao empenho dos alunos de Nvel X de 1993 e de

    Nvel IX de 1994.

    Devo agradecer os engenheiros Ruben Len e Vinicio Carrera pelas sugestes e

    empenho nos trabalhos de correo deste texto, ao engenheiro Fabricio Morales pela colaborao no

    desenvolvimento dos programas e aos alunos Eduardo Torres e Ivan Cisneros se deve a construo

    e testes do novo hardware didtico.

    Agradeo ao aluno Marco Zavala pela ajuda nas apuradas correes.

    RICARDO ZELENOVSKY

  • NDICE

    MICROCONTROLADORES (MCS-51) iii

    NDICE PREFCIO viii

    CAPTULO I MICROCONTROLADORES 1-1 1.1. REVISO HISTRICA 1-1

    1.2. POR QU MICROCONTROLADORES ? 1-3

    1.3. MICROCONTROLADORES 1-4

    1.4. FAMLIAS DA INTEL 1-5

    CAPTULO II FAMLIA MCS-51 2-1 2.1. INTRODUO 2-1

    2.2. FAMLIA MCS-48 2-1

    2.3. FAMLIA MCS-51 2-2

    2.4. MEMRIA EXTERNA 2-3

    2.5. MEMRIA INTERNA (RAM INTERNA) 2-7

    2.6. SFR - SPECIAL FUNCTION REGISTERS 2-9

    2.7. MAPA DA RAM INTERNA 2-11

    2.8. MAPA DOS BITS 2-13

    CAPTULO III PINAGEM E TEMPORIZAO 3-1 3.1. INTRODUO 3-1

    3.2. DESCRIO DA PINAGEM 3-1

    3.3. DIAGRAMAS DE TEMPO 3-3

    3.4. RESET 3-6

    CAPTULO IV CONJUNTO DE INSTRUES 4-1 4.1. INTRODUO 4-1

    4.2. MODOS DE ENDEREAMENTO 4-2

    4.3. SOBRE AS INSTRUES 4-3

    4.4. INSTRUES ARITMTICAS 4-3

    4.4.1. Soma de 8 Bits 4-3

    4.4.2. Soma de 8 Bits com Carry 4-4

    4.4.3. Subtrao de 8 Bits com Borrow 4-4

    4.4.4. Incremento de 8 Bits 4-4

    4.4.5. Decremento de 8 Bits 4-4

  • NDICE

    iv MICROCONTROLADORES (MCS-51)

    4.4.6. Incremento de 16 Bits 4-5

    4.4.7. Multiplicao e Diviso de 8 Bits 4-5

    4.4.8. Ajuste Decimal 4-5

    4.5. INSTRUES LGICAS 4-6

    4.5.1. AND de 8 Bits 4-6

    4.5.2. OR de 8 Bits 4-7

    4.5.3. XOR de 8 Bits 4-7

    4.5.4. Operaes Lgicas com o Acumulador 4-7

    4.6. INSTRUES DE TRANSFERNCIA DE DADOS 4-8

    4.6.1. Transferncia de Dados 4-8

    4.6.2. Permutao de Bytes 4-10

    4.6.3. Permutao de Nibble 4-10

    4.6.4. Operaes com a Pilha 4-10

    4.6.5. Transferncia de Dados com a Memria de Dados Externa 4-11

    4.6.6. Leitura da Memria de Programa 4-11

    4.7. INSTRUES BOOLEANAS 4-11

    4.7.1. Zerar/Setar/Complementar um Bit 4-12

    4.7.2. AND/OR Booleano 4-12

    4.7.3. Movimento de Bits 4-12

    4.7.4. Desvios Baseados em Bits 4-12

    4.8. INSTRUES DE DESVIO 4-13

    4.8.1. Chamadas de subrotinas 4-13

    4.8.2. Retorno de Subrotinas 4-13

    4.8.3. Desvios 4-14

    4.8.4. Desvios Condicionais 4-14

    4.8.5. Loops 4-14

    4.8.6. No Operao 4-15

    4.9. INSTRUES E FLAGS 4-15

    4.10. OBSERVAES 4-16

    4.10.1. Bancos de Registros 4-16

    4.10.2. Registros Especiais 4-17

    4.11. CDIGOS DE OPERAO (OP CODES) 4-18

    4.11.1. Tabelas de Instrues 4-18

    4.11.2. Instrues em Ordem Alfabtica com OPCODES 4-21

    4.12. JUMP E CALL 4-24

    4.12.1. JUMPs Relativos 4-24

    4.12.2. JUMPs e CALLs Absolutos 4-26

    4.13. EXEMPLOS 4-29

  • NDICE

    MICROCONTROLADORES (MCS-51) v

    CAPTULO V ASSEMBLER E SIMULADOR 5-1 5.1. CONCEITOS DO AVMAC51 E DO AVLINK 5-1

    5.2. PSEUDO-INSTRUES DO ASSEMBLER 5-4

    5.3. O LINKER - AVLINK 5-9

    5.4. O FORMATO INTEL.HEX 5-11

    5.5. PROGRAMAS EXEMPLO 5-12

    5.6. CONCEITOS DO AVSIM 8051 5-17

    5.6.1. Modo Comando 5-17

    5.6.2. Modo Display 5-18

    5.7. COMANDOS DO AVSIM51 5-18

    5.7.1. Comandos de Ambiente 5-19

    5.7.2. Comandos para a Execuo de Programas 5-19

    5.7.2.1. Breakpoints 5-19

    5.7.2.2. Condies (Value, Range, Mask, Indirect) 5-20

    5.7.2.3. Passpoints 5-20

    5.7.2.4. Opcode Traps 5-21

    5.7.2.5. Execute Command 5-21

    5.7.3. Comandos de Display 5-21

    5.7.4. Comandos de I/O 5-21

    5.7.5. Comandos de Memria 5-22

    5.7.6. Incremental Cross-Assembler 5-22

    5.8. FLUXOGRAMA DE OPERAO DO AVSIM51 5-22

    5.9. TELAS DE AJUDA 5-31

    5.9.1. Ajuda para os Comandos 5-31

    5.9.2. Ajuda para o Display 5-31

    5.9.3. Ajuda para a Simulao 5-31

    5.9.4. Ajuda para AVOCET 5-32

    5.9.5. Tela do Simulador 5-32

    CAPTULO VI PORTAS PARALELAS 6-1 6.1. REGISTROS ENVOLVIDOS 6-1

    6.2. DESCRIO DO FUNCIONAMENTO 6-2

    6.2.1. Porta P1 6-2

    6.2.2. Porta P3 6-3

    6.2.3. Porta P2 6-4

    6.2.4. Porta P0 6-5

  • NDICE

    vi MICROCONTROLADORES (MCS-51)

    6.3. ESCRITA NAS PORTAS 6-6

    6.4. EXERCCIOS 6-9

    CAPTULO VII INTERRUPES 7-1 7.1. INTRODUO 7-1

    7.2. REGISTROS ENVOLVIDOS 7-1

    7.3. MANEJO DE INTERRUPES 7-4

    7.4. INTERRUPES EXTERNAS 7-5

    7.5. PASSO A PASSO 7-6

    7.6. EXERCCIOS 7-8

    CAPTULO VIII TEMPORIZADORES / CONTADORES 8-1 8.1. INTRODUO 8-1

    8.2. REGISTROS ENVOLVIDOS 8-1

    8.3. MODOS DE OPERAO 8-4

    8.3.1. Modo 0 8-4

    8.3.2. Modo 1 8-4

    8.3.3. Modo 2 8-5

    8.3.4. Modo 3 8-5

    8.4. EXERCCIOS 8-6

    CAPTULO IX PORTA SERIAL 9-1 9.1. INTRODUO 9-1

    9.2. REGISTROS ENVOLVIDOS 9-1

    9.3. MODOS DE OPERAO 9-3

    9.3.1. Modo 0 9-3

    9.3.2. Modo 1 9-4

    9.3.3. Modo 2 9-5

    9.3.4. Modo 3 9-5

    9.4. CUIDADOS COM A PORTA SERIAL 9-6

    9.5. Comunicao entre vrios 8051 9-7

    9.6. Comunicao serial entre o 8051 e o PC 9-8

    9.7. EXERCCIOS 9-9

    CAPTULO X ECONOMIA DE ENERGIA E GRAVAO 10-1 10.1. INTRODUO 10-1

    10.2. MODO IDLE 10-2

    10.3. MODO POWER DOWN 10-3

  • NDICE

    MICROCONTROLADORES (MCS-51) vii

    10.4. PROGRAMAO DA EPROM (8751) 10-3

    10.4.1. Programao 10-4

    10.4.2. Verificao 10-5

    10.4.3. Bit de Segurana 10-6

    10.4.4. Apagamento (8751) 10-6

    CAPTULO XI PLACA DE TESTES 11-1 11.1. INTRODUO 11-1

    11.2. ESQUEMA DA CPU (CPU.SHT) 11-7

    11.3. ESQUEMA DA MEMRIA 11-11

    11.4. ESQUEMA DA SERIAL 11-13

    11.5. ESQUEMA DO GRAVADOR 11-17

    ANEXO A USO DOS PROGRAMAS A-1 A.1. INTRODUO A-1

    A.2. TAR_PRU.ASM A-1

    A.3. TUDO.C A-2

    A.4. STEP.ASM / STEP.H A-3

    BIBLIOGRAFIA B-1

  • CAPTULO I MICROCONTROLADORES

    MICROCONTROLADORES (MCS-51) 1 - 1

    CAPTULO I

    MICROCONTROLADORES 1.1. REVISO HISTRICA

    A rpida evoluo da eletrnica, particularmente na segunda metade do sculo XX,

    provocou uma mudana profunda no homem moderno. Os pases ficam cada vez mais prximos,

    graas inicialmente ao radio, depois televiso e hoje em dia, com os satlites, pode-se

    instantaneamente ver qualquer lugar do planeta. Pudemos ver o homem pisando pela primeira vez na

    Lua e tambm imagens recm enviadas de Marte, Jpiter, Saturno e Pluto.

    Alm dos meios de comunicao, recordemos os avanos da medicina, meteorologia,

    transportes, cincia pura e aplicada, prospeco de petrleo e tambm o controle e melhoria do meio

    ambiente.

    Pelo lado da eletrnica, afirma-se que um grande agente deste progresso foi o

    computador, que provocou uma realimentao positiva nas pesquisas. O computador permitiu

    pesquisas mais rpidas e precisas; com isto muitas cincias se beneficiaram, inclusive a tecnologia

    eletrnica, que passou a fabricar circuitos mais rpidos e eficientes. Com isso pode-se construir

    computadores mais eficientes, que por sua vez melhoraram ainda mais a eletrnica e assim

    sucessivamente.

    Desde as simples calculadoras de vlvulas, programadas por fios, da dcada do 40 at

    os supercomputadores dos dias de hoje, foi percorrido um caminho muito grande. No meio deste

    caminho, no incio da dcada do 70, com o avano dos LSI vimos surgir os microprocessadores e os

    computadores pessoais.

    oportuno recordar algumas datas importantes no desenvolvimento dos computadores:

    1948 - John Barden, Walter Bratain e William Shockley inventam o Transistor no BELL LABS.

    1959 - TEXAS INSTRUMENTS cria o primeiro Circuito Integrado (CI), onde em um mesmo substrato

    de cristal eram integrados vrios transistores.

    1964 - DIGITAL comea a vender o PDP-8, o primeiro computador com preo acessvel aos

    laboratrios.

    1968 - Surge a INTEL.

    1971 - INTEL fabrica o 4004, o primeiro microprocessador. Ele tinha uma arquitetura de 4 bits. Aqui

    surge a idia de integrar todo o circuito de controle em um nico CI; isso passou a chamar-

    se microprocessador.

  • CAPTULO I MICROCONTROLADORES

    1 - 2 MICROCONTROLADORES (MCS-51)

    1974 - INTEL desenvolve o 4004 e produz o primeiro microprocessador de 8 bits, o 8080. Neste

    mesmo ano, Kernighan e Ritchie formalizam a linguagem C.

    1975 - ZILOG comea a vender o Z80 e a MOS TECHNOLOGY comea a vender o MC6501 (US$20)

    e o MC6502 (US$ 25). Nesta poca um 8080 custava US$ 150.

    1976 - INTEL produz o primeiro microcontrolador, o 8048, e o 8748. Neste mesmo ano INTEL iniciou

    o projeto do 8086. A TEXAS INSTRUMENTS produz o TMS 9000, primeiro

    microprocessador de 16 bits. APPLE COMPUTER tambm surge neste ano.

    1977 A APPLE Computer produz o APPLE II (US$1298) com processador Motorola 6502 (8 bits).

    1978 A INTEL comea a produzir o 8086 e tambm alguns derivativos do 8048, o 8041 e o 8741.

    1979 A INTEL distribui o 8088.

    1980 A INTEL inicia o que seria a famlia de microcontroladores de maior sucesso, os 8051 e 8751.

    Neste mesmo ano tambm produz o 8087. A APPLE COMPUTER produz o APPLE III, que

    estava destinado ao fracaso.

    1981 A IBM passa a dedicar-se aos sistemas de pequeno porte com o IBM PC, que consistia da

    CPU 8088, 64 KB RAM, 40 KB ROM, floppy 5,25" (US$3005).

    1982 A INTEL inicia a venda dos 80186, 80188 e 80286. Tambm comea a vender o primeiro

    microcontrolador de 16 bits, o 8096 (famlia MCS-96).

    1983 - Com os 80C51 e 80C49, a INTEL comea a distribuir microcontroladores CHMOS, de menor

    consumo de energia. A APPLE COMPUTER produz o LISA, tambm destinado ao fracaso.

    A AT&T comea a distribuir o UNIX System V. A IBM anuncia o PC XT (US$ 4995) e o PC

    Jr. (US$1269).

    1984 - Surge o IBM PC AT com 80286, 256 KB RAM, floppy de 1,2 MB (US$ 5469). A APPLE

    COMPUTER produz o que viria a ser um grande sucesso: o MACINTOSH (US$ 2495).

    1985 A INTEL produz o 80386DX (16 MHz, 6 MIPS).

    1986 A COMPAQ fabrica o primeiro computador 386, o COMPAQ DESKPRO 386.

    1988 A INTEL fabrica o 80386SX (16 MHz, 2,5 MIPS).

    1989 A INTEL fabrica o 80486DX (25 MHz, 20 MIPS).

    1991 A INTEL fabrica o 80486SX (20 MHz, 16,5 MIPS).

    1992 A INTEL fabrica o 80486DX2 (50 MHz, 40 MIPS).

    1993 A INTEL fabrica o PENTIUM (60 MHz, 112 MIPS).

    O desenvolvimento dos microprocessadores e dos microcontroladores, de acordo com

    os fabricantes, pode ser esquematizado da seguinte forma:

    INTEL 4004 8008 8080 8085 8086 (8088) 80286 80386 486 P5 PII PIII PIV

  • CAPTULO I MICROCONTROLADORES

    MICROCONTROLADORES (MCS-51) 1 - 3

    MOTOROLA 6502 6509 68000 68010 68020 68030 68040 68060 PowerPC

    ZILOG Z80 Z800 Z8000

    1.2. POR QU MICROCONTROLADORES ?

    Com o barateamento dos CIs e o surgimento de microprocessadores (CPUs) mais

    poderosos, comeou-se a usar as CPUs mais simples para implementar tarefas dedicadas, tais como

    controle de impressora, plotter, reguladores de velocidade, acionadores de motores de passo,

    controladores de elevadores, etc.

    Contudo, qualquer controle implicar uma circuitaria muito grande, que muitas vezes

    encarece o custo do controlador.

    Tipicamente: CPU controle ROM programa de controle RAM pilha e dados Porta Paralela perifricos e I/O Porta Serial comunicao A/D e D/A sinais analgicos Timers temporizao

    CPU

    ROM RAM

    CONVERSORPORTAPARALELA

    PORTASERIAL A/D E D/A

    TIMERS

    ENDEREOS E DADOS

    CONVERSORES

    Figura 1.1. Exemplo tpico de um microprocessador aplicado em controle.

    Estas aplicaes tinham o custo dependente do preo da CPU e dos perifricos (ROM,

    RAM, Portas, A/D, D/A, etc) e tambm da quantidade de conexes e do tamanho da placa. Para

  • CAPTULO I MICROCONTROLADORES

    1 - 4 MICROCONTROLADORES (MCS-51)

    reduzir o custo, comeou a surgir a idia de colocar todos estes perifricos dentro do chip da CPU.

    Isso baratearia e diminuiria o tamanho do circuito impresso alm de aumentar a confiabilidade. Por

    outro lado, uma CPU dedicada a um determinado controle no precisa ser muito rpida nem

    tampouco ter um conjunto de instrues extenso e poderoso. No so necessrias instrues para

    trabalhar com ponto flutuante, com strings ou vetores e tambm os mecanismos de endereamento

    devem ser simples. Ou seja, pode-se simplificar a CPU. Assim surgem os microcontroladores, que

    so simples, baratos e eficientes.

    1.3. MICROCONTROLADORES

    Os microcontroladores apresentam uma srie de recursos incorporados dentro de um

    nico integrado. Estes recursos aumentam com a evoluo da eletrnica. Isto permite o

    desenvolvimento de projetos cada vez mais simples.

    PORTA

    PARALELA

    PORTA

    SERIAL

    R O M

    R A M

    TIMERS

    D / A

    A / D

    C P U

    MICROCONTROLADOR TPICO

    Figura 1.2. Arquitetura bsica de um microcontrolador.

    Os microcontroladores so especficos para controle, no tem grande capacidade de

    processamento e por isso nunca haver um computador pessoal cuja CPU seja um microcontrolador.

    Eles podem estar presentes em um PC, mas apenas para controlar perifricos.

    Usa-se o nome de Microcontrolador para designar dispositivos de uso genrico, mas

    existem vrios microcontroladores que tm aplicaes especficas, como por exemplo o controlador

    de teclado 80C51SL-BG e o controlador de comunicaes universal 82C152.

    H diversos fabricantes de microcontroladores. Os mais conhecidos so:

    INTEL 8048, 8049, 8051, 8052, 8096. ZILOG Z8. MOTOROLA 6801, 6804, 6805, 68HC11. NATIONAL COP400, COP800, NS8050.

  • CAPTULO I MICROCONTROLADORES

    MICROCONTROLADORES (MCS-51) 1 - 5

    1.4. FAMLIAS DA INTEL

    A INTEL possui trs famlias de controladores:

    8 bits: MCS-48 (obsoleta) e MCS-51

    16 bits: MCS-96

    Hoje em dia, os manuais mostram uma nova famlia, MCS-80/85. Agora os antigos 8080

    e 8085 esto sendo classificados como controladores. Isto porque so muito simples quando

    comparados com um 386 ou um 486. Cada famlia possui um ncleo bsico (arquitetura e instrues)

    a partir do qual se derivam vrios produtos:

    MCS-48 8048, 8748, 8049, 8749, 8035,8039,8050,8040,etc. MCS-51 8031, 8051, 8751, 8032, 8052, 8752, 8054, 8754, 8058, 8758, 8351FA, 8051FA,

    8751FA, 8051GB, 8751GB, 8051SL-BG, 83152, etc.

    MCS-96 8096, 8098, 80196, 83196, 87196, 80198, 83198, 87198, 80193, 83193, 87193, etc.

    So 3 os principais fabricantes do MCS-51:

    I N T E L

    P H I L I P S

    A M D

  • CAPTULO X ECONOMIA DE ENERGIA E GRAVAO

    MICROCONTROLADORES (MCS-51) 10 - 1

    CAPTULO X

    ECONOMIA DE ENERGIA E GRAVAO

    10.1. INTRODUO

    Para aplicaes onde o consumo de potncia crtico, as verses CHMOS oferecem

    modos de reduo de potncia como recurso padro. H dois modos bsicos para economia de

    energia (reduo de consumo):

    Modo Idle Modo Power Down A figura 10.1 apresenta um diagrama de blocos onde se pode ver o funcionamento e a

    distino entre os dois modos de economia de energia.

    OSC GER.CLOCK

    *PD *IDL

    INTERRUPESTIMERSSERIAL

    XTAL2 XTAL1

    DEMAISFUNES

    Figura 10.1. Controle executado pelos flags (*PD e *IDL) que habilitam a economia de energia.

    No MODO IDLE (IDL=1) o oscilador continua a trabalhar para trs funes, mas

    removido do resto da CPU. As trs funes que operam em modo Idle so:

    interrupes timers porta serial No MODO POWER DOWN (PD=1) o oscilador paralisado e com isto toda CPU fica

    congelada.

    Esses dois modos so ativados pelo registrador PCON, que descrito na figura 10.2.

  • CAPTULO X ECONOMIA DE ENERGIA E GRAVAO

    10 - 2 MICROCONTROLADORES (MCS-51)

    SMOD - - - GF1 GF0 PD IDL

    MODO IDLE

    MODO POWER DOWN

    BITS DE USO GERAL

    DOBRADOR DE BAUD RATE

    PCON

    1 habilita 0 desabilita7 6 5 4 3 2 1 0

    Figura 10.2. Descrio do registro PCON.

    Nas verses HMOS o registrador PCON s contm o bit SMOD; os demais no devem

    ser utilizados.

    10.2. MODO IDLE

    A instruo que ativa o bit IDL a ltima a ser executada antes que a CPU entre no

    modo Idle. Neste modo s funciona a interrupo, os timers e a porta serial. A CPU fica congelada

    sem o clock. O consumo cerca de 85% do consumo normal.

    Todo o status preservado:

    SP, PC, PSW, Acc e todos os registradores, os pinos das portas mantm os mesmos estados, ALE = PSEN = High. H duas maneiras de terminar o modo Idle:

    por uma interrupo que esteja habilitada, por reset. Se uma interrupo termina o modo Idle, a instruo a ser executada depois do RETI a

    que vem em seguida que ativou o bit IDL. Na figura 10.3 h um esquema que ilustra este

    funcionamento.

    MOV PCON,#1

    MOV A,#40H

    MODOIDLE

    ROTINA INTERRUPO. . .

    RETI

    INT

    Figura 10.3. Retorno do modo Idle atravs de uma interrupo.

    Os Flags GF0 e GF1 podem ser usados para dar indicao se a interrupo aconteceu

    no modo normal ou no modo Idle. A rotina que ativa o bit IDL deve antes ativar um dos dois flags

    (GF0 ou GF1) para indicar que a CPU entrou no modo Idle.

  • CAPTULO X ECONOMIA DE ENERGIA E GRAVAO

    MICROCONTROLADORES (MCS-51) 10 - 3

    O Reset a outra forma de terminar o modo Idle. Como o oscilador est funcionando,

    so necessrios apenas 24 perodos de clock. O Reset coloca em zero o bit IDL de forma assncrona

    e a CPU reassume a execuo a partir da instruo que ativou o IDL. Podem acontecer 2 a 3 ciclos

    de mquina antes que a CPU retome o controle.

    O hardware interno inibe o acesso RAM interna durante o perodo de modo Idle mas

    no os acessos aos pinos das portas. Para evitar erros, a instruo que vem em seguida ativao

    do IDL no deve escrever nas portas ou na memria externa.

    10.3. MODO POWER DOWN

    A instruo que ativa o bit PD a ltima a ser executada antes que a CPU entre no

    modo Power Down. Nesse modo o oscilador fica parado e assim todas as funes se congelam mas

    o contedo da RAM interna e dos SFR so mantidos. O consumo de aproximadamente 10A.

    Em modo power down so mantidos:

    RAM interna e SFR Pinos das portas ALE = PSEN = LOW

    A nica maneira de sair do Power Down por Reset, que vai alterar o contedo dos SFR

    mas no alterar o contedo da RAM interna. Assim, os valores importantes devero estar

    armazenados na RAM interna. Esse Reset deve esperar a partida do oscilador (pelo menos 10 ms).

    O programa recomear do incio (RESET), ao contrrio do modo IDLE.

    Em Power Down pode-se baixar o Vcc at 2V; alguns cuidados devem ser observados:

    No baixar o Vcc antes do Power Down Levantar o Vcc antes de sair do Power Down.

    Uma possvel utilizao do modo power down pode ser realizada usando um sensor que

    capte a reduo de Vcc (p.ex. 4,75V) e ative uma interrupo externa com prioridade alta para entrar

    no modo power down.

    10.4. PROGRAMAO DA EPROM (8751)

    Algumas verses da famlia MCS-51 possuem uma EPROM interna. A tabela da figura

    10.4 relaciona algumas destas CPUs.

  • CAPTULO X ECONOMIA DE ENERGIA E GRAVAO

    10 - 4 MICROCONTROLADORES (MCS-51)

    CPU TAMANHO TIPO VPP TEMPO

    8751 4 KB HMOS 21 V 4 min

    8751H 4 KB HMOS 21 V 4 min

    87C51 4 KB CHMOS 12,75 V 13 s

    8752B 8 KB HMOS 12,75 V 26 s

    Figura 10.4. Algumas verses do MCS-51 com EPROM interna.

    A CPU 8751H programada com 21 V, usando 50 ms para cada byte, o que d cerca de

    4 minutos (4K * 50 ms = 200 s). As CPUs 87C51 e 8752BH usam um modo de programao

    chamado de "Quick Pulse" que feito com 12,75 volts e 25 pulsos de 100 s para cada byte,

    resultando em um menor tempo de programao.

    Durante a programao existem 3 configuraes usadas:

    Programao Verificao Programao do bit de segurana

    A figura 10.5 ilustra a habilitao desses modos.

    MODO RST *PSEN ALE *EA P2.7 P2.6 P2.5 P2.4

    PROGRAMAO 1 0

    VPP 1 0 X X

    INIBIDO 1 0 1 X 1 0 X X

    VERIFICAO 1 0 1 1 0 0 X X

    SEGURANA 1 0

    VPP 1 1 X X

    Figura 10.5. Habilitao dos diversos modos de programao (X don't care). 10.4.1. Programao

    Para a programao necessrio que o oscilador esteja funcionando com uma

    freqncia de 4 a 6 MHz. A figura 10.6 ilustra a operao em modo programao.

  • CAPTULO X ECONOMIA DE ENERGIA E GRAVAO

    MICROCONTROLADORES (MCS-51) 10 - 5

    8

    8 8P1P2.0,1,2,3P2.4P2.5P2.6P2.7XTAL2

    XTAL1

    VSS

    VCCP0

    ALE

    *EARST

    *PSEN

    A0...A7A8...A11

    XX

    VILVIH

    4-6 MHz

    +5 V

    D0...D7

    50 mseg

    VPPVIH

    X - Don't care

    8751

    Figura 10.6. A CPU 8751 em modo programao.

    Normalmente EA mantido em nvel alto (VIH) at antes do pulso em ALE. Um pouco

    antes deste pulso, coloca-se EA = VPP e em seguida envia-se o pulso ALE; depois dos 50 ms faz-se

    EA = VIH.

    10.4.2. Verificao

    Se o bit de segurana no for programado, a memria EPROM pode ser lida com

    finalidades de verificao. Isso pode ser feito depois da programao de cada byte. A nica alterao

    que P2.7 colocado em nvel baixo para habilitar o buffer de sada por P0. Como P0 no possui

    pull up interno, um pull up externo de 10 K dever ser colocado em cada linha de dados. A figura 10.7 ilustra a operao do 8751 em modo verificao.

    8

    8 8P1P2.0,1,2,3P2.4P2.5P2.6P2.7XTAL2

    XTAL1

    VSS

    VCCP0

    ALE

    *EARST

    *PSEN

    A0...A7A8...A11

    XX

    VIL*ENABLE

    4-6 MHz

    +5 V

    D0...D7

    VIHVIH

    X - Don't care

    8751

    VIH

    usar pull up de 10K

    Figura 10.7. O CPU 8751 em modo verificao.

  • CAPTULO X ECONOMIA DE ENERGIA E GRAVAO

    10 - 6 MICROCONTROLADORES (MCS-51)

    10.4.3. Bit de Segurana

    O bit de segurana uma trava que, quando programada, impede a leitura da EPROM

    interna. Tambm impede que a CPU execute programas a partir de uma memria externa. Ao apagar

    a EPROM se apaga tambm o bit de segurana. A figura 10.8 ilustra a operao da CPU em modo

    programao do bit de segurana.

    8

    8 8P1P2.0,...,5

    P2.6P2.7XTAL2

    XTAL1

    VSS

    VCCP0

    ALE

    *EARST

    *PSEN

    VIHVIH

    4-6 MHz

    +5 V

    50 mseg

    VPPVIH

    X - Don't care

    8751XX X

    Figura 10.6. A CPU 8751 em modo programao do bit de segurana.

    Outros membros da famlia oferecem tcnicas mais sofisticadas de segurana. Por

    exemplo, o 8751BH oferece um array de 32 bytes onde se pode colocar chaves de criptografia. A

    cada endereo de EPROM que lido, os 5 bits de endereo so usados para acessar um dos 32

    bytes e com ele feito um *XOR (NXOR). Se estes 32 bytes esto apagados (em 1), a operao

    NXOR no produz nenhuma alterao.

    10.4.4. Apagamento (8751)

    O apagamento da memria EPROM do 8751 feito por luz ultravioleta de alta densidade

    (2537 Angstrons e 15 Watts/cm2) durante 20 a 30 minutos a uma distncia de 2,5 cm. A EPROM

    ficar com todos os bits em 1 aps o processo.

  • CAPTULO XI PLACA DE TESTES

    MICROCONTROLADORES (MCS-51) 11 - 1

    CAPTULO XI

    PLACA DE TESTES 11.1. INTRODUO

    Neste captulo descreve-se o projeto e a operao da Placa de Testes. No captulo XII

    esto os detalhes do software que gerencia est placa. A finalidade da placa permitir flexibilidade

    no ensino de microcontroladores. O esquema possibilita a utilizao de um computador para

    assemblar e linkar os programas e depois envi-os por porta serial Placa de Testes para que sejam

    executados.

    IBM PCPLACA

    DE TESTESCANAL SERIAL

    transmitir programas

    receber resultados

    Figura 11.1. Conexo da Placa de Testes com o IBM PC.

    O mais usual quando se trabalha em ensino de microcontroladores montar uma

    pequena placa onde so montados o microcontrolador, chaves para se interagir, leds para sinalizar

    alguns resultados e uma memria EPROM onde se gravam os programas. Isto tem uma sria

    desvantagem: apagar e gravar a EPROM cada vez que se muda o programa. Para cada correo

    que se faz, repete-se o processo de apagar e gravar. Alm de ser um processo lento, significa que se

    deve ter disponibilidade de um gravador de EPROM.

    Com a Placa de Testes no se pretende utilizar a EPROM pois os programas sero

    transmitidos atravs da porta serial do PC, escritos na memria de programa do 8031 e executados.

    A velocidade aumenta bastante pois os erros podem ser rapidamente corrigidos no PC e em seguida

    transmitidos para a placa.

    A placa tem dois modos de operao:

    modo Boot Serial modo Execuo

  • CAPTULO XI PLACA DE TESTES

    11 - 2 MICROCONTROLADORES (MCS-51)

    Para o funcionamento correto existem duas memrias: uma EPROM e uma RAM

    esttica (SRAM). Quando a placa est em modo Boot Serial, a EPROM trabalha como memria de

    programa e a memria esttica trabalha como memria de dados. Na EPROM est um programa

    muito simples que tem como funo receber o programa que chega pela porta serial e escrev-lo na

    RAM esttica. Ao terminar a transmisso do programa, o usurio pe a placa em modo Execuo e

    com isto a RAM esttica, que era memria de dados, se transforma em memria de programa e a

    EPROM desabilitada; com isto o programa recm transmitido executado. Se for preciso transmitir

    um novo programa, simplesmente basta colocar a placa em modo Boot Serial e transmitir o novo

    programa. H um programa escrito em C (TAR_PRU.C) que ajuda na comunicao com a Placa de

    Testes.

    Para que o circuito seja completo foram colocados recursos para gravar e ler os

    membros da famlia MCS-51 que tm EPROM interna: 8751H, 8751BH, 87C51, 87C51FA, 8752BH e

    outros modelos. H recursos para gravao usando o modo standard (pulsos de 50 ms) como

    tambm usando o modo "quick pulse programming" (pulsos de 100 s). A seguir h uma descrio detalhada de cada item da placa de testes. Os esquemas

    esto no final deste captulo e tm os nomes:

    esquema da CPU (cpu.sht)

    esquema da MEMRIA (memo.sht)

    esquema da SERIAL (serial.sht)

    esquema do GRAVADOR (grav.sht)

    A seguir so apresentados os quatro esquemas:

  • CA

    PT

    UL

    O X

    I

    PLA

    CA

    DE

    TE

    STE

    S

    MIC

    RO

    CO

    NT

    RO

    LA

    DO

    RE

    S (M

    CS-

    51)

    11

    - 3

    *RD

    MEM

    OR

    IAS

    AO

    ..A15

    *RD

    *WR

    *PSE

    N

    BO

    OT

    *BO

    OT

    AD

    0..A

    D7

    *RD

    RST

    P1.7

    GR

    AV

    AD

    OR

    A0.

    .A15

    *RD

    *WR

    RST

    P1.7

    P1.6

    AD

    0..A

    D7

    VC

    C R247

    KD

    11N

    4148

    R1

    82SW

    1

    SW P

    USH

    BU

    TTO

    N

    C1 10

    u

    1 2

    U5A74LS

    14P1

    .6*W

    R*W

    R

    *PSE

    N

    BO

    OT

    *BO

    OT

    A0

    A1

    A2

    AD

    0A

    D1

    AD

    2D

    0 3

    Q0

    2D

    1 4

    Q1

    5D

    2 7

    Q2

    6D

    3 8

    Q3

    9D

    4 1

    3Q

    412

    D5

    14

    Q5

    15D

    6 1

    7Q

    616

    D7

    18

    Q7

    19

    OC

    1G

    11

    U2

    74LS

    373

    AD

    0A

    D1

    AD

    2EA

    /VP

    31

    X1

    19

    X2

    18

    RES

    ET 9

    INT0

    12

    INT1

    13

    T0 1

    4T1

    15

    P1.0

    1P1

    .1 2

    P1.2

    3P1

    .3 4

    P1.4

    5P1

    .5 6

    P1.6

    7P1

    .7 8

    P0.0

    39P0

    .138

    P0.2

    37P0

    .336

    P0.4

    35P0

    .534

    P0.6

    33P0

    .732

    P2.0

    21P2

    .122

    P2.2

    23P2

    .324

    P2.4

    25P2

    .526

    P2.6

    27P2

    .728

    RD

    17W

    R16

    PSEN

    29A

    LE/P

    30TX

    D11

    RX

    D10

    U1

    8031

    C3

    30p

    RST

    C2 30

    p

    X1

    3575

    611H

    z

    *RST

    11 1

    0U

    5E

    74LS

    14

    VC

    C

    LED

    6

    Q_A

    M

    R9

    220

    VC

    C

    R4

    220

    R5

    220

    LED

    3 R_A

    M

    LED

    2 R_V

    MP1

    .0 3

    4U

    5B74

    LS14

    5 6

    U5C

    74LS

    14

    RST

    BO

    OT

    RST

    AD

    3A

    D4

    AD

    5A

    D6

    AD

    7 A8

    A9

    AD

    3A

    D4

    AD

    5A

    D6

    AD

    7

    ALE

    A3

    A4

    A5

    A6

    A7

    VC

    C

    TXD

    INTE

    RF-

    SER

    IAL

    TXD

    RX

    D

    VC

    C

    25V

    A10

    A11

    A12

    A13

    A14

    A15

    *RD

    *WR

    P1.0

    P1.1

    P1.2

    P1.3

    *IN

    T0*I

    NT1

    T0 T1

    RA

    M X

    LED

    1 (Q

    _VD

    )O

    N --

    > B

    OO

    T SE

    RIA

    L

    1R

    OM

    0R

    AM

    P1.1

    P1.2

    9 8

    U5D

    74LS

    14

    R6

    220

    LED

    4 R_V

    D

    SW2

    SW P

    USH

    BU

    TTO

    N

    SW3

    SW P

    USH

    BU

    TTO

    N

    P1.3

    *IN

    T1 T1

    OFF

    -->

    PRO

    G R

    AM

    (BO

    OT=

    1)

    (BO

    OT=

    0)

    VC

    C R9

    2K2

    P1.4

    P1.5

    P1.6

    P1.7

    LED

    1

    Q_V

    D

    PSEN

    TXD

    RX

    D

    BO

    OT

    RX

    D25

    V

    *BO

    OT

    R3

    220

    D 2

    Q 5

    CLK

    3

    Q 6

    P R4 C L 1U8A

    74LS

    74

    C4

    1u

    LED

    5

    Q_V

    M

    11

    10U

    5E 74LS

    14

    R7

    220

    *IN

    T0

    VC

    C

    SW4

    SW S

    PST

    R8

    8K2

    FEC

    HA

    DA

    AB

    ERTA

    S ST

    EP

    (Q_V

    M O

    FF)

    (Q_V

    M O

    N)

    RST

    VC

    C

    BO

    OT

    *BO

    OT

    Dat

    e: J

    anua

    ry 5

    , 199

    5Sh

    eet

    1

    of

    4

    Size

    Doc

    umen

    t Num

    ber

    REV

    A1

    1.0

    Title

    CPU

    .SH

    T (C

    IRC

    UIT

    O D

    E LA

    CPU

    )

    1MIC

    RO

    CO

    NTR

    OLA

    DO

    RES

    MC

    S-51

    RU

    N

    *PSE

    N*R

    D *

    WR

  • CA

    PT

    UL

    O X

    I

    PLA

    CA

    DE

    TE

    STE

    S

    11 -

    4

    MIC

    RO

    CO

    NT

    RO

    LA

    DO

    RE

    S (M

    CS-

    51)

    A0.

    .A15

    P1.7

    P1.6

    P1.6

    P1.7

    1 2 3

    U?A 74

    LS08

    456

    U14

    B

    74LS

    02

    A0

    A1

    A2

    A3

    AD

    0A

    D1

    AD

    2A

    D3

    A0

    8A

    1 7

    A2

    6A

    3 5

    A4

    4A

    5 3

    A6

    2A

    7 1

    A8

    23A

    922

    A10

    19

    CE

    18O

    E20

    WE

    21

    D0

    9D

    1 1

    0D

    2 1

    1D

    3 1

    3D

    4 1

    4D

    5 1

    5D

    6 1

    6D

    7 1

    7

    U4

    6116

    AD

    0A

    D1

    AD

    2A

    D3

    A0

    8A

    1 7

    A2

    6A

    3 5

    A4

    4A

    5 3

    A6

    2A

    7 1

    A8

    23

    A9

    22

    A10

    19

    A11

    21

    CE

    18

    OE/

    VPP

    20

    O0

    9O

    110

    O2

    11O

    313

    O4

    14O

    515

    O6

    16O

    717

    U3

    2732

    A0

    A1

    A2

    A3

    A4

    A5

    A6

    A7

    A8

    A9

    A10

    A11

    AD

    4A

    D5

    AD

    6A

    D7

    AD

    4A

    D5

    AD

    6A

    D7

    A4

    A5

    A6

    A7

    A8

    A9

    A10

    1 2 3

    U6A

    74LS

    32*B

    OO

    T

    *BO

    OT

    *BO

    OT

    *WR

    *PSE

    N

    BO

    OT

    PSEN

    *WR

    BO

    OT

    4 5 6

    U6B

    74LS

    32

    1 2 3

    U7A

    74LS

    08

    *BO

    OT

    PSEN

    AD

    0..A

    D7

    P1.7

    1

    *BO

    OT

    P1.6

    *WR

    /*R

    D A

    CC

    ION

    AN

    XX

    6116

    910 8

    U6C

    74LS

    32*R

    D

    *BO

    OT

    *RD

    6116

    8255

    373

    11 1

    0 10

    0 0 0 0 MO

    DO

    BO

    OT

    ==>

    *BO

    OT=

    0

    MO

    DO

    RU

    N =

    => *

    BO

    OT=

    1

    00

    PRO

    IBID

    O

    Dat

    e: J

    anua

    ry 4

    , 199

    5Sh

    eet

    2

    of

    6

    Size

    Doc

    umen

    t Num

    ber

    REV

    A1

    1.0

    Title

    MEM

    O.S

    HT

    (CIR

    CU

    ITO

    DE

    LAS

    MEM

    OR

    IAS)

    1MIC

    RO

    CO

    NTR

    OLA

    DO

    RES

    MC

    S-51

    (*PS

    EN)

    (*W

    R/*

    RD

    )

    (*W

    R/*

    RD

    )

    (*W

    R/*

    RD

    )

  • CA

    PT

    UL

    O X

    I

    PLA

    CA

    DE

    TE

    STE

    S

    MIC

    RO

    CO

    NT

    RO

    LA

    DO

    RE

    S (M

    CS-

    51)

    11

    - 5

    -12

    TXD

    (803

    1) (

    INTE

    RFA

    CE)

    PC

    _RX

    +5 0

    0

    5+

    PC_T

    X (

    INTE

    RFA

    CE)

    RX

    D(8

    031)

    12 -12

    +V

    CC Q

    1PN

    2907

    R10

    10K

    TXD

    R11

    4K9

    D10

    1N41

    48

    PC_R

    X(3

    )

    VC

    C

    R14

    10K

    C10

    100u

    D11

    1N41

    48

    PC_T

    X(2

    )

    R12

    100K

    R13

    10K

    D12

    1N41

    48

    Q2

    PN22

    22

    RX

    D

    PIN

    O 2

    TX

    -->

    PIN

    O 3

    RX

    5 bytes.

    Podem acontecer at 2 interrupes simultneas, o que consome at 10 bytes. Logo, h 60 bytes

  • CAPTULO II FAMLIA MCS-51

    2 - 8 MICROCONTROLADORES (MCS-51)

    disponveis para a pilha. Se para cada CALL so guardados PC, PSW, Acc e B (5 bytes), h

    disponibilidade de at 12 CALL aninhados.

    Se a pilha for trabalhar nos 128 UPPER, subtraindo os 10 bytes para as interrupes

    tm-se 118 bytes, o que resulta em 23 CALL aninhados (23 x 5 =115 bytes) e ainda sobram 80 bytes

    para as variveis nos 128 LOWER.

    Os bancos de registros so timos para guardar o contexto, principalmente no caso de

    interrupes. Estes so trocados com uma s instruo. Por exemplo, poder-se-ia usar:

    BK3 interrupo porta serial BK2 interrupo INT1 BK1 interrupo INT0 BK0 trabalho

    S pode haver um banco selecionado de cada vez mas todos os registros podem ser

    endereados atravs do endereo de seu byte.

    R0

    R1

    . . .

    R7

    0

    1

    7

    0

    8

    9

    F

    8

    10

    11

    17

    18

    19

    1F

    10H

    18H

    endereos

    128 LOWER

    Se o banco 0 est selecionado

    MOV A,R0MOV A,0 fazem o mesmo

    Se o banco 1 est selecionado

    MOV A,R3MOV A,0BH fazem o mesmo

    Assim, mesmo quando um banco noest selecionado, seus registros soacessveis pelo endereo

    R0

    R1

    . . .

    R7

    R0

    R1

    . . .

    R7

    R0

    R1

    . . .

    R7

    BANCO0

    BANCO1

    BANCO2

    BANCO3

    de seu byte.

    Figura 2.9. Endereo dos registros.

  • CAPTULO II FAMLIA MCS-51

    MICROCONTROLADORES (MCS-51) 2 - 9

    2.6. SFR - SPECIAL FUNCTION REGISTERS

    Dos 256 bytes da RAM interna que so endereados diretamente, 128 (80 FF) so

    reservados para os Registros de Funes Especiais (SFR). O 8051 apresenta um conjunto mnimo

    mas pode haver mais SFR em outros membros da MCS-51.

    Os SFR no devem ser confundidos com o chamado "128 UPPER", que uma rea de

    128 bytes (80H FFH) que s endereada indiretamente e s existe no 8051.

    A seguir apresentada uma lista com os SFRs do 8051 e seus endereos.

    BIT SMBOLO NOME ENDEREO

    * Acc Acumulador E0

    * B Registro B F0

    * PSW Palavra de Status (Program Status Word) D0

    SP Ponteiro da Pilha (Stack Pointer) 81

    DPH Ponteiro de Dados (high) (Data Pointer

    High) 83

    DPL Ponteiro de Dados (low) (Data Pointer

    Low) 82

    * P3 Porta 3 B0

    * P2 Porta 2 A0

    * P1 Porta 1 90

    * P0 Porta 0 80

    * IP Prioridade de Interrupo (Interrupt

    Priority) B8

    * IE Habilitao de Interrupo (Interrupt

    Enable) A8

    TMOD Timer/Counter Mode 89

    * TCON Timer/Counter Control 88

    TH1 Timer/Counter 1 (MSB) 8D

    TL1 Timer/Counter 1 (LSB) 8B

    TH0 Timer/Counter 0 (MSB) 8C

    TL0 Timer/Counter 0 (LSB) 8A

    * SCON Controle da Porta Serial (Serial Control) 98

    SBUF Buffer da Porta Serial (Serial Buffer) 99

    * PCON Controle de Energia (Power Control) 87

    Figura 2.10. Lista dos registros SFR.

  • CAPTULO II FAMLIA MCS-51

    2 - 10 MICROCONTROLADORES (MCS-51)

    A seguir apresentada uma breve descrio de cada registro:

    Acc Acumulador

    B Usado durante as operaes de multiplicao e diviso; nos demais casos pode ser usado como auxiliar.

    PSW Program Status Word ou Registro de Flags de Estado 7 6 5 4 3 2 1 0

    CY Ac F0 RS1 RS0 0V - P PSW.7 CY Carry Flag PSW.6 Ac Carry auxiliar (operao com BCD Binary Coded

    Decimal)

    PSW.5 F0 Flag 0, uso geral PSW.4 RS1 Selecionador de Banco (Range Selector), bit 1 PSW.3 RS0 Selecionador de Banco (Range Selector), bit 0

    RS1 RS0 BANCO SELEC. 0 0 Banco 0 0 1 Banco 1 1 0 Banco 2 1 1 Banco 3

    PSW.2 OV Overflow PSW.1 - Flag definvel pelo usurio PSW.0 P Paridade (mpar) P=1 quantidade mpar de 1s P=0 quantidade par de 1s

    SP Ponteiro da Pilha (Stack Pointer), incrementado antes de PUSH e CALL

    DPTR Ponteiro para memria de dados externa (Data Pointer). um registro de 16 bits formado por DPH e DPL

    P0, P1, P2, P3 Latchs das portas paralelas

    IP Prioridade das interrupes (Interrupt Priority)

    IE Habilitao das interrupes (Interrupt Enable)

  • CAPTULO II FAMLIA MCS-51

    MICROCONTROLADORES (MCS-51) 2 - 11

    TMOD Modo de operao dos Timers/Counters (Timer/Counter Mode)

    TCON Controle dos Timers/Counters (Timer/Counter Control)

    SCON Controle da porta serial (Serial Control)

    SBUF Dois registros, um para leitura e outro para escrita (Serial Buffer) Leitura receber o dado da porta serial Escrita enviar o dado para a porta serial

    PCON Controle de energia (Power Control); coloca no modo "Power Down" ou "Idle" 2.7. MAPA DA RAM INTERNA

    Aqui apresentado um mapa completo da RAM Interna da MCS-51. Os endereos dos

    bytes vo de 0H at FFH. Existem dois grupos de bytes:

    128 LOWER de 00H at 7FH. SFR de 80H at FFH.

    Observaes:

    1) Os registros ou endereos em negrito so endereveis bit a bit.

    2) Usam-se as letras "BK" para abreviar a palavra "banco".

    3) As clulas marcadas com "-" so inexistentes.

    4) A seqncia de endereos da direita para a esquerda e de baixo para cima.

  • CAPTULO II FAMLIA MCS-51

    2 - 12 MICROCONTROLADORES (MCS-51)

    S F R

    FFH - - - - - - - - F8H

    F7H - - - - - - - B F0H

    EFH - - - - - - - - E8H

    E7H - - - - - - - Acc E0H

    DFH - - - - - - - - D8H

    D7H - - - - - - - PSW D0H

    CFH - - - - - - - - C8H

    C7H - - - - - - - - C0H

    BFH - - - - - - - IP B8H

    B7H - - - - - - - P3 B0H

    AFH - - - - - - - IE A8H

    A7H - - - - - - - P2 A0H

    9FH - - - - - - SBUF SCON 98H

    97H - - - - - - - P1 90H

    8FH - - TH1 TH0 TL1 TL0 TMOD TCON 88H

    87H PCON - - - DPH DPL SP P0 80H 128 LOWER

    7FH 7FH 7EH ... 78H

    77H

    70H

    6FH

    68H

    67H

    60H

    5FH

    58H

    57H

    50H

    4FH

    48H

    47H

    40H

    3FH

    38H

    37H

    ... 31H 30H 30H

    2FH 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 28H

    27H 27H 26H 25H 24H 23H 22H 21H 20H 20H BK3 1FH R7 R6 R5 R4 R3 R2 R1 R0 18H BK2 17H R7 R6 R5 R4 R3 R2 R1 R0 10H BK1 0FH R7 R6 R5 R4 R3 R2 R1 R0 08H BK0 07H R7 R6 R5 R4 R3 R2 R1 R0 00H

    Figura 2.11. Mapa completo da RAM Interna.

  • CAPTULO II FAMLIA MCS-51

    MICROCONTROLADORES (MCS-51) 2 - 13

    2.8. MAPA DOS BITS

    A seguir, na figura 2.12 apresentado um mapa com todos os bits do MCS-51. So 256

    bits e, portanto, ocupam 32 bytes. Esto marcados o endereo dos bits, o nome e o byte ao qual

    pertencem. Existem duas classes de bits: os que pertencem ao 128 LOWER e tm os endereos de

    00H a 7FH e os que pertencem aos SFR e tm os endereos de 80H at FFH. Alguns bits no

    existem ou sero utilizados em futuras verses e esto marcados com "-".

    Como ser abordado mais adiante, os bits podem ser endereados de at 4 formas

    diferentes. Como exemplo, uma instruo para habilitar a recepo serial (setar o bit REN), poderia

    ser:

    1) SETB REN

    2) SETB SCON.4

    3) SETB 98H.4

    4) SETB 9CH

  • CAPTULO II FAMLIA MCS-51

    2 - 14 MICROCONTROLADORES (MCS-51)

    MAPA DOS 256 BITS

    END

    BIT

    BIT

    7

    BIT

    6

    BIT

    5

    BIT

    4

    BIT

    3

    BIT

    2

    BIT

    1

    BIT

    0

    END

    BIT

    END

    BYTE

    NOM

    BYTE FFH - - - - - - - - F8H F8H F7H B.7 B.6 B.5 B.4 B.3 B.2 B.1 B.0 F0H F0H B EFH - - - - - - - - E8H E8H E7H Acc.7 Acc.6 Acc.5 Acc.4 Acc.3 Acc.2 Acc.1 Acc.0 E0H E0H Acc DFH - - - - - - - - D8H D8H - D7H CY AC F0 RS1 RS0 OV P D0H D0H PSW CFH - - - - - - - - C8H C8H - C7H - - - - - - - - C0H C0H - BFH - - - PS PT1 PX1 PT0 PX0 B8H B8H IP B7H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 B0H B0H P3 AFH EA - - ES ET1 EX1 ET0 EX0 A8H A8H IE A7H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A0H A0H P2 9FH SM0 SM1 SM2 REN TB8 RB8 TI RI 98H 98H SCON 97H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 90H 90H P1 8FH TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 88H 88H TCON 87H P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 80H 80H P0 7FH 7FH 7EH 7DH 7CH ... 78H 2FH 77H 70H 2EH 6FH 68H 2DH 67H 60H 2CH 5FH 58H 2BH 57H 50H 2AH 4FH 48H 29H 47H 40H 28H 3FH 38H 27H 37H 30H 26H 2FH 28H 25H 27H 20H 24H 1FH 18H 23H 17H 10H 22H 0FH ... 0BH 0AH 09H 08H 08H 21H 07H 07H 06H 05H 04H 03H 02H 01H 00H 00H 20H

    Figura 2.12. Mapa completo dos bits do 8051.

  • CAPTULO III PINAGEM E TEMPORIZAO

    MICROCONTROLADORES (MCS-51) 3 - 1

    CAPTULO III

    PINAGEM E TEMPORIZAO 3.1. INTRODUO

    O encapsulamento dos microcontroladores varia muito, de acordo com as funes

    desempenhadas. Basicamente so usados 3 tipos de encapsulamento :

    DIP Dual in Pack, QFP Quad Flat Pack, PLCC Leadless Chip Carrier.

    Os 8051 e 8052 esto disponveis em 40 DIP, 44 PLCC e 44 QFP. Alguns exemplos:

    8031 (mais simples) DIP40 8051GB (AD + timer, etc) 100 QFP 8051SL (Keyboard Controller) 100 QFP 83152 (Universal Com. Contr.) DIP48 E PLCC68

    3.2. DESCRIO DA PINAGEM

    Estudar-se- a pinagem do 8051 no encapsulamento DIP40 (HMOS) 8051 AH (40) Vcc Alimentao de +5V. Consumo: Icc = 125 mA, com todas as sadas desconectadas. (20) Vss Terra. (32-39) P0 Porta 0 (AD0...AD7). Alm de porta paralela, est multiplexada com o byte menos

    significativo (LSB) dos endereos e dos dados. Admite 8 cargas LS TTL.

    (21-28) P2 Porta 2 (A8...A15). Alm de porta paralela, est multiplexada com o byte mais significativo (MSB) dos endereos. Admite 4 cargas LS TTL.

    (1-8) P1 Porta 1. Admite 4 cargas LS TTL. (10-17) P3 Porta 3. Compartilhada com uma srie de recursos Admite 4 cargas LS TTL.

    P3.0 RXD, entrada serial P3.1 TXD, sada serial P3.2 *INT0, interrupo externa 0 P3.3 *INT1, interrupo externa 1 P3.4 T0, entrada para o timer 0 (contador neste caso) P3.5 T1, entrada para o timer 1 (contador neste caso) P3.6 *WR, escrita na memria de dados externa

  • CAPTULO III PINAGEM E TEMPORIZAO

    3 - 2 MICROCONTROLADORES (MCS-51)

    P3.7 *RD, leitura na memria de dados externa (9) RST Reset. Com o oscilador funcionando, deve ser mantido um nvel alto durante 24

    perodos.

    (30) ALE/PROG Address Latch Enable. Pulso para acionar o latch que captura o LSB do endereo (com sua borda ascendente). Ele emitido razo de 1/6 da

    freqncia do oscilador e pode ser usado para acionar entradas externas. Um

    ALE omitido durante o acesso Memria de Dados Externa. Tambm usada

    na gravao da ROM interna.

    (29) *PSEN Program Store Enable. Pulso de leitura para a Memria de Programa Externa. Quando o programa est sendo executado na memria de programa externa ele aparece

    como 1/6 da freqncia de clock. Quando h acesso memria de dados

    externa, 2 PSEN so perdidos.

    (31) *EA/VPP External Access Enable. Informa CPU se o programa est na Memria de Programa Externa ou na ROM Interna. Tambm usado para gravao da ROM

    Interna.

    *EA = 1 (Vcc) (0000H - 0FFFH) ROM Interna (1000H - FFFFH) Memria de Programa Externa *EA = 0 (Vss) (0000H - FFFFH) Memria de Programa Externa (19) XTAL1 Entrada do amplificador inversor do oscilador interno. Deve ser conectado terra se

    for usado um clock externo (HMOS) ou ao clock externo (CHMOS).

    (20) XTAL2 Sada do amplificador inversor do oscilador interno. Se for usado clock externo, serve como entrada para o mesmo (HMOS) ou no conectado (CHMOS).

    P3.6P3.7

    P3.4P3.5

    P3.2P3.3

    P3.0P3.1

    RST

    P1.6P1.7

    P1.4P1.5

    P1.2P1.3

    P1.0P1.1

    XTAL2XTAL1Vss

    123456789

    1011121314151617181920

    222324252627282930313233

    21

    34353637383940Vcc

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

    *EA / VPPALE / PROG

    *PSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0

    RXDTXD

    *INT0*INT1

    T0T1

    *WR*RD

    A8A9A10A11A12A13A14A15

    AD0AD1AD2AD3AD4AD5AD6AD7

    8051

    Figura 3.1. Pinagem do 8051.

  • CAPTULO III PINAGEM E TEMPORIZAO

    MICROCONTROLADORES (MCS-51) 3 - 3

    OBS: A figura a seguir ilustra as possveis ligaes dos pinos XTAL1 e XTAL2:

    3.3. DIAGRAMAS DE TEMPO

    Aqui sero abordados alguns diagramas de tempo, os quais foram simplificados em

    beneficio da compreenso. Eles no mostraro os tempos de subida e descida dos pulsos. Os

    retardos de propagao entre o CLK e os demais sinais foram omitidos. Esses detalhes devem ser

    consultados no "datasheet" da CPU a ser usada.

  • CAPTULO III PINAGEM E TEMPORIZAO

    3 - 4 MICROCONTROLADORES (MCS-51)

    EST 2

    P1 P2

    EST 1

    P1 P2

    EST 3

    P1 P2

    EST 4

    P1 P2

    EST 5

    P1 P2

    EST 6

    P1 P2

    EST 1

    P1 P2

    EST 2

    P1 P2

    DATAIN PCL OUT

    DATAIN

    DATAINPCL OUT PCL OUT

    PCH OUT PCH OUT PCH OUT

    XTAL

    ALE

    *PSEN

    Porta P0

    Porta P2

    PC -- Program CounterPCL -- LSB do Program CounterPCH -- MSB do Program Counter

    (AD0-7)

    (A8-15)

    Figura 3.2. Fetch de programa, Memria Externa.

    Cada perodo de Clock recebe o nome de Fase (Phase). Cada estado composto por 2

    perodos de Clock ou 2 fases, denominadas P1 e P2. Observar que EST1=EST4, EST2=EST5, etc. O

    Program Counter (PC) composto por dois registros de 8 bits: PC = PCH + PCL.

    As freqncias de ALE e *PSEN so iguais a 1/6 da freqncia do cristal, mas o "Duty

    Cycle (DC) diferente para cada uma. ALE tem o DC=33% (1/3) enquanto que *PSEN tem o

    DC=50% (1/2).

    f(ALE) = f(*PSEN) = f(XTAL)/6

    DC(ALE) = 33% ==> 33% alto e 67% baixo

    DC(*PSEN) = 50% ==> 50% alto e 50% baixo

    EST 5

    P1 P2

    EST 4

    P1 P2

    EST 6

    P1 P2

    EST 1

    P1 P2

    EST 2

    P1 P2

    EST 3

    P1 P2

    EST 4

    P1 P2

    EST 5

    P1 P2

    DATAIN PCL se Prog Ext

    XTAL

    ALE

    *RD

    Porta P0

    Porta P2

    DPL ou Ri

    PCH ou P2 SFR DPH ou P2

    FLOAT

    PCH ou P2 SFR

    (AD0-7)

    (A8-15)

    Figura 3.3. Leitura na Memria de Dados Externa.

  • CAPTULO III PINAGEM E TEMPORIZAO

    MICROCONTROLADORES (MCS-51) 3 - 5

    EST 5

    P1 P2

    EST 4

    P1 P2

    EST 6

    P1 P2

    EST 1

    P1 P2

    EST 2

    P1 P2

    EST 3

    P1 P2

    EST 4

    P1 P2

    EST 5

    P1 P2

    PCL se Prog Ext

    XTAL

    ALE

    *WR

    Porta P0

    Porta P2

    DPL ou Ri

    DPH ou P2

    DATA OUT

    PCH ou P2 SFR PCH ou P2 SFR

    (AD0-7)

    (A8-15)

    Figura 3.4. Escrita na Memria de Dados Externa.

    A leitura e a escrita na Memria de Dados Externa usam o dobro de tempo quando so

    comparadas com um acesso memria de programa. Notar que f(ALE) no tem f(XTAL)/6 pela

    ausncia de um pulso de ALE e que no existe *PSEN. Perde-se um pulso de ALE e dois pulsos de

    *PSEN. Ento,

    f(ALE) = f(*PSEN) = f(XTAL)/6 mas, quando h acessos Memria de Dados Externa,

    se perdem 1 pulso de ALE e 2 pulsos de *PSEN.

    Nos acessos Memria de Dados Externa usado um endereo de 16 bits. Esse

    endereo pode ser formado por um registro ponteiro de dados de 16 bits, DPTR (DPTR = DPH +

    DPL) ou por R0 ou R1 e o contedo do SFR P2.

    MSB LSB

    DPTR DPH e DPL P2 e Ri SFR P2 e R0 ou R1

    Exemplos:

    leitura escrita

    Com DPTR MOVX A,@DPTR ou MOVX @DPTR,A Com P2 e Ri MOVX A,@Ri ou MOVX @Ri,A (onde i=0 ou i=1)

    Notar que quando se usa DPTR para enderear a memria externa, os 16 bits dos

    endereos so emitidos por P0 e P2 mas ao se usar Ri, os 16 bits so formados pelo contedo de Ri

    (LSB) e o que estava no SFR P2, ou seja, no se altera o contedo de P2.

  • CAPTULO III PINAGEM E TEMPORIZAO

    3 - 6 MICROCONTROLADORES (MCS-51)

    EST 5

    P1 P2

    EST 4

    P1 P2

    EST 6

    P1 P2

    EST 1

    P1 P2

    EST 2

    P1 P2

    EST 3

    P1 P2

    EST 4

    P1 P2

    EST 5

    P1 P2

    XTAL

    P2,P3RSTP0

    P1 P2,P3RSTP0

    P1amostragem das entradas

    DADO ANTIGO DADO NOVO

    MOV PORTA,DADO

    amostragem da entrada RXD

    amostragem da entrada RXD

    SHIFT CLOCKPORTA SERIALMODO 0

    Figura 3.5. Operao das portas.

    3.4. RESET

    A entrada de Reset o pino RST que possui um Schmitt Triger na entrada. O Reset

    realizado quando este pino se mantm em nvel alto pelo menos por 2 ciclos de mquina (24 clocks)

    enquanto o oscilador estiver funcionando. A CPU responde gerando um reset interno de acordo com

    a temporizao que indicada na figura 3.6.

    E3 E4E1 E2 E5 E6E3 E4E1 E2 E5 E6E5 E6 E3 E4E1 E2

    RST

    ALE

    *PSEN

    Porta P0

    RESET INTERNO

    INSTRUC.END.

    11 PERODOS DE CLOCK 19 PERODOS DE CLOCK

    Amostragem do RESET

    E5, P2 12 PERODOS DE CLOCK

    END.

    END.

    END.

    END.

    INSTRUC. INSTRUC. INSTRUC. INSTRUC.

    19 PERODOS DE CLOCK

    Figura 3.6. Temporizao do RESET.

  • CAPTULO III PINAGEM E TEMPORIZAO

    MICROCONTROLADORES (MCS-51) 3 - 7

    A entrada RST assncrona e amostrada durante a fase 2 (P2) do estado 5 (E5).

    Depois do RST ser amostrado como alto, ainda se mantm atividade nos pinos durante 19 perodos

    de clock. Os pinos s cessaro a atividade 19 a 31 perodos de clock depois de RST ser ativada.

    Aps o RST, os pinos ALE e PSEN vo para 1. Depois de RST=0 (desativada), so

    necessrios 1 a 2 perodos de clock para que ALE e PSEN comecem. Por isso, outros dispositivos

    externos no podem ser sincronizados com o tempo interno do Reset do 8051.

    A RAM Interna no afetada pelo reset. Depois do RESET, a CPU inicializada com os

    seguintes dados:

    SP = 7 ESTADO DOS REGISTROS

    SBUF = ? APS O RESET

    P0,P1,P2,P3 = FFH

    OUTROS SFR = 0

    Uma maneira fcil de realizar o "Power on Reset" e o "Reset Manual" mostrada na

    figura 3.7.

    8051

    RESET

    VCC

    C 10 uF

    R 8,2 K

    Figura 3.7. Circuito para RESET do 8051 (HMOS).

    O esquema da figura 3.7 vlido para HMOS. Nas famlias CHMOS o resistor 8,2 K pode ser omitido pois h um "pull-down" interno; alm disso, o capacitor deve ser reduzido a 1 F.

    Quando energizado, o circuito (RC) assegura no pino RST um nvel alto durante uma

    quantidade de tempo que depende dos valores de R e C. Para ter um "Power On Reset" seguro

    necessrio que o pino RESET seja mantido em alto durante o tempo necessrio para que o oscilador

    inicie e a isto se adicionam os 24 perodos de clock para o RESET efetivo.

    Tempos que sero computados no power up:

    Vcc se estabiliza 10ms Partida do oscilador 1ms (10MHz) 10ms (1MHz)

  • CAPTULO III PINAGEM E TEMPORIZAO

    3 - 8 MICROCONTROLADORES (MCS-51)

    Com este circuito de Reset Vcc cai rapidamente a 0. Com isto, a tenso do pino RST

    pode cair momentaneamente abaixo de 0 mas no causa danos. Com a chave em paralelo com um

    capacitor pode-se gerar o RESET manual. Para que se possa projetar um RESET eficiente e preciso

    necessrio analisar o circuito RC de primeira ordem.

    Vcc

    C10 uF

    R8,2 K

    VR

    V

    tT

    V

    R

    R

    Figura 3.8. Anlise do circuito para RESET do 8051.

    Da anlise do circuito se pode escrever a equao:

    V V eR CCt / RC=

    A pergunta, quando se calcula um circuito de RESET, : Qual RC me garante que o

    RESET fique ativado por um tempo maior que o especificado ? Para que se possa responder a esta

    pergunta necessrio saber qual a tenso de comutao do Schmitt-Trigger do 8051 e qual o

    modelo eltrico da entrada RESET (ou seja, quanta corrente consome). Essas informaes no esto

    facilmente disponveis nem nos Data Sheets.

    Exemplo: com o 8051 usando cristal de 1 MHz:

    10 ms estabilizar Vcc 10 ms partida do oscilador 24 s necessrios para o Reset (24 perodos de clock) 20024 s Tempo do Reset = 20,024 ms =(aprox.) 20 ms

    Supondo que o Schmitt Trigger comute a 3,5 V (na transio de alto para baixo; valores

    abaixo de 3,5 V na entrada geram 0 na sada) e usando os valores de R e C da figura 3.7, calcula-se.

    ln(3,5) - ln(5) = -(t/RC)

    t = RC ( ln(3,5) - ln(5) ) = 29 ms > 20 ms OK !

    Pelo que parece, o circuito de RESET sugerido deve funcionar.

  • CAPTULO III PINAGEM E TEMPORIZAO

    MICROCONTROLADORES (MCS-51) 3 - 9

    Apresenta-se um circuito alternativo que, apesar do maior gasto de componentes,

    permite o conhecimento da tenso do Schmitt Trigger, saber seu consumo e calcular precisamente o

    circuito de RESET. Neste circuito o diodo usado para garantir uma rpida descarga do capacitor

    quando se desliga a fonte de alimentao.

    8051

    RESET

    VCC

    R8,2K

    1 2

    74LS14

    C10 uF

    R10 SCHMITT

    TRIGGER

    Evita a descarga

    brusca do capacitor

    RESET

    DIODO

    MANUAL

    Figura 3.9. Circuito de RESET com Schmitt-Trigger TTL.

  • CAPTULO IV CONJUNTO DE INSTRUES

    MICROCONTROLADORES (MCS-51) 4 - 1

    CAPTULO 4

    CONJUNTO DE INSTRUES 4.1. INTRODUO

    Todos os membros da famlia MCS-51 executam o mesmo conjunto de instrues. As

    instrues so otimizadas para aplicaes de controle de 8 bits. Elas permitem um rpido

    endereamento da RAM interna, facilitando operaes byte a byte em estruturas de dados pequenas.

    O conjunto de instrues tambm oferece um grande suporte para manipulaes e operaes de

    variveis de um bit, facilitando os sistemas lgicos que necessitam de operaes booleanas.

    A seguir sero mostradas todas as instrues da famlia MCS-51. Para uma descrio

    mais detalhada dessas instrues deve-se consultar o manual do MCS-51. (Aqui se supe que o

    leitor tenha uma pequena experincia em programao assembly).

    Para ajudar os programadores, os programas montadores para o MCS-51 tm os

    endereos dos SFR e dos bits previamente declarados. como se em todo programa j existisse as

    pseudo-instrues:

    Acc EQU 0E0H

    B EQU 0F0H

    PSW EQU 0D0H

    etc.

    Para a exposio das instrues, utilizar-se-o as seguintes abreviaturas:

    Rn qualquer registro R0, R1, ...,R7 direto, dir endereo da RAM interna (8 bits) @Ri @R0 ou @R1, usado para endereamento indireto #data, #dt constante de 8 bits (byte) #data16, #dt16 constante de 16 bits adr16 endereo de 16 bits (enderea 64 KB) adr11 endereo de 11 bits (enderea 2 KB) rel deslocamento relativo (complemento a 2: -128 a +127) bit endereo de um bit da RAM interna A acumulador (registro) Acc endereo do acumulador.

  • CAPTULO IV CONJUNTO DE INSTRUES

    4 - 2 MICROCONTROLADORES (MCS-51)

    4.2. MODOS DE ENDEREAMENTO

    De acordo com o "Data Sheet" do MCS-51, existem 6 modos de endereamento com a

    seguinte nomenclatura :

    Imediato Direto Indireto Registrador Registrador Especfico Indexado

    Imediato O valor da constante colocado no opcode. MOV A, #100

    Carrega 100 no acumulador (Acc=100). O byte 100 um dado imediato. Deve-se notar

    a presena do sinal # que indica operao imediata.

    Direto O operando especifica um endereo de 8 bits da RAM interna. MOV A, 20

    Transfere para o acumulador o contedo do endereo 20 da RAM Interna. Todo

    endereamento direto usa a RAM Interna.

    Indireto Aqui se especifica um registro onde est o endereo do operando. S pode ser usado para endereamento indireto: R0, R1 ou DPTR.

    MOV A, @R0

    Coloca no acumulador o contedo do endereo que est em R0

    Registro No cdigo de operao da instruo existe um campo de 3 bits (pois so 8 registradores, de R0 a R7) onde especificado o registro a ser utilizado. Essa forma eficiente e

    evita utilizar um byte adicional para indicar o registro.

    MOV A,R0

    Coloca no acumulador o contedo de R0. uma instruo de um s byte.

    Registro Especifico Algumas operaes so especificas para certos registros. Por exemplo, algumas instrues sempre operam com Acc ou DPTR e no necessitam de espao no opcode para

    especificar isto.

    MOVX A,@DPTR

    Esta uma instruo para leitura da Memria de Dados Externa. Coloca no

    acumulador o contedo do endereo da RAM Externa que est no DPTR. Como sempre so usados

  • CAPTULO IV CONJUNTO DE INSTRUES

    MICROCONTROLADORES (MCS-51) 4 - 3

    Acc e DPTR, no necessrio especific-los, o que faz com que a instruo empregue apenas 1

    byte.

    Indexado O endereo do operando formado pela soma de um endereo base com um registro de indexao. Somente a Memria de Programa pode ser endereada deste modo.

    MOVC A,@A+DPTR

    A ndice, DPTR endereo base. A soma do DPTR com o acumulador forma um endereo da Memria de Programa e o

    contedo deste endereo transferido para o acumulador. Essa instruo tima para "look up

    table".

    Observao: tambm existe um desvio indexado 4.3. SOBRE AS INSTRUES

    Agora sero mostradas as instrues do MCS-51. Estas no sero muito detalhadas.

    Em cada instruo so apresentados o nmero de bytes do opcode e o nmero de ciclos de mquina

    (MC=12 clocks) necessrios para sua execuo.

    Existem 111 instrues na famlia MCS-51. Elas esto distribudas da seguinte forma:

    Aritmticas 24 22% Lgicas 25 23% Transferncia de dados 28 25% Booleanas 17 15% Desvios 17 15%

    4.4. INSTRUES ARITMTICAS

    4.4.1. Soma de 8 Bits:

    O acumulador um dos operandos e tambm armazena o resultado. Existem 4

    instrues de soma: bytes MC CY AC OV Rn 1 1 ADD A, direto 2 1 @Ri 1 1 #data 2 1

    X X X

  • CAPTULO IV CONJUNTO DE INSTRUES

    4 - 4 MICROCONTROLADORES (MCS-51)

    4.4.1. Soma de 8 Bits com Carry:

    O acumulador um dos operandos e tambm armazena o resultado. So 4 instrues

    de soma com carry:

    bytes MC CY AC OV Rn 1 1 ADDC A, direto 2 1 @Ri 1 1 #data 2 1

    X X X

    4.4.3. Subtrao de 8 Bits com Borrow:

    O acumulador um dos operandos e tambm recebe o resultado. Deve-se lembrar que

    a subtrao sempre usa o borrow. So 4 instrues de subtrao com borrow:

    bytes MC CY AC OV Rn 1 1 SUBB A, direto 2 1 @Ri 1 1 #data 2 1

    X X X

    4.4.4. Incremento de 8 Bits:

    Existem 4 instrues para incremento de 8 bits :

    bytes MC CY AC OV A 1 1 INC Rn 1 1 direto 2 1 @Ri 1 1

    - - -

    4.4.5. Decremento de 8 Bits:

    H 4 instrues de decremento de 8 bits e muito se assemelham s instrues de

    incremento:

  • CAPTULO IV CONJUNTO DE INSTRUES

    MICROCONTROLADORES (MCS-51) 4 - 5

    4.4.6. Incremento de 16 Bits:

    Existe apenas um incremento de 16 bits (no h decrementos de 16 bits) :

    bytes MC CY AC OV INC DPTR 1 2 - - -

    4.4.7. Multiplicao e Diviso de 8 Bits:

    Na multiplicao e na diviso sempre so usados os registros A e B. Estas so as

    instrues que necessitam mais tempo de execuo.

    Multiplicao: A * B Resultado: A=LSB B=MSB Diviso: A / B Resultado: A=quociente B=resto

    bytes MC CY AC OV MUL AB 0 - X

    DIV AB 1 4 0 X 0

    4.4.8. Ajuste Decimal:

    Esta instruo existe para permitir operaes com representao BCD. O ajuste valido

    apenas para as somas (ADD e ADDC). Existe uma nica instruo:

    bytes MC CY AC OV DA A 1 1 X X -

    OBS 1: DA A no pode simplesmente converter um nmero hexadecimal no Acumulador para BCD

    nem se aplica subtrao.

    Exemplo: A = 56H (0101 0110B) representando 56 decimal

    R3 = 67H (0110 0111B) representando 67 decimal

    Carry = 1

    bytes MC CY AC OV A 1 1 DEC Rn 1 1 direto 2 1 @Ri 1 1

    - - -

  • CAPTULO IV CONJUNTO DE INSTRUES

    4 - 6 MICROCONTROLADORES (MCS-51)

    ADDC A, R3 A = 0BEH e C (carry) e AC (auxiliar carry) iguais a 0 DA A A = 24H (= 0010 0100B) e Carry=1

    Algoritmo de ajuste da soma pela instruo DAA:

    1- Se os bits 3-0 de A forem maiores que 9 ou se AC=1 6 somado a A para gerar o dgito BCD menos significativo. Esta soma interna pode ligar o carry se o carry da nibble menos

    significativa propagar por toda a nibble mais significativa mas no apagar o carry.

    2- Se o carry est agora em 1 ou se os bits 7-4 excederem 9, esta nibble incrementada de 6

    para produzir o dgito BCD mais significativo. O carry indicar se a soma maior do que 99.

    O OV (overflow) no afetado.

    Na realidade, soma-se 00H, 06H, 60H ou 66H conforme o valor inicial de A e PSW.

    OBS 2: Nmeros BCD podem ser incrementados somando 01H ou decrementados somando 99H e

    usando o ajuste decimal DA A.

    Exemplo: Se A = 30H (representando 30 decimal), as instrues

    ADD A,#99H

    DA A

    resultaro em A = 29H (representando 29 decimal) e C (Carry) = 1 pois 30 + 29 = 129

    4.5 INSTRUES LGICAS

    As instrues lgicas so as que realizam as operaes de AND, OR e XOR. Deve-se

    notar que essas instrues so muito semelhantes. O resultado da operao no obrigatoriamente

    deve ser colocado no acumulador; tambm se pode indicar um endereo para receber o resultado.

    4.5.1. AND de 8 Bits:

    Usa-se o smbolo ANL (Logical AND) para representar esta instruo. Existem 6

    instrues reunidas em dois grupos de acordo com o destino do resultado:

    bytes MC CY AC OV Rn 1 1 ANL A, direto 2 1 @Ri 1 1 #data 2 1 ANL direto A 2 1 #data 3 2

    - - -

  • CAPTULO IV CONJUNTO DE INSTRUES

    MICROCONTROLADORES (MCS-51) 4 - 7

    4.5.2. OR de 8 Bits:

    Emprega-se o smbolo ORL (Logical OR) para representar esta instruo. Existem 6

    instrues, reunidas em dois grupos de acordo com o destino do resultado:

    bytes MC CY AC OV Rn 1 1 ORL A, direto 2 1 @Ri 1 1 #data 2 1 ORL direto A 2 1 #data 3 2

    - - -

    4.5.3. XOR de 8 Bits:

    Emprega-se o smbolo XRL (Logical Exclusive OR) para representar esta instruo.

    Existem 6 instrues, reunidas em dois grupos de acordo com o destino do resultado:

    bytes MC CY AC OV Rn 1 1 XRL A, direto 2 1 @Ri 1 1 #data 2 1 XRL direto A 2 1 #data 3 2

    - - -

    4.5.4. Operaes Lgicas com o Acumulador:

    Pode-se inicializar, complementar ou rodar o acumulador. As rotaes podem se realizar

    para a direita ou para a esquerda utilizando ou no o bit de carry. Tambm se pode trocar de posio

    as nibbles do acumulador (uma nibble formada por 4 bits, ou seja, um byte possui 2 nibbles). Todas

    estas instrues so classificadas como de registro especfico pois sempre operam com o

    acumulador (no utilizam bytes de opcode para especificar isto). As instrues so:

    CLR A inicializa com zero o acumulador CPL A complementa de 1 o acumulador (inverte os bits) RL A roda o acumulador esquerda RLC A roda o acumulador esquerda com carry RR A roda o acumulador direita RRC A roda o acumulador direita com carry SWAP A intercambiar as nibbles do acumulador

  • CAPTULO IV CONJUNTO DE INSTRUES

    4 - 8 MICROCONTROLADORES (MCS-51)

    bytes MC CY AC OV CLR - - -

    CPL - - -

    RL - - -

    RLC X - -

    RR - - -

    RRC X - -

    SWAP

    A 1 1

    - - -

    Acc

    Acc

    C Acc

    Acc

    C

    xxxx zzzz

    RL A

    RLC A RRC A

    RR A

    Acc

    SWAP A

    Figura 4.1. Grfico das rotaes e do swap.

    4.6. INSTRUES DE TRANSFERNCIA DE DADOS

    Existem 3 tipos de instrues de transferncia de dados:

    as que trabalham com a RAM Interna (22), as que trabalham com a Memria de Dados Externa (4) e as que trabalham com a Memria de Programa (2). Em geral, as transferncias de dados operam na RAM Interna, a menos que se indique o

    contrrio.

    4.6.1. Transferncia de Dados:

    Todas as operaes se realizam na RAM Interna. Existem quase todas as

    transferncias que se possa imaginar.

  • CAPTULO IV CONJUNTO DE INSTRUES

    MICROCONTROLADORES (MCS-51) 4 - 9

    bytes MC CY AC OV Rn 1 1 MOV A, direto 2 1 @Ri 1 1 #data 2 1 A 1 1 MOV Rn, direto 2 2 #data 2 1 A 2 1 Rn 2 2 MOV direto, direto 3 2 @Ri 2 2 #data 3 2 A 1 1 MOV @Ri direto 2 2 #data 2 1

    - - -

    Pode-se pensar que existem todas as combinaes possveis entre A, Rn, direto, @Ri e

    #data, mas existem algumas excees:

    Todas as combinaes possveis: A A

    Rn Rn

    MOV direto , Direto

    @Ri @Ri

    #data

    Instrues que no existem: A , A

    Rn , Rn

    MOV Rn , @Ri

    @Ri , @Ri

    @Ri , Rn

  • CAPTULO IV CONJUNTO DE INSTRUES

    4 - 10 MICROCONTROLADORES (MCS-51)

    4.6.2. Permutao de Bytes:

    Toda permutao opera na RAM Interna. Estas instrues so muito teis pois permitem

    a troca de contedo entre dois registros sem a necessidade de usar um outro auxiliar. Existem 3

    permutaes e todas usam o acumulador como um dos operandos.

    bytes MC CY AC OV Rn 1 1 XCH A, direto 2 1 @Ri 1 1

    - - -

    4.6.3. Permutao de Nibbles:

    Existe s uma instruo e esta opera com a RAM Interna. Nesta instruo sempre se

    usa o acumulador e um operando (por endereamento indireto). til para trabalhar com BCD e em

    converses de hexadecimal para cdigo ASCII.

    bytes MC CY AC OV XCHD A,@Ri 1 1 - - -

    Acc @Riaaaa bbbb cccc dddd

    Figura 4.2. Grfico da permutao de nibbles.

    4.6.4. Operaes com a Pilha:

    Como j foi estudada, a pilha opera exclusivamente com a RAM Interna. Existem apenas

    duas instrues de pilha e trabalham com endereamento direto. Quer dizer, sempre usam dois bytes

    para o opcode e no se pode usar a instruo PUSH A, mas sim PUSH Acc. Deve-se lembrar que

    Acc o label para o endereo do acumulador. Na instruo PUSH, primeiro incrementa-se o ponteiro

    (SP) e em seguida escreve-se a informao. Exemplo: se SP=7, PUSH Acc colocar o contedo do

    acumulador no endereo 8. A instruo POP trabalha ao contrrio.

    bytes MC CY AC OV PUSH direto

    POP direto 2 2 - - -

  • CAPTULO IV CONJUNTO DE INSTRUES

    MICROCONTROLADORES (MCS-51) 4 - 11

    4.6.5. Transferncias de Dados com a Memria de Dados Externa:

    Existem instrues para leitura e escrita, as quais sempre usam o acumulador como

    fonte ou destino do dado. possvel fazer dois acessos, um com endereamento de 16 bits usando o

    DPTR e outro com endereamento de 8 bits usando @Ri (@R0 ou @R1). Deve-se lembrar que

    quando se usa endereamento de 8 bits, o contedo de P2 permanece inalterado e representa os 8

    bits mais significativos do endereo. A instruo usada MOVX, onde X indica que se trabalhar com

    Memria de Dados Externa.

    LEITURA bytes MC CY AC OV MOVX A, @Ri DPTR

    1 2 - - -

    ESCRITA bytes MC CY AC OV MOVX @Ri,

    MOVX @DPTR, A 1 2 - - -

    4.6.6. Leitura da Memria de Programa:

    Quando se trabalha com Memria de Programa separada da Memria de Dados

    Externa, a Memria de Programa s pode ser lida (sinal *PSEN). Existem duas instrues para

    realizar esta operao e tambm so as nicas que usam endereamento indexado. So muito

    convenientes para construo de tabelas de consulta. O mnemnico empregado muda para MOVC

    onde o C indica Memria de Cdigos.

    LEITURA bytes MC CY AC OV MOVC A, @A+DPTR 1 2 @A+PC

    - - -

    4.7. INSTRUES BOOLEANAS

    So chamadas de instrues booleanas as que trabalham com bits. Todas essas

    instrues operam com um s bit por vez e o CARRY (C) funciona como se fosse o acumulador, ou

    seja, um dos operandos e normalmente armazena o resultado. Os bits so endereados

    diretamente, mas quando se usa o CARRY este endereado implicitamente. Existem tambm

    desvios baseados no estado dos bits; estes so relativos posio atual do PC e se pode saltar 127

    bytes adiante ou 128 bytes para trs.

  • CAPTULO IV CONJUNTO DE INSTRUES

    4 - 12 MICROCONTROLADORES (MCS-51)

    4.7.1. Zerar/ Setar /Complementar um Bit:

    Para carregar zero: usa-se a instruo CLR Para carregar um: usa-se a instruo SETB Para complementar: usa-se a instruo CPL

    bytes MC CY AC OV CLR C 1 1 0 - - bit 2 1 - - -

    SETB C 1 1 1 - - bit 2 1 - - -

    CPL C 1 1 X - - bit 2 1 - - -

    4.7.2. AND/OR Booleano:

    H dois AND e dois OR. Nestas instrues o carry (C) trabalha como o acumulador, quer

    dizer, um dos operandos e tambm recebe o resultado. Exemplo: ANL C,bit C = C AND bit. Empregam-se os mnemnicos ANL para Logical AND e ORL para Logical OR. Nas instrues em

    que um operando "/bit", indica que a operao se realiza com o complemento deste bit. Essas

    operaes so muito convenientes quando se implementam operaes booleanas.

    bytes MC CY AC OV ANL C, bit 2 1 /bit

    ORL C, bit 2 1 /bit

    X - -

    4.7.3. Movimento de Bits:

    So duas as instrues para movimento de bits e sempre envolvem o CARRY.

    bytes MC CY AC OV MOV C , bit 2 1 X - -

    MOV bit , C 2 2 - - -

    4.7.4. Desvios Baseados em Bits:

    So 5 as instrues de desvio: duas se baseiam no CARRY e as outras trs operam

    com qualquer bit. Os mnemnicos JB e JC so usados para desviar se o bit est ativado (em um) e

  • CAPTULO IV CONJUNTO DE INSTRUES

    MICROCONTROLADORES (MCS-51) 4 - 13

    JNB e JNC para desviar se o bit est desativado (em zero). Existe o mnemnico JBC que desvia se

    o bit est ativado e depois complementa este bit.

    bytes MC CY AC OV JC rel 2 2 JNC

    JB JNB bit,rel 3 2 JBC

    - - -

    4.8. INSTRUES DE DESVIO

    Nas instrues de desvio esto includas as chamadas de subrotinas (CALL) e os

    desvios (JMP); estes podem ser realizados com 11 ou 16 bits. Tambm esto includos os desvios

    condicionais (JZ, JNZ, CJNE), os loops (DJNZ) e as instrues de retorno (RET, RETI).

    4.8.1. Chamadas de Subrotinas:

    So duas as instrues de chamada de subrotinas: a instruo LCALL, que usa um

    endereo de 16 bits e por isso permite acesso a qualquer posio nos 64 KB de programa, e a

    instruo ACALL, que usa apenas 11 bits, ou seja, permite acesso dentro de um bloco de 2 KB da

    memria de programa; os 11 bits menos significativos do PC so trocados pelos bits especificados na

    instruo. A vantagem que ACALL necessita apenas de 2 bytes para o opcode enquanto que

    LCALL precisa de 3 bytes.

    bytes MC CY AC OV LCALL adr16 3 2 ACALL adr11 2 2

    - - -

    4.8.2. Retorno de Subrotinas:

    So 2 as instrues de retorno de subrotinas. A instruo RET o retorno usual. A

    instruo RETI usada para retorno das subrotinas que atendem as interrupes, indicando o fim de

    uma rotina de interrupo. Mais adiante, no captulo de interrupes, ser abordado este tema com

    maior detalhe.

  • CAPTULO IV CONJUNTO DE INSTRUES

    4 - 14 MICROCONTROLADORES (MCS-51)

    bytes MC CY AC OV RET 1 2 RETI

    - - -

    4.8.3. Desvios:

    So quatro as instrues de desvios. H dois desvios que so idnticos s chamadas de subrotinas e

    que tambm permitem saltar numa faixa de 2 KB (AJMP) ou de 64 KB (LJMP). Os outros dois

    desvios so relativos.

    bytes MC CY AC OV AJMP adr11 2 2 LJMP adr16 3 2 SJMP Rel 1 2 JMP @A+DPTR 1 2

    - - -

    4.8.4. Desvios Condicionais:

    H dois desvios que so feitos com os valores do acumulador: JZ, que salta se o

    contedo do acumulador zero, e JNZ, que salta se o contedo do acumulador no zero. Deve-se

    notar que no existe o flag zero (como nos Z80 e 8085); a deciso para o desvio feita com o

    contedo atual do acumulador. H outras 4 instrues que usam o mnemnico CJNE, que significa

    "compare dois elementos e desvie se forem diferentes". Todos estes desvios so relativos e por isso

    tm um alcance de 127 bytes para adiante e 128 bytes para trs.

    bytes MC CONDIO CY AC OV JZ rel 2 2 se Acc = 0 - - -

    JNZ se Acc 0

    CJNE A ,direto ,rel 3 2 se Acc Direto

    A se Acc (#data)

    CJNE Rn ,#data ,rel 3 2 se Rn (#data)

    @Ri se @Ri (#data)

    4.8.5. Loops :

    As instrues de loops so do tipo "decremente e desvie se for diferente de zero"

    (DJNZ). H duas instrues, as quais so muito teis para a repetio de determinadas partes do

    programa. Utilizam como contador um registro ou um byte da RAM Interna e por isso tm um limite

    de at 256 repeties. Como so baseadas em desvios relativos, tm um alcance de 127 bytes para

    adiante e de 128 bytes para trs.

  • CAPTULO IV CONJUNTO DE INSTRUES

    MICROCONTROLADORES (MCS-51) 4 - 15

    bytes MC CY AC OV DJNZ Rn ,rel 2 2 direto

    - - -

    4.8.6. No Operao :

    H uma instruo que no faz nada, consumindo apenas ciclos da CPU. muito til

    para reservar espaos na memria de programa quando se trabalha com EPROM.

    bytes MC CY AC OV NOP 1 1 - - -

    4.9. INSTRUES E FLAGS

    Para a perfeita utilizao das instrues necessrio conhecer como estas alteram os

    flags. Em seguida apresenta-se uma pequena tabela com um resumo dessas informaes. Na tabela,

    0 (zero) indica que o flag apagado, 1 (um) indica que ativado, X (don't care) significa que o flag

    ser ativado ou apagado de acordo com o resultado da instruo e "-" indica que o flag no

    alterado.

    INSTR/FLAG C OV AC ADD X X X ADDC X X X SUBB X X X MUL 0 X - DIV 0 X - DA X - - RRC X - - RLC X - - SETB C 1 - - CLR C 0 - - CPL C X - - ANL C,bit X - - ANL C,/bit X - - ORL C.bit X - - ORL C,/bit X - - MOV C,bit X - - CJNE X - -

    Figura 4.3. Comportamento dos flags.

  • CAPTULO IV CONJUNTO DE INSTRUES

    4 - 16 MICROCONTROLADORES (MCS-51)

    4.10. OBSERVAES

    Aqui convm fazer uma pausa para alguns comentrios e exemplos sobre

    endereamento e uso das instrues.

    4.10.1. Bancos de Registros :

    Existem quatro bancos, selecionados por RS1 e RS0. Estes bancos podem ser

    acessados como registros, com endereamento direto ou com endereamento indireto.

    BANCO 0 BANCO 1 BANCO 2 BANCO 3

    R0 R1...R7 R0 R1...R7 R0 R1...R7 R0 R1...R7

    Endereo: 00 01 07 08 09 15 16 17 23 24 25 31

    Supondo que o banco 1 esteja selecionado, as instrues seguintes do como resultado

    a mesma operao mas algumas consomem menos bytes que outras.

    MOV A,R1 1 Byte 1MC (A,Rn)

    MOV A,9 2 Bytes 1MC (A,direto)

    Tambm se pode fazer uma seqncia para endereamento indireto:

    MOV R0,#9 2 Bytes 1MC

    MOV A,@R0 1 Byte 1MC

    Total 3 Bytes 2MC

    Os registros de outros bancos so acessados empregando endereamento direto ou

    indireto :

    MOV A,23 2 bytes 1 MC (23 e/ou R7 do banco 2)

    Aqui so apresentadas algumas instrues interessantes para realizar transferncias

    entre registros (supe-se que o banco 3 esteja selecionado) :

    MOV R1,R6 (no existe)

    MOV R1,30 (equivale a MOV R1,R6)

    MOV 25,R6 (equivale a MOV R1,R6)

    MOV R1,R1 (no existe)

    MOV R1,25 (equivale a MOV R1,R1)

    MOV 25,R1 (equivale a MOV R1,R1)

  • CAPTULO IV CONJUNTO DE INSTRUES

    MICROCONTROLADORES (MCS-51) 4 - 17

    4.10.2. Registros Especiais (SFR) :

    Deve-se notar que todos os SFR, exceto o Acumulador, so acessados empregando

    endereamento direto. Para que exista compatibilidade com o 8052, no se permite endereamento

    indireto para os SFR. No 8052, quando se usa endereamento indireto com endereos maiores que

    07FH, acessa-se a regio chamada 128 UPPER. As duas instrues a seg