96

Apostila_HC08-CNZRev1

Embed Size (px)

Citation preview

  • NDICE

    ndice____________________________________________________________________ 1

    1. Introduo ____________________________________________________________ 7

    2. Reviso ______________________________________________________________ 8

    2.1. Unidade Central de Processamento (CPU) _______________________________ 8

    2.2. Sistema de Clock__________________________________________________ 11

    2.3. Memria ________________________________________________________ 11

    2.4. Sinais de Entrada __________________________________________________ 12

    2.5. Sinais de Sada____________________________________________________ 12

    2.6. Cdigos de operao (opcodes)_______________________________________ 13

    2.7. Mnemnicos das instrues e assembler________________________________ 13

    3. Famlia HC08 ________________________________________________________ 14

    3.1. Caractersticas principais____________________________________________ 14

    3.2. Modelo de Programao ____________________________________________ 15

    3.2.1. Acumulador (A) ______________________________________________ 15

    3.2.2. Registrador de ndice (H:X) _____________________________________ 16

    3.2.3. Stack Pointer (SP) _____________________________________________ 16

    3.2.4. Program Counter (PC)__________________________________________ 17

    3.2.5. Condition Code Register (CCR) __________________________________ 17

    3.3. Modos de endereamento ___________________________________________ 19

    3.3.1. Inerente _____________________________________________________ 19

    3.3.2. Imediato_____________________________________________________ 19

    3.3.3. Direto_______________________________________________________ 19

    3.3.4. Estendido____________________________________________________ 19

    3.3.5. Indexado ____________________________________________________ 20

    3.3.6. Stack Pointer _________________________________________________ 20

    3.3.7. Relativo _____________________________________________________ 21

    3.3.8. Movimento de Dados de Memria para Memria ____________________ 21

    3.4. Modos de Baixo Consumo __________________________________________ 22

    3.4.1. Modo WAIT _________________________________________________ 22

    3.4.2. Modo STOP__________________________________________________ 22

  • 2

    3.5. Processamento de excees__________________________________________ 23

    3.5.1. Reset _______________________________________________________ 23

    3.5.2. Interrupes__________________________________________________ 24

    4. Famlia MC68HC908QT/QY ____________________________________________ 25

    4.1. Descrio Funcional _______________________________________________ 25

    4.1.1. Caractersticas principais________________________________________ 25

    4.1.2. Pinagem_____________________________________________________ 27

    4.2. Memria ________________________________________________________ 29

    4.2.1. Memria RAM _______________________________________________ 32

    4.2.2. Memria FLASH______________________________________________ 32

    4.3. Mdulo de Integrao do Sistema (SIM) _______________________________ 33

    4.3.1. Inicializao do sistema e reset ___________________________________ 34

    4.3.2. Controle de excees___________________________________________ 36

    4.4. Mdulo Oscilador (OSC) ___________________________________________ 37

    4.4.1. Oscilador RC _________________________________________________ 38

    4.4.2. Oscilador Interno______________________________________________ 39

    4.4.3. Oscilador Externo _____________________________________________ 39

    4.4.4. Oscilador a Cristal_____________________________________________ 39

    4.5. Monitor ROM (MON)______________________________________________ 40

    4.6. Mdulo de Interface do Temporizador (TIM)____________________________ 43

    4.7. Conversor Analgico/Digital (ADC) __________________________________ 45

    4.8. Portas de Entrada/Sada (I/O) ________________________________________ 45

    4.8.1. Port A ______________________________________________________ 45

    4.8.2. Port B_______________________________________________________ 45

    4.9. Interrupo Externa (IRQ)___________________________________________ 46

    4.10. Mdulo de Interrupo do Teclado (KBI)_______________________________ 46

    4.11. Mdulo Computador Operando Corretamente (COP) _____________________ 47

    4.12. Mdulo de Inibio por Tenso Baixa (LVI) ____________________________ 48

    4.13. Mdulo Break (BREAK)____________________________________________ 49

    5. Conjunto de Instrues _________________________________________________ 50

    5.1. Introduo _______________________________________________________ 50

  • 3

    5.2. Nomenclatura ____________________________________________________ 50

    5.3. Conjunto de Instrues Resumido_____________________________________ 51

    5.3.1. Conjunto de instrues completo _________________________________ 55

    5.4. Caractersticas eltricas _____________________________________________ 55

    6. Programao assembler_________________________________________________ 56

    6.1. Sintaxe__________________________________________________________ 56

    6.2. Diretivas ________________________________________________________ 57

    6.3. Linker __________________________________________________________ 58

    6.4. Arquivo formato S19_______________________________________________ 59

    7. Desenvolvimento de sistemas ____________________________________________ 60

    7.1. Especificao do Sistema ___________________________________________ 61

    7.2. Projeto de hardware________________________________________________ 61

    7.3. Descrio do software ______________________________________________ 62

    7.4. Codificao (Arquivo Fonte)_________________________________________ 64

    7.5. Montador Assembler _______________________________________________ 66

    7.6. Simulao, depurao e testes do sistema _______________________________ 66

    8. Ferramentas de desenvolvimento - CodeWarrior ____________________________ 67

    8.1. Introduo _______________________________________________________ 67

    8.2. Iniciando com o CodeWarrior (Windows) ______________________________ 67

    8.3. Criando um Projeto ________________________________________________ 70

    8.4. Editando um arquivo fonte __________________________________________ 73

    8.5. Construindo o Projeto ______________________________________________ 74

    8.6. Simulando e Depurando um Projeto ___________________________________ 75

    8.6.1. Simulao Completa do Chip (FCS)_______________________________ 81

    8.6.2. Simulao In-Circuit (ICS) ______________________________________ 82

    8.6.3. Depurao/Programao In-Circuit (ICD) __________________________ 85

    9. Referncias Bibliogrficas ______________________________________________ 88

    Glossrio ________________________________________________________________ 89

  • 4

    Lista de Figuras Figura 1 Diagrama de blocos da CPU08 _______________________________________ 9

    Figura 2 Modelo de Programao da CPU08___________________________________ 15

    Figura 3 Acumulador (A)__________________________________________________ 15

    Figura 4 Registrador de ndice (H:X)_________________________________________ 16

    Figura 5 Registrador Stack Pointer (SP) ______________________________________ 16

    Figura 6 Registrador Program Counter (PC)___________________________________ 17

    Figura 7 Registrador Condition Code (CCR)___________________________________ 17

    Figura 8 Pinagem dos microcontroladores MC68HC908QT1/QT2/QT4 PDIP/SOIC __ 27

    Figura 9 Pinagem dos microcontroladores MC68HC908QY1/QY2/QY4 PDIP/SOIC _ 27

    Figura 10 - Pinagem dos microcontroladores MC68HC908QY1/QY2/QY4 TSSOP ____ 27

    Figura 11 Mapeamento da memria da famlia MC68HC908QT/QY________________ 30

    Figura 12 Diagrama de bloco do mdulo SIM__________________________________ 33

    Figura 13 Sinais de clock do mdulo SIM_____________________________________ 34

    Figura 14 Conexo com oscilador RC externo _________________________________ 38

    Figura 15 Conexo com cristal externo _______________________________________ 40

    Figura 16 Diagrama de blocos do mdulo COP_________________________________ 47

    Figura 17 Diagrama de blocos do mdulo LVI _________________________________ 48

    Figura 18 Esquema eltrico LED+Boto ______________________________________ 61

    Figura 19 Fluxograma da aplicao LED+Boto________________________________ 62

    Figura 20 Fluxograma da rotina Dly_1seg_____________________________________ 63

    Figura 21 Nmero de ciclos de mquina da subrotina Dly_1s______________________ 65

    Figura 22 Iniciando o CodeWarrior__________________________________________ 68

    Figura 23 Janela inicial do CodeWarrior ______________________________________ 68

    Figura 24 Barra de ferramentas do CodeWarrior _______________________________ 69

    Figura 25 Caixa de dilogo NEW____________________________________________ 70

    Figura 26 Nome e pasta do novo projeto ______________________________________ 70

    Figura 27 Caixa de dilogo NEW PROJECT ___________________________________ 71

    Figura 28 New Project - Assembly ___________________________________________ 71

  • 5

    Figura 29 Controle de arquivos e pastas do projeto (Pisca_1s.mcp) _________________ 72

    Figura 30 Errors & Warnings ______________________________________________ 74

    Figura 31 Aviso sobre licena das ferramentas de simulao ______________________ 75

    Figura 32 Janela inicial do simulador_________________________________________ 76

    Figura 33 Simulador Menu de escolha do dispositivo. __________________________ 77

    Figura 34 Simulador Modos de simulao ___________________________________ 78

    Figura 35 Simulador Barra de Ferramentas __________________________________ 79

    Figura 36 Breakpoint (marca em vermelho) na janela Source______________________ 81

    Figura 37 ICS Conexo serial e cdigo de segurana ___________________________ 83

    Figura 38 Janela de Comandos Simulao In-Circuit___________________________ 84

    Figura 39 ICS Conexo serial e cdigo de segurana ___________________________ 85

    Figura 40 Mudana no modo de simulao ____________________________________ 86

    Figura 41 Apagar e Programar a memria FLASH ______________________________ 86

    Figura 42 Apagando e programando a memria FLASH _________________________ 86

  • 6

    Lista de tabelas Tabela 1 Microcontroladores da famlia MC68HC908QT/QY .......................................... 25

    Tabela 2 Descrio dos pinos dos microcontroladores MC68HC908QT/QY .................... 28

    Tabela 3 Seqncia de prioridade dos pinos multifuncionais ............................................. 29

    Tabela 4 Vetores de interrupo da famlia MC68HC908QT/QY...................................... 31

    Tabela 5 Fontes de interrupo ........................................................................................... 37

    Tabela 6 Entrada em Modo Monitor/Modo Usurio aps um Reset .................................. 41

    Tabela 7 Vetores do Modo Usurio x Modo Monitor......................................................... 42

    Tabela 8 Principais Diretivas do Assembler ....................................................................... 57

  • 7

    1. INTRODUO

    A evoluo rpida da eletrnica digital, dos microprocessadores e, em particular, dos

    microcontroladores provocou uma revoluo no cotidiano das pessoas. Nos afazeres

    domsticos dirios, na conduo de um veculo, no cenrio visual da cidade e, tambm nos

    mais variados equipamentos que esto a nossa disposio no trabalho ou na escola

    encontram-se solues integradas (embbeded) que utilizam microcontroladores. A

    inteligncia incorporada s mquinas est presente em todos os lugares, e a qualquer

    momento. Estima-se que, em 2010, em mdia uma pessoa interagir com 350 dispositivos

    com microcontroladores diariamente.

    A famlia Motorola M68HC08, comumente denominada HC08, contm microcontroladores

    de propsito geral com largas possibilidades de aplicao. Este documento fornecer aos

    seus leitores uma introduo arquitetura dos microcontroladores HC08, bem como o

    conjunto de instrues para programao utilizando o cdigo fonte (linguagem Assembly).

    Dentre os inmeros integrantes da famlia HC08, os mais econmicos e compactos, que

    podem ser dedicados a aplicaes em que custo e espao so fundamentais so denominados

    de MC68HC908QT/QY, e sero apresentados em detalhes neste documento. importante

    ressaltar que todos os conceitos abordados so vlidos para toda a famlia de

    microcontroladores HC08.

    Os leitores devero ler este documento cuidadosamente e completamente, pois as

    informaes e instrues nele contidas so essenciais para a parte prtica (laboratrios). Por

    se tratar de material didtico para treinamento bsico de microcontroladores da famlia HC08

    sero abordados tpicos referentes ao modelo de programao, modos de endereamento e o

    conjunto de instrues completo. Sero abordados, tambm, os principais perifricos dos

    microcontroladores da famlia MC68HC908QT/QY: temporizador interno, conversor A/D,

    interrupes, sistema monitor e BREAK.

    Utilize os documentos tcnicos da Motorola como referncia ao trabalhar com um

    componente especfico da famlia HC08, e em especial ao necessitar de detalhes de

    implementao dos seus perifricos e respectivos registradores. Eles esto disponveis no

    website: http://e-www.motorola.com, e podem ser acessados atravs de uma busca pelo

    part number do componente.

  • 8

    2. REVISO

    Um microcontrolador um sistema computacional completo, no qual esto includos uma

    CPU (Central Processor Unit), memria, um sistema de clock, sinais de I/O (Input/Output),

    alm de outros possveis perifricos, tais como, mdulos de temporizao e conversores A/D

    entre outros, integrados em um mesmo componente (chip). As partes integrantes de qualquer

    computador, e que tambm esto presentes, em menor escala, nos microcontroladores so:

    9 Unidade Central de Processamento (CPU) 9 Sistema de clock para dar seqncia s atividades da CPU 9 Memria para armazenamento de instrues e para manipulao de dados 9 Entradas para interiorizar na CPU informaes do mundo externo 9 Sadas para exteriorizar informaes processadas pela CPU para o mundo externo 9 Programa (software) para que o sistema faa alguma coisa til

    2.1. Unidade Central de Processamento (CPU)

    A CPU o centro de todo sistema computacional, e no diferente quando se trata de

    microcontroladores. O trabalho da CPU executar rigorosamente as instrues de um

    programa, na seqncia programada, para uma aplicao especfica. Um programa

    computacional (software) instrui a CPU a ler informaes de entradas, ler e escrever

    informaes na memria de trabalho, e escrever informaes nas sadas. O diagrama de

    blocos simplificado da CPU presente nos microcontroladores da famlia HC08, tambm

    denominada CPU08 apresentada na Figura 1.

  • 9

    Figura 1 Diagrama de blocos da CPU08

    Unidade Lgica/Aritmtica (ALU): A ALU usada para realizar operaes lgicas

    e aritmticas definidas no conjunto de instrues da CPU08. Vrios circuitos

    implementam as operaes aritmticas binrias decodificas pelas instrues e

    fornecem dados para a execuo da operao na ALU. A maioria das operaes

    aritmticas binrias so baseadas em algoritmos de adio e subtrao (adio com o

    valor negativo). A multiplicao realizada atravs de uma srie de adies e

    deslocamentos com a ALU sob controle lgico da CPU.

    Controle da CPU: O circuito de controle da CPU implementa o sequeciamento de

    elementos lgicos necessrios ALU realizar as operaes requisitadas durante a

    execuo do programa. O elemento central da seo de controle da CPU o

    decodificador de instrues. Cada opcode decodificado para determinar quantos

    operandos so necessrios e qual seqncia de passos ser necessria para completar

    a instruo em curso. Quando uma instruo executada completamente, o prximo

    opcode lido e decodificado.

    Registradores da CPU: A CPU08 contm 5 registradores como apresentado na

    Figura 1. Os registradores da CPU so memrias dentro do microprocessador (que

    no fazem parte do mapa de memria). O conjunto de registradores da CPU

    freqentemente chamado de modelo de programao.

    O registrador A, tambm chamado de acumulador porque freqentemente

    utilizado para armazenar um dos operandos ou o resultado de operaes.

  • 10

    O registrador H:X um registrador de 16 bits de ndice que possibilita ao usurio

    enderear indiretamente o espao de memria de 64Kbytes. O byte alto do

    registrador de ndice denominado H, e o byte baixo denominado X. Sua principal

    funo servir de apontador para uma rea na memria onde a CPU ir carregar (ler)

    ou armazenar (escrever) informao. Sero apresentados mais detalhes do registrador

    H:X quando forem discutidos os modos de endereamento indexado. Quando no

    estiver sendo utilizado para apontar um endereo na memria, ele pode ser utilizado

    como registrador genrico.

    O registrador Program Counter (PC) usado pela CPU para controlar e conduzir

    ordenadamente a busca do endereo da prxima instruo a ser executada. Quando a

    CPU energizada ou resetada, o PC carregado com o contedo de um par de

    endereos especficos denominados vetor de reset (reset vector). O vetor de reset

    contm o endereo da primeira instruo a ser executada pela CPU. Assim que as

    instrues so executadas, uma lgica interna a CPU incrementa o PC, de tal forma

    que ele sempre aponte para o prximo pedao de informao que a CPU vai precisar.

    O nmero de bits do PC coincide exatamente com o nmero de linhas do barramento

    de endereos, que por sua vez determina o espao total disponvel de memria que

    pode ser acessada pela CPU.

    O registrador Condition Code (CCR) um registrador de 8 bits que armazena os

    bits de status (flags) que refletem o resultado de algumas operaes da CPU. A

    instrues de desvio usam estes bits de status para tomar suas decises.

    O Stack Pointer (SP) um registrador cuja funo apontar para a prxima

    localizao disponvel (endereo livre) de uma pilha (lista de endereos contguos). A

    pilha pode ser vista como um monte de cartas empilhadas, onde cada carta armazena

    um byte de informao. A qualquer hora, a CPU pode colocar uma carta nova no

    topo da pilha ou retirar uma carta do topo da pilha. As cartas que esto no meio da

    pilha no podem ser retiradas at que todas que estejam acima dela sejam removidas

    primeiro. A CPU acompanha o efeito da pilha atravs do valor armazenado no SP. O

    SP sempre aponta para a localizao de memria disponvel para se colocar a

    prxima carta (byte). Normalmente, a CPU usa a pilha para guardar os endereos de

    retorno e o contexto, isto , os registradores da CPU, na ocorrncia de uma exceo

    (interrupo ou reset).

  • 11

    2.2. Sistema de Clock

    Todo sistema computacional utiliza um clock para fornecer a CPU uma maneira de se mover

    de instruo em instruo, em uma seqncia pr-determinada.

    Uma fonte de clock de alta freqncia (normalmente derivada de um cristal ressonador

    conectado a CPU) usado para controlar o sequeciamento das instrues da CPU.

    Normalmente as CPUs dividem a freqncia bsica do cristal por 2 ou mais para chegar ao

    clock do barramento interno. Cada ciclo de leitura ou escrita a memria levam um ciclo de

    clock do barramento interno, tambm denominado ciclo de barramento (bus cycle).

    2.3. Memria

    Podemos pensar na memria como sendo uma lista de endereos postais, onde o contedo de

    cada endereo um valor fixo de 8 bits (para CPU de 8 bits). Se um sistema computacional

    tem n linhas de endereos, ele pode enderear 2n posies de memria (p.ex.: um sistema

    com 11 linhas pode acessar 211 = 2048 endereos). Entre os diversos tipos de memria

    encontram-se:

    RAM (Random Access Memory) Memria de acesso aleatrio. Pode ser lida ou

    escrita pela execuo de instrues da CPU e, normalmente utilizada para

    manipulao de dados pela CPU. O contedo perdido na ausncia de energia

    (memria voltil).

    ROM (Read Only Memory) Memria apenas de leitura. Pode ser lida, mas no

    altervel. O contedo deve ser determinado antes que o circuito integrado seja

    fabricado. O contedo mantido na ausncia de energia (memria no voltil).

    EPROM (Erasable and Programmable ROM) Memria ROM programvel e

    apagvel. O contedo dessa memria pode ser apagado com luz ultravioleta, e

    posteriormente, reprogramado com novos valores. As operaes de apagamento e

    programao podem ser realizadas um nmero limitado de vezes depois que o

    circuito integrado for fabricado. Da mesma forma que a ROM, o contedo mantido

    na ausncia de energia (memria no voltil).

    OTP (One Time Programmable) Memria programvel uma nica vez. Semelhante

    EPROM quanto a programao, mas que no pode ser apagada.

  • 12

    EEPROM (Electrically Erasable and Programmable ROM) Memria ROM

    programvel e apagvel eletricamente. Pode ter seu contedo alterado atravs da

    utilizao de sinais eltricos convenientes. Tipicamente, um endereo de uma

    EEPROM pode ser apagada e reprogramada at 10.000 vezes.

    FLASH Memria funcionalmente semelhante a EEPROM, porm com ciclos de

    escrita bem mais rpidos.

    I/O (Input/Output) Registradores de controle, status e sinais de I/O so um tipo

    especial de memria porque a informao pode ser sentida (lida) e/ou alterada

    (escrita) por dispositivo diferentes da CPU.

    2.4. Sinais de Entrada

    Dispositivos de entrada fornecem informao para a CPU processar, vindas do mundo

    externo. A maioria das entradas que os microcontroladores processam so denominadas

    sinais de entrada digitais, e utilizam nveis de tenso compatveis com a fonte de

    alimentao do sistema. O sinal de 0V (GND ou VSS ) indica o nvel lgico 0 e o sinal de

    fonte positiva, que tipicamente +5VDC (VDD ) indica o nvel lgico 1.

    Naturalmente que no mundo real existem sinais puramente analgicos (com uma infinidade

    de valores) ou sinais que utilizam outro nvel de tenso. Alguns dispositivos de entrada

    traduzem as tenses do sinal para nveis compatveis com VDD e VSS. Outros dispositivos de

    entrada convertem os sinais analgicos em sinais digitais (valores binrios formados por 0s e

    1s) que a CPU pode entender e manipular. Alguns microcontroladores incluem circuitos

    conversores analgicos/digitais (ADC) encapsulados no mesmo componente.

    2.5. Sinais de Sada

    Dispositivos de sada so usados para informar ou agir no mundo exterior atravs do

    processamento de informaes realizados pela CPU. Circuitos eletrnicos (algumas vezes

    construdos no prprio microcontrolador) podem converter sinais digitais em nveis de

    tenso analgicos. Se necessrio, outros circuitos podem alterar os nveis de tenso VDD e

    VSS nativos da CPU em outros nveis.

  • 13

    2.6. Cdigos de operao (opcodes)

    Os programas usam cdigos para fornecer instrues para a CPU. Estes cdigos so

    chamados de cdigos de operao ou opcodes. Cada opcode instrui a CPU a executar uma

    seqncia especfica para realizar sua operao. Microcontroladores de diferentes

    fabricantes usam diferentes conjuntos de opcodes porque so implementados internamente

    por hardware na lgica da CPU. O conjunto de instrues de uma CPU especifica todas as

    operaes que podem ser realizadas. Opcodes so uma representao das instrues que so

    entendidas pela mquina, isto , uma codificao em representao binria a ser utilizada

    pela CPU. Mnemnicos so outra representao para as instrues, s que agora, para serem

    entendidas pelo programador.

    2.7. Mnemnicos das instrues e assembler

    Um opcode como $4C entendido pela CPU, mas no significativo para ns humanos.

    Para resolver esse problema, um sistema de instrues mnemnicas equivalentes so usadas.

    O opcode $4C corresponde ao mnemnico INCA, l-se incrementa o acumulador, que

    muito mais inteligvel. Para fazer a translao de mnemnicos em cdigos de mquina

    (opcodes e outras informaes) utilizados pela CPU necessrio um programa

    computacional chamado assembler. Um programador utiliza um conjunto de instrues na

    forma de mnemnicos para desenvolver uma determinada aplicao, e posteriormente, usa

    um assembler para traduzir estas instrues para opcodes que a CPU pode entender.

  • 14

    3. FAMLIA HC08

    3.1. Caractersticas principais

    A famlia Motorola M68HC08 contm CPUs de 8 bits (CPU08) que tem uma organizao

    especfica denominada arquitetura Von Neumann. Nesta arquitetura, a CPU e a memria so

    conectadas por um barramento de endereo (address bus) e um barramento de dados

    (data bus). O barramento de endereos usado para identificar qual posio de memria est

    sendo acessada, e o barramento de dados usado para enviar uma informao da CPU para

    um endereo de memria, ou de um endereo de memria para a CPU.

    Na implementao desta arquitetura pela Motorola, existem algumas localizaes de

    memria (denominadas registradores da CPU) internas a CPU, que atuam como pequenas

    reas de rascunho e como painel de controle da CPU. Estes registradores formam o modelo

    de programao da CPU e so similares a endereos de memria, pois as informaes

    podem ser escritas ou lidas neles.

    Toda informao processada pela CPU que no esteja diretamente ligada ao modelo de

    programao pode ser vista como uma lista de endereos. Esta organizao chamada

    freqentemente de sistema de I/O mapeado em memria (memory-mapped I/O) porque a

    CPU trata como endereos de memria instrues do programa, variveis do sistema, ou

    controles de entrada/sada (I/O).

    Entre as caractersticas principais da CPU, da famlia HC08 incluem-se:

    9 Cdigo objeto completamente compatvel com a famlia HC05 9 CPU com freqncia de barramento interno de at 8MHz 9 64 Kbytes endereveis para memria de programa, dados e perifricos 9 Barramento interno flexvel para acessar perifricos 9 Modos de baixo consumo STOP e WAIT 9 Registrador de 16 bits para Stack Pointer com instrues de manipulao da pilha 9 Registrador de 16 bits de ndice (H:X) com manipulao do byte alto (H) e baixo (X) 9 16 modos de endereamento 9 Movimentao de dados da memria para memria sem utilizar acumulador 9 Instrues rpidas de multiplicao de 8 bits por 8 bits e diviso de 16 bits por 8 bits 9 Instrues avanadas para manipulao de dados em BCD

  • 15

    3.2. Modelo de Programao

    Diferentes CPUs tem diferentes conjuntos de registradores. As diferenas so primariamente

    o nmero e o tamanho dos registradores. A Figura 2 mostra os registradores da CPU que se

    encontram nos microcontroladores da famlia HC08. Apesar de serem poucos os

    registradores que fazem parte do modelo de programao, eles so representativos de todos

    os tipos de registradores da CPU08 e podem ser usados para explicar todos os conceitos

    fundamentais de programao.

    7 0

    A Acumulador (A) 15 8 7 0

    H X ndice (H:X) 15 0

    SP Stack Pointer (SP) 15 0

    PC Program Counter (PC) 7 0

    V 1 1 H I N Z C Condition Code (CCR)

    Overflow

    Half-carry

    Mscara Interrupo

    Negativo

    Zero

    Carry/B

    orrow

    Figura 2 Modelo de Programao da CPU08

    3.2.1. Acumulador (A)

    Bit 7 6 5 4 3 2 1 Bit 0

    A

    RESET X X X X X X X X X - Indeterminado

    Figura 3 Acumulador (A)

    O acumulador um registrador de 8 bits de uso geral. A CPU utiliza o acumulador para

    armazenar os operandos e resultados de operaes aritmticas e no aritmticas.

  • 16

    3.2.2. Registrador de ndice (H:X)

    Bit15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Bit 0 H X

    H:X RESET 0 0 0 0 0 0 0 0 X X X X X X X X

    X Indeterminado

    Figura 4 Registrador de ndice (H:X)

    O registrador de 16 bits de ndice permite ao usurio enderear indiretamente o espao de

    memria de 64Kbytes. A concatenao do registrador de 16 bits denominada H:X. O byte

    alto do registrador de ndice denominado H, e o byte baixo denominado X.

    Nos modos de endereamento indexado, a CPU utiliza o contedo de H:X para determinar o

    endereo efetivo do operando. H:X tambm podem servir como registradores temporrios

    para armazenamento de dados.

    3.2.3. Stack Pointer (SP)

    Bit15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Bit 0

    SP

    RESET 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

    Figura 5 Registrador Stack Pointer (SP)

    O registrador de 16 bits Stack Pointer contm o endereo da prxima posio livre na pilha.

    Durante um reset, o Stack Pointer contm o endereo $00FF. A instruo RSP (Reseta Stack

    Pointer) seta o byte menos significativo com $FF e o byte mais significativo no afetado.

    Quando a CPU insere um novo dado na pilha, automaticamente o SP decrementado para o

    prximo endereo livre. Quando a CPU retira um dado da pilha, o SP incrementado para

    apontar para o dado mais recente, e o valor do dado lido nesta posio. Quando a CPU

    energizada ou resetada, o SP aponta para um endereo especfico na memria RAM

    ($00FF).

    A CPU08 tem modos de endereamento indexado com offsets de 8 ou 16 bits do SP para ser

    utilizado no acesso de variveis temporrias inseridas na pilha. A CPU utiliza o contedo do

    registrador SP para determinar o endereo efetivo do operando.

    NOTA: Embora o endereo inicial do SP seja $00FF, a localizao da pilha arbitrria e pode ser realocada pelo usurio em qualquer lugar na RAM. Movimentar o SP para fora da pgina 0 ($0000 a $00FF) ir abrir espao de memria que pode ser acessado usando modos de endereamento mais eficientes.

  • 17

    3.2.4. Program Counter (PC)

    Bit15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Bit 0

    PC RESET Carregado com o dado do vetor $FFFE Carregado com o dado do vetor $FFFF

    Figura 6 Registrador Program Counter (PC)

    O Program Counter um registrador de 16 bits que contm o endereo da prxima instruo

    ou operando a ser capturado (fetched) na memria de programa.

    Normalmente, o contedo do PC automaticamente incrementado para o prximo endereo

    toda vez que uma instruo ou operando capturado. Operaes de desvios, chamadas

    subrotinas ou interrupes carregam o PC com um endereo diferente do endereo

    seqencial.

    Durante o reset, o PC carregado com o contedo do vetor de reset localizado nos endereos

    $FFFE e $FFFF. Eles contm o endereo da primeira instruo a ser executada depois que a

    CPU08 sai do estado de reset.

    3.2.5. Condition Code Register (CCR)

    Bit 7 6 5 4 3 2 1 Bit 0

    CCR V 1 1 H I N Z C RESET X 1 1 X 1 X X X

    X Indeterminado

    Figura 7 Registrador Condition Code (CCR)

    O registrador CCR contm um bit para mascarar interrupes e 5 bits que indicam o

    resultado da instruo executada naquele instante. Os bits 5 e 6 so permanentemente

    setados. A descrio mais detalhada de cada bit apresentada a seguir:

    3.2.5.1. V Bit de Overflow

    A CPU set o bit de overflow quando houver transbordo no resultado de uma operao em

    complemento de 2. O bit V utilizado pelas instrues de desvios condicionais BGT,

    BGE, BLE, e BLT.

    3.2.5.2. H Bit de Half-carry

    A CPU seta o bit de half-carry quando ocorrer transbordo entre os bits 3 e 4 do

    acumulador durante as operaes ADD e ADC. O bit H importante nas operaes

    aritmticas codificadas em binrio (BCD). A instruo DAA utiliza o estado dos bits H e

    C para determinar o fator de correo apropriado.

  • 18

    3.2.5.3. I Mascara Interrupo

    Quando o bit I est setado, todas as interrupes so mascaradas. As interrupes so

    habitadas quando o bit I resetado. Quando ocorre uma interrupo, o bit que mascara as

    interrupes automaticamente setado depois que os registradores da CPU so

    armazenados na pilha, mas antes que o vetor de interrupo seja capturado.

    Se uma interrupo ocorrer enquanto o bit I estiver setado, seu estado ser guardado. As

    interrupes so atendidas, em ordem de prioridade, assim que o bit I for a zero.

    A instruo retorno da interrupo (RTI) retorna os registradores da CPU da pilha, e

    restaura o bit I no seu estado zerado. Aps qualquer reset, o bit I setado e s pode ser

    resetado por uma instruo de software.

    3.2.5.4. N Bit Negativo

    A CPU seta o bit N quando uma operao aritmtica, lgica ou de manipulao de dados

    produzir um resultado negativo. Corresponde ao 8o bit do registrador que contm o

    resultado.

    3.2.5.5. Z Bit Zero

    A CPU seta o bit Z quando uma operao aritmtica, lgica ou de manipulao de dados

    produzir um resultado igual a $00.

    3.2.5.6. C Bit Carry/Borrow

    A CPU seta o bit C quando uma operao de adio produzir um transbordo do bit 7 do

    acumulador ou quando uma subtrao necessitar um emprstimo. Algumas operaes

    lgicas e as instrues de manipulao de dados tambm podem resetar ou setar o bit C.

  • 19

    3.3. Modos de endereamento

    Os modos de endereamento indicam o caminho pelo qual a CPU obtm as informaes

    necessrias para completar uma instruo. A CPU08 tem um total de 16 modos de

    endereamento, alguns deles implementados para gerar um cdigo eficiente quando o

    desenvolvimento de software for realizado com linguagens de alto nvel.

    A seguir so apresentados todos os modos de endereamento da famlia HC08.

    3.3.1. Inerente

    As instrues so formadas por um opcode que contm o operando implcito.

    Exemplo: DECA Decrementa contedo do acumulador.

    3.3.2. Imediato

    As instrues contm o opcode seguido por um operando byte (8 bits) ou word (16 bits) cujo

    contedo um valor imediato.

    Exemplo: LDA #$201 Carrega o acumulador com o valor $20.

    3.3.3. Direto

    As instrues de endereamento direto so formadas por um opcode seguido por um

    operando, cujo contedo um endereo de 8 bits. Este modo de endereamento acessa

    apenas os 256 primeiros bytes da memria (pgina zero).

    Exemplo: LDA $40 Carrega o acumulador com o contedo do endereo $0040.

    3.3.4. Estendido

    As instrues de endereamento estendido so formadas por 3 bytes: 1 byte para o opcode e

    2 bytes para um endereo qualquer dos 64 Kbytes de memria. A maioria dos montadores

    Assembly pode utilizar automaticamente o modo de endereamento direto quando o

    operando estiver na primeira pgina (endereos $00XX).

    Exemplo: LDA $45FA Carrega o acumulador com o contedo do endereo $45FA.

    1 O caracter # utilizado como prefixo de um operando indicativo do modo imediato. O caracter $ utilizado como prefixo de um valor indica que o mesmo est em notao hexadecimal.

  • 20

    3.3.5. Indexado

    Os modos de endereamento indexado so a chave para a gerao de cdigo eficiente para

    pesquisa tabelas e outras estruturas de dados. O modo de endereamento indexado sem

    offset conhecido popularmente por outras arquiteturas de microcontroladores como

    endereamento indireto. O valor presente no operando das instrues com o registrador de

    ndice um endereo (ponteiro).

    9 Sem offset Exemplo: LDA ,X Carrega o acumulador com o contedo do endereo armazenado

    no registrador H:X.

    9 Com offset de 8 bits Exemplo: LDA $5E,X Carrega o acumulador com o contedo do endereo

    armazenado em (H:X + $5E).

    9 Com offset de 16 bits Exemplo: LDA $485E,X Carrega o acumulador com o contedo do endereo

    armazenado em (H:X + $485E).

    9 Sem offset e com ps-incremento Exemplo: CBEQ X+,TAG Compara o contedo de A com o contedo do endereo

    armazenado em H:X, salta para TAG quando igual, e posteriormente, incrementa X.

    9 Com offset de 8 bits e ps-incremento Exemplo: CBEQ $50,X+,TG1 - Compara o contedo de A com o contedo do

    endereo armazenado em (H:X + $50), salta para TAG quando igual, e

    posteriormente, incrementa X.

    3.3.6. Stack Pointer

    Existem dois tipos de endereamento do Stack Pointer: com 8 bits ou 16 bits de offset. Eles

    so similares aos modos de endereamento indexados, e utilizam o registrador SP ao invs

    do par de registradores H:X.

    9 Com offset de 8 bits Exemplo: LDA $48,SP Carrega o acumulador com o contedo do endereo

    armazenado em (SP + $48).

    9 Com offset de 16 bits Exemplo: LDA $485E,SP Carrega o acumulador com o contedo do endereo

    armazenado em (SP + $485E).

  • 21

    3.3.7. Relativo

    Todas as instrues de desvio condicional utilizam endereamento relativo. Se a condio

    for verdadeira, o contedo do registrador PC adicionado a um valor com sinal (8 bits) que

    est presente como operando da instruo. Isto fornece uma faixa para o desvio que varia de

    128 bytes a + 127 bytes em relao ao endereo da instruo seguinte a instruo de desvio.

    Exemplo: BCC Volta Desvia para o endereo Volta se o flag de carry (C) estiver resetado.

    3.3.8. Movimento de Dados de Memria para Memria

    Existem quatros modos de endereamento de memria para memria com a instruo de

    movimentao, MOV, para transferir dados de um endereo para outro sem utilizar o

    acumulador.

    9 Imediato para direto Exemplo: MOV #$40,$25 Movimenta o valor imediato $40 para o endereo $25.

    9 Direto para direto Exemplo: MOV $40,$25 Movimenta o contedo do endereo $40 para o endereo

    $25.

    9 Indexado para direto com ps-incremento Exemplo: MOV X+,$23 - Movimenta o contedo do endereo armazenado no

    registrador H:X para o endereo $0023 e, posteriormente, incrementa H:X.

    9 Direto para indexado com ps-incremento Exemplo: MOV $23,X+ - Movimenta o contedo do endereo $0023 para o

    registrador H:X e, posteriormente, incrementa H:X.

    O modelo de programao associado a instrues do modo indexado, Stack Pointer e de

    desvios condicionais foram projetados para gerar cdigo objeto eficiente quando utilizados

    com compiladores de linguagens de alto nvel (HLL High Level Language), como por

    exemplo a Linguagem C.

  • 22

    3.4. Modos de Baixo Consumo

    As instrues WAIT e STOP colocam o microcontrolador em um modo de baixo consumo

    de energia.

    3.4.1. Modo WAIT

    A instruo WAIT executa as seguintes tarefas:

    9 Reseta o bit de mscara da interrupo (Bit I do registrador CCR), habilitando interrupes. Depois de sair do modo WAIT por interrupo, o bit I permanece

    resetado. Depois de sair por um reset, o bit I setado.

    9 Desabilita o clock da CPU, enquanto que os clocks dos perifricos continuam em execuo.

    Um mdulo que estiver ativo durante o modo WAIT pode despertar a CPU com uma

    interrupo, se a interrupo estiver habilitada. O modo WAIT pode ser tambm finalizado

    por um reset ou um BREAK.

    3.4.2. Modo STOP

    A instruo STOP executa as seguintes tarefas:

    9 Reseta o bit de mscara da interrupo (Bit I do registrador CCR), habilitando interrupes externas. Depois de sair do modo STOP por interrupo externa, o bit I

    permanece resetado. Depois de sair por um reset, o bit I setado.

    9 Desabilita o clock da CPU e dos perifricos 9 Depois de sair do modo STOP, o clock da CPU comea a rodar depois do tempo de

    estabilizao do oscilador.

    Uma requisio de interrupo de um mdulo pode causar a sada do modo STOP. O modo

    STOP pode tambm ser finalizado por um reset ou um BREAK.

    Os sinais do oscilador (BUSCLKX2 e BUSCLKX4) param no modo STOP, parando a CPU

    e os perifricos. O tempo de recuperao do STOP selecionvel pelo bit SSREC, do

    registrador de configurao 1 (CONFIG1). Se SSREC = 1 o tempo de recuperao do STOP

    reduzido de (4096 x BUSCLKX4) ciclos para 32. Este valor ideal para utilizao com o

    oscilador interno, oscilador RC, e oscilador externo que no precisam de tempos longos de

    estabilizao.

  • 23

    3.5. Processamento de excees

    A CPU08, como em outros microcontroladores, executa as instrues seqencialmente.

    Porm, em uma grande variedade de aplicaes necessrio executar um conjunto de

    instrues em resposta a eventos excepcionais durante a execuo de programas. Estes

    eventos freqentemente so assncronos em relao execuo do programa principal.

    Um reset para a CPU e reinicializa a execuo do programa (aplicao) a partir de sua

    condio inicial.

    Uma interrupo no para a CPU ou a operao da instruo que est sendo executada, mas

    comea seu processamento quando a instruo corrente for completada. A CPU muda

    temporariamente a seqncia do programa para responder a um evento particular, em um

    endereo especfico.

    3.5.1. Reset

    O reset necessrio para inicializar a CPU em um estado conhecido, incluindo o

    armazenamento no registrador Program Counter do endereo da primeira instruo a ser

    executada. Perifricos e diversos bits de controle e de status so tambm forados para um

    estado conhecido como resultado do reset. Durante um reset ocorrem diversas aes internas

    a CPU, como seguem:

    9 Todos os registradores de direo so zerados (I/O configurados como entrada); 9 Stack Pointer inicializado com o endereo $00FF; 9 Bit I do registrador CCR setado para inibir as interrupes mascarveis; 9 Flag de interrupo externa resetado; 9 Flag do modo STOP resetado; 9 Flag do modo WAIT resetado.

    A interrupo do processamento durante a execuo normal de um programa devido a um

    Reset gera as tarefas citadas acima e na sada do reset feita a busca do vetor Reset e a

    reinicializao do programa.

  • 24

    3.5.2. Interrupes

    As interrupes fornecem um meio de suspender temporariamente a execuo normal do

    programa, de tal forma que a CPU tenha tempo livre para processar a requisio pedida.

    Existem 2 categorias de interrupes: interrupes de hardware e interrupes de software.

    Uma interrupo de software ocorre como resultado da execuo da instruo SWI, e sempre

    executada como parte do fluxo de instrues.

    Uma interrupo de hardware pode ser gerada por eventos de internos (p.ex.: estouro do

    temporizador) ou externos (p.ex.: circuito lgico alterando estado do pino /IRQ). As

    interrupes de hardware so mascarveis e, portanto podem ser reconhecidas apenas

    quando o bit I estiver resetado. As fontes mais comuns de interrupo de hardware so:

    9 Interrupo externa (/IRQ) - utilizada para monitorar sistemas ou eventos externos; 9 Interrupes do temporizador - utilizadas para processar eventos baseados em

    contagem (hardware) ou referncias de tempo;

    9 Interrupo de teclado - utilizadas para monitorar mudanas nos pinos de I/O. O processamento de excees realizado atravs de tarefas discretas, tambm denominadas

    Mudana de Contexto. As tarefas executadas durante o processamento so:

    9 Reconhecimento (Recognition): evento causador da interrupo, pode ser hardware ou software;

    9 Arbitramento (Arbitration): determinao das fontes de interrupo e priorizao, no caso de haver mais de uma interrupo simultnea;

    9 Empilhamento (Stacking): armazenamento na pilha do contexto do programa atual; 9 Busca do vetor (Vector Fetching): armazenamento no PC do vetor da interrupo; 9 Rotina de Servio da Interrupo (Interrupt Service Routine): execuo da rotina de

    servio da interrupo, a partir do endereo armazenado no PC;

    Ao final da execuo da rotina de servio da interrupo (instruo RTI) ocorre a retirada

    dos dados da pilha (desempilhamento), retornando ao contexto do programa inicial. Se

    interrupes adicionais estiverem pendentes, o processo iniciar novamente.

    Perifricos internos ao chip geram interrupes mascarveis que so reconhecidas apenas se

    o bit de mscara global de interrupes (I) do registrador CCR estiver resetado (I=0). A

    interrupes mascarveis so priorizadas de acordo com um arranjo pr-determinado.

  • 25

    4. FAMLIA MC68HC908QT/QY

    4.1. Descrio Funcional

    Os microcontroladores que fazem parte da famlia MC68HC908QT/QY tem como

    caractersticas bsicas: baixo custo, alto desempenho e baixa pinagem (8 ou 16 pinos). Todos

    os membros dessa famlia utilizam a unidade central de processamento CPU08, desenvolvida

    para a arquitetura HC08, e esto disponveis com uma variedade de mdulos, tamanhos e

    tipos de memria, e tipos de encapsulamento. Os principais componentes esto apresentados

    na tabela a seguir:

    Tabela 1 Microcontroladores da famlia MC68HC908QT/QY

    Dispositivo Memria FLASH Conversor A/D No pinos

    MC68HC908QT1 1536 bytes - 8 pinos

    MC68HC908QT2 1536 bytes 4 canais de 8 bits 8 pinos

    MC68HC908QT4 4096 bytes 4 canais de 8 bits 8 pinos

    MC68HC908QY1 1536 bytes - 16 pinos

    MC68HC908QY2 1536 bytes 4 canais de 8 bits 16 pinos

    MC68HC908QY4 4096 bytes 4 canais de 8 bits 16 pinos

    4.1.1. Caractersticas principais

    9 Ncleo da CPU de alto desempenho HC08 9 Tenso de operao (VDD) de 5V e 3 V 9 8MHz @5V (4MHz@3V) para operaes do barramento interno 9 Oscilador interno ajustvel 9 3.2MHz para operaes do barramento interno 9 Capacidade de ajuste com registrador de 8 bits 9 Preciso de 25% sem utilizar o ajuste 9 Preciso de 5% com o ajuste

    9 Capacidade de acordar automaticamente da condio de STOP 9 Programao in-system da memria FLASH 9 Segurana da memria FLASH 9 Memria FLASH programvel na prpria aplicao (com gerao interna de tenses

    de apagamento/programao) com capacidades de 1,5K ou 4Kbytes

    9 128 bytes de memria RAM

  • 26

    9 Temporizador com 2 canais de 16 bits (Timer Interface Module TIM) 9 4 canais de conversor A/D de 8 bits (ADC) 9 5 ou 13 linhas de entrada/sada (I/O) bidirecionais e mais 1 entrada: 9 6 compartilhadas com funo de interrupo do teclado e ADC 9 2 compartilhadas com os canais do temporizador 9 1 compartilhada com interrupo externa (IRQ) 9 8 linhas extras no empacotamento de 16 pinos 9 Capacidade de alta corrente dreno/fonte em todos os pinos 9 Pull-ups selecionveis individualmente em todos os pinos 9 Habilidade de tri-state em todos os pinos

    9 6 bits de interrupo de teclado com caracterstica de despertar 9 Inibio por baixa tenso (Low-Voltage Inhibit LVI) 9 Ponto de disparo selecionvel por software no registrador CONFIG

    9 Sistema de proteo 9 Computador operando adequadamente (Computer Operating Properly COP) 9 Deteco de baixa tenso com reset 9 Deteco de opcode ilegal com reset 9 Deteco de endereo ilegal com reset

    9 Interrupo externa assncrona com pull-up interno (/IRQ) compartilhada com pino de I/O de propsito geral

    9 Reset assncrono (/RST) compartilhado com pino de I/O de propsito geral 9 Reset na energizao (POR) 9 Pull-ups internos no /IRQ e /RST para reduo de componentes externos 9 Registradores de I/O mapeados em memria 9 Modos de reduo de consumo STOP e WAIT

  • 27

    4.1.2. Pinagem

    Os componentes da famlia MC68HC908QT/QY esto disponveis em 8 e 16 pinos nos

    encapsulamentos PDIP, SOIC ou TSSOP, conforme ilustrado nas figuras:

    Figura 8 Pinagem dos microcontroladores MC68HC908QT1/QT2/QT4 PDIP/SOIC

    Figura 9 Pinagem dos microcontroladores MC68HC908QY1/QY2/QY4 PDIP/SOIC

    Figura 10 - Pinagem dos microcontroladores MC68HC908QY1/QY2/QY4 TSSOP

  • 28

    Os pinos multifuncionais dos microcontroladores da famlia MC68HC908QT/QY tem as

    seguintes descries:

    Tabela 2 Descrio dos pinos dos microcontroladores MC68HC908QT/QY

    Pino Descrio Tipo

    VDD Alimentao 5V ou 3V Potncia

    Vss Alimentao GND Potncia

    PTA0 Porta de entrada/sada de uso geral Entrada/Sada

    AD0 Entrada analgica, canal 0 Entrada

    TCH0 Entrada/Sada do timer canal 0 Entrada/Sada

    PTA0

    KBI0 Entrada da interrupo de teclado 0 Entrada

    PTA1 Porta de entrada/sada de uso geral Entrada/Sada

    AD1 Entrada analgica, canal 1 Entrada

    TCH1 Entrada/Sada do timer canal 1 Entrada/Sada

    PTA1

    KBI1 Entrada da interrupo de teclado 1 Entrada

    PTA2 Porta de entrada de uso geral Entrada

    /IRQ Interrupo externa Entrada

    PTA2

    KBI2 Entrada da interrupo de teclado 2 Entrada

    PTA3 Porta de entrada/sada de uso geral Entrada/Sada

    /RST Entrada de reset (ativo em 0) Entrada

    PTA3

    KBI3 Entrada da interrupo de teclado 3 Entrada

    PTA4 Porta de entrada/sada de uso geral Entrada/Sada

    OSC2 Sada do oscilador a cristal Sada do oscilador interno ou RC

    Sada Sada

    AD2 Entrada analgica, canal 2 Entrada

    PTA4

    KBI4 Entrada da interrupo de teclado 4 Entrada

    PTA5 Porta de entrada/sada de uso geral Entrada/Sada

    OSC1 Entrada do oscilador a cristal Entrada

    AD3 Entrada analgica, canal 3 Entrada

    PTA5

    KBI5 Entrada da interrupo de teclado 5 Entrada

    PTB[0:7]2 PTB[0:7] 8 entradas/sadas de uso geral Entrada/Sada

    2 Os pinos do port PTB no esto disponveis nos componentes de 8 pinos.

  • 29

    Os pinos que tem mltiplas funes num mesmo pino possuem uma seqncia de prioridade

    que dada pela tabela a seguir:

    Tabela 3 Seqncia de prioridade dos pinos multifuncionais

    Pino Seqncia de prioridade (maior para menor)

    PTA[0] AD0 TCH0 KBI[0] PTA[0] PTA[1] AD1 TCH1 KBI[1] PTA[1] PTA[2] /IRQ KBI[2] PTA[2] PTA[3] /RST KBI[3] PTA[3] PTA[4] OSC2 AD2 KBI[4] PTA[4] PTA[5] OSC1 AD3 KBI[5] PTA[5]

    NOTA: Na presena da condio de reset todos os pinos se tornam entradas, independente da tabela de prioridade.

    4.2. Memria

    Os componentes da famlia MC68HC908QT/QY possuem os seguintes tipos de memria

    implementadas:

    9 4096 bytes de memria FLASH (MC68HC908QT4 e MC68HC908QY4) 9 1536 bytes de memria FLASH (MC68HC908QT1/QT2 e MC68HC908QY1/QY2) 9 128 bytes de memria RAM para dados 9 48 bytes para vetores de interrupo programveis e armazenados na FLASH 9 416 bytes de memria ROM para o monitor 9 1536 bytes de rotinas para apagamento e programao da memria FLASH,

    localizados na ROM

    O acesso a endereos de memria reservados, pelo componente, podem ter efeitos

    imprevisveis na operao da CPU.

    O mapeamento de memria da famlia MC68HC908QT/QY sempre implementado dentro

    do espao de 64 Kbytes, embora o tamanho da memria real (FLASH + ROM + RAM +

    Registradores I/O) no ocupe todos os endereos.

    A Figura 10 mostra o mapa de memria da famlia MC68HC908QT/QY.

  • 30

    $0000

    Registradores de I/O 64 bytes

    $0040

    Reservado 64 bytes

    $0080

    RAM Interna 128 bytes

    $0100

    No implementado 9984 bytes

    No implementado 9984 bytes

    $0100

    $2800

    ROM Auxiliar 1536 bytes

    ROM Auxiliar 1536 bytes

    $2800

    $2E00

    No implementado 49152 bytes

    No implementado 51712 bytes

    $2E00

    $EE00

    Memria FLASH (MC68HC908QT4/QY4)

    4096 bytes

    Memria FLASH (MC68HC908QT1/QY1/QT2/QY2)

    1536 bytes

    $F800

    $FDFF $FE00 Status de BREAK (BSR)

    $FE01 Status do Reset (SRSR)

    $FE02 Auxiliar de BREAK (BRKAR)

    $FE03 Controle de BREAK (BFCR)

    $FE04 Status de Interrupo (INT1)

    $FE05 Status de Interrupo (INT2)

    $FE06 Status de Interrupo (INT3)

    $FE07 Reservado para Controle de Teste da FLASH

    $FE08 Controle da FLASH (FLCR)

    $FE09 Endereo alto de BREAK (BRKH)

    $FE0A Endereo baixo de BREAK (BRKL)

    $FE0B Controle e status de BREAK (BRKSCR)

    $FE0C Status do LVI (LVISR) $FE0D

    Reservado para Teste da FLASH

    3 bytes $FE10

    ROM Monitor 416 bytes

    $FFB0

    FLASH 14 bytes

    $FFBE Proteo de Blocos da FLASH (FLBPR)

    $FFBF Reservado para FLASH

    $FFC0 Ajuste do oscilador interno (OSCTRIM)

    $FFC1 Reservado para FLASH $FFC2

    FLASH 14 bytes

    $FFD0

    $FFFF

    Vetores de Interrupo 48 bytes

    Figura 11 Mapeamento da memria da famlia MC68HC908QT/QY

  • 31

    A faixa de endereos de $0000 a $003F contm a maioria dos registradores de dados, status

    e controle. Registradores de I/O adicionais esto localizados no final do endereamento da

    memria, a partir do endereo $FE00. Todos estes registradores podem ser vistos com

    detalhes no data sheet da famlia MC68HC908QT/QY.

    Os endereos dos vetores de interrupo so discriminados na tabela a seguir:

    Tabela 4 Vetores de interrupo da famlia MC68HC908QT/QY

    Prioridade do Vetor Vetor Endereo Descrio

    Baixa $FFDE Converso A/D completa (end. Alto)

    IF15 $FFDF Converso A/D completa (end. Baixo) $FFE0 Teclado (end. Alto) IF14 $FFE1 Teclado (end. Baixo)

    IF13

    IF6

    - No utilizado

    $FFF2 Estouro do TIM (end. Alto) IF5 $FFF3 Estouro do TIM (end. Baixo) $FFF4 Canal 1 TIM (end. Alto) IF4 $FFF5 Canal 1 TIM (end. Baixo) $FFF6 Canal 0 TIM (end. Alto) IF3 $FFF7 Canal 0 TIM (end. Baixo) IF2 - No utilizado $FFFA /IRQ (end. Alto) IF1 $FFFB /IRQ (end. Baixo) $FFFC SWI (end. Alto) - $FFFD SWI (end. Baixo) $FFFE Reset (end. Alto)

    Alta -

    $FFFF Reset (end. Baixo)

  • 32

    4.2.1. Memria RAM

    A memria RAM interna est localizada na faixa de endereos $0080 a $00FF. O

    registrador Stack Pointer (SP) permite que a pilha esteja localizada em qualquer lugar dentro

    do 64 Kbytes, mas para que funcione corretamente, deve obrigatoriamente apontar para uma

    regio de memria RAM.

    Antes do processamento de uma interrupo, a CPU utiliza 5 bytes da pilha para guardar o

    contedo de registradores especiais.

    Durante uma chamada de subrotina a CPU utiliza 2 bytes da pilha para guardar o endereo

    de retorno.

    4.2.2. Memria FLASH

    A memria FLASH pode ser lida, programada e apagada com a utilizao de apenas uma

    fonte de alimentao externa. As operaes de programao e apagamento so habilitadas

    atravs da utilizao de um charge pump interno.

    A memria FLASH consiste em 4096 ou 1536 bytes, com 48 bytes adicionais para vetores

    de interrupo. A memria FLASH pode ser apagada em blocos com tamanho mnimo de 64

    bytes; e pode ser programada em blocos de 32 bytes, em um ciclo de programao. As

    operaes de programao e apagamento so facilitadas atravs de bits de controle do

    registrador de controle da memria FLASH (FLCR). As faixas de endereo para a memria

    do usurio e dos vetores so:

    9 $EE00 - $FDFF: 4096 bytes de memria do usurio para o MC68HC908QT4/QY4 9 $F800 - $FDFF: 1536 bytes de memria do usurio para o MC68HC908QT1/QY1 e

    para o MC68HC908QT2/QY2

    9 $FFD0 - $FFFF: 48 bytes para os vetores de interrupo. Os procedimentos para apagar uma pgina, apagar toda a memria, programar e proteger a

    memria FLASH esto detalhados no data sheet da famlia de microcontroladores

    MC68HC908QT/QY.

    NOTA: Bits apagados da memria FLASH so lidos como nvel lgico 1 e bits programados so lidos como nvel lgico 0.

  • 33

    4.3. Mdulo de Integrao do Sistema (SIM)

    Junto com a CPU, o mdulo SIM controla todas as atividades do microcontrolador. O SIM

    um controlador de estados que coordena as atividades da CPU e as excees de tempo. O

    mdulo SIM responsvel por:

    9 Gerao do clock do barramento e controle da CPU e perifricos 9 Entrada e recuperao das condies de STOP/WAIT/RESET/BREAK 9 Controle do clock interno

    9 Controle do reset principal, incluindo o reset na energizao (POR) e o timeout do computador operando corretamente (COP)

    9 Controle de interrupes: 9 Temporizao do reconhecimento da interrupo 9 Temporizao do controle de arbitramento 9 Gerao do endereo do vetor da interrupo

    9 Temporizao para habilitao/desabilitao da CPU 9 Arquitetura modular expansvel para 128 fontes de interrupo

    Figura 12 Diagrama de bloco do mdulo SIM

  • 34

    Os pinos /RST e /IRQ esto compartilhados com os sinais PTA3 e PTA2 respectivamente.

    As funes de /RST e /IRQ podem ser ativadas pela programao adequada do registrador

    de configurao 2 (CONFIG2).

    O gerador de clock do barramento fornece sinais de clock do sistema para a CPU e

    perifricos do microcontrolador. Os clocks do sistema so gerados a partir do clock

    BUSCLKX2, com apresentado a seguir.

    Figura 13 Sinais de clock do mdulo SIM

    No modo usurio, a freqncia do barramento interno igual freqncia do oscilador

    dividida por quatro. A freqncia do oscilador denominada BUSCLKX4.

    Quando o mdulo de energizao (POR) gera um reset, os clocks da CPU e perifricos so

    desativados e permanecem nesse estado at 4096 BUSCLKX4 ciclos sejam completados. O

    pino /RST mantido em nvel lgico 0 pelo mdulo SIM durante todo esse perodo.

    4.3.1. Inicializao do sistema e reset

    O microcontrolador tem vrias fontes de reset:

    9 Mdulo POR (Power-On Reset) 9 Pino de reset externo (/RST) 9 Mdulo COP (Computer Operating Properly) 9 Mdulo LVI (Low-Voltage Inhibit) 9 Opcode ilegal 9 Endereo ilegal

    Todas estas fontes de reset carregam o vetor $FFFE-$FFFF no contador de programa (PC) e

    ativam o sinal de reset interno (IRST). Isto faz com que todos os registradores retornem com

    seus valores de reset e todos os mdulos retornem ao estado de reset.

    Todos os resets internos zeram o contador do mdulo SIM, mas no os resets externos. Cada

    reset seta um bit correspondente no registrador de status do reset (SRSR).

  • 35

    4.3.1.1. Reset durante a energizao (POR)

    Na energizao ocorrem os seguintes eventos:

    9 Um pulso POR gerado. 9 O sinal de reset interno ativado. 9 O mdulo SIM habilita o oscilador para fornecer o sinal BUSCLKX4. 9 Clocks internos CPU e os mdulos so mantidos inativos por 4096 BUSCLKX4

    ciclos para permitir a estabilizao do oscilador.

    9 O bit POR do registrador de status do reset (SRSR) setado e todos os outros bits do registrador so resetados.

    4.3.1.2. Reset do mdulo COP

    Uma das entradas do mdulo SIM reservada para o sinal de reset do COP. O estouro na

    contagem do contador do COP causa um reset interno e seta o bit COP no registrador de

    status do reset (SRSR). Maiores detalhes podero ser vistos no item que descreve o

    funcionamento do mdulo COP.

    4.3.1.3. Reset por Instruo Ilegal

    O mdulo SIM decodifica sinais da CPU para detectar instrues ilegais. Uma instruo

    ilegal seta o bit ILOP do registrador de status de reset (SRSR) e provoca um reset.

    Se o bit de habilitao do modo STOP do registrador de opes de mscara estiver em nvel

    lgico 0, o mdulo SIM trata a instruo STOP como um opcode ilegal e causa um reset por

    opcode ilegal.

    4.3.1.4. Reset por Endereo Ilegal

    Uma busca por opcode em um endereo no mapeado gera um reset por endereo ilegal. O

    mdulo SIM verifica se a CPU est fazendo a busca a um opcode antes de ativar o bit ILAD

    do registrador de status de reset (SRSR) e, resetar a CPU.

    4.3.1.5. Reset do mdulo LVI

    O sinal de reset do mdulo LVI ativado quando a tenso VDD cai abaixo do valor de

    desligamento VTRIPF. O bit LVI do registrador de status de reset (SRSR) setado. 64

    BUSCLKX4 ciclos depois, a CPU e as memrias saem do reset para permitir que a

    seqncia do vetor de reset ocorra.

  • 36

    4.3.2. Controle de excees

    A seqncia normal de execuo de programas pode ser alterada em 3 diferentes meios:

    9 Interrupes 9 Interrupes de hardware mascarveis 9 Interrupo por software no mascarvel (Instruo SWI)

    9 Reset 9 Interrupo BREAK

    As interrupes so memorizadas e o arbitramento desenvolvido pelo mdulo SIM no

    incio do processo de interrupo. O resultado do arbitramento determina qual vetor de

    interrupo a CPU vai utilizar. Uma vez que a interrupo memorizada pelo mdulo SIM,

    nenhuma outra pode tomar precedncia, independente da prioridade, antes que a interrupo

    memorizada seja servida (ou o bit I seja zerado).

    No incio da interrupo, a CPU salva o contedo dos registradores principais na pilha e seta

    o bit de mscara da interrupo (I) para prevenir interrupes adicionais. No final da

    interrupo, a instruo RTI recupera o contedo dos registradores da CPU na pilha e o

    processo normal pode continuar.

    Uma interrupo de hardware no para a instruo corrente. O processamento da

    interrupo comea depois de completada a execuo da instruo corrente. Quando a

    instruo completada, o mdulo SIM checa a existncia de interrupes de hardware

    pendentes. Se as interrupes no estiverem mascaradas (bit I = 0 no registrador CCR), e se

    a interrupo correspondente estiver habilitada, o mdulo SIM prossegue com o

    processamento da interrupo; caso contrrio a prxima instruo ser buscada e executada.

    Se mais de uma interrupo estiverem pendentes ao final da execuo de uma instruo, a

    interrupo de maior prioridade executada primeiro.

  • 37

    Os bits dos registradores de status de interrupes identificam as fontes de interrupo

    mascarveis. A famlia MC68HC908QT/QY possui as seguintes fontes de interrupo:

    Tabela 5 Fontes de interrupo

    Prioridade Fonte de Interrupo Flag Masc. Reg. INT

    End. Vetor

    Alta Reset - - - $FFFE - $FFFF

    Instruo SWI - - - $FFFC - $FFFD

    Pino /IRQ IRQF1 IMASK1 IF1 $FFFA - $FFFB Timer Canal 0 CH0F CH0IE IF3 $FFF6 - $FFF7

    Timer Canal 1 CH1F CH1IE IF4 $FFF4- $FFF5

    Estouro do timer TOF TOIE IF5 $FFF2 - $FFF3 Teclado KEYF IMASKK IF14 $FFDE - $FFDF

    Baixa Converso ADC completa COCO AIEN IF15 $FFE0 - $FFE1

    A instruo SWI uma interrupo no mascarvel que causa uma interrupo

    independente do estado da mscara da interrupo (bit I) no registrador CCR.

    4.4. Mdulo Oscilador (OSC)

    A famlia HC08 utiliza um esquema de temporizao onde o ciclo de execuo das

    instrues mais simples formado por 4 fases de um clock interno. Se a CPU estiver

    configurada para receber o sinal de frequncia de um cristal oscilador externo, ento o ciclo

    de execuo ser um quarto da frequncia do cristal. Isto denominado ciclo de

    barramento ou ciclo da CPU. Todas as instrues tm sua execuo especificada em

    nmero de ciclos da CPU. Dessa forma, se o hardware utilizar um cristal externo de 32MHz,

    a frequncia do barramento ser de 8 MHz. Portanto, instrues de um ciclo so executadas

    em 125ns.

    Este mdulo utilizado para fornecer uma fonte de clock estvel para o sistema. O mdulo

    oscilador gera 2 sadas de clock, BUSCLKX2 e BUSCLKX4. O clock BUSCLKX4 usado

    no mdulo SIM e no mdulo COP. O clock BUSCLKX2 dividido por 2 no mdulo SIM

    para ser usado como clock do barramento do microcontrolador. Portanto, a freqncia do

    barramento ser um quarto da freqncia de BUSCLKX4.

  • 38

    O oscilador tem 4 opes de fonte de clock disponveis:

    9 Oscilador interno: O microcontrolador gera internamente, uma freqncia fixa de clock ajustvel em 5%. Esta a opo padro na sada do reset.

    9 Oscilador externo: Um clock externo que pode ser inserido diretamente no OSC1. 9 RC externo: Esta opo utiliza um resistor externo (R) para gerar uma freqncia. O

    capacitor interno ao chip.

    9 Cristal externo: Mdulo oscilador interno ao chip que necessita um cristal externo ou ressonador cermico.

    4.4.1. Oscilador RC

    O circuito oscilador RC foi projetado para uso com um resistor externo (R) para fornecer

    uma fonte de clock com tolerncia menor do que 25%. Nesta configurao tpica, necessita-

    se de componentes externos, um resistor e um capacitor. No microcontrolador

    MC68HC908QY4, o capacitor interno ao chip. O valor R deve ter tolerncia de 1% ou

    menor, para obter uma fonte de clock com menos de 25% de tolerncia.

    Figura 14 Conexo com oscilador RC externo

    O pino OSC2 pode ser configurado como pino de I/O (PTA4), ou o bit OSC2EN pode ser

    setado para habilitar o a funo OSC2 sem afetar o clock.

  • 39

    4.4.2. Oscilador Interno

    O oscilador interno gera uma freqncia tpica de 12.8 MHz (INTCLK) resultando em uma

    velocidade de barramento de 3.2 MHz com uma tolerncia de 25% (sem ajustes). Nesta opo existe a possibilidade de ajustar a freqncia do clock entre +127 e 128

    passos. O registrador utilizado para isso o OSCTRIM, que tendo seu valor incrementado,

    aumenta o perodo do clock. Ajustando o valor em OSCTRIM a freqncia do clock poder

    chegar 5% em torno de 12.8 MHz.

    4.4.3. Oscilador Externo

    A opo de clock externo foi projetada para uso quando existe um sinal em freqncia

    disponvel na aplicao para fornecer uma fonte de clock para o microcontrolador. O pino

    OSC1 habilitado como uma entrada pelo mdulo do oscilador. O sinal de clock usado

    diretamente para criar os sinais BUSCLKX4 e tambm dividido por 2 criar o sinal

    BUSCLKX2.

    Nesta configurao, o pino OSC2 no pode ser configurado como sada do BUSCLKX4.

    Portanto, o bit OSC2EN no registrador de habilitao do Port A ser zerado para habilitar as

    funes de I/O (PTA4) no pino.

    4.4.4. Oscilador a Cristal

    O circuito oscilador a cristal (XTAL) foi projetado para uso com um cristal externo ou um

    ressonador cermico para fornecer uma fonte de clock precisa. Nesta configurao, o pino

    OSC2 dedicado ao circuito do cristal externo, e conectado na configurao de um oscilador

    Pierce, como apresentado na figura abaixo. No microcontroladores da famlia

    MC68HC908QT/QY, a freqncia de cristal mxima permitida de 32MHz, que dividido

    por 4 fornece a freqncia do barramento interno de 8MHz.

  • 40

    Figura 15 Conexo com cristal externo

    Nota: O resistor Rs pode ser zero quando utilizado com cristais de alta freqncia. Procure por informaes mais detalhadas dos valores dos componentes, com os fabricantes de cristal.

    4.5. Monitor ROM (MON)

    O mdulo Monitor ROM contm um conjunto de funes implementadas para controlar

    completamente o microcontrolador atravs de uma interface serial (uma nica linha)

    conectada a um computador. D-se o nome Monitor ROM porque os procedimentos esto

    armazenados em uma memria do tipo ROM que j vem programado de fbrica, e que no

    podem ser modificados.

    Quando o microcontrolador estiver operando em Modo Monitor, quem tem o controle sobre

    a execuo do programa o software da memria Monitor ROM. Atravs de uma interface

    de comunicao serial e a conexo com um computador, pode-se programar a memria

    FLASH do microcontrolador. Pode-se tambm executar um programa j gravado na flash

    em tempo real, com capacidade e execuo passo-a-passo, ou com a insero de um

    breakpoint, tendo visibilidade de todos registradores internos da CPU e de todo o mapa de

    memria. Se o programador estiver utilizando a ferramenta de desenvolvimento

    CodeWarrior (ver captulo Ferramentas de Desenvolvimento CodeWarrior) ele no tem

    que se preocupar com os comandos do modo monitor que possibilitam essas funcionalidades

    pois o ambiente de desenvolvimento j o faz, dessa forma a interao com o Modo Monitor,

    do ponto de vista do software transparente para o usurio.

  • 41

    Entre as principais caractersticas do monitor incluem-se:

    9 Funcionalidade normal para o usurio na maioria dos pinos 9 Um pino dedicado para comunicao entre o Monitor ROM e um computador central 9 Comunicao serial padro com o computador central 9 Execuo do cdigo em RAM ou FLASH 9 Caractersticas de proteo de cdigo da memria FLASH 9 Interface de programao da memria FLASH 9 Utilizao de cristal externo ou oscilador (taxa comunicao = frequncia/1024) 9 Modo de operao com oscilador interno (sem freqncia externa ou tenso alta) 9 416 bytes de cdigo do monitor ROM 9 Modo de entrada no Monitor sem necessidade de tenso alta (VTST) se o vetor de

    reset estiver apagado ($FFFE e $FFFF contendo $FF)

    9 Modo de entrada padronizado se tenso alta for aplicada no pino /IRQ O Monitor ROM recebe e executa comandos vindos de um computador central atravs de

    uma interface de comunicao (padro fsico RS232).

    Os comandos do Monitor podem acessar qualquer endereo da memria. No modo Monitor,

    a CPU pode executar um cdigo descarregado na RAM por um computador, enquanto a

    maioria dos pinos continua com suas funes normais de operao. Toda a comunicao

    entre o computador e a CPU feita atravs do pino PTA0, que necessita de um conversor de

    nveis para poder ser conectado ao computador.

    A entrada no modo Monitor se d aps a energizao (POR) ou um Reset quando

    determinadas condies (Tabela 6) forem satisfeitas.

    Tabela 6 Entrada em Modo Monitor/Modo Usurio aps um Reset

    Clock (MHz) Modo /IRQ /RST Vetor Reset PTA1 PTA4 Baud (bps) Comentrio

    Externo (f) Modo Monitor

    VTST VTST VDD x 1 0

    f / 1024

    Tenses nos pinos PTA1 e PTA4 so necessrias. As funes /RST e OSC1 ativas.

    Externo (f) Modo Monitor Forado

    VDD x $FF

    (apagado) x x

    f / 1024

    Funo OSC1 ativa. /RST e /IRQ esto disponveis apenas se configurados depois.

    Interno (3.2) Modo Monitor Forado

    VSS x $FF

    (apagado) x x

    9600 bps

    As funes /RST, /IRQ, e OSC1 disponveis apenas se configurados depois.

    Modo Usurio

    VDD ou VSS

    x $FF

    (programado) x x x

    Entra no modo usurio. Pino /RST disponvel apenas se configurado depois.

  • 42

    No modo monitor, a CPU utiliza vetores para Reset, interrupo de software (SWI), e

    interrupo Break diferentes das utilizadas para o modo usurio. Os vetores alternativos

    esto localizados na pgina $FE, ao invs da pgina $FF, em outras palavras permitem a

    execuo do cdigo relativo ao firmware do monitor interno, ao invs de executar o cdigo

    do usurio. A Tabela 7 apresenta as diferenas entre os vetores do modo usurio e modo

    monitor.

    Tabela 7 Vetores do Modo Usurio x Modo Monitor

    Vetor Modos

    Reset High Reset Low Break High Break Low SWI High SWI Low

    Usurio $FFFE $FFFF $FFFC $FFFD $FFFC $FFFD

    Monitor $FEFE $FEFF $FEFC $FEFD $FEFC $FEFD

    A taxa de comunicao entre o computador e a CPU controlada pela freqncia externa

    dividida por 1024. Dessa forma, ao utilizar um cristal externo de 9.8304 MHz o baud rate da

    comunicao serial ser de 9600 bps.

    Pode-se tambm utilizar o oscilador interno, que neste caso estar ajustado para a freqncia

    interna de 3.2 MHz para gerar a taxa de 9600 bps. Neste caso importante que o endereo

    $FFC0 do mapa de memria do microcontrolador contenha o valor de trimming (ajuste) do

    oscilador interno. Se este valor estiver errado a comunicao do Modo Monitor com o

    computador pode ser inviabilizada devido a desvios de frequncia.

    O firmware do Monitor ROM utiliza os comandos listados a seguir na comunicao e

    controle das atividades do cdigo que ser executado para depurao:

    9 READ Leitura de um byte da memria 9 WRITE Escrita de um byte na memria 9 IREAD Leitura dos prximos 2 bytes da memria a partir do ltimo endereo

    acessado

    9 IWRITE Escrita de um byte na memria no ltimo endereo acessado + 1 9 READSP Leitura do contedo do Stack Pointer 9 RUN Executa as instrues PULH e RTI

  • 43

    A CPU executa as instrues SWI e PSHH quando entra no modo Monitor. O comando

    RUN informa que a CPU deve executar as instrues PULH e RTI. Antes de enviar o

    comando RUN, o computador pode modificar o contedo dos registradores que esto na

    pilha para prepar-los a executar o programa do usurio.

    O mdulo Monitor ROM possui uma caracterstica de segurana muito importante, que

    previne usurios no autorizados a ler o contedo da memria FLASH. Por essa

    caracterstica, o programador s tem acesso ao contedo da FLASH depois de enviar 8 bytes

    de segurana que devem coincidir com bytes armazenados nos endereos $FFF6-$FFFD.

    Estes endereos contm dados definidos pelo usurio.

    Aps a energizao (POR), a CPU aguarda o recebimento serial de 8 bytes de segurana no

    pino PTA0, para entrar no modo Monitor. Se os bytes recebidos coincidirem com os bytes

    localizados nos endereos $FFF6-$FFFD, todas as funes do Monitor estaro disponveis

    para uso. Resets posteriores, no desabilitaro as funes do Monitor, isto , esses bytes de

    segurana s sero verificados novamente quando ocorrer outro POR.

    Se os bytes de segurana no coincidirem com os bytes dos endereos $FFF6-$FFFD, a CPU

    entra no modo Monitor mas no permite que a FLASH seja lida. Depois de uma seqncia

    imprpria (dados no coincidentes), o mdulo Monitor pode ainda executar uma rotina de

    apagamento total da memria FLASH.

    4.6. Mdulo de Interface do Temporizador (TIM)

    O mdulo TIM contm um temporizador com 2 canais que fornecem referncias de tempo,

    captura de entrada (input capture), comparao de sada (output compare) e PWM (Pulse

    Width Modulation).

    A principais caractersticas do mdulo TIM so as seguintes:

    9 2 canais para captura de entrada/ comparao de sada 9 Captura do sinal por borda de subida, borda de descida ou qualquer borda 9 Setar, resetar ou mudar o estado de uma sada nas aes de comparao de sinais

    9 Gerao dos sinais de PWM com ou sem buffer 9 Clock de entrada no mdulo TIM programvel com 7 selees de pr-escala. 9 Operao em contagem livre (free-running) ou contador de mdulo pr-determinado 9 Mudana no estouro de contagem de qualquer pino do canal 9 Bits de reset e parada do contador do mdulo TIM

  • 44

    O mdulo TIM compartilha 2 pinos de entrada/sada com 2 pinos de I/O do Port A. Os pinos

    so: PTA0/TCH0 e PTA1/TCH1.

    O componente central do mdulo TIM um contador de 16 bits que pode operar como

    temporizador (free-running counter) ou como contador (modulo up-counter). O contador

    TIM fornece referncias de tempo para funes de captura de entrada e/ou comparao de

    sada. O contador TIM utiliza os registradores TMODH:TMODL para configurar o valor

    mximo de contagem do mdulo. O software pode ler o valor do contador TIM a qualquer

    hora sem afetar a seqncia de contagem. Os dois canais do mdulo TIM so programveis

    independentemente como canais de captura de entrada ou comparao de sada.

    A fonte de clock do mdulo TIM o clock do barramento interno dividido por uma das 7

    opes de sada disponveis pelo circuito de pr-escala. Os bits de seleo PS[2:0] do

    registrador de controle e status do mdulo TIM (TSC) selecionam a pr-escala, e

    conseqentemente, a fonte de clock do mdulo TIM.

    Com a funo de captura de entrada, o mdulo TIM pode determinar precisamente o tempo

    no qual um evento externo ocorre. Quando uma determinada borda ocorre no pino de um

    canal de captura de entrada, o mdulo TIM armazena o contedo do contador nos

    registradores TCHxH:TCHxL. Esta captura pode, tambm, gerar uma requisio de

    interrupo.

    Com a funo de comparao de sada, o mdulo TIM pode gerar um pulso peridico com

    uma polaridade, durao e freqncia programvel. Quando o contador alcana o valor

    programado de contagem, o mdulo TIM pode setar, resetar ou mudar o estado do pino

    daquele canal. Esta comparao pode, tambm, gerar uma requisio de interrupo.

    Se for utilizada a caracterstica de mudana no estouro da contagem (toggle-on-overflow)

    com um canal configurado com comparao de sada, o mdulo TIM pode gerar um sinal de

    PWM. Maiores detalhes so apresentados no data sheet da famlia MC68HC908QT/QY.

  • 45

    4.7. Conversor Analgico/Digital (ADC)

    As principais caractersticas do mdulo ADC so:

    9 4 canais com multiplexao das entradas 9 Converso por aproximao sucessiva linear 9 Resoluo de 8 bits 9 Converso simples ou contnua 9 Flag indicativa de converso completada ou interrupo por converso completada 9 Clock do ADC selecionvel

    Os 4 canais do ADC so disponveis para amostrar sinais externos nos pinos PTA0, PTA1,

    PTA4 e PTA5. Um multiplex analgico interno permite que a seleo de um dos canais seja

    amostrada e armazenada no registrador ADCVIN, com resoluo de 8 bits. Quando a

    converso completada, o mdulo ADC coloca o resultado no registrador de dados do ADC

    e seta um flag ou gera uma interrupo.

    4.8. Portas de Entrada/Sada (I/O)

    Os microcontroladores MC68HC908QT1/QT2/QT4 tem 5 pinos bidirecionais programveis

    como entrada/sada (I/O) e 1 pino de entrada. Os microcontroladores MC68HC908QY1/

    QY2/QY4 tem 13 pinos bidirecionais programveis como entrada/sada e 1 pino de entrada.

    NOTA: Conecte todos os pinos de I/O no utilizados a um determinado nvel lgico, VDD ou VSS. Embora os ports de I/O no requeiram terminao para operar adequadamente, uma terminao reduz o consumo excessivo de corrente e a possibilidade de falha por eletrosttica.

    4.8.1. Port A

    O Port A tem 6 funes especiais que compartilham todos os 6 pinos com o mdulo de

    interrupo de teclado (KBI). Cada pino do port A tambm tem pull-ups internos

    configurveis se o correspondente pino estiver configurado com port de entrada.

    4.8.2. Port B

    O Port B tem 8 bits de entrada/sada de propsito geral. O Port B est disponvel apenas nos

    seguintes microcontroladores: MC68HC908QY1/QY2/QY4. Cada pino do port B tambm

    tem pull-ups internos configurveis se o correspondente pino estiver configurado como

    entrada.

  • 46

    4.9. Interrupo Externa (IRQ)

    O pino /IRQ, compartilhado com PTA2 e interrupo do teclado (KBI), fornece uma entrada

    a uma interrupo mascarvel. Entre as caractersticas do mdulo IRQ encontram-se:

    9 Pino de interrupo externa - /IRQ 9 Bits de controle da interrupo /IRQ 9 Buffer de histerese 9 Programao da interrupo por borda exclusivamente, ou borda e nvel 9 Reconhecimento de interrupo automtico 9 Resistor de pull-up interno selecionvel

    A habilitao da interrupo feita pela configurao correta do bit IRQEN, presente no

    registrador CONFIG2. Se um nvel lgico 0 for aplicado ao pino /IRQ, uma requisio de

    interrupo fica armazenada (latch) at que uma das seguintes aes ocorra:

    9 Vetor Fetch Uma busca ao vetor da interrupo realizada, iniciado o servio de atendimento a interrupo.

    9 Software Clear O software pode limpar o latch da interrupo pela escrita no bit de reconhecimento presente no registrador de controle e status da interrupo (ISCR).

    9 Reset Um reset automaticamente limpa o latch da interrupo.

    4.10. Mdulo de Interrupo do Teclado (KBI)

    O mdulo de interrupo do teclado (KBI) fornece 6 interrupes externas mascarveis

    independentemente, que so acessveis atravs dos pinos PTA0-PTA5, mais uma interrupo

    mascarvel controlada pela lgica de auto-despertar. As principais caractersticas do mdulo

    de interrupo do teclado incluem:

    9 6 pinos de interrupo de teclado, com bits de habilitao de interrupo do teclado separados e uma mscara de interrupo do teclado.

    9 1 interrupo interna controlada pela lgica de auto-despertar, com bit de habilitao da interrupo separado, compartilhado com a mesma mscara de interrupo do

    teclado.

    9 Pull-ups configurveis por software, quando os pinos forem configurados como entrada.

    9 Interrupo programvel por exclusivamente por borda ou borda e nvel. 9 Sada dos modos de baixo consumo.

  • 47

    Uma interrupo de teclado armazenada quando um ou mais entradas da interrupo do

    teclado vai para nvel lgico 0 depois de todas estarem em nvel lgico 1. O bit MODEK no

    registrador de controle e status do teclado controla o modo de disparo da interrupo de

    teclado. Maiores detalhes so apresentados no data sheet da famlia MC68HC908QT/QY.

    4.11. Mdulo Computador Operando Corretamente (COP)

    O mdulo COP (Computer Operating Properly) contm um contador que gerar um reset

    quando estourar sua contagem. O mdulo COP ajuda o software a se recuperar de quando o

    sistema passa a executar, por exemplo, um cdigo esprio. Para prevenir o reset do COP seu

    contador deve ser zerado periodicamente. O mdulo COP pode ser desabilitado atravs do

    bit COPD presente no registrador de configurao 1 (CONFIG1).

    Figura 16 Diagrama de blocos do mdulo COP

    O mdulo COP contm um contador de 6 bits que roda livre precedido pelo contador de 12

    bits do mdulo SIM. Se no for zerado por software, o contador do COP estoura e gera um

    reset assncrono depois de (218-24) ou (213-24) BUSCLKX4 ciclos; dependendo do estado do

    bit de seleo da taxa do COP (COPRS), no registrador de configurao1 (CONFIG1).

  • 48

    Um ciclo de escrita de qualquer valor no endereo $FFFF antes da ocorrncia de estouro,

    zera o contador COP e os estgios 12-5 do contador SIM. O registrador localizado no

    endereo $FFFF, tambm denominado registrador de controle do COP (COPCTL).

    Um reset do COP coloca o pino /RST em nvel lgico 0 por 32 x BUSCLKX4 ciclos e seta

    o bit COP no registrador de status do reset (RSR).

    O mdulo COP desabilitado no modo monitor quando VTST estiver presente no pino /IRQ.

    As instrues WAIT e STOP colocam a CPU em modo de baixo consumo. No modo WAIT

    o COP continua a operar, e para prevenir-se um reset, periodicamente o contador COP deve

    ser zerado. No modo STOP o sinal de clock BUSCLKX4 desligado, portanto no capaz

    de gerar um reset, porm, na sada do modo STOP assegure-se de ter o perodo de timeout

    completo do COP, para prevenir-se de um possvel reset durante a execuo do software.

    4.12. Mdulo de Inibio por Tenso Baixa (LVI)

    O mdulo LVI (Low-Voltage Inhibit) tem a funo de monitorar a tenso do pino de

    alimentao (VDD) e pode forar um reset quando a tenso VDD cair abaixo da tenso de

    desligamento - VTRIPF.

    Figura 17 Diagrama de blocos do mdulo LVI

    O mdulo LVI contm um circuito de referncia com zona morta e um comparador. Os bits

    de configurao do mdulo LVI encontram-se no registrador CONFIG1.

    Se LVIPWRD = 0, a tenso VDD passa a ser monitorada pelo mdulo LVI.

    Se LVIRSTD = 0, o mdulo LVI gera um reset quando VDD cair abaixo da tenso VTRIPF. Se

    LVISTOP = 1, o mdulo LVI passa a operar tambm no modo STOP.

  • 49

    Se LVI5OR3 = 1, a tenso VTRIPF configurada para operao de 5V. Se LVI5OR3 = 0, a

    tenso VTRIPF configurada para operao de 3V.

    Uma vez ocorrido um reset por LVI, o microcontrolador permanece em reset at que VDD

    suba acima da tenso VTRIPR. A tenso VTRIPF menor do que VTRIPR, dessa forma previne-se

    que a CPU entre e saia continuamente do reset.

    Em aplicaes que possam operar com VDD em nveis abaixo de VTRIPF , o usurio pode

    monitor por software o bit LVIOUT. No registrador de configurao, o bit LVIPWRD deve

    estar em nvel lgico 0 para habilitar o mdulo LVI, e o bit LVISTD deve estar em nvel

    lgico 1 para desabilitar o reset por LVI.

    O bit LVIOUT est presente no registrador de status do LVI (LVISR).

    4.13. Mdulo Break (BREAK)

    O mdulo Break pode gerar uma interrupo BREAK que para o fluxo normal do programa

    em um endereo definido para entrar em um programa alternativo (em background). Entre

    as principais caractersticas do mdulo Break esto as seguintes:

    9 Registradores de I/O acessveis durante a interrupo Break 9 CPU gera interrupes Break 9 Software gera interrupes Break 9 COP desabilitado durante interrupes Break

    Os seguintes eventos podem causar a ocorrncia de uma interrupo Break:

    9 A CPU gera um endereo (o endereo no Program Counter) que coincide com o contedo dos registradores de endereo de Break;

    9 O software escreve um nvel lgico 1 no bit BRKA no registrador de controle e status de Break.

    Quando um endereo do barramento interno coincide com o valor escrito nos registradores

    de endereo de Break, o mdulo Break implementa um sinal de breakpoint (/BKPT) no

    mdulo SIM. Este sinal responsvel pela execuo, no registrador de instruo da CPU, da

    instruo SWI (software interrupt), depois de completada a instruo corrente.

    Ao encontrar a instruo RTI (return from interrupt) a rotina de Break finalizada e o

    microcontrolador retorna para sua operao normal.

  • 50

    5. CONJUNTO DE INSTRUES

    5.1. Introduo

    A CPU08, por ser de arquitetura CISC (Complex Instruction Set Computer), apresenta um

    conjunto de instrues poderoso que pode ser utilizado de forma simples e imediata. Por

    possuir instrues abrangentes o programador consegue desenvolver programas de forma

    mais eficiente e sem muito esforo.

    Como exemplo de instrues poderosas da CPU da famlia HC08 encontram-se a

    multiplicao e a diviso. Uma multiplicao de dois operandos de 8 bits realizada em

    625ns, se o clock do barramento interno for de 8MHz. Uma diviso de um operando de 16

    bits por outro de 8 bits executada em 825ns.

    Aliado a uma potente CPU, a famlia HC08 possui 16 modos de endereamento, alguns

    deles implementados para gerao de cdigo eficientes com linguagens de alto nvel, como

    por exemplo, a linguagem C.

    5.2. Nomenclatura

    Registradores da CPU

    A Acumulador

    CCR Registrador Condition Code

    H Registrador de ndice, 8 bits mais significativos

    X Registrador de ndice, 8 bits menos significativos

    PC Program Counter

    PCH Program Counter, 8 bits mais significativos

    PCL Program Counter, 8 bits menos significativos

    SP Stack Pointer

    Bits do Registrador CCR

    V Overflow (estouro em operaes com sinal) bit 7

    H Half carry (estouro em operaes em BCD) bit 4

    I Mascara interrupes bit3

    N Negativo (indicador de nmero negativo) bit 2

    Z Zero (indicador de resultado zero) bit 1

    C Carry/Borrow (estouro em operaes sem sinal) bit 0

  • 51

    5.3. Conjunto de Instrues Resumido

    Movimentao de Dados

    Instruo Descrio

    LDA Carrega o acumulador

    LDHX Carrega o par de registradores (H:X)

    LDX Carrega o registrador X

    STA Armazena o acumulador na memria

    STHX Armazena os registradores (H:X) na memria

    STX Armazena o registrador X na memria

    TAX Transfere o acumulador para o registrador X

    TXA Transfere o registrador X para o acumulador

    MOV Movimenta dados da memria

    PSHA Insere o contedo do acumulador na pilha

    PSHH Insere o contedo do registrador H na pilha

    PSHX Insere o contedo do registrador X na pilha

    PULA Insere o contedo da pilha no acumulador

    PULH Insere o contedo da pilha no registrador H

    PULX Insere o contedo da pilha no registrador X

    Aritmticas