Anda di halaman 1dari 96

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:
Unidade Central de Processamento (CPU)
Sistema de clock para dar seqncia s atividades da CPU
Memria para armazenamento de instrues e para manipulao de dados
Entradas para interiorizar na CPU informaes do mundo externo
Sadas para exteriorizar informaes processadas pela CPU para o mundo externo
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 2
n
posies de memria (p.ex.: um sistema
com 11 linhas pode acessar 2
11
= 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 V
SS
) indica o nvel lgico 0 e o sinal de
fonte positiva, que tipicamente +5V
DC
(V
DD
) 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 V
DD
e V
SS
. 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 V
DD
e
V
SS
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:
Cdigo objeto completamente compatvel com a famlia HC05
CPU com freqncia de barramento interno de at 8MHz
64 Kbytes endereveis para memria de programa, dados e perifricos
Barramento interno flexvel para acessar perifricos
Modos de baixo consumo STOP e WAIT
Registrador de 16 bits para Stack Pointer com instrues de manipulao da pilha
Registrador de 16 bits de ndice (H:X) com manipulao do byte alto (H) e baixo (X)
16 modos de endereamento
Movimentao de dados da memria para memria sem utilizar acumulador
Instrues rpidas de multiplicao de 8 bits por 8 bits e diviso de 16 bits por 8 bits
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)
O
v
e
r
f
l
o
w

H
a
l
f
-
c
a
r
r
y

M

s
c
a
r
a

I
n
t
e
r
r
u
p

o

N
e
g
a
t
i
v
o

Z
e
r
o

C
a
r
r
y
/
B
o
r
r
o
w


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 8
o
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 #$20
1
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).
Sem offset
Exemplo: LDA ,X Carrega o acumulador com o contedo do endereo armazenado
no registrador H:X.
Com offset de 8 bits
Exemplo: LDA $5E,X Carrega o acumulador com o contedo do endereo
armazenado em (H:X + $5E).
Com offset de 16 bits
Exemplo: LDA $485E,X Carrega o acumulador com o contedo do endereo
armazenado em (H:X + $485E).
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.
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.
Com offset de 8 bits
Exemplo: LDA $48,SP Carrega o acumulador com o contedo do endereo
armazenado em (SP + $48).
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.
Imediato para direto
Exemplo: MOV #$40,$25 Movimenta o valor imediato $40 para o endereo $25.
Direto para direto
Exemplo: MOV $40,$25 Movimenta o contedo do endereo $40 para o endereo
$25.
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.
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:
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.
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:
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.
Desabilita o clock da CPU e dos perifricos
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:
Todos os registradores de direo so zerados (I/O configurados como entrada);
Stack Pointer inicializado com o endereo $00FF;
Bit I do registrador CCR setado para inibir as interrupes mascarveis;
Flag de interrupo externa resetado;
Flag do modo STOP resetado;
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:
Interrupo externa (/IRQ) - utilizada para monitorar sistemas ou eventos externos;
Interrupes do temporizador - utilizadas para processar eventos baseados em
contagem (hardware) ou referncias de tempo;
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:
Reconhecimento (Recognition): evento causador da interrupo, pode ser hardware
ou software;
Arbitramento (Arbitration): determinao das fontes de interrupo e priorizao, no
caso de haver mais de uma interrupo simultnea;
Empilhamento (Stacking): armazenamento na pilha do contexto do programa atual;
Busca do vetor (Vector Fetching): armazenamento no PC do vetor da interrupo;
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 N
o
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
Ncleo da CPU de alto desempenho HC08
Tenso de operao (V
DD
) de 5V e 3 V
8MHz @5V (4MHz@3V) para operaes do barramento interno
Oscilador interno ajustvel
3.2MHz para operaes do barramento interno
Capacidade de ajuste com registrador de 8 bits
Preciso de 25% sem utilizar o ajuste
Preciso de 5% com o ajuste
Capacidade de acordar automaticamente da condio de STOP
Programao in-system da memria FLASH
Segurana da memria FLASH
Memria FLASH programvel na prpria aplicao (com gerao interna de tenses
de apagamento/programao) com capacidades de 1,5K ou 4Kbytes
128 bytes de memria RAM

26
Temporizador com 2 canais de 16 bits (Timer Interface Module TIM)
4 canais de conversor A/D de 8 bits (ADC)
5 ou 13 linhas de entrada/sada (I/O) bidirecionais e mais 1 entrada:
6 compartilhadas com funo de interrupo do teclado e ADC
2 compartilhadas com os canais do temporizador
1 compartilhada com interrupo externa (IRQ)
8 linhas extras no empacotamento de 16 pinos
Capacidade de alta corrente dreno/fonte em todos os pinos
Pull-ups selecionveis individualmente em todos os pinos
Habilidade de tri-state em todos os pinos
6 bits de interrupo de teclado com caracterstica de despertar
Inibio por baixa tenso (Low-Voltage Inhibit LVI)
Ponto de disparo selecionvel por software no registrador CONFIG
Sistema de proteo
Computador operando adequadamente (Computer Operating Properly COP)
Deteco de baixa tenso com reset
Deteco de opcode ilegal com reset
Deteco de endereo ilegal com reset
Interrupo externa assncrona com pull-up interno (/IRQ) compartilhada com pino
de I/O de propsito geral
Reset assncrono (/RST) compartilhado com pino de I/O de propsito geral
Reset na energizao (POR)
Pull-ups internos no /IRQ e /RST para reduo de componentes externos
Registradores de I/O mapeados em memria
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
V
DD
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:
4096 bytes de memria FLASH (MC68HC908QT4 e MC68HC908QY4)
1536 bytes de memria FLASH (MC68HC908QT1/QT2 e MC68HC908QY1/QY2)
128 bytes de memria RAM para dados
48 bytes para vetores de interrupo programveis e armazenados na FLASH
416 bytes de memria ROM para o monitor
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:
$EE00 - $FDFF: 4096 bytes de memria do usurio para o MC68HC908QT4/QY4
$F800 - $FDFF: 1536 bytes de memria do usurio para o MC68HC908QT1/QY1 e
para o MC68HC908QT2/QY2
$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:
Gerao do clock do barramento e controle da CPU e perifricos
Entrada e recuperao das condies de STOP/WAIT/RESET/BREAK
Controle do clock interno
Controle do reset principal, incluindo o reset na energizao (POR) e o timeout do
computador operando corretamente (COP)
Controle de interrupes:
Temporizao do reconhecimento da interrupo
Temporizao do controle de arbitramento
Gerao do endereo do vetor da interrupo
Temporizao para habilitao/desabilitao da CPU
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:
Mdulo POR (Power-On Reset)
Pino de reset externo (/RST)
Mdulo COP (Computer Operating Properly)
Mdulo LVI (Low-Voltage Inhibit)
Opcode ilegal
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:
Um pulso POR gerado.
O sinal de reset interno ativado.
O mdulo SIM habilita o oscilador para fornecer o sinal BUSCLKX4.
Clocks internos CPU e os mdulos so mantidos inativos por 4096 BUSCLKX4
ciclos para permitir a estabilizao do oscilador.
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 V
DD
cai abaixo do valor de
desligamento V
TRIPF.
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:
Interrupes
Interrupes de hardware mascarveis
Interrupo por software no mascarvel (Instruo SWI)
Reset
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:
Oscilador interno: O microcontrolador gera internamente, uma freqncia fixa de
clock ajustvel em 5%. Esta a opo padro na sada do reset.
Oscilador externo: Um clock externo que pode ser inserido diretamente no OSC1.
RC externo: Esta opo utiliza um resistor externo (R) para gerar uma freqncia. O
capacitor interno ao chip.
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:
Funcionalidade normal para o usurio na maioria dos pinos
Um pino dedicado para comunicao entre o Monitor ROM e um computador central
Comunicao serial padro com o computador central
Execuo do cdigo em RAM ou FLASH
Caractersticas de proteo de cdigo da memria FLASH
Interface de programao da memria FLASH
Utilizao de cristal externo ou oscilador (taxa comunicao = frequncia/1024)
Modo de operao com oscilador interno (sem freqncia externa ou tenso alta)
416 bytes de cdigo do monitor ROM
Modo de entrada no Monitor sem necessidade de tenso alta (V
TST
) se o vetor de
reset estiver apagado ($FFFE e $FFFF contendo $FF)
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
V
TST

V
TST
V
DD
x 1 0
f / 1024
Tenses nos pinos PTA1 e
PTA4 so necessrias. As
funes /RST e OSC1 ativas.
Externo (f)
Modo
Monitor
Forado
V
DD
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
V
SS
x
$FF
(apagado)
x x
9600 bps
As funes /RST, /IRQ, e
OSC1 disponveis apenas se
configurados depois.
Modo
Usurio
V
DD
ou
V
SS

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:
READ Leitura de um byte da memria
WRITE Escrita de um byte na memria
IREAD Leitura dos prximos 2 bytes da memria a partir do ltimo endereo
acessado
IWRITE Escrita de um byte na memria no ltimo endereo acessado + 1
READSP Leitura do contedo do Stack Pointer
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:
2 canais para captura de entrada/ comparao de sada
Captura do sinal por borda de subida, borda de descida ou qualquer borda
Setar, resetar ou mudar o estado de uma sada nas aes de comparao de sinais
Gerao dos sinais de PWM com ou sem buffer
Clock de entrada no mdulo TIM programvel com 7 selees de pr-escala.
Operao em contagem livre (free-running) ou contador de mdulo pr-determinado
Mudana no estouro de contagem de qualquer pino do canal
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:
4 canais com multiplexao das entradas
Converso por aproximao sucessiva linear
Resoluo de 8 bits
Converso simples ou contnua
Flag indicativa de converso completada ou interrupo por converso completada
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, V
DD
ou
V
SS
. 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:
Pino de interrupo externa - /IRQ
Bits de controle da interrupo /IRQ
Buffer de histerese
Programao da interrupo por borda exclusivamente, ou borda e nvel
Reconhecimento de interrupo automtico
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:
Vetor Fetch Uma busca ao vetor da interrupo realizada, iniciado o servio de
atendimento a interrupo.
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).
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:
6 pinos de interrupo de teclado, com bits de habilitao de interrupo do teclado
separados e uma mscara de interrupo do teclado.
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.
Pull-ups configurveis por software, quando os pinos forem configurados como
entrada.
Interrupo programvel por exclusivamente por borda ou borda e nvel.
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 (2
18
-2
4
) ou (2
13
-2
4
) 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 V
TST
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 (V
DD
) e pode forar um reset quando a tenso V
DD
cair abaixo da tenso de
desligamento - V
TRIPF
.

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 V
DD
passa a ser monitorada pelo mdulo LVI.
Se LVIRSTD = 0, o mdulo LVI gera um reset quando V
DD
cair abaixo da tenso V
TRIPF
. Se
LVISTOP = 1, o mdulo LVI passa a operar tambm no modo STOP.

49
Se LVI5OR3 = 1, a tenso V
TRIPF
configurada para operao de 5V. Se LVI5OR3 = 0, a
tenso V
TRIPF
configurada para operao de 3V.
Uma vez ocorrido um reset por LVI, o microcontrolador permanece em reset at que V
DD

suba acima da tenso V
TRIPR
. A tenso V
TRIPF
menor do que V
TRIPR
, dessa forma previne-se
que a CPU entre e saia continuamente do reset.
Em aplicaes que possam operar com V
DD
em nveis abaixo de V
TRIPF ,
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:
Registradores de I/O acessveis durante a interrupo Break
CPU gera interrupes Break
Software gera interrupes Break
COP desabilitado durante interrupes Break
Os seguintes eventos podem causar a ocorrncia de uma interrupo Break:
A CPU gera um endereo (o endereo no Program Counter) que coincide com o
contedo dos registradores de endereo de Break;
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
Instruo Descrio
ADD Adiciona sem carry
ADC Adiciona com carry
SUB Subtrai sem carry
SBC Subtrai com carry
MUL Multiplica sem sinal
DIV Divide
DAA Ajuste decimal do acumulador


52
Manipulao de dados
Instruo Descrio
AIS Adiciona valor imediato ao Stack Pointer
AIX Adiciona valor imediato ao Registrador de ndice
ASLA
ASLX
ASL
LSLA
LSLX
LSL
Shift aritmtico esquerda do acumulador
Shift aritmtico esquerda do registrador X
Shift aritmtico esquerda da memria
Shift lgico esquerda do acumulador
Shift lgico esquerda do registrador X
Shift lgico esquerda da memria
ASRA
ASRX
ASR
Shift aritmtico para a direita do acumulador
Shift aritmtico para a direita do registrador X
Shift aritmtico para a direita da memria
CLRA
CLRH
CLRX
CLR
Limpa acumulador
Limpa registrador H
Limpa registrador X
Limpa memria
DECA
DECX
DEC
Decrementa acumulador
Decrementa registrador X
Decrementa memria
INCA
INCX
INC
Incrementa acumulador
Incrementa registrador X
Incrementa memria
LSRA
LSRX
LSR
Shift lgico direita do acumulador
Shift lgico direita do registrador X
Shift lgico direita da memria
NEGA
NEGX
NEG
Negativo do acumulador (complemento de 2)
Negativo do registrador X (complemento de 2)
Negativo da memria (complemento de 2)
ROLA
ROLX
ROL
Rotao para a esquerda com carry do acumulador
Rotao para a esquerda com carry do registrador X
Rotao para a esquerda com carry da memria
RORA
RORX
ROR
Rotao para a direita com carry do acumulador
Rotao para a direita com carry do registrador X
Rotao para a direita com carry da memria


53
Bit Manipulao de Bits
Instruo Descrio
BCLR Limpa o bit n na memria
BSET Seta o bit n na memria

Lgica
Instruo Descrio
AND AND lgico
COMA
COMX
COM
Complementa acumulador (complemento de 1)
Complementa registrador X (complemento de 1)
Complementa memria (complemento de 1)
EOR Exclusive-OR do acumulador com memria
ORA OR lgico
NSA Troca nibbles do acumulador

Teste de dados
Instruo Descrio
BIT Testa bits (comparao bit a bit)
BRCLR Desvia se bit n na memria est limpo
BRSET Desvia se bit n na memria est setado
CMP Compara acumulador com memria
CPHX Compara registrador de ndice com memria
CPX Compara X com memria
TSTA
TSTX
TST
Testa se acumulador negativo ou zero
Testa se registrador X negativo ou zero
Testa se memria negativa ou zero


54
Desvios condicionais
Instruo Descrio
BCC
BHS
Desvia se bit C = 0
Desvia se contedo do acumulador for maior ou igual ao contedo da
memria (operandos sem sinal)
BCS
BLO
Desvia se bit C = 1
Desvia se contedo do acumulador for menor do que o contedo da
memria(operandos sem sinal)
BEQ Desvia se igual
BGE Desvia se contedo do acumulador for maior ou igual ao contedo da
memria (operandos com sinal)
BGT Desvia se contedo do acumulador for maior do que o contedo da
memria (operandos com sinal)
BHCC Desvia se bit H = 0
BHCS Desvia se bit H = 1
BHI Desvia se contedo do acumulador for maior do que o contedo da
memria (operandos sem sinal)
BIH Desvia se pino /IRQ = 1
BIL Desvia se pino /IRQ = 0
BLE Desvia se contedo do acumulador for menor ou igual ao contedo da
memria (operandos com sinal)
BLS Desvia se contedo do acumulador for menor ou igual ao contedo da
memria (operandos sem sinal)
BLT Desvia se contedo do acumulador for menor do que o contedo da
memria (operandos com sinal)
BMC Desvia se bit I = 0
BMI Desvia se negativo
BMS Desvia se bit I = 1
BNE Desvia se diferente
BPL Desvia se positivo
BRA Desvia sempre
BRN Nunca desvia
BSR Desvia para subrotina
CBEQA
CBEQX
CBEQ
Compara acumulador com valor imediato e desvia se igual
Compara registrador X com valor imediato e desvia se igual
Compara acumulador com memria e desvia se igual
DBNZA
DBNZX
DBNZ
Decrementa acumulador e desvia se diferente de zero
Decrementa registrador X e desvia se diferente de zero
Decrementa memria e desvia se diferente de zero


55
Desvios incondicionais
Instruo Descrio
JMP Salto
JSR Salta para subrotina
RTS Retorno de subrotina

Controle
Instruo Descrio
CLC Limpa bit C
CLI Limpa bit I (habilita interrupes)
NOP Sem operao
SEC Seta bit C
SEI Seta bit I (desabilita interrupes)
RSP Reseta o Stack Pointer
RTI Retorno da interrupo
STOP Habilita o pino /IRQ e para o oscilador
SWI Interrupo de software
TAP Transfere acumulador para CCR
TPA Transfere CCR para acumulador
TSX Transfere SP para Registrador de ndice
TXS Transfere Registrador de ndice para SP
WAIT Habilita interrupes e para o processador

5.3.1. Conjunto de instrues completo
O conjunto de instrues completo encontra-se no manual do microcontrolador (ver
documento MC68HC908QY4\D).
5.4. Caractersticas eltricas
A caractersticas/especificaes eltricas dos componentes da famlia M68HC908QT/QY
encontram-se no manual do microcontrolador (ver documento MC68HC908QY4\D).

56
6. PROGRAMAO ASSEMBLER
Para um microprocessador/microcontrolador executar um programa, o contedo do arquivo
do cdigo fonte deve ser convertido em uma seqncia de instrues binrias (opcodes), e
ento carregadas na memria de programa do microcontrolador. Esta converso do cdigo
fonte em opcodes realizada por um aplicativo denominado montador assembler, ou
simplesmente assembler, e os cdigos de mquina (opcodes) resultantes so armazenados em
um arquivo no formato .S19 da Motorola, que pode ser carregado/gravado na memria de
programa do microcontrolador.
6.1. Sintaxe
O arquivo fonte de um programa deve ser escrito com uma sintaxe correta, de tal forma que
o assembler consiga gerar os opcodes corretamente. Cada linha do arquivo fonte contm os
seguintes elementos bsicos:
Rtulos (Labels)
Instrues Mnemnicas ou pseudo-instrues
Operandos
Comentrios
A ordem e posio desses elementos importante. Em particular, os rtulos sempre
comeam na coluna um, mnemnicos devem comear a partir da coluna dois (normalmente
utiliza-se uma tabulao a partir da coluna um), operando sempre seguem os mnemnicos, e
o caracter ponto-e-vrgula (;) sempre precede comentrios.
Rtulos so nomes dados aos endereos iniciais de: instrues de desvio, subrotinas ou
subrotinas de servio de interrupes. Sempre que possvel deve-se utilizar nomes que
tenham algum significado para o sistema.
Mnemnicos so abreviaes textuais significativas dos opcodes, e podem conter ou no
operandos (depende da instruo).
Finalmente, para facilitar o entendimento, as linhas contendo instrues mnemnicas podem
ser freqentemente comentadas. Isto permitido no arquivo fonte sempre que houver um
ponto-e-vrgula precedendo um texto explicativo (comentrio). O assembler ir ignorar o
contedo da linha depois que encontrar um ponto-e-vrgula, e o contedo no far parte do
cdigo executvel (arquivo no formato .S19).

57
A seguir esto alguns exemplos de linhas vlidas de arquivos de cdigo fonte:
Rtulo Mnemnico Operando Comentrios
; Isto eh uma linha de comentario

MOV
#$FF,PORTB ; PORTB = saida

CLRA

JSR Dly_1s ; Subrotina de 1 segundo
BCLR 1,PORTA
VOLTA4: LDA PORTA

Notas:
1. Sempre coloque um caracter de tabulao antes das instrues ou pseudo-instrues;
2. Para instrues que envolvem 2 ou mais operandos, no deixe espaos em branco
aps a vrgula que separa os operandos;
3. No utilize nomes de variveis ou rtulos iniciando com nmeros (p.ex.: 3_desloc);
4. No utilize caracteres acentuados da lngua portuguesa.
6.2. Diretivas
Alm do conjunto de instrues da famlia HC08 apresentado anteriormente, o assembler
contm diversas pseudo-instrues, tambm denominadas diretivas. As diretivas do
assembler so declaraes que fornecem instrues para o assembler, e no para a CPU.
Neste documento sero discutidas somente algumas diretivas do assembler includo no
CodeWarrior. Maiores detalhes podem ser vistos na documentao do CodeWarrior. As
diretivas mais importantes so listadas na Tabela 8:
Tabela 8 Principais Diretivas do Assembler
Descrio: Seleciona a base de representao numrica de nmeros sem prefixo.
Sintaxe: BASE <n>
onde: <n> = 2, 8, 10 ou 16
BASE
Exemplo: BASE 10
Descrio: Define valores constantes na memria.
Sintaxe:
[<label>:] DC [.<tamanho>] <expresso> [, <expresso>]...
onde: <tamanho> = B (default), W ou L.
DC
Exemplo:
Mens_CNZ: DC.B CNZ Engenharia
Tempo_Sem: DC.W $0124, $437F, $003E, $0000
Sinnimo: FCB (= DC.B), FDB (= 2 DC.B = DC.W), DCL (= 4DC.B = DC.L)
Descrio: Aloca um bloco de memria inicializado com o valor especificado. O
tamanho do bloco dado por <tamanho> * <quantidade>.
Sintaxe: [<label>:] DCB [.<tamanho>] <quantidade>, <valor>
onde: <tamanho> = B (default), W ou L.
DCB
Exemplo: DCB.W 3, $FFFE ; Aloca 3 words com contedo $FFFE

58
Descrio: Reserva memria para variveis. O contedo da memria reservada
no inicializada. O tamanho do bloco dado por <tam.> * <qtde>.
Sintaxe:
[<label>:] DS [.<tamanho>] <quantidade>
onde: <tamanho> = B (default), W ou L.
DS
Exemplo: Contador: DS.B 2 ; 2 bytes contnuos na memria
Sinnimo: RMB (= DS.B), RMD (= 2DS.B = DS.W), RMQ (= 4DS.B = DS.L)
Descrio: Fim do cdigo fonte.
Sintaxe: END
END
Exemplo: END
Descrio: Aloca ao smbolo (label) um valor permanente.
Sintaxe: <label>: EQU <expresso>
EQU
Exemplo:
RAM: EQU $0040
Estado0: EQU %00100110
Descrio: Insere arquivo especificado no arquivo fonte. O nome do arquivo
deve estar entre aspas.
Sintaxe: INCLUDE <nome do arquivo>
INCLUDE
Exemplo: INCLUDE M68HC908QT/QY.INC ; Definies dos uCs QT/QY.
Descrio: Marca a origem do seo a partir do endereo especificado.
Sintaxe: ORG <expresso>
ORG
Exemplo: ORG $F800 ; Endereo inicial da FLASH (M68HC908QT1)
Descrio: Define uma seo relocvel e inicia um contador para o cdigo
imediatamente aps a sua declarao
Sintaxe: <nome>: SECTION [SHORT][<nmero>]
SECTION
Exemplo:
Variveis: SECTION
DS.W 6 ; Reversa 12 bytes (6 words) na RAM.
Descrio: Define os rtulos definidos no mdulo que podero ser referenciados
em outros mdulos
Sintaxe: XDEF [.<tamanho>] <label>[,<label>]...
Onde: <tamanho> = W(default)
XDEF
Exemplo: XDEF _Startup, Inicio
Sinnimo: GLOBAL, PUBLIC
6.3. Linker
O projeto de software pode ser desenvolvido em uma estrutura de mdulos (conjunto de
rotinas que executam funes pr-determinadas), em arquivos fonte independentes. Cada
arquivo fonte pode ser construdo e testado separadamente, e posteriormente ligados
(linkados) de tal forma a implementar todas a funcionalidade requerida por uma aplicao.
Nesse estgio de desenvolvimento, no ser necessrio a utilizao do Linker disponvel no
CodeWarrior.

59
6.4. Arquivo formato S19
Para microcontroladores da Motorola, a forma mais comum de arquivo cdigo binrio
conhecido como formato S19. Um arquivo no formato S19 um arquivo texto ASCII que
pode ser visualizado por um editor de texto ou processador de texto. Cada linha um
registro. Cada registro comea com a letra maiscula S seguida de um nmero de 0 a 9. Para
aplicaes com microcontroladores nicos cdigos importantes so S0, S1 e S9. O registro
S0 um cabealho opcional que contm o nome do arquivo para benefcio dos
programadores que necessitam manter essas informaes. Os registros S1 contm os todos
os dados (opcodes) da aplicao. O registro S9 usado para marcar o fim do arquivo no
formato S19. Todos os nmeros em um registro (linha) esto em hexadecimal.
Um registro composto dos seguintes campos:
Tipo: pode ser S0 (cabealho), S1 (dados) ou S9 (fim de arquivo);
Comprimento: par de digitos hexadecimal (2 caracteres ASCII) que indica o nmero
de bytes restantes no registro (excludos o tipo e o comprimento do campo);
Endereo da memria: composto de 16 bits (4 caracteres ASCII) a partir de onde
sero armazenados os dados do registro (do tipo S1);
Dados do cdigo binrio: pares de dgitos hexadecimal localizados aps o endereo
e antes do checksum. Contm os cdigos de mquina representados em valores de 8
bits de dados para serem armazenados em endereos sucessivos na memria;
Checksum: campo de 8 bits que representa a somatrio em complemento de um de
todos os bytes no registro, exceto os campos de tipo e de checksum. Este checksum
usado durante a transferncia do arquivo no formato S19 para verificar se os dados
esto completos e corretos para cada registro.
A seguir listado um exemplo de arquivo no formato S19:

S0200000433A5C50726F6A65746F735F434E51534D5F504544656275672E616273BE
S123F800450100948C9A5FA600B71EA619B71FA602B7041300B600A40427FA1200A614CDE7
S11EF820F82F4A26FA1300B600A40426FA20E687A69B5F5A26FD4A26FA86818C
S105FFFEF80005
S9030000FC


O arquivo gerado no formato S19 utilizado posteriormente para gravar (programar) a
memria FLASH do microcontrolador, e tambm utilizado como o arquivo de entrada para
ferramentas de depurao, seja ela uma simulao por software ou depurao In-Circuit.

60
7. DESENVOLVIMENTO DE SISTEMAS
Entende-se por sistema, mais especificamente sistemas eletrnicos microprocessados
(embedded systems), ao conjunto formado pelo hardware com microprocessador ou
microcontrolador mais perifricos, integrado ao software bsico
3
que implementa as funes
determinadas para a aplicao.
O desenvolvimento de hardware executado por um engenheiro ou tcnico eletrnico que
normalmente pesquisa, estuda e projeta os circuitos eletrnicos, de preferncia com
componentes disponveis no mercado. Esta atividade depende basicamente de estudo,
experincia acumulada e de componentes disponveis e, uma vez projetado e testado
dificilmente sofrer alteraes.
O desenvolvimento de software, ao contrrio do hardware, depende muito da criatividade do
programador e, pode ser alterado com maior freqncia para, por exemplo, estar inserindo
novas funes na aplicao. No desenvolvimento de softwares com microcontroladores
interessante iniciar o aprendizado com uma linguagem bem prxima aos cdigos de mquina
(Linguagem Assembly). Para tanto necessrio ter uma compreenso razovel do conjunto
de instrues e dos recursos disponveis pelo assembler.
Para o desenvolver sistemas eletrnicos com microcontroladores, o projetista deve seguir os
seguintes passos:
Especificar e documentar o sistema (problema ou idia);
Projetar e documentar o hardware;
Descrever implementao do software do sistema atravs de fluxogramas ou outra
forma de representao grfica ou textual;
Editar um arquivo com instrues mnemnicas (arquivo fonte) cada bloco
apresentado no fluxograma, utilizando um editor de textos.
Utilizar um assembler (software) para transcrever as instrues mnemnicas em
cdigos de mquina necessrios a execuo do programa pelo microcontrolador.
Simular, emular, testar e/ou depurar as funcionalidades do programa desenvolvido.
Para exemplificar o desenvolvimento de um sistema eletrnico completo apresentado a
seguir a implementao um problema simples com as etapas descritas anteriormente.

3
Software bsico programa que gravado/programado em memria do tipo ROM/EPROM/FLASH, tambm
denominado FIRMWARE.

61
7.1. Especificao do Sistema
Desenvolver um sistema eletrnico capaz de acender um LED por 1 segundo toda vez que
um boto for pressionado. O LED no dever piscar novamente, enquanto o boto for
mantido pressionado e at que o boto seja pressionado novamente.
Embora este sistema seja simples, ele demonstra os elementos mais comuns de qualquer
aplicao como microcontroladores:
Como configurar os sinais de I/O (entradas e sadas);
Como um programa pode sentir (ler) sinais digitais de entrada (Boto);
Como um programa pode acionar (escrever) sinais digitais de sada (LED);
Implementa uma rotina rudimentar de temporizao de eventos (LED piscar).
O objetivo piscar um LED pode parecer um tanto quanto tolo, porm se ao invs do LED
for inserido um circuito a rel no pino de sada do microcontrolador, a aplicao sem
mudana nenhuma ser a de um rel temporizado que acionado por um sinal de entrada,
que pode ser um boto ou um sensor digital qualquer. Este tipo de rel temporizado
encontrado comercialmente, e bastante utilizado para aplicaes em automao industrial.
7.2. Projeto de hardware
Apesar de ser muito simples, a soluo desse problema com circuitos convencionais requer
vrios componentes eletrnicos. Se for utilizado um microcontrolador (p.ex.: o
MC68HC908QT1) sero necessrios: o microcontrolador, um boto (SW), um resistor e um
LED (Figura 18). O resto desenvolvimento de software.
Vss Vdd
PTA4
PTA5
PTA3
PTA1
PTA2
PTA0
SW
+5V
LED
20.000 MHz
1
2
3
4
8
7
6
5
68HC908
QT1

Figura 18 Esquema eltrico LED+Boto

62
7.3. Descrio do software
Uma das formas mais utilizadas para descrever um sistema, do ponto de vista de uma
posterior implementao de software, o fluxograma. O fluxograma dessa aplicao
apresentado na Figura 19, que tambm contm uma legenda (quadro direita da figura)
explicativa de cada tipo de bloco utilizado.


Apagar LED
N
S
Acender LED
Boto
pressionado?
Processo/Tarefa
Operao
Deciso
Conector
Terminador
Legenda
Ler Boto
Configurar I/Os
Incio
Apagar Led
Ler Boto
Boto
pressionado?
N S
Aguardar 1s
(executa Dly_1s)

Figura 19 Fluxograma da aplicao LED+Boto

63
O processo/tarefa aguardar 1 segundo representado na Figura 19 no uma tarefa trivial, e
pode ser expandido atravs de um fluxograma denominado Dly_1seg (Figura 20) .
N
S
S
Fim
N
Dly_1s
A = 20
H:X = H:X - 1
H:X = 0 ?
A = A - 1
A = 0 ?
H:X = t50ms

Figura 20 Fluxograma da rotina Dly_1seg
A Figura 20 apresenta uma soluo para a rotina de tempo (por instrues) que executada
em 1 segundo (20 x 50 ms), conforme especificado no incio do projeto. Nesse momento
impossvel dizer com exatido qual o valor da varivel t50ms que fornecer o tempo de
50ms. Esse valor depende, do tempo e do nmero de ciclos das instrues, do nmero de
instrues e do nmero de vezes que um determinado loop
4
executado (ver item 7.4).

4
Loop trecho de um fluxograma/programa que executado com retorno a um ponto/ instruo inicial.

64
7.4. Codificao (Arquivo Fonte)
Aps a concluso do fluxograma, deve-se iniciar o processo denominado Codificao, que
nada mais do que escrever textualmente, atravs das instrues da linguagem assembly, os
processos, tarefas e decises representados no fluxograma, e que uma vez traduzido para
cdigos de mquina, dever funcionar no hardware especificado.
Nesse ponto do desenvolvimento j foi definido o microcontrolador a ser utilizado, e
conseqentemente seus registradores, mapa de memria, etc., mas o esforo na codificao
ser feito com base nos fluxogramas apresentados. A utilizao de diretivas do assembler
sero inseridas no arquivo fonte quando o mesmo for implementado com a ferramenta de
desenvolvimento CodeWarrior, e isso tem um motivo, como ser visto no item 8.3.
A codificao do projeto proposto apresentada pela concatenao das instrues listadas
abaixo, e tem como base os fluxogramas apresentados anteriormente.

;================================================================
; Programa principal
;================================================================
INICIO: LDA #00001000B ; Configura 68HC908QT1:
STA CONFIG2 ; - pino /IRQ inativo
; - oscilador externo (20 MHz)
; - pino /RST inativo
LDA #00011001B ; - COP desabilitado
STA CONFIG1 ; - LVI desabilitado
; - recuperacao do STOP lenta
LDA #$FF
STA PORTA
LDA #$02
STA DDRA ; Configura I/O: PTA1 - Saida
; PTA0, PTA2 a PTA5 - Entrada
BSET 1,PORTA ; Apaga o LED

VOLTA:
LDA PORTA
AND #$04 ; Le botao
BNE VOLTA ; Se botao nao pressionado, VOLTA

BCLR 1,PORTA ; Acende o LED

JSR Dly_1s ; Aguarda 1seg (subrotina Dly_1s)

BSET 1,PORTA ; Apaga o LED

FICA: LDA PORTA
AND #$04 ; Le botao
BEQ FICA ; Se botao pressionado, FICA

BRA VOLTA ; Senao VOLTA


65
O processo/tarefa Dly_1s (subrotina) um programa relativamente pequeno, conforme
cdigo abaixo.

;================================================================
; Subrotina de Tempo (1s) - Dly_1s
;================================================================
Dly_1s: LDA #20 ; Inicia delay de 1s (20 x 50ms)
Loop0: LDHX #t50ms ; H:X = contador de tempo 50ms (NN)
Loop1: AIX #-1 ; H:X = H:X - 1
CPHX #0 ; Verifica se H:X = 0
BNE Loop1 ; Se H:X <> 0, volta para Loop1
DECA
BNE Loop0 ; Se executou NNx20 vezes, continua
RTS ; Fim da subrotina


A rotina Dly_1s envolve um loop interno (50ms) dentro de outro loop externo, pois no
possvel com um nico loop conseguirmos tempos da ordem de dezenas de milissegundos. O
loop interno consiste em instrues que decrementam o registrador H:X um determinado
nmero de vezes, que ao final (valor $0) tenha decorrido aproximadamente 50 ms. O loop
externo executado 20 vezes o loop interno, dessa forma tem-se um tempo decorrido final
de 20 x 50ms = 1 segundo. Um detalhamento de como feito o clculo est apresentado na
Figura 21, onde o valor no interior dos crculos representa o nmero de ciclos de mquina
para que cada instruo seja executada.
2
3
1
3
Dly_1s: LDA # 20
Loop0: LDHX # t50ms
Loop1: AIX # -1
CPHX # 0
BNE Loop1
DECA
BNE Loop0
RTS
3
2
3
4
x t50ms x 20

Figura 21 Nmero de ciclos de mquina da subrotina Dly_1s

66
Pelo projeto proposto no foi definido o tipo de oscilador, portanto ser utilizado um
oscilador externo de freqncia igual a 20 MHz (igual ao utilizado no Kit de
Desenvolvimento M68EVB908Q ver item 8.6.2). O tempo denominado ciclo de mquina
igual ao inverso dessa freqncia vezes 4 (ou 4 perodos da freqncia dada).
O que est faltando calcular o valor t50ms, tal que fornea um tempo de execuo da
subrotina de aproximadamente 1 segundo, e que pode ser obtido a partir da seguinte
equao:
segundo ms t t 1
10 20
4
) 4 20 ) 3 1 50 ) 3 3 2 ( 3 ( 2 (
6
=

+ + + + + + + =
Isolando t50ms e fazendo os clculos chega-se ao valor:
31249 31249,0875 50 = ms t
Como esse valor est dentro da faixa de nmeros de 16 bits (valor mximo: 65535)
possveis, ento ele ser o valor inserido no arquivo fonte no lugar de t50ms para que a
subrotina seja executada em 1s. Se a freqncia ou a implementao das instrues forem
alteradas, o clculo do tempo de execuo dever ser refeito.
7.5. Montador Assembler
Depois de totalmente codificado, o software desenvolvido em linguagem assembly deve ser
traduzido para seus cdigos de mquina, respectivos. Esse processo realizado por um
programa computacional chamado montador assembler (ou macro assembler). Detalhes do
cdigo gerado, e que tambm servir para depurao do sistema sero vistos no item 8.
7.6. Simulao, depurao e testes do sistema
Com o cdigo executvel (formato S19 ou ABS) em mos, o programador estar pronto para
verificar se o cdigo gerado executa o que idealizado inicialmente para a aplicao. Para
tanto, o programador pode utilizar uma srie de ferramentas de desenvolvimento que esto
detalhadas no item 8.

67
8. FERRAMENTAS DE DESENVOLVIMENTO - CodeWarrior
8.1. Introduo
O CodeWarrior um ambiente de desenvolvimento de software poderoso que suporta vrias
linguagens (assembly, C, C++, Java), mltiplos sistemas operacionais (Windows, PowerPCs,
Solaris, Linux), para mltiplos processadores/microcontroladores (x86, Sparc, Mcore,
68HC16, 68HC12, 68HC08, 68HC05, etc). Entre as caractersticas mais importantes do
CodeWarrior incluem-se:
Ambiente de Desenvolvimento Integrado (IDE Integrated Development
Environment) que fornece acesso a todos os componentes de forma simples;
Interface Grfica do Usurio (GUI Graphical User Interface) simples de usar;
Gerenciador de projeto sistema de armazenamento para todos os arquivos e opes
dentro de um arquivo de projeto simples;
Editor de cdigo fonte colorido, direcionado para a sintaxe, multi-janelas para
edio de arquivos;
Navegador (browser) fornece acesso a vrios elementos do cdigo fonte, tais como,
variveis, rotinas, classes, etc;
Compilador C/C++ otimizado e poderoso montador assembler;
Linker inteligente liga apenas os objetos que esto atualmente em uso no projeto;
Bibliotecas (librarian) permite ao programador construir bibliotecas customizadas;
Depurador (debugger) suporta simulao e depurao de aplicaes ou projetos de
hardware.
8.2. Iniciando com o CodeWarrior (Windows)
Na primeira vez que for utilizar o CodeWarrior, ou quando quiser comear um novo projeto
encontre a pasta denominada Metrowerks, via boto Iniciar > Programas > Metrowerks >
CodeWarrior CW08 V2.1. Dentro desta pasta, encontre e selecione o cone CodeWarrior
IDE (Figura 22). Isto vai levar o usurio para o ambiente de desenvolvimento do
CodeWarrior.

68

Figura 22 Iniciando o CodeWarrior
A partir dessa seleo, o CodeWarrior ser executado em uma janela com a maioria dos
cones da barra de ferramentas indisponveis, pois ainda no existe um projeto aberto (Figura
23).

Figura 23 Janela inicial do CodeWarrior

69
O CodeWarrior pode ser inicializado pela execuo (duplo-click) de um arquivo de projeto
(extenso .mcp) j existente. Esta ao abrir o CodeWarrior IDE e carregar
automaticamente o projeto.
A barra de ferramentas do CodeWarrior (Figura 24) contm botes que ativam os principais
comandos/funes do ambiente de desenvolvimento, e que tambm esto disponveis na
barra de menus.
Figura 24 Barra de ferramentas do CodeWarrior
Legenda dos botes:
1 New Text File (Novo arquivo texto)
2 New ...(Novo ... Projeto/Arquivo/Objeto)
3 Open ... (Abrir ...)
4 Save (Salvar)
5 Undo/Cant Undo (Desfazer/No pode desfazer)
6 Redo/Cant Redo (Refazer/No pode refazer)
7 Cut (Recortar)
8 Copy (Copiar)
9 Paste (Colar)
10 Find (Encontrar)
11 Find Next (Encontrar a prxima)
12 Replace Selection (Substituir seleo ...)
13 Compile (Compilar cdigo)
14 Make (Construir cdigo binrio)
15 Stop Build (Parar construo do cdigo)
16 Debug (Depurar)
17 Errors and Warnings (Erros e Avisos)
18 Preferences ... (Preferncias ...)
19 P&E PEDebug FCS-ICS-ICD Settings ... (Configurao ...)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

70
8.3. Criando um Projeto
Para criar um novo projeto siga o seguinte roteiro:
A. Dentro do CodeWarrior selecione File > New na barra de menus. Isto apresentar a
caixa de dilogo NEW (Figura 25). Tenha certeza que o painel Project est ativo,
clicando na aba correspondente se necessrio.

Figura 25 Caixa de dilogo NEW
B. Na lista de projetos, selecione HC08 Stationery (Figura 26). Esta opo prepara o
CodeWarrior para trabalhar com o microcontrolador e linguagem de programao
selecionadas, facilitando o trabalho do programador na configurao do ambiente de
trabalho.

Figura 26 Nome e pasta do novo projeto

71
C. No campo de Project name, digite o nome do projeto novo Pisca_1s (Figura 26).
D. No campo Location, especifique a pasta onde estaro armazenados os arquivos
utilizando o boto Set... (Figura 26), at criando uma pasta nova se for necessrio.
E. Clique em OK e prossiga com a caixa de dilogos New Project (Figura 27).

Figura 27 Caixa de dilogo NEW PROJECT
F. Selecione o microcontrolador e a linguagem de programao a ser utilizada. Para o
exemplo inicial selecione: QT_QY > QT1 > Assembly e pressione OK (Figura 28).

Figura 28 New Project - Assembly
O CodeWarrior ir preparar todo o ambiente de trabalho e apresentar uma janela de arquivos
e pastas do projeto recm-criado, denominado Pisca_1s.mcp (Figura 29). Maiores detalhes a
respeito da utilidade e funo de cada arquivo presente nessa janela podem ser vistos no
arquivo readme.txt (presente na mesma janela).

72

Figura 29 Controle de arquivos e pastas do projeto (Pisca_1s.mcp)
Expandindo (sinal +) a pasta Sources, confirme que um arquivo denominado main.asm
est presente. Este arquivo contm um modelo (template) de ir auxiliar o programador com
algumas instrues e pseudo-instrues necessrias e comuns a todos os projetos, que no
caso so utilizados pela linguagem assembly. O arquivo main.asm est listado a seguir, e o
programador tem liberdade total para alterar as linhas de cdigo e comentrios apresentados.

;****************************************
;* HC08 Demo Program *
;****************************************

Include 'qtqy_registers.inc' ; For the QTx,QYx

XDEF Entry, main, _Startup

initStack EQU $00FF
Limit: EQU 23

MyData: SECTION SHORT
;
; Insert here your data definition
;

MyCode: SECTION
;
; Insert here your source code
;

_Startup:
Entry: LDHX #initStack ; initialize Stack
TXS
CLRH
CLI

main: CLRX ; REPEAT

NOP ; Insert here you own code

BRA main ; UNTIL Forever
END



73
8.4. Editando um arquivo fonte
Com o arquivo main.asm aberto, o programador pode inserir as instrues mnemnicas que
fazem parte do seu projeto. Vamos utilizar o exemplo que foi desenvolvido no item 7.4,
inserindo no lugar correto e de forma adequada no arquivo fonte main.asm (template). Ao
final o arquivo fonte dever ficar com a seguinte formatao:

;****************************************************************
;********** Pisca_1s Led+Botao **********
;****************************************************************

Include 'qtqy_registers.inc' ; Definicoes do QT1

XDEF Entry, main, _Startup

initStack EQU $00FF

t50ms EQU 31249 ; Valor calculado de 50ms para Dly_1s

_Startup:
Entry: LDHX #initStack ; Inicializa Stack Pointer
TXS
CLRH
SEI ; Desabilita interrupcoes

main: CLRX ; REPEAT

;================================================================
; Programa principal
;================================================================
INICIO: LDA #00001000B ; Configura 68HC908QT1:
STA CONFIG2 ; - pino /IRQ inativo
; - oscilador externo (20 MHz)
; - pino /RST inativo
LDA #00011001B ; - COP desabilitado
STA CONFIG1 ; - LVI desabilitado
; - recuperacao do STOP lenta
LDA #$FF
STA PORTA
LDA #$02
STA DDRA ; Configura I/O: PTA1 - Saida
; PTA0, PTA2 a PTA5 - Entrada

BSET 1,PORTA ; Apaga o LED

VOLTA:
LDA PORTA
AND #$04 ; Le botao
BNE VOLTA ; Se botao nao pressionado, VOLTA

BCLR 1,PORTA ; Acende o LED

JSR Dly_1s ; Aguarda 1seg (subrotina Dly_1s)

BSET 1,PORTA ; Apaga o LED

FICA: LDA PORTA
AND #$04 ; Le botao
BEQ FICA ; Se botao pressionado, FICA

BRA VOLTA ; Senao VOLTA



74
;================================================================
; Subrotina de Tempo (1s) - Dly_1s
;================================================================
Dly_1s: LDA #20 ; Inicia delay de 1s (20 x 50ms)
Loop0: LDHX #t50ms ; H:X = contador de tempo 50ms (NN)
Loop1: AIX #-1 ; H:X = H:X - 1
CPHX #0 ; Verifica se H:X = 0
BNE Loop1 ; Se H:X <> 0, volta para Loop1
DECA
BNE Loop0 ; Se executou NNx20 vezes, continua
RTS ; Fim da subrotina

END

8.5. Construindo o Projeto
Durante o processo de criao de um novo projeto foi inserido no modelo de arquivo fonte
(main.asm) o cdigo da aplicao que dever ser traduzido (montado) para cdigo de
mquina do microcontrolador escolhido como segue:
A. Na barra de ferramentas da janela Project, clique no boto Make (ou pressione F7).
B. O resultado do processo de construo ser mostrado na janela Errors& Warnings.

Figura 30 Errors & Warnings
C. Se forem detectados erros, o programador atravs das mensagens na janela Errors &
Warnings (Figura 30) dever: interpretar os erros, voltar ao cdigo fonte, corrigi-los
e construir novamente o cdigo executvel. Essas etapas devem ser repetidas
enquanto o processo de construo indicar a existncia de erros. Ao final a janela
dever apresentar 0 erros (errors), 0 avisos (warnings), se possvel e N mensagens de
no erros.
Nota: Um programa construdos sem erros (0 Errors) no indica que ele esteja correto. No
processo de construo do cdigo executvel o assembler verifica apenas a sintaxe
das linhas do arquivo fonte. Os erros/falhas de software so percebidos durante a
simulao/depurao/execuo do cdigo executvel.

75
8.6. Simulando e Depurando um Projeto
Um projeto construdo com sucesso gerar um arquivo do cdigo objeto absoluto
(normalmente no formato S19) que poder ser carregado nas ferramentas de
simulao/emulao para avaliao, testes e depurao do cdigo. Para simular um cdigo
executvel utilizando as ferramentas de simulao do CodeWarrior, o programador dever
seguir o seguinte procedimento:
A. Mantenha o projeto aberto ou abra-o se ele estiver fechado. No exemplo
desenvolvido, mantenha o projeto Pisca_1s.mcp aberto e construdo sem erros.
B. Ative o True-Time Simulator & Real-Time Debugger clicando no boto Debug da
barra de ferramentas do projeto (ou pressione F5).
Se a mensagem da Figura 31 surgir durante o processo de execuo das ferramentas de
simulao, significa que no foi instalada a licena de avaliao (evaluation license)
solicitada pela Metrowerks. Contudo, o software vai rodar no modo demonstrao (demo
mode) com todos os componentes habilitados, mas para um cdigo de no mximo 1 Kb.
Maiores informaes sobre a licena de uso do CodeWarrior e as formas de obt-la esto
disponveis no arquivo welcome_CW08_V2_1_1.txt, que pode ser acessado via boto
Iniciar > Programas > Metrowerks > CodeWarrior CW08 V2.1 > Welcome to CW08 2.1.

Figura 31 Aviso sobre licena das ferramentas de simulao
Independente de ter uma licena registrada ou no, o simulador carregado com o cdigo
executvel do projeto que estava aberto, conforme Figura 32.

76

Figura 32 Janela inicial do simulador
O software do simulador composto de mltiplas janelas que podem ser organizadas a
qualquer momento e da forma mais conveniente pelo programador. A aparncia padro
dessas janelas esto apresentadas na Figura 32. So elas:
Source Arquivo fonte do projeto a ser simulado.
Data Variveis utilizadas pelo projeto.
Command Comandos implementados pelo simulador durante a simulao.
Assembly Cdigo de mquina do projeto a ser simulado.
Register Registradores do modelo de programao da CPU08 com contedo
atualizvel durante a simulao.
Procedure Funo/subrotina que est sendo executada momentaneamente pelo
simulador.
Memory Mapa de memria do microcontrolador com contedo atualizvel durante
a simulao.
Na primeira vez que um projeto simulado, o programador deve se certificar que o
microcontrolador que alvo de simulao, esteja selecionado corretamente. Nas sees de
simulao subseqentes do mesmo projeto, a configurao do ambiente de simulao obtida
a partir da ltima seo de simulao realizada.

77
Para verificar/atualizar o microcontrolador utilizado na simulao, o usurio deve selecionar
na barra de menus do simulador: PEDebug > Device:<dispositivo> > 68HC08 > QT/QY
Family > HC908QT1 (Figura 33).

Figura 33 Simulador Menu de escolha do dispositivo.
Uma vez selecionado o dispositivo correto, o usurio pode iniciar a tarefa de
simulao/depurao de cdigo. Por se tratar de um software poderoso, a empresa PE
Systems (proprietria do simulador instalado no CodeWarrior) disponibilizou para os
usurios trs modos diferentes de simulao de sistema. So eles:
Simulao Completa do Chip (FCS Full Chip Simulation)
Simulao In-Circuit (ICS In-Circuit Simulation)
Depurao/Programao In-Circuit (ICD In-Circuit Debug/Programming)
O modo de simulao/depurao pode ser selecionado na barra de menus do simulador:
PEDebug > Modo:<modo de simulao> (Figura 34).

78

Figura 34 Simulador Modos de simulao
No modo FCS, a simulao do software do projeto todo totalmente realizado pelo
simulador (software aplicativo), no existindo comunicao com hardware.
No modo ICS, a simulao do software do projeto feita pelo microcontrolador disponvel
no hardware alvo (na memria RAM), atravs de uma interface de comunicao serial com o
modo Monitor ROM. Cada instruo transferida para o hardware, executada pelo
microcontrolador, e o resultado dos registradores/memria atualizado no simulador.
No modo ICD, a depurao/programao realizada na memria de programa do
microcontrolador (hardware), ou seja, o software do projeto totalmente transferido
(programado) para a memria FLASH do microcontrolador disponvel no hardware. O
usurio atravs das janelas do simulador/depurador controla as atividades de depurao no
hardware. O hardware recebe comandos atravs da interface serial controlado pelo modo
Monitor ROM, executa o comando pedido utilizando o programa na FLASH, e retorna
dados dos registradores/memria para atualizar nas janelas do simulador. A grande vantagem
do modo ICD a execuo do software em tempo real.

79
Todos os modos de simulao/depurao disponveis utilizam a mesma interface grfica de
usurio. A barra de menus contm os principais comandos do simulador, conforme
apresentado na Figura 35. Maiores detalhes podem ser vistos no menu Ajuda do simulador.



Figura 35 Simulador Barra de Ferramentas
Legenda dos botes:
1 New ...(Novo ...)
2 Open ... (Abrir ...)
3 Save (Salvar)
4 Cut (Recortar)
5 Copy (Copiar)
6 Paste (Colar)
7 Help Topics (Tpicos de Ajuda)
8 Help (Ajuda)
9 Start/Continue (Iniciar/Continuar) F5
10 Single Step (Passo simples) F11
11 Step Over (Passo sobre) F10
12 Step Out (Passo para fora) Shift+F11
13 Assembly Step (Passo do assembly) Ctrl+F11
14 Halt (Parar) F6
15 Reset Target (Reseta Target) Ctrl+R
Os botes numerados de 9 a 15 executam funes especficas do simulador que refletem
sobre o funcionamento do microcontrolador, de acordo com os passos do software
implementado. Uma descrio mais detalhada de cada boto apresentada a seguir:
Start/Continue Esta funo inicia a execuo da aplicao (software) a partir do
endereo dado pelo PC (linha que est ativa na janela Source) at uma das seguintes
condies seja satisfeita: encontrar um breakpoint, detectar um erro de runtime, ou a
aplicao ser paralisada (suspensa) pelo usurio com a funo Halt.
Single Step Se a aplicao estiver suspensa, este comando realiza a execuo de
uma nica declarao do cdigo fonte em linguagem de alto nvel ou uma instruo
quando o cdigo fonte estiver em assembly. Se a declarao corrente for uma
chamada a uma funo (subrotina), o simulador entra (step into) na funo. O
comando Single Step no trata uma funo como um comando, portanto executa o
passo entrando na funo.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

80
Step Over Comando similar ao Single Step, mas no entra dentro de funes
chamadas. Uma chamada de funo (subrotina) tratada como um nico comando,
porm todos os registradores/memria afetados so atualizados no simulador.
Step Out Se a aplicao for suspensa dentro de uma funo, este comando continua
a execuo, e ento para na instruo seguinte a chamada da funo (executa a
chamada da funo at o seu retorno a instruo subseqente chamada). Se no
houver chamadas de funo presentes, ento a funo Step Out no realizada.
Assembly Step Se a aplicao estiver suspensa, este comando realiza um passo
correspondente a uma instruo em assembly. Este comando similar ao comando
Single Step, mas executa apenas uma instruo em assembly ao invs de uma
declarao em linguagens de alto nvel.
Halt Interrompe e suspende a execuo da aplicao. Quando a aplicao se
encontrar nesse estado, o usurio poder examinar o estado de cada varivel da
aplicao, setar breakpoints, e inspecionar o cdigo fonte.
Reset Target Reseta o ambiente de Simulao/Depurao.
Alm dos comandos listados acima, existe um comando muito til na simulao/depurao
de cdigos denominado breakpoint. Uma breve descrio apresentada a seguir:
Breakpoints ... Breakpoints so pontos de controle associado ao valor do PC, isto
, a execuo do programa suspensa assim que o PC alcanar o valor definido no
breakpoint. O modo mais simples para setar um breakpoint clicar o boto da
direita do mouse sobre a linha na qual o usurio quer o ponto de parada (na janela
Source), e no menu selecionar Set Breakpoints. Uma linha que contenha um
breakpoint contm uma marca em vermelho (Figura 36) indicando o ponto de parada.
Para remover o breakpoint basta clicar com o boto da direita do mouse sobre a linha
na qual o usurio quer remover o ponto de parada (na janela Source), e no menu
selecionar Delete Breakpoint.

81

Figura 36 Breakpoint (marca em vermelho) na janela Source
8.6.1. Simulao Completa do Chip (FCS)
A Simulao Completa do Chip (FCS) totalmente executada pelo software do simulador.
Para iniciar no modo FCS siga o seguinte roteiro:
A. Selecione o modo: In-Circuit Simulation (ICS) como apresentado no item 8.6.
B. Na barra de ferramentas dessa nova janela, clique no boto Reset Target (ou
pressione Ctrl-R). Note que a janela Procedure mostrar a funo Entry () e a
janela Source mostrar o comeo do cdigo da funo Entry.
C. Atravs dos botes de simulao descritos na Figura 35 v descobrindo as
mudanas/atualizaes (marcadas em vermelho) que cada instruo executada na
janela Source ou Assembly provocam no simulador. A janela Register ser atualizada
refletindo o fato do cdigo ter sido executado uma instruo.
D. Valores dos registradores (janela Register) e/ou contedo de posies de memria
(janela Memory) podem ter seus valores modificados, de acordo com as necessidades
da simulao/depurao. Para tanto, o usurio dever selecionar a posio/registrador
a ser alterado (duplo-click), digitar o valor requerido,pressionar <Enter>, e continuar
o processo de simulao.

82
8.6.2. Simulao In-Circuit (ICS)
A Simulao In-Circuit (ICS In-Circuit Simulation) utiliza a funcionalidade do modo
Monitor que um modo especial da famlia HC08. Este modo de funcionamento permite a
um computador externo controlar o microcontrolador atravs de uma interface serial
assncrona. Esta caracterstica permite ao computador solicitar e modificar o estado do
processador, bem como carregar, depurar e programar o cdigo executvel dando aos
microcontroladores M68HC908QT/QY a capacidade de serem completamente testados e
programados atravs de uma interface simples sem serem removidos do sistema ao qual
esto embarcados. Entre as principais caractersticas do Monitor ROM:
Funcionalidade dos pinos do microcontrolador normal durante o modo usurio.
1 pino dedicado para comunicao serial entre o Monitor e o computador externo.
Execuo do cdigo em RAM ou FLASH
Capacidade de proteo da memria FLASH
Interface de programao da memria FLASH
Execuo do cdigo em RAM ou FLASH
Caractersticas de segurana da memria FLASH
Interface de programao da memria FLASH
As caractersticas de segurana nos microcontroladores da famlia HC08 existem para
proteger um dispositivo programado de serem lidos e disassemblados por pessoas no
autorizadas. Este mecanismo constitudo de 8 bytes de cdigo de segurana que esto
armazenados nos endereos de $FFF6 a $FFFD. Se um usurio conhece o que est
programado no dispositivo, ele implicitamente conhece o cdigo para desbloquear a
segurana necessrio para poder ter acesso ao modo Monitor e ter acesso as memrias
ROM/FLASH. Contudo, para os usurios que no conhecem o cdigo de segurana, eles
podem entrar no modo monitor mas sem acesso as memria ROM/FLASH.
A verificao do software e a correspondncia/compatibilidade do hardware podem ser
facilmente desempenhadas, uma vez que os efeitos das instrues de software no ambiente
de simulao pode ser observvel diretamente no hardware. Isto faz da depurao um
processo simples, e a placa de desenvolvimento M68EVB908Q torna tudo isso possvel.

83
Uma vez que o cdigo fonte de um programa foi construdo com sucesso (existncia de um
arquivo S19), o simulador carrega o arquivo na RAM do microcontrolador depois de entrar
no modo monitor. A comunicao com o simulador realizada atravs de um canal serial
(padro RS232) com o chip atravs do pino PTA0 e vice-versa, portanto cada instruo
executada no ambiente de simulao imediatamente refletida no hardware.
Para realizar a Simulao In-Circuit, conecte o computador e a placa M68EVB908Q atravs
de um cabo serial, e siga o seguinte roteiro:
A. Selecione o modo: In-Circuit Simulation como apresentado na Figura 34.
B. Na primeira vez e/ou sempre que houver algum problema de comunicao, o
simulador abrir uma janela com o contedo apresentado na Figura 37. Se no for a
primeira vez, e no houver problemas de comunicao o simulador prepara todo o
ambiente para iniciar a simulao, sem abrir essa janela.

Figura 37 ICS Conexo serial e cdigo de segurana
C. Para utilizar a placa de desenvolvimento M68EVB908Q no modo ICS, o usurio
dever selecionar o Target Hardware Type - CLASS I (Motorola ICS Board with
processor installed. Emulation connection OK. Power controlled via DTR).
D. Selecionar a comunicao serial atravs de um port disponvel (COM1, COM2, ...) e
uma taxa de comunicao de 19200 bps. Na placa M68EVB908Q os jumpers J5 e J6
devero estar fechados, e o jumper J3 dever estar na posio 1-2 (Maiores detalhes
podem ser encontrados no manual do usurio da placa M68EVB908Q.

84
E. Se o usurio no programou os bytes de segurana de cdigo, selecionar uma das
opes com FF-FF-FF-FF-FF-FF-FF-FF (8 bytes com $FF).
F. Pressionar o boto Contact Target with these settings .... Isto permitir a entrada no
modo ICS, e na janela de Commands o usurio ver entre outras, as seguintes
mensagens:

Figura 38 Janela de Comandos Simulao In-Circuit
G. A partir desse ponto tudo idntico ao descrito na Simulao Completa do Chip
(Full Chip Simulation), exceto as interrupes e os valores dos pinos que no podem
ser setados/resetados pela linha de comando, pois todos os valores so determinados
pelo hardware. O pino /IRQ (ou o boto SW1) da placa de desenvolvimento
M68EVB908Q pode ser utilizado para iniciar uma interrupo depois de executado o
protocolo inicial.
Se contudo o usurio no consegui passar pelo modo de segurana, observe que na caixa de
dilogos Target Connection and Security tem uma seo denominada STATUS
descrevendo os diferentes tipos de falhas, e o que verificar em cada caso. As razes mais
comuns para no passar pelos cdigos de segurana so:
No foi escolhido o cdigo de segurana correto;
Na re-energizao, a tenso no microcontrolador no desceu abaixo de 0.1volts
(durante o desligamento).
A classe do hardware (Target hardware type) no foi escolhida corretamente.


85
8.6.3. Depurao/Programao In-Circuit (ICD)
A Depurao/Programao In-Circuit (ICD In-Circuit Debug/Programming) muito
semelhante a Simulao In-Circuit, com a seguinte diferena bsica: no modo ICD o cdigo
executvel (formato S19) programado na memria FLASH do microcontrolador e toda a
depurao do cdigo feita utilizando o hardware alvo.
Para realizar a depurao/programao no modo ICD, conecte o computador e a placa
M68EVB908Q atravs de um cabo serial, e siga o seguinte roteiro:
A. Selecione o modo: In-Circuit Debug/Programming como apresentado na Figura 34.
B. Na primeira vez e/ou sempre que houver algum problema de comunicao, o
simulador abrir uma janela com o contedo apresentado na Figura 39. Se no for a
primeira vez, e no houver problemas de comunicao o simulador prepara todo o
ambiente para iniciar a simulao, sem abrir essa janela.

Figura 39 ICS Conexo serial e cdigo de segurana
C. Para utilizar a placa de desenvolvimento M68EVB908Q no modo ICS, o usurio
dever selecionar o Target Hardware Type - CLASS I (Motorola ICS Board with
processor installed. Emulation connection OK. Power controlled via DTR).
D. Selecionar a comunicao serial atravs de um port disponvel (COM1, COM2, ...) e
uma taxa de comunicao de 19200 bps. Na placa M68EVB908Q os jumpers J5 e J6
devero estar fechados, e o jumper J3 dever estar na posio 1-2 (Maiores detalhes
podem ser encontrados no manual do usurio da placa M68EVB908Q).

86
E. Se o usurio no programou os bytes de segurana de cdigo, selecionar uma das
opes com FF-FF-FF-FF-FF-FF-FF-FF (8 bytes com $FF).
F. Pressionar o boto Contact Target with these settings .... Isto iniciar a
comunicao para entrar no modo ICD.
G. Se o ambiente do simulador estava utilizando outro modo de simulao, surgir uma
caixa de dilogo (Figura 40) perguntando ao usurio se ele deseja recarregar os dados
do projeto. O usurio dever pressionar o boto Yes.

Figura 40 Mudana no modo de simulao
H. Uma nova caixa de dilogo (Figura 41) surgir perguntando ao usurio se ele deseja
apagar e programar a memria FLASH. O usurio deve responder Yes, e a partir
desse ponto o cdigo executvel gravado na memria FLASH.

Figura 41 Apagar e Programar a memria FLASH
I. O processo de apagamento e programao da memria FLASH iniciado. O usurio
pode verificar a seqncia de comandos transferidos entre o computador e o
hardware alvo, conforme apresentado na Figura 42.

Figura 42 Apagando e programando a memria FLASH

87
J. A partir desse ponto tudo idntico ao descrito na Simulao Completa do Chip
(Full Chip Simulation), exceto as interrupes e os valores dos pinos que no podem
ser setados/resetados pela linha de comando, pois todos os valores so determinados
pelo hardware. O pino /IRQ (ou o boto SW1) da placa de desenvolvimento
M68EVB908Q pode ser utilizado para iniciar uma interrupo depois de executado o
protocolo inicial.
Se contudo o usurio no consegui passar pelo modo de segurana, observe que na caixa de
dilogos Target Connection and Security tem uma seo denominada STATUS
descrevendo os diferentes tipos de falhas, e o que verificar em cada caso. As razes mais
comuns para no passar pelos cdigos de segurana so:
No foi escolhido o cdigo de segurana correto;
Na re-energizao, a tenso no microcontrolador no desceu abaixo de 0.1volts
(durante o desligamento).
A classe do hardware (Target Hardware Type) no foi escolhida corretamente.

A partir desse ponto, o usurio poder seguir o caminho sozinho utilizando o CodeWarrior
para desenvolvimento e depurao de seus projetos. Para maiores informaes, consulte os
arquivos de documentao includos na subpasta Documentation da pasta Metrowerks. Os
seguintes arquivos em PDF so de particular interesse:
CodeWarrior IDE Quickstart manual
Motorola M68HC08 manuals overview



88
9. REFERNCIAS BIBLIOGRFICAS
[1] CPU08 Reference Manual Rev. 1
Motorola Inc.
[2] MC68HC908QY4/D Data Sheet - Rev. 0
Motorola Inc.
[3] MC68HC908QY4/D Advance Information
Motorola Inc.
[4] Motorolas 8-bit FLASH MCU Seminar Series
Motorola Inc.
[5] Apostila do Curso de Arquitetura de Computadores - FEV/2000
Edmur Canzian
[6] Apostila do Curso Sistemas Digitais Microprocessados OUT/2001
Edmur Canzian
[7] CodeWarrior Development Studio for HC08 Microcontrollers Special Edition
Metrowerks Corp.
[8] Quickstart for Embedded System Featuring Hiware Technology
Metrowerks Corp.
[9] CodeWarrior IDE 4.2 Users Guide
Metrowerks Corp.
[10] AN2305 User Mode Monitor Access for MC68HC908QY/QT Series MCUs
Motorola Inc.
[11] AN2317/D Low-Cost Programming and Debugging Options for M68HC08 MCUs
Motorola Inc.
[12] Placa de Desenvolvimento M68EVB908Q Manual do Usurio
Motorola Industrial Ltda.



89
GLOSSRIO
#xxxx Os dgitos que seguem o prefixo # indicam um operando imediato.
$xxxx Os dgitos que seguem o prefixo $ esto em formato hexadecimal.
ALU Arithmetic/Logic Unit (ver Unidade Lgica/Aritmtica).
Assembly ver Linguagem Assembly.
Barramento (Bus) Uma coleo de linhas lgicas usadas para transferir informaes
simultaneamente.
Barramento de Dados (Data Bus) Conjunto de linhas utilizadas para transportar
informaes binrias da CPU para a memria ou da memria para a CPU.
Barramento de endereos (address bus) Conjunto de linhas utilizadas para selecionar
uma posio especfica na memria, para que a CPU possa escrever informaes ou ler seu
contedo.
BCD Binary-Coded Decimal (ver Decimal Codificado em Binrio).
Bit Digito binrio simples. Um bit pode armazenar os valores 0 ou 1.
Byte Um conjunto de 8 bits.
CCR Condition Code Register (ver Registrador Condition Code).
Chip Componente eletrnico.
Ciclos da CPU Perodo de clock do barramento interno, normalmente derivado da diviso
de um cristal oscilador por 2 ou mais. O tempo necessrio para executar uma instruo
medido em ciclos da CPU.
Clock - Sinal em freqncia utilizado para marcar a seqncia de eventos pela CPU.
Cdigo de mquina Cdigos binrios processados pela CPU como instrues. Cdigos de
mquina incluem os opcodes e operandos de dados.
Conjunto de instrues Conjunto de todas as operaes que a CPU pode realizar. Uma
instruo freqentemente representada por mnemnicos, tais como LDA (Carrega o
Acumulador). Outra representao do conjunto de instrues o conjunto de opcodes que
so reconhecidos pela CPU.
CPU Central Processor Unit (ver Unidade Central de Processamento).
CPU08 Unidade Central de Processamento dos microcontroladores da famlia HC08

90
Decimal Codificado em Binrio Notao que utiliza valores binrios para representar
quantidades decimais. Cada digito BCD representado por 4 bits, e as 6 ltimas
representaes possveis das 16 combinaes (1010 at 1111) so consideradas ilegais.
Depurao/Programao In-Circuit Ferramenta de depurao e programao onde um
software aplicativo se comunica com um microcontrolador, tem a capacidade de gravar sua
memria FLASH e executar e depurar comandos no prprio chip.
EEPROM Electrically Erasable, Programmable Read-Only-Memory. Tipo de memria
no voltil que pode ser apagada e reprogramada por instrues de programa.
Entrada/Sada Sinais que fazem a interface entre o microcontrolador e o mundo externo.
A CPU l uma entrada para sentir o nvel de um sinal externo e escreve em uma sada para
mudar o nvel em um sinal externo.
EPROM Erasable, Programmable, Read-Only Memory. Tipo de memria no voltil que
pode ser apagada pela exposio em luz ultra-violeta.
FCS Full Chip Simulation (ver Simulao Completa do Chip).
Firmware Software bsico que pode ser gravado na memria de programa de
microprocessadores ou microcontroladores.
Flag Bit que tem uma funo especfica.
Hardware Circuitos eletrnicos.
I/O Input/Output (ver Entrada/Sada).
I/O Mapeado em Memria Neste tipo de sistema, registradores de controle e I/Os so
acessados da mesma maneira que na memria RAM ou ROM. As instrues podem acessar
a memria, e tambm podem acessar registradores de I/O.
ICD In-Circuit Debug/Programming (ver Depurao/Programao In-Circuit).
ICS In-Circuit Simulation (ver Simulao In-Circuit).
Instrues Operaes que a CPU pode realizar. Instrues so expressadas por
programadores como mnemnicos da linguagem Assembly.
Interrupo As interrupes fornecem um meio de suspender temporariamente a
execuo normal do programa para liberar a CPU a executar um conjunto de instrues
(servio) em resposta ao pedido (interrupo) de um perifrico.
Latch Circuito lgico que mantm uma sada estvel mesmo depois que a entrada for
removida ou alterada. Uma entrada de clock determina quando o latch ir capturar o estado
da entrada e aplic-lo na sada.

91
Linguagem Assembly Mtodo utilizado por programadores para representar instrues de
mquina (dados em binrio) em uma forma mais conveniente. Para cada instruo de
mquina dado um nome curto e simples, denominado mnemmico.
Mapa de memria Representao visual de toda a memria enderevel pela CPU.
Microcontrolador Sistema computacional completo, incluindo a CPU, memria, clock , e
I/O em um simples circuito integrado.
Mnemnico Letras que representam uma operao da CPU. Por exemplo, o mnemnico
da instruo Carregar o Acumulador LDA.
Modelo de Programao Registradores de uma CPU em particular.
Modos de endereamento Meio pelo qual a CPU obtm (enderea) a informao
necessria para completar uma instruo.
Nvel lgico 0 Nvel de tenso aproximadamente igual a tenso do terra (V
SS
).
Nvel lgico 1 Nvel de tenso aproximadamente igual a tenso de alimentao (V
DD
).
Offset Deslocamento (reposicionamento) de um ponteiro em relao a um endereo base,
que normalmente o Registrador de ndice ou o Stack Pointer.
Opcode Cdigo binrio que instrui a CPU a fazer uma operao especfica.
Oscilador Circuito que produz uma freqncia constante que utilizada pela CPU para
temporizaes e referncia de sequeciamento.
OTP One Time Programmable. Tipo de memria no voltil que pode ser programada mas
no pode ser apagada. A memria recebe esse nome porque no existem formas de apagar o
seu contedo.
Pgina Zero Primeiros 256 bytes de memria ($0000 - $00FF), tambm chamada de
pgina direta.
PC Program Counter. Registrador que aponta para o endereo do byte de cdigo a ser
buscado na memria. O mesmo que Contador do Programa.
Programa Conjunto de instrues que fazem o microcontrolador desempenhar uma
operao desejada.
RAM Random Access Memory. Tipo de memria que pode ser lida ou escrita pela CPU.
O contedo de uma posio de memria RAM permanece armazenado at que a CPU
escreva um valor diferente ou at que a energia seja desligada.
Registrador Condition Code Registrador que informa o status de operaes lgicas e
aritmticas.

92
Reset Reset utilizado para forar a CPU e perifricos para um estado inicial conhecido.
Reset(ar) - Colocar um sinal/bit em GND (nvel lgico 0).
Set(ar) Colocar um sinal/bit em VCC (nvel lgico 1).
Simulao Completa do Chip Ferramenta de depurao onde o microcontrolador tem
toda sua funcionalidade simulada por um software aplicativo em microcomputador pessoal.
Simulao In-Circuit Ferramenta de depurao onde um software aplicativo se comunica
com um microcontrolador (hardware), envia comandos, executa comandos no
microcontrolador e recebe respostas dos comandos para atualizao do simulador.
Software Conjunto de instrues computacionais ordenadas de tal forma que executar as
funes necessrias a uma aplicao.
SP - Stack Pointer. Registrador que contm o prximo endereo (ponteiro) livre da pilha, o
mesmo que Ponteiro da Pilha.
Unidade Central de Processamento Unidade que controla a execuo de instrues.
Unidade Lgica/Aritmtica Mdulo de uma CPU onde so realizadas as operaes
aritmticas e lgicas.


CNZ Engenharia e Informtica Ltda.
Av. Estcio de S, 560 Cotia SP
Fone: +55 (11) 4612-2324
Homepage : www.cnz.com.br
CNZ Indstria e Comrcio Ltda.
Av. Lineu Prestes, 2242 So Paulo - SP
Fone: +55 (11) 3039-8343
Homepage : www.cnz.com.br

EMPRESA
A CNZ uma empresa (registrada no CREA-SP) voltada para Projetos,
Consultoria, Assessoria e Treinamento nas reas de Sistemas Eletrnicos
Digitais Microprocessados e de Informtica Industrial. Sua principal misso o
treinamento de profissionais envolvidos com o desenvolvimento de projetos de
sistemas digitais e a prestao de servios para empresas que atuam na rea de
Automao e Controle, e tambm de Equipamentos Biomdicos e Laboratoriais.
A CNZ desenvolve integralmente o projeto, fabrica e comercializa produtos de
acordo com as necessidades pr-determinadas pelo cliente.

PRODUTOS
Kits de desenvolvimento para microcontroladores 68HC908QT/QY
Sistema de aquisio de dados compactos
Conversor de protocolos seriais
Interfaces de comunicao
Equipamentos biomdicos

TREINAMENTO
Microcontroladores da famlia HC08 Mdulo Bsico
Microcontroladores da famlia HC08 Mdulo Avanado
Interfaces e protocolos de comunicao serial para microcontroladores
Linguagem C para microcontroladores


DISTRIBUIDORES AUTORIZADOS MOTOROLA SEMICONDUTORES

AVNET
Fone : 11- 5079-2150
Fax : 11- 5079-2160
e-mail : vendas@avnet.com
web page : http://www.avnet.com

FARNELL
Fone : 11- 4066-9400
Fax : 11- 4066-9410
e-mail : vendas@farnell.com
web page : http://www.farnell.com

KARIMEX COMPONENTES ELETRONICOS LTDA
Fone : 11- 5189-1900
Fax : 11- 5181-9380
e-mail : vendas@karimex.com
web page : http://www.karimex.com.br

INFORMAT COMPONENTES ELETRONICOS LTDA
Fone : 11- 3350-0200
Fax : 11- 3223-0892
e-mail : gustavo@grupoinformat.com.br
web page : http://www.grupoinformat.com.br/informat/

PANAMERICANA / ARROW
Fone : 11- 3613-9300
Fax : 11- 3613-9355
e-mail : sac@pan-arrow.com.br
web page : http://www.pan-arrow.com.br

RICHARDSON ELETRONICS
Fone : 11 - 3845-6199
Fax : 11 - 3845-6199
e-mail : otavio@rell.com
web page : http://www.rell.com

SILETEC ELETRONICA COM. LTDA
Fone : 11- 5536-4401
Fax : 11- 5535-4997
e-mail : siletec@siletec.com.br
web page : http://www.siletec.com.br




FUTURE ELECTRONICS
Fone : 19 - 3737-4100
Fax : 19 - 3236-9834
e-mail : rafael.armani@future.ca
web page : http://www.futureelectronics.com/

Anda mungkin juga menyukai