View
29
Download
11
Category
Preview:
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
Recommended