Vous êtes sur la page 1sur 66

Microcontroladores HC08

Curso Bsico
Famlia MC68HC908QT/QY

Edmur Canzian
2003
Principais Caractersticas

CPU com freqncia padro de barramento de at 8MHz


64 Kbytes de endereveis para memria de programa,
dados e perifricos
Barramento interno flexvel para acessar perifricos
Modos de baixo consumo STOP e WAIT
Cdigo objeto compatvel com a famlia M68HC05
Principais Caractersticas

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
Modelo de Programao
Registradores especficos

Acumulador

ndice

Stack Pointer

Program Counter
Registrador Condition Code

V (Overflow) Transbordo em operaes aritmticas com sinal


H (Half-carry) Transbordo do bit 3 para o 4 (aritmtica com BCD)
I (Mask Interrupt) Mscara interrupes
N (Negative) Resultado negativo de operaes aritmticas
Z (Zero) Resultado igual a zero
C (Carry) Transbordo do bit 7
Modos de endereamento

Inerente
DECA Decrementa contedo do acumulador
Imediato
LDA #$20 Carrega o acumulador com o valor $20
Direto
LDA $40 Carrega do acumulador com o contedo do
endereo $0040 da memria
Estendido
LDA $45FA Carrega o acumulador com o contedo do
endereo $45FA da memria
Modos de endereamento

Indexado sem offset


LDA ,X Carrega o acumulador com o contedo do
endereo armazenado no registrador H:X
Indexado com offset de 8 bits
LDA $5E,X Carrega o acumulador com o contedo do
endereo armazenado em (H:X + $5E)
Indexado com offset de 16 bits
LDA $485E,X Carrega o acumulador com o contedo
do endereo armazenado em (H:X + $485E)
Modos de endereamento

Indexado sem offset e ps-incremento


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.
Indexado com offset de 8 bits e ps-incremento
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.
Modos de endereamento

Stack Pointer com offset de 8 bits


LDA $48,SP Carrega o acumulador com o contedo do
endereo armazenado em (SP + $48).
Stack Pointer com offset de 16 bits
LDA $485E,SP Carrega o acumulador com o contedo
do endereo armazenado em (SP + $485E).
Relativo
BCC Volta Desvia para o endereo Volta se o flag de
carry (C) estiver resetado.
Modos de Endereamento

Movimento de dados imediato para direto


MOV #$40,$25 Movimenta o valor $40 para o endereo $25.
Movimento direto para direto
MOV $40,$25 Movimenta o contedo do endereo $40 para o
endereo $25.
Movimento indexado para direto com ps-incremento
MOV X+,$23 - Movimenta o contedo do endereo armazenado no
par H:X para o endereo $0023 e, posteriormente, incrementa H:X.
Movimento direto para indexado com ps-incremento
MOV $23,X+ - Movimenta o contedo do endereo $0023 para o
par H:X e, posteriormente, incrementa H:X.
Conjunto de Instrues

Movimento de Dados
LDA LDX STA STX TAX TXA LDHX MOV PSHA
PSHH PSHX PULA PULH PULX STHX
Aritmtica
ADD ADC SUB SBC MUL DAA DIV
Lgica
AND ORA EOR COMA COMX COM NSA
Conjunto de Instrues (cont.)

Manipulao de Dados (Inc/Dec/Neg/Clr)


INCA INCX INC DECA DECX DEC CLR CLRA CLRX
NEGA NEGX NEG AIS AIX CLRH
Manipulao de Dados (Rotate/Shift)
ROLA ROLX ROL RORA RORX ROR LSLA LSLX LSL
LSRA LSRX LSR ASRA ASRX ASR
Manipulao de Bit
BSET BCLR
Conjunto de Instrues (cont.)
Teste de Dados
CMP CPX BIT TSTA TSTX TST BRCLR BRSET CPHX
Desvios Relativos
BRA BRN BSR BHI BLO BHS BLS BPL BMI BEQ
BNE BCC BCS BHCC BHCS BMC BMS BIL BIH BGE
BGT BLE BLT CBEQ CBEQA CBEQX DBNZ
Saltos/Retorno
JMP JSR RTS
Controle
SEC CLC SEI CLI SWI RTI RSP NOP WAIT STOP
TAP TPA TSX TXS
Modos de Baixo Consumo

Modo WAIT
Habilita interrupes

Desabilita somente o clock da CPU

Desperta a CPU com interrupo, reset ou BREAK

Corrente tpica (IDD) 50% da corrente em execuo

Os perifricos podem ser desabilitados individualmente para


reduzir cada vez mais o consumo
Modo STOP
Habilita interrupes externas
Desabilita o clock da CPU e dos perifricos

Desperta a CPU com interrupo, reset ou BREAK, aps


tempo de estabilizao do oscilador.
Corrente tpica (IDD) de 1A a 3 A
Processamento de excees

Reset
Interrupes
Interrupes mascarveis (hardware)

Interrupo no mascarvel (Instruo SWI)

Interrupo BREAK
Processamento de excees
RESET

A famlia HC08 possui 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

Nota: Todas estas fontes de reset carregam o vetor $FFFE-$FFFF


no PC e ativam o sinal de reset interno (IRST).
Processamento de excees
INTERRUPES

Tipos de Interrupo
Software SWI

Hardware - IRQ, TIM, ADC, KBI, Port

Processamento de Interrupes:
Reconhecimento (Recognition)

Arbitramento (Arbitration)

Empilhamento (Stacking)

Busca do vetor (Vector Fetching)

Rotina da Interrupo (Interrupt Service Routine)


Arquitetura MC68HC908QT/QY

SIM RAM
Interrupes
Reset CPU08 TIM

I/O
LVI
ADC
MON08
COP FLASH

Oscilador ROM
Famlia MC68HC908QT/QY

Memria
Dispositivo Conversor A/D No pinos
FLASH
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


Pinagem do MC68HC908QT

MC68HC908QT2
MC68HC908QT1
MC68HC908QT4
Pinagem do MC68HC908QY
MC68HC908QY2
MC68HC908QY1
MC68HC908QY4
Memria

1536 bytes de memria FLASH


(MC68HC908QT1/QT2 e MC68HC908QY1/QY2)
4096 bytes de memria FLASH
(MC68HC908QT4 e MC68HC908QY4
128 bytes de memria RAM
48 bytes para vetores de interrupo programveis e
armazenados na FLASH
416 bytes de memria ROM para o Monitor
1536 bytes com rotinas para apagamento e programao
da memria FLASH, localizados na ROM
Mapeamento de Memria
$0000
Registradores
Perifricos Registradores e perifricos mapeados em
$0040
$0080 memria (sem instrues de I/O especiais)
RAM
$0100
Manipulao direta de bits na Pgina Zero
($0000 - $00FF) - Cdigo mais rpido e
$2800

ROM
eficiente
Auxiliar Toda memria de Programa e de Dados
enderevel no mesmo mapa de memria
$EE00 Sem pginas (bancos) de memria
ou
$F800
Pode realizar operaes de dados na memria
FLASH de programa e executar programas na
memria de dados
$FE00
Regs. Controle
$FE10
Monitor ROM
$FF80
Vetores
$FFFF
Mdulo de Integrao do Sistema
(SIM)

Gerao do clock do barramento e perifricos:


Gerenciamento de STOP/WAIT/RESET/BREAK

Controle do clock interno

Controle do Reset, incluindo POR e o timeout do 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


Mdulo SIM
(Continuao)
Processamento de Excees
RESET

Tipos de RESET
Externo - Power On (VDD = 0), pino /RST = 0

Interno - COP, LVI, Opcode Ilegal, Endereo Ilegal

Processamento do RESET
Ports I/O configurados como entrada

Stack Pointer inicializado com o endereo $00FF

Interrupes mascarveis so inibidas (I = 1)

Interrupo externa resetado

Modo STOP resetado

Modo WAIT resetado


Power-On Reset (POR)

Na energizao ocorrem os seguintes eventos:


Pulso POR gerado

O sinal de reset interno ativado

O mdulo SIM fornece o sinal BUSCLKX4

Mdulos so mantidos inativos por 4096 BUSCLKX4

ciclos para permitir a estabilizao do oscilador


O pino de /RST = 0 durante a estabilizao do oscilador

Registrador SRSR atualizado

(bit POR = 1 e demais bits = 0)


RESET Interno

ENDEREO ILEGAL
OPCODE ILEGAL
COP RESET INTERNO
LVI
POR

CPU fora /RST = 0

/RST
32 Ciclos 32 Ciclos

BUSCLKX4

RESET Interno

Temporizao do RESET Interno


Registrador SRSR
(SIM Reset Status Register)

Este registrador (s de leitura) contm flags das fontes de Reset.


Um ciclo de leitura no SRSR limpa todos os flags .

Endereo do registrador SRSR: $FE01


Bit 7 7 5 4 3 2 1 Bit 0

POR PIN C OP ILOP ILAD 0 LVI 0

N O T A: Depois de mltiplos resets (de fontes diferentes) sem executar


uma leitura no registrador SRSR, mltiplos flags permanecero setados.
Processamento de Excees
Fontes de Interrupo

Baixa

Prioridade
Alta
Mudana do Contexto
Programa Principal
Mudana do Contexto
CLI Reconhecimento
Arbitramento
Empilhamento
EXCEO Desabilitao Interrupes
Busca do Vetor Interrupo
Execuo Rotina Interrupo

END
Reconhecimento
Mudana de Contexto
Reconhecimento
Arbitramento
Empilhamento
Desabilitao Interrupes
Reset:
Busca do Vetor Interrupo Reconhecimento e atuao imediata
Execuo Rotina Interrupo
Interrupes:
Reconhecimento durante o ltimo
ciclo da instruo corrente
Atuao depois do ltimo ciclo para
instruo corrente
Arbitramento
Mudana de Contexto
Reconhecimento
Arbitramento
Empilhamento
L
Desabilitao Interrupes
Busca do Vetor Interrupo
Execuo Rotina Interrupo

H
Empilhamento
Mudana de Contexto
Reconhecimento
Arbitramento SP
Empilhamento
interrupes
Desabilitao Interrupes SP
CCR
Busca do Vetor Interrupo SP
Execuo Rotina Interrupo A
SP
X
SP
PC_H

N O T A: O Stack Pointer sempre aponta para a PC_L


SP
prxima posio disponvel (vazio) da pilha.
Busca do Vetor da Interrupo
Mudana de Contexto
Reconhecimento
Arbitramento
Empilhamento
Desabilitao Interrupes L
Busca do Vetor Interrupo
Execuo Rotina Interrupo

H
Execuo do Servio de Exceo
Mudana de Contexto
Reconhecimento SP
Arbitramento
SP
Empilhamento H
Desabilitao Interrupes SP
CCR
Busca do Vetor Interrupo
SP
Execuo Rotina Interrupo A
SP
X
Rotina de Exceo
SP
PSHH PC_H
SP
PC_L
Retorno ao Contexto Anterior
Mudana de Contexto
Reconhecimento SP
Arbitramento
SP
Empilhamento H
Desabilitao Interrupes SP
CCR
Busca do Vetor Interrupo
SP
Execuo Rotina Interrupo A
SP
X
Rotina de Exceo SP
PSHH PC_H
SP
SP
PC_L

PULH
RTI
Retorno ao Contexto Anterior
(Continuao)

Programa Principal Mudana de Contexto


Reconhecimento
CLI
Arbitramento
Empilhamento
Desabilitao interrupes
EXCEO
Busca do Vetor Interrupo
Execuo Rotina Interrupo

Co Re Servio de Exceo
nte tor
END xto no PSHH
An a o
ter
ior PULH
RTI
Mdulo Oscilador
(OSC)

O oscilador tem 4 opes de fonte de clock disponveis


Oscilador interno - Freqncia fixa de 12.8MHz com

tolerncia de 25%, podendo ser ajustvel por


registrador (OSCTRIM) em 5%.
Oscilador externo - Clock externo que pode ser

inserido diretamente no OSC1.


RC externo - Resistor externo (R) para gerar
freqncia. O capacitor (C) interno ao chip.
Cristal externo - Mdulo oscilador interno ao chip que

necessita um cristal externo ou ressonador cermico.


Mdulo OSC
Oscilador RC
Mdulo OSC
Cristal Externo
Monitor ROM
Principais Caractersticas

Funcionalidade normal 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
Monitor ROM
Principais Caractersticas (cont.)

Utilizao de cristal externo ou oscilador de 9.83MHz


Modo de operao com oscilador interno
574 bytes de cdigo do monitor ROM
Entrada no Monitor sem necessidade de tenso alta (VTST)
se o vetor de reset estiver apagado ($FFFE e $FFFF = $FF)
Modo de entrada padro se houver tenso alta no pino /IRQ
Monitor ROM
Interface de hardware

Entrada
Clock
noInterno,
Clock Externo,
Monitor com
Oscilador
SemTenso
Sem Tenso
9.8304
Alta
MHz
Alta
VDD VDD

GND
V
VTST
DD IRQ 9.8304 MHz
29.4912
14.7456
19.6608 MHz

14.400
28.800
19.200 bps
9.600 bps
bps RS-232

PTA0 Monitor
'HC125

GND
PTA1
PTA4
9.8304 MHz OSC1

Opcional
Monitor ROM
Modos de Entrada
Monitor ROM
Vetores do Modo Usurio x Modo Monitor

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.
Monitor ROM
Programao da FLASH
$0000 Regs. I/O
Dados FLASH $0040
RAM
$0100

$2800
ROM
Algoritmo de Auxiliar
Programao da
FLASH

PTA0

$EE00

FLASH

$FE00 Registradores
Monitor ROM

$FFFF Vetores
Monitor ROM
Firmware

Comandos executados 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


Mdulo de Interface do Timer
(TIM)
Principais caractersticas:
2 canais para input capture/output compare

z Captura do sinal de entrada por borda (configurvel)


z Altera o estado de uma sada nas aes de comparao de sinais
Gerao dos sinais de PWM
Clock de entrada programvel (7 opes de pr-escala)
Operao em contagem livre (free-running) ou contador
de mdulo pr-determinado
Altera qualquer pino no estouro de contagem
Bits de reset e parada do contador
Mdulo TIM
Referncia de Tempo / Pr-escala
PS2 PS1 PS0

Internal
Bus Clock Prescaler TSTOP

TRST

16-bit Counter TOF Interrupt


16-bit Comparator TOIE Logic
TMOD

Contador free-running de16 bits com stop e reset


Pr-escala para dividir a frequncia de clock interna
Programvel para um de sete valores
Resoluo mxima de 125 ns (bus clock de 8MHz)
Estouro do Timer com interrupo opcional
Capacidade de contagem em mdulo 16 bits
Mdulo TIM
Comparao de Sada - Conceito

CONTADOR
CONTADOR FREE-RUNNING
FREE-RUNNING 16-BITS
16-BITS

=? LGICA DE
OCx
COMPARAO 16-BITS CONTROLE

LATCH DE COMPARAO DE SADA (16-BIT)


Flag
1
Status

Habilita Requisio de Interrupo


1
INT

Cada canal tem seu prprio pino de sada, latch de comparao


de sada, comparador, flags de status, lgica de controle e
controles locais de interrupo
Mdulo TIM
Comparao de Sada - Exemplos de Uso

CONTADOR FREE-RUNNING 16-BITS

=? LGICA DE
OCx
COMPARAO 16-BITS CONTROLE

LATCH DE COMPARAO DE SADA (16-BIT)


Flag
Status

Habilita Requisio de Interrupo


INT

Eventos de Temporizao Simples


Interrupo Peridica
Pulso de Sada Simples, Largura Varivel
Sinal PWM (Pulse Width Modulated)
Mdulo TIM
Captura de Entrada - Conceito

CONTADOR FREE-RUNNING 16-BITS

ICx SELEO BORDA Latch


LATCH DE CAPTURA DE ENTRADA (16-BITS)
& DETECO

Flag
1
Status
Habilita
1
INT Requisio Interrupo

Cada canal tem seu prprio pino de entrada, latch de


captura de entrada,flags de status, seleo de borda de
entrada e controles locais de interrupo
Mdulo TIM
Captura de Entrada - Exemplos de Uso

CONTADOR FREE-RUNNING 16-BITS

ICx SELEO BORDA Latch


LATCH DE CAPTURA DE ENTRADA (16-BITS)
& DETECO

Flag
Status
Habilita
INT Requisio Interrupo

Referncia Absoluta deTempo para Eventos Externos


Medida de Perodo de Entrada
Medida de Largura de Pulso de Entrada
Interrupes Externas Adicionais
Mdulo TIM
Diagrama de Blocos
PS2
PS2 PS1
PS1 PS0
PS0

Internal
Internal
Bus Prescaler
Prescaler TSTOP
TSTOP
Bus Clock
Clock

TRST
TRST

16-bit
16-bit Counter
Counter TOF
TOF Interrupt
Referncia Tempo 16-bit
16-bit Comparator
Comparator TOIE Logic
TMOD
TMOD

TOV0
Port
ELS0B ELS0A CH0MAX TnCH0
Logic
16-bit Comparator
Canal 0 Timer TCH0 CH0F
Interrupt
16-bit Latch
CH0IE Logic
MS0A
MS0B
Internal Bus

TOV1
Port
ELS1B ELS1A CH1MAX TnCH1
Logic

Canal 1 Timer 16-bit Comparator


TCH1 CH1F
Interrupt
16-bit Latch
CH1IE Logic
MS1A
Conversor Analgico/Digital
(ADC)

Principais caractersticas:
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
Portas de Entrada/Sada
Port A
Portas de Entrada/Sada
Port A - Registradores

DDRA[5:0] Bits de direo de dados


1 Pino configurado como sada
0 Pino configurado como entrada

NOTA: O pino PTA2 somente entrada.


Portas de Entrada/Sada
Port B
Portas de Entrada/Sada
Port B - Registradores

DDRB[7:0] Bits de direo de dados


1 Pino configurado como sada
0 Pino configurado como entrada
Interrupo Externa
IRQ

Pino de interrupo externa - /IRQ (PTA2)


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
Mdulo de Interrupo do Teclado
(KBI)
Principais caractersticas:
6 pinos (PTA0-PTA5) de interrupo de teclado com bits

de habilitao e uma mscaras individuais


1 interrupo controlada pela lgica de auto-despertar

Pull-ups configurveis por software

Interrupo programvel por borda e nvel

Sada dos modos de baixo consumo


Mdulo Computador Operando Corretamente
(COP)
Mdulo de Inibio por Tenso Baixa
(LVI)

Monitorar a tenso do pino de alimentao (VDD)


Forar um reset quando a tenso VDD cair abaixo da
tenso de desligamento - VTRIPF
Mdulo BREAK

Gera uma interrupo (BREAK) que para o fluxo normal do


programa executa um programa alternativo.
Registradores de I/O acessveis durante a interrupo Break.
Eventos que causam interrupo Break:
CPU gera um endereo (PC) que coincide com o

contedo dos registradores BRKH e BRKL (end. Break);


Software faz bit BRKA = 1 no registrador BRKSCR.

Vous aimerez peut-être aussi