Escolar Documentos
Profissional Documentos
Cultura Documentos
ndice ____________________________________________________________________ 1
1.
Introduo ____________________________________________________________ 7
2.
Reviso ______________________________________________________________ 8
3.
2.1.
2.2.
2.3.
Memria ________________________________________________________ 11
2.4.
2.5.
Sinais de Sada____________________________________________________ 12
2.6.
2.7.
Caractersticas principais____________________________________________ 14
3.2.
3.2.1.
3.2.2.
3.2.3.
3.2.4.
3.2.5.
3.3.
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.
3.3.7.
Relativo _____________________________________________________ 21
3.3.8.
3.4.
3.4.1.
3.4.2.
Modo STOP__________________________________________________ 22
3.5.
4.
3.5.1.
Reset _______________________________________________________ 23
3.5.2.
Interrupes __________________________________________________ 24
4.1.1.
Caractersticas principais________________________________________ 25
4.1.2.
Pinagem _____________________________________________________ 27
4.2.
Memria ________________________________________________________ 29
4.2.1.
4.2.2.
Memria FLASH______________________________________________ 32
4.3.
4.3.1.
4.3.2.
Controle de excees___________________________________________ 36
4.4.
5.
Processamento de excees__________________________________________ 23
4.4.1.
Oscilador RC _________________________________________________ 38
4.4.2.
Oscilador Interno______________________________________________ 39
4.4.3.
4.4.4.
4.5.
4.6.
4.7.
4.8.
4.8.1.
Port A ______________________________________________________ 45
4.8.2.
Port B_______________________________________________________ 45
4.9.
4.10.
4.11.
4.12.
4.13.
Introduo _______________________________________________________ 50
5.2.
Nomenclatura ____________________________________________________ 50
5.3.
5.3.1.
5.4.
6.
7.
8.
9.
Programao assembler_________________________________________________ 56
6.1.
Sintaxe __________________________________________________________ 56
6.2.
Diretivas ________________________________________________________ 57
6.3.
Linker __________________________________________________________ 58
6.4.
7.2.
Projeto de hardware________________________________________________ 61
7.3.
7.4.
7.5.
7.6.
Introduo _______________________________________________________ 67
8.2.
8.3.
8.4.
8.5.
8.6.
8.6.1.
8.6.2.
8.6.3.
Glossrio ________________________________________________________________ 89
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
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
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.
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.
10
2.2.
Sistema de Clock
Todo sistema computacional utiliza um clock para fornecer a CPU uma maneira de se mover
de instruo em instruo, em uma seqncia pr-determinada.
Uma fonte de clock de alta freqncia (normalmente derivada de um cristal ressonador
conectado a CPU) usado para controlar o sequeciamento das instrues da CPU.
Normalmente as CPUs dividem a freqncia bsica do cristal por 2 ou mais para chegar ao
clock do barramento interno. Cada ciclo de leitura ou escrita a memria levam um ciclo de
clock do barramento interno, tambm denominado ciclo de barramento (bus cycle).
2.3. Memria
Podemos pensar na memria como sendo uma lista de endereos postais, onde o contedo de
cada endereo um valor fixo de 8 bits (para CPU de 8 bits). Se um sistema computacional
tem n linhas de endereos, ele pode enderear 2n posies de memria (p.ex.: um sistema
com 11 linhas pode acessar 211 = 2048 endereos). Entre os diversos tipos de memria
encontram-se:
RAM (Random Access Memory) Memria de acesso aleatrio. Pode ser lida ou
escrita pela execuo de instrues da CPU e, normalmente utilizada para
manipulao de dados pela CPU. O contedo perdido na ausncia de energia
(memria voltil).
ROM (Read Only Memory) Memria apenas de leitura. Pode ser lida, mas no
altervel. O contedo deve ser determinado antes que o circuito integrado seja
fabricado. O contedo mantido na ausncia de energia (memria no voltil).
EPROM (Erasable and Programmable ROM) Memria ROM programvel e
apagvel. O contedo dessa memria pode ser apagado com luz ultravioleta, e
posteriormente, reprogramado com novos valores. As operaes de apagamento e
programao podem ser realizadas um nmero limitado de vezes depois que o
circuito integrado for fabricado. Da mesma forma que a ROM, o contedo mantido
na ausncia de energia (memria no voltil).
OTP (One Time Programmable) Memria programvel uma nica vez. Semelhante
EPROM quanto a programao, mas que no pode ser apagada.
11
12
Microcontroladores de diferentes
13
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
14
Acumulador (A)
A
15
ndice (H:X)
15
SP
15
PC
7
V 1
1 H
Zero
Negativo
Mscara Interrupo
Half-carry
Overflow
Bit 0
A
RESET
X - Indeterminado
15
14
13
12
11
10
H:X
RESET
0
X Indeterminado
Bit 0
X
0
14
13
12
11
10
Bit 0
SP
RESET
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.
16
14
13
12
11
10
Bit 0
PC
RESET
Bit 0
RESET
X
X Indeterminado
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.
17
18
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.
19
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).
20
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.
21
22
23
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.
24
4. FAMLIA MC68HC908QT/QY
4.1. Descrio Funcional
Os microcontroladores que fazem parte da famlia MC68HC908QT/QY tem como
caractersticas bsicas: baixo custo, alto desempenho e baixa pinagem (8 ou 16 pinos). Todos
os membros dessa famlia utilizam a unidade central de processamento CPU08, desenvolvida
para a arquitetura HC08, e esto disponveis com uma variedade de mdulos, tamanhos e
tipos de memria, e tipos de encapsulamento. Os principais componentes esto apresentados
na tabela a seguir:
Tabela 1 Microcontroladores da famlia MC68HC908QT/QY
Dispositivo
Memria FLASH
Conversor A/D
No pinos
MC68HC908QT1
1536 bytes
8 pinos
MC68HC908QT2
1536 bytes
4 canais de 8 bits
8 pinos
MC68HC908QT4
4096 bytes
4 canais de 8 bits
8 pinos
MC68HC908QY1
1536 bytes
16 pinos
MC68HC908QY2
1536 bytes
4 canais de 8 bits
16 pinos
MC68HC908QY4
4096 bytes
4 canais de 8 bits
16 pinos
26
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:
27
Pino
Descrio
VDD
Alimentao 5V ou 3V
Potncia
Vss
Alimentao GND
Potncia
PTA0
PTA1
PTA3
PTA4
PTA5
PTB[0:7]
Entrada
Entrada/Sada
Entrada
Entrada/Sada
Entrada/Sada
Tipo
Entrada
Entrada/Sada
Entrada
Entrada
Entrada
Entrada
Entrada/Sada
Entrada
Entrada
Entrada/Sada
Sada
Sada
Entrada
Entrada
Entrada/Sada
Entrada
Entrada
Entrada
Entrada/Sada
28
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
PTA[0]
PTA[1]
PTA[2]
PTA[3]
PTA[4]
PTA[5]
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.
29
$0000
$0040
$0080
$0100
$2800
$2E00
$EE00
Registradores de I/O
64 bytes
Reservado
64 bytes
RAM Interna
128 bytes
No implementado
9984 bytes
No implementado
9984 bytes
ROM Auxiliar
1536 bytes
ROM Auxiliar
1536 bytes
No implementado
49152 bytes
No implementado
51712 bytes
Memria FLASH
(MC68HC908QT4/QY4)
4096 bytes
Memria FLASH
(MC68HC908QT1/QY1/QT2/QY2)
1536 bytes
$FE00
$FE01
$FE02
$FE03
$FE04
$FE05
$FE06
$FE07
$FE08
$FE09
$FE0A
$FE0B
$FE0C
$FE0D
$FE10
$FFB0
$2E00
$F800
$FDFF
FLASH
14 bytes
Proteo de Blocos da FLASH (FLBPR)
$FFBF
$FFC0
$FFC1
$FFC2
FLASH
14 bytes
$FFFF
$2800
ROM Monitor
416 bytes
$FFBE
$FFD0
$0100
Vetores de Interrupo
48 bytes
30
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
Alta
IF15
IF14
IF13
Descrio
$FFDE
$FFDF
$FFE0
$FFE1
No utilizado
IF6
IF5
IF4
IF3
IF2
IF1
$FFF2
$FFF3
$FFF4
$FFF5
$FFF6
$FFF7
No utilizado
$FFFA
$FFFB
$FFFC
$FFFD
$FFFE
$FFFF
31
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.
32
33
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.
34
35
36
Prioridade
Alta
Baixa
Flag
Masc.
Reg.
INT
End. Vetor
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
Fonte de Interrupo
Teclado
KEYF IMASKK
IF14
$FFDE - $FFDF
COCO
IF15
$FFE0 - $FFE1
AIEN
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.
37
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.
38
39
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.
40
/IRQ
/RST
Vetor Reset
PTA1
PTA4
Modo
Monitor
VTST
VTST
VDD
Modo
Monitor
Forado
VDD
$FF
(apagado)
Modo
Monitor
Forado
VSS
$FF
(apagado)
Modo
Usurio
VDD
ou
VSS
$FF
(programado)
Clock (MHz)
Baud (bps)
Externo (f)
f / 1024
Externo (f)
f / 1024
Interno (3.2)
9600 bps
Comentrio
Tenses nos pinos PTA1 e
PTA4 so necessrias. As
funes /RST e OSC1 ativas.
Funo OSC1 ativa. /RST e
/IRQ esto disponveis apenas
se configurados depois.
As funes /RST, /IRQ, e
OSC1 disponveis apenas se
configurados depois.
Entra no modo usurio. Pino
/RST disponvel apenas se
configurado depois.
41
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
Modos
Vetor
Reset High
Reset Low
Usurio
$FFFE
$FFFF
$FFFC
Monitor
$FEFE
$FEFF
$FEFC
SWI High
SWI Low
$FFFD
$FFFC
$FFFD
$FEFD
$FEFC
$FEFD
42
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
43
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.
44
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.
45
46
O mdulo COP contm um contador de 6 bits que roda livre precedido pelo contador de 12
bits do mdulo SIM. Se no for zerado por software, o contador do COP estoura e gera um
reset assncrono depois de (218-24) ou (213-24) BUSCLKX4 ciclos; dependendo do estado do
bit de seleo da taxa do COP (COPRS), no registrador de configurao1 (CONFIG1).
47
O mdulo LVI contm um circuito de referncia com zona morta e um comparador. Os bits
de configurao do mdulo LVI encontram-se no registrador CONFIG1.
Se LVIPWRD = 0, a tenso VDD passa a ser monitorada pelo mdulo LVI.
Se LVIRSTD = 0, o mdulo LVI gera um reset quando VDD cair abaixo da tenso VTRIPF. Se
LVISTOP = 1, o mdulo LVI passa a operar tambm no modo STOP.
48
49
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
PC
Program Counter
PCH
PCL
SP
Stack Pointer
50
Descrio
LDA
Carrega o acumulador
LDHX
LDX
Carrega o registrador X
STA
STHX
STX
TAX
TXA
MOV
PSHA
PSHH
PSHX
PULA
PULH
PULX
Aritmticas
Instruo
Descrio
ADD
ADC
SUB
SBC
MUL
DIV
Divide
DAA
51
Manipulao de dados
Instruo
Descrio
AIS
AIX
ASLA
ASLX
ASL
LSLA
LSLX
LSL
ASRA
ASRX
ASR
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
NEGA
NEGX
NEG
ROLA
ROLX
ROL
RORA
RORX
ROR
52
Descrio
BCLR
BSET
Lgica
Instruo
Descrio
AND
AND lgico
COMA
COMX
COM
EOR
ORA
OR lgico
NSA
Teste de dados
Instruo
Descrio
BIT
BRCLR
BRSET
CMP
CPHX
CPX
TSTA
TSTX
TST
53
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
BGT
BHCC
Desvia se bit H = 0
BHCS
Desvia se bit H = 1
BHI
BIH
BIL
BLE
BLS
BLT
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
CBEQA
CBEQX
CBEQ
DBNZA
DBNZX
DBNZ
54
Desvios incondicionais
Instruo
Descrio
JMP
Salto
JSR
RTS
Retorno de subrotina
Controle
Instruo
Descrio
CLC
Limpa bit C
CLI
NOP
Sem operao
SEC
Seta bit C
SEI
RSP
RTI
Retorno da interrupo
STOP
SWI
Interrupo de software
TAP
TPA
TSX
TXS
WAIT
55
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).
56
Mnemnico Operando
Comentrios
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
BASE
DC
Descrio:
Sintaxe:
BASE <n>
onde: <n> = 2, 8, 10 ou 16
Exemplo:
BASE 10
Descrio:
Sintaxe:
Exemplo:
DCB
Sinnimo:
Descrio:
Sintaxe:
Exemplo:
57
DS
Descrio:
Exemplo:
Sinnimo:
Descrio:
Sintaxe:
END
Exemplo:
END
Descrio:
Sintaxe:
<label>:
Exemplo:
RAM:
EQU $0040
Estado0:
EQU %00100110
Insere arquivo especificado no arquivo fonte. O nome do arquivo
deve estar entre aspas.
Sintaxe:
END
EQU
INCLUDE
ORG
SECTION
XDEF
Descrio:
EQU <expresso>
Sintaxe:
Exemplo:
Descrio:
Sintaxe:
ORG <expresso>
Exemplo:
Descrio:
Sintaxe:
Exemplo:
Variveis: SECTION
DS.W 6 ; Reversa 12 bytes (6 words) na RAM.
Define os rtulos definidos no mdulo que podero ser referenciados
em outros mdulos
Descrio:
Sintaxe:
Exemplo:
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.
58
59
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 bsico3 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.
60
PTA3
1
2
3
4
68HC908
QT1
7
6
5
Vss
PTA0
PTA1
PTA2
SW
LED
61
Legenda
Configurar I/Os
Terminador
Apagar LED
Processo/Tarefa
Operao
Ler Boto
Deciso
N
Boto
pressionado?
Conector
S
Acender LED
Aguardar 1s
(executa Dly_1s)
Apagar Led
Ler Boto
Boto
pressionado?
62
A = 20
H:X = t50ms
H:X = H:X - 1
H:X = 0 ?
S
A=A-1
A=0?
S
Fim
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 loop4 executado (ver item 7.4).
Loop trecho de um fluxograma/programa que executado com retorno a um ponto/ instruo inicial.
63
FICA:
LDA
AND
BNE
PORTA
#$04
VOLTA
; Le botao
; Se botao nao pressionado, VOLTA
BCLR
1,PORTA
; Acende o LED
JSR
Dly_1s
BSET
1,PORTA
; Apaga o LED
LDA
AND
BEQ
PORTA
#$04
FICA
; Le botao
; Se botao pressionado, FICA
BRA
VOLTA
; Senao VOLTA
64
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.
Dly_1s:
LDA
# 20
Loop0:
LDHX # t50ms
Loop1:
AIX
# -1
CPHX # 0
x t50ms
x 20
BNE Loop1
DECA
BNE Loop0
RTS
65
Pelo projeto proposto no foi definido o tipo de oscilador, portanto ser utilizado um
oscilador externo de freqncia igual a
t = (2 + (3 + (2 + 3 + 3) t 50ms + 1 + 3) 20 + 4)
= 1segundo
6
20 10
Isolando t50ms e fazendo os clculos chega-se ao valor:
t 50ms = 31249,0875 31249
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.
66
67
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).
68
9 10 11 12 13 14 15 16 17 18 19
69
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.
70
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).
71
EQU
EQU
$00FF
23
MyData:
SECTION SHORT
;
; Insert here your data definition
;
MyCode:
SECTION
;
; Insert here your source code
;
_Startup:
Entry:
main:
LDHX
TXS
CLRH
CLI
#initStack
; initialize Stack
CLRX
; REPEAT
NOP
BRA
END
main
; UNTIL Forever
72
; Definicoes do QT1
EQU
$00FF
t50ms
EQU
31249
LDHX
TXS
CLRH
SEI
#initStack
_Startup:
Entry:
main:
; Desabilita interrupcoes
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
LDA
AND
BNE
PORTA
#$04
VOLTA
; Le botao
; Se botao nao pressionado, VOLTA
BCLR
1,PORTA
; Acende o LED
JSR
Dly_1s
BSET
1,PORTA
; Apaga o LED
LDA
AND
BEQ
PORTA
#$04
FICA
; Le botao
; Se botao pressionado, FICA
BRA
VOLTA
; Senao VOLTA
VOLTA:
FICA:
73
;================================================================
;
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
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.
74
Independente de ter uma licena registrada ou no, o simulador carregado com o cdigo
executvel do projeto que estava aberto, conforme Figura 32.
75
76
77
78
9 10 11 12 13 14 15
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
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.
80
81
82
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.
83
84
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.
86
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
87
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.
88
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
89
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.
90
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
92
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
Homepage : www.cnz.com.br
Homepage : www.cnz.com.br
AVNET
Fone
Fax
:
:
11- 5079-2150
11- 5079-2160
e-mail
web page
:
:
vendas@avnet.com
http://www.avnet.com
Fone
Fax
:
:
11- 4066-9400
11- 4066-9410
vendas@farnell.com
FARNELL
web page :
http://www.farnell.com
FUTURE ELECTRONICS
Fone
:
19 - 3737-4100
Fax
:
19 - 3236-9834
e-mail
:
rafael.armani@future.ca
web page :
http://www.futureelectronics.com/