Microcontrolador MC68HCJK3 e
MC68HCJK1
Disciplina: Microcontroladores A
Professor Adjunto: Alexandre Campos
(campos@ct.ufsm.br)
2
I. INTRODUO
No passado as tecnologias existentes no mercado obrigavam a pequenos e mdio industriais
investir quantia razovel de dinheiro em equipamentos adicionais ao microcontrolador, como
apagadores ultravioleta, programadores e em alguns casos softwares que permitisse editar,
compilar, simular, realizar conexes e programa-los. Os novos microcontroladores e ferramentas de
desenvolvimento disponveis para os usurios de microcontroladores de 8 bits da Motorola possuem
todas estas facilidades mediante um programa interno de fbrica, que permite comear projetos de
forma muito simples, rpida e sem nenhum custo adicional.
II. BREVE DESCRIO DO MICROCONTROLADOR MC68HC908JK3/JK1
O microcontrolador MC68HC909JK3 e todos os membros da famlia HC08 da Motorola,
caracterizam-se por seu baixo custo e alto desempenho. Eles utilizam a unidade de processamento
denominada CPU08 e esto disponveis em diversas variedades de apresentao (20,28 e 40 pinos)
e em diversos tamanhos de memria. (1.5K, 4K e 32K). Dentro das principais caractersticas destes
microcontroladores de possurem memria flash (apagamento e gravao eletricamente), canais de
conversores analgico/digital (ADC). Na Tab 1 podem ser observadas as caractersticas mais
importantes da CPU08 e na Tab 2 as caractersticas do microcontrolador MC68HC908JK3
(simplificado para JK3).
Caractersticas da CPU08
Conjunto de instrues amplo com vrios modos de endereamento
Instrues de transferncia de Memria para Memria
Instruo de Multiplicao rpida 8x8
Instruo de Diviso rpida 16/8
Instrues de BCD (Binary Coded Decimal)
Fcil suporte de linguagens de alto nvel como C
3
Tab 2. Caractersticas do MC68HC908JK3
Caractersticas da JK3
CPU08 de 8 bits
Freqncia de operao interna de 8 MHz
4K Bytes de memria de programa (FLASH)
128 bytes de memria RAM
12 canais de conversor analgico-digital (8 bits)
15 Entradas/Sadas
2 temporizadores (timers) de 16 bits (sada por comparao e/ou captura de entrada)
Verses HC (cristal) e HRC (resistor e capacitor)
Modos de baixo consumo (Stop e Wait)
Watchdog (COP)
8 fontes de interrupo (por vetores)
4 LED drives
4
Tab 3. pinagem do JK3
Nome do Pino
Descrio
VDD
Alimentao Positiva
Entrada
5 V ou 3V
VSS
Terra
Sada
0V
RST
Entrada
VDD
IRQ1
Interrupo Externa
VDD ou VHI
(programao ou aplicao)
OSC1
Entrada do Oscilador
Entrada
Analgico
OSC2
Sada do Oscilador
Sada
Analgica
PTB (0:7)
Entrada/Sada
VDD
Entrada
Analgica
Entrada/Sada
VDD
Entrada
Analgica
Entrada/Sada
VDD
Sada
VDD
(0:7)
PTD (2:7)
Acumulador (A): um registrador de 8 bits de propsito geral usado nas operaes lgicas e
aritmticas
Index Register (H:X): um registrador de 16 bits utilizado como apontador no modo de
direcionamento indexado.
Program counter (PC): um registrador de 16 bits que contem o endereo da prxima instruo.
Apontador de Pilha (SP): um registrado de 16 bits que contem o endereo de posio disponvel
na pilha.
Conditon coder ou registrador de flags (CCR): um registrador de 8 bits que contm o bit de
mascaramento das interrupes e outras 5 flags de estado, as quais indicam certas condies
originadas por instrues previamente executadas (por exemplo uma operao executada resulta um
valor negativo, ento ser setado um bit deste registrador para indicar o resultado negativo).
V. MAPA DE MEMRIA
Na Fig 4 mostrado o mapa de memria completo do JK3, o qual composto por:
64 bytes de Registradores I/O endereado de $0000 a $003F (ver item VI).
128 bytes de memria RAM endereado de $0080 a $00FF.
4096 byte de memria FLASH para o JK3 endereado de $EC00 a $FBFF ou 1536 bytes para o
JK1 (ver item VII).
Registradores I/O adicionais (ver item VIII).
960 bytes do Monitor ROM endereado de $FC00 a $FDFF e $FE10 a FFCF (ver item IX).
48 bytes para uso dos vetores de interrupo (ver item X).
8
No mapa de memria se encontram os endereos dos registradores internos, a posio que
ocupam na RAM e a parte designada ao programa do usurio. De igual maneira, se observa uma
zona na qual se concentram armazenado o programa de fabrica (Monitor ROM) pelo qual
permitido fazer simulaes, debug e programaes no microcontrolador. Na regio mais alta da
memria se encontram os vetores de interrupo.
VI. REGISTRADORES I/O DE CONTROLE, STATUS E DADOS.
Estes registradores controlam as diversas funes a serem executadas pelo microcontrolador.
Estes registradores so usados para configuraes de funes, para controlar o estado de alguma
operao executada ou mesmo para o armazenamento temporrio de um valor gerado por alguma
instruo.
Estes registradores como pode ser visto nas Fig 5, Fig 6, Fig 7, Fig 8 e Fig 9, se encontram no
endereo de memria de $0000 a $003F, com exceo de alguns Registradores I/O adicionais. que
sero tratados posteriormente.
10
11
12
13
14
VII. MEMRIA FLASH
A memria flash parte da memria do microcontrolador onde feita a gravao do programa
pelo usurio, ela pode ser lida, programada e apagada.
A memria flash consiste de um conjunto de 4096 bytes (JK3) ou 1536 bytes (JK1), juntamente
com 48 bytes adicionais de uso dos vetores de interrupo (ver item X). Operaes de programao
ou apagamento da flash so controladas pelo Registrador de Controle da Flash (FLCR).
Este registrador determina a faixa da memria que ser protegida, conforme exemplos dados na
Tab 4.
Tab 4. Faixas de proteo da FLASH
15
VIII. REGISTRADORES I/O ADICIONAIS.
A maioria dos registradores I/O localizam-se no endereo de memria de $0000 at $003F
(vistos na seo VI). Registradores adicionais tem o seguinte endereamento.
16
______
depende de nveis lgicos dos seguintes pinos: IRQ1 , RST , PTB0, PTB1 e PTB3.
17
Existem duas possibilidades de entrada no modo monitor: High Volt e Blank Vector.
_______
Higt Volt: Se fornecido para o pino IRQ1 uma alta tenso (1,5 x VDD) durante um reset, fora o
microcontrolador a entrar no modo monitor, similarmente a maioria das CPUs da Motorola. Com
este mtodo a entrada de clock (OSC1) devera ser 4,9152 MHz ou 9.8304 MHz, conforme Tab 5.
Outra condio importante para estabelecer comunicao atravs deste mtodo serem respeitadas
as condies lgicas necessrias aos pinos PTB0, PTB1 e PTB3 (ver Tab 5).
Blank Vector: Este mtodo de comunicao s poder ser estabelecido se o Reset Vector esteja
limpo ou seja quando a memria Flash da CPU estiver totalmente limpa. O Reset Vector somente
poder ser limpo atravs de uma operao de apagamento total da memria. Este mtodo no
_______
necessita de alta tenso em IRQ1 e nem de nveis de tenso pr determinados em PTB0, PTB1 e
PTB3. A freqncia de clock neste modo devera ser de 9,8304 MHz, conforme Tab 5.
Como em destaque na Fig 12 o quadro indica chaves ou jumpers colocados na placa de
implementao as quais possibilitaro fornecer os nveis certos de tenso nos pinos, necessrios a
entrada no modo monitor, para programao do microcontrolador.
Obs: Uma alternativa para entrar no Modo Monitor, atravs do Blank Vector, com a memria
flash programada, seria a gravao juntamente com o programa do usurio de uma rotina que a cada
reset teste certos nveis de tenso em determinados pinos e caso todas condies fosse satisfeitas o
programa executaria um apagamento total da memria (Mass_Erase), possibilitando assim ter-se
ento o Reset Vector branco. A nica desvantagem deste mtodo seria o apagamento total da
memria.
Tab 5. Condies de entrada no modo monitor
18
A definio do Baud Rate que o microcomputador ira usar para estabelecer a comunicao
com a CPU dependente diretamente do nvel de tenso em PTB3, no modo High Volt, conforme
Tab 5.
X. VETORES DE INTERRUPO
Os vetores de interrupo ocupam 48 bytes na memria e atravs destes que a CPU define
qual a ao a ser tomada aps a ocorrncia de uma interrupo causada pelas diversas fontes
descritas na Tab 6, levando-se em conta a sua prioridade.
Tab 6. Vetores de interrupo
Estas fontes de interrupo possuem os seus prprios registradores, os quais identificam a sua
presena, so eles:
19
Neste caso os pinos OSC1 e OSC2 do microcontrolador so usados. Os valores dos capacitores
e resistores podem ser obtidos em [1]. Valores tpicos para um cristal de 9.8304 MHz so: C1 e C2
de 20pF, RB de 10 M e RS podendo ser suprimido.
Neste caso somente o pino OSC1 utilizado, podendo ento OSC2 ser usado como pino de uso
geral (PTA6).
20
XII. PORTAS I/O
Quinze entradas ou sadas bidirecionais formam as trs portas paralelas componentes do
microcontrolador. Todas os pinos I/O so programados como entradas ou sadas. Apenas deve-se
levar em conta que a porta A, no esta disponvel nos microcontroladores JK3 e JK1 (20 pinos) e
apenas se encontra no JL3 (40 pinos), microcontrolador da mesma famlia.
XIII. PORTA A
A porta A uma porta de 7-bits de funo especial, pois ela que permite todos os seus sete
pinos serem divididos com o mdulo de interrupo por teclado (KBI). Cada pino da porta A
configurado por software e poder estar em coletor aberto caso esteja definido como entrada. PTB0
a PTB5 possuem capacidade de comandar diretamente um LED (diodo emissor de luz).
O registrador de dados da porta a (PTA) contm um latch para cada um dos sete pinos da porta
o qual armazenara os nveis lgicos em seus respectivos pinos caso seja definido como entrada ou
conter os dados escritos na porta caso de sada.
A porta A tambm poder ser habilitada para funcionar como pino de entrada de interrupo
externa para teclado, atravs do registrador especifico para esta funo (KBAIER).
Outra funo especial da porta ter os pinos configurados como entrada em coletor aberto,
atravs do registrador PTAPUE. Cada um dos pinos configurado individualmente e requer que
sejam definidos como entrada para trabalhar neste modo.
21
PTA6EN Configura a funo do pino OSC2, pino o qual pode ser definido como I/O se for
utilizado oscilador RC.
1 = Pino OSC2 configurado como I/O (PTA6)
0 = Pino OSC2 configurado como sada de clock do oscilador
PTAPUE[6:0] Pinos de habilitao da entrada em coletor aberto
1 = Pinos da porta A configurados para possurem entrada em coletor aberto
0 = Entrada em coletor aberto desabilitada
A porta A tambm possui um registrador (DDRA) que configura a direo dos dados (entrada
ou sada).
22
latch de sada desabilitada, ao mesmo tempo que a latch de entrada habilitada permitindo ento a
leitura de dados externos aplicados nos pinos do microcontrolador.
XIV. PORTA B
A porta B uma porta de 8-bits de funo especial, pois ela que permite todos os seus oito
pinos sejam divididos com o Conversor Analgico/Digital. Cada pino da porta b configurado por
software e poder ser uma entrada analgica de dados do conversor A/D.
O registrador de dados da porta B (PTB) contm um latch para cada um dos oito pinos da porta
o qual armazenara os nveis lgicos em seus respectivos pinos caso seja definido como entrada ou
conter os dados escritos na porta caso de sada.
A porta B tambm poder ser habilitada para funcionar como entrada analgica do Conversor
Analgico/Digital (ADC), atravs de registrador especifico.
A porta B tambm possui um registrador (DDRB) que configura a direo dos dados (entrada
23
ou sada).
XV. PORTA D
A porta D uma porta de 8-bits de funo especial, pois ela que permite que dois pinos sejam
divididos com o Modulo de Timer, quatro pinos com o Conversor Analgico/Digital (ADC). Os
pinos PTD6 e PTD7 possuem alta capacidade de corrente (25 mA) e podero ser programados
24
como entrada em coletor aberto. PTD2, PTD3, PTD6 e PTD7 possuem capacidade de comandar
diretamente um LED (diodo emissor de luz).
O registrador de dados da porta D (PTD) contm um latch para cada um dos oito pinos da porta
o qual armazenara os nveis lgicos em seus respectivos pinos caso seja definido como entrada ou
conter os dados escritos na porta caso de sada.
A pinos da porta D, PTD0, PTD1, PTD2, PTD3, podero ser habilitados para funcionar como
entrada analgica do mdulo de converso ADC, atravs de registrador especifico. Os pinos PTD4
e PTD5 podem ser usados pelo mdulo de Timer para gerao de sinal PWM, Modulo de Sada
comparada ou Modulo de captura de entrada, dependendo de registradores especficos.
Outra funo especial da porta D ter os pinos PTD6 e PTD7 configurados como entrada em
coletor aberto ou sada com alta capacidade de corrente, atravs do registrador PDCR.
25
SLOWD Habilita os pinos PTD6 e PTD7 a operar com alta capacidade de corrente (25 mA)
1 = Pinos PTD6 e PTD7 configurado como sadas de alta corrente (dreno aberto).
0 = Pinos PTD6 e PTD7 com sada de alta corrente desabilitada
PTDPU Pinos de habilitao da entrada em coletor aberto
1 = Pinos PTD6 e PTD7 da porta D configurados para possurem entrada em coletor aberto
0 = Entrada em coletor aberto desabilitada
A porta D tambm possui um registrador (DDRD) que configura a direo dos dados (entrada
ou sada).
26
mov
#$ff,ddrd
mov
#$00,ddra
mov
#$10,ddrb
Deve-se notar nos exemplos que o nmero escrito nos registradores se encontram na notao
hexadecimal. Para uma melhor visualizao do efeito do ato de escrita nestes registradores, deve-se
converter este numero em binrio, onde ento ser visualizado o estado de cada um dos pinos em
separado. Como visto no exemplo, a ao de escrita em um dos registradores DDRx, definira a
direo de dados da porta pino a pino separadamente. Na Fig 29 ilustrado o exemplo onde o
nmero $10 foi escrito em ddrb.
27
Quando pretendido o uso das portas, pode-se proceder de maneira semelhante a anterior,
escrevendo nos registradores PTx os dados os quais representaro o nvel lgico da porta, caso
esta esteja configurada como sada.
mov
#$ff,ptd
mov
#$00,pta
mov
#$10,ptb
baixos
Se os pinos da porta esto configurados como entrado o registrador PTx conter o valor dos
nveis lgicos existentes no momento da leitura. A mostra um exemplo em que alguns nveis
lgicos esto aplicados na porta B.
Nveis na porta B
10101010
28
Os conversores A/D internos no JK3 podem ter suas entradas analgicas configurveis atravs
de registrador especfico (ADSCR), podem as mesmas fazer o uso de pinos da porta B (PTB0 a
PTB7) ou porta D (PTD0 a PTD3). A Fig 31 mostra o diagrama de blocos do conversor A/D.
A configurao dos pinos das portas como entrada analgicas dos conversores, foram com que
os mesmos sejam usados como entradas ficando independentes dos registradores DDRx das portas
(ver item XII). O restante dos canais do ADC/pinos das portas podem ser usados normalmente
como pinos I/O de uso geral.
XVIII. FAIXAS DE CONVERSO
As referencias tomadas pelo conversor A/D para executar a converso so VDD (valor mximo)
e VSS (valor mnimo). Quando a tenso de entrada do conversor A/D (entrada analgica) for igual a
VDD (ver Tab 3), o valor convertido ser $FF (full scale) ao passo que se o valor de entrada igual a
VSS (ver Tab 3), o valor convertido ser $00. Somente valores entre VDD e VSS resultaro em
29
converses corretas, tenses maiores que VDD, resultaro em $FF e menores que VSS em $00.
XIX. CONVERSO CONTINUA
No modo de converso continua, o ADC converte continuamente o valor no canal selecionado,
escrevendo um novo dado no registrador de dados do conversor a cada converso. O resultado da
converso anterior ser sobrescrito se lido ou no o seu valor. Este modo de converso continuara
at que seja limpo o bit ADCO do registrador ADSCR.
XX. REGISTRADORES I/O
Estes registradores monitoram e controlam a operao do ADC.
ADSCR Registrador de estado e controle do ADC
ADR Registrador de dados do ADC
ADICLK - Registrado do Clock
XXI. REGISTRADOR DE ESTADO E CONTROLE DO ADC
A seguir sero descritas as funes do registrador de estado e controle do ADC (ADSCR), que
mostrado na Fig 32.
COCO Bit de converso completada (somente se interrupo do A/D desabilitada (AIEN = 0))
1 = Converso A/D completada.
0 = converso A/D no completada.
AIEN Bit de habilitao de interrupo (gera uma interrupo se quando uma converso A/D
completada)
1 = Interrupo do ADC habilitada.
0 = Interrupo do ADC desabilitada.
ADCO Bit de habilitao de converso continua
30
1 = Converso continua.
0 = Apenas uma converso.
ADCH [4:0] Bits de seleo de canal do ADC, conforme Tab 7.
Tab 7. Seleo do Canal do ADC
Obs: A converso A/D iniciada automaticamente aps a primeira subida do clock depois de
uma escrita no ADSCR.
XXII. REGISTRADOR DE DADOS DO ADC
No registrador de dados do ADC (ADR), armazenado o resultado de uma converso A/D. Este
registrador atualizado a cada nova converso completada.
31
XXIII. REGISTRADO DO CLOCK DO ADC
Conforme Tab 8, selecionada a freqncia de clock da converso A/D, tomando como base o
valor de clock interno do microcontrolador.
Tab 8. Seleo do Canal do ADC
mov
#$06,adscr
32
Obs: para maiores detalhes sobre a configurao deste registrador deve-se consultar o item
Registrador de estado e controle do ADC. Note que o bit 7 deste registrador somente leitura, ele
indica se a converso j esta completa.
Quando uma converso esta completa, os dados convertidos so guardados no Registrador de
dados do ADC (ADR) na Fig 33. Vale a pena lembrar que a converso A/D iniciada
automaticamente aps a primeira subida do clock depois de uma escrita em ADSCR.
33
O principal componente de temporizao do microcontrolador o registrador TCNT, de 16 bits.
O contedo de TCNT incrementado continuamente a cada ciclo de clock a partir de $0000, no
RESET, at $FFFF. Aps $FFFF o registrador reinicia em $0000. Os pinos usados pelo mdulo de
timer so visto na Tab 9.
Tab 9. Pinos do TIM
34
bits. Quando o valor armazenado no registrador de comparao alcanado pelo TCNT, uma sada
gerada ativando o flag de status correspondente ao registrador e iniciando as aes automticas
definidas para aquele pino. Um dos usos mais simples da comparao de sada a produo de
pulsos com durao especfica. A comparao de sada configurada para automaticamente impor
um nvel alto ou baixo no pino associado, dependendo da polaridade do pulso que est sendo
gerado. Aps esta operao a comparao de sada reprogramada para restaurar o nvel inativo do
pino na prxima comparao.
XXVIII. MODULO DE GERAO DE PWM
Com a funo PWM, o TIM pode gerar uma onda quadrado modulada por largura de pulso,
conforme visto na Fig 36.
No modulo de PWM, possvel gerar um sinal com forma de onda quadrada onde so
configurveis o perodo (freqncia) e largura de pulso (tempo dentro do valor de um perodo em
que a sada ficara setada e o restante de tempo resetada ou vice-versa). O perodo ou freqncia do
sinal PWM dado atravs do overflow do timer ou seja o contador chegar ao final da contagem,
valor este configurvel nos registradores TMODL e TMODH. O tempo entre o overflow do timer e
uma sada comparada (visto em XXVII) o tamanho da largura do pulso, valor este configurvel
nos registradores TCHxH e TCHxL.
Obs: Para um correto funcionamento do modulo de gerao de PWM, nunca se deve configurar
os registradores que informam o tamanho do pulso (TCHxH e TCHxL), com valor maior do que o
registrador do perodo do PWM (TMODL e TMODH).
35
XXIX. REGISTRADORES I/O
Os seguintes registradores I/O controlam e monitoram a operao doTIM.
TSC - Registrador de estado e controle do TIM
TCNTH e TCNTL Registrador do contador do TIM (16 bits)
TMODH e TMODL Registrador do modulo do contador do TIM (16 bits)
TSC0 e TSC1 Registrador de estado e controle dos canais do TIM
TCH0H, TCH0L, TCH1H e TCH1L RegistradoR dos canais do TIM (16 bits)
XXX. REGISTRADOR DE ESTADO E CONTROLE DO TIM
O registrador de estado e controle do TIM visto na Fig 37.
TOF Bit de overflow do TIM, este bit setado quando o contador reseta, aps alcanar o valor
programado no registrador do modulo do contador do TIM (TMODL e TMODH).
1 = Contador alcanou o valor do modulo.
0 = Contador no alcanou o valor do modulo.
TOIE Bit de habilitao da interrupo de overflow do TIM
1 = Interrupo habilitada no overflow do contador.
0 = Interrupo no habilitada.
TSTOP Bit de stop do TIM
1 = Contador parado.
0 = Contador ativo.
TRST Bit de reset do TIM
1 = Prescaler e contador limpos.
0 = Sem efeito.
36
PS[2:0] Bits de seleo do Prescaler do TIM
Tab 10. Seleo do prescaler do TIM
37
XXXII. REGISTRADOR DO MODULO DO CONTADOR DO TIM
Este registrador de 16 bits contm o valor alto (8 bits) e o valor baixo (8 bits) do registrador do
modulo do contador do TIM (TMODH e TMODL), este registrador armazena o valor do modulo
(numero de contagens ou ciclos de clock) que o contador ira executar antes do overflow.
Obs: Como regra deve-se primeiro escrever TMODH, para um correto funcionamento do
mdulo.
XXXIII. REGISTRADOR DE ESTADO E CONTROLE DOS CANAIS DO TIM
O registrador de estado e controle dos canais do TIM visto nas Fig 42 e Fig 43.
38
CH0F e CH1F Quando o canal 0 ou 1 do TIM usado como Modulo de captura de entrada, este
bit setado a cada mudana de estado no pino. Quando usado como Modulo de Sada comparada,
este bit setado no overflow do contador.
1 = Captura de entrada ou sada comparada no pino do canal 0 ou 1 do timer.
0 = No ocorreu captura de entrada ou sada comparada no pino do canal 0 ou 1 do timer.
CH0IE e CH1IE Bit de habilitao de interrupo do canal 0 ou 1 do TIM, interrupo gerada se
ocorrer uma Modulo de captura de entrada ou Modulo de Sada comparada.
1 = Interrupo habilitada.
0 = Interrupo no habilitada.
Obs: A habilitao das interrupes faz com que os bits CH0F e CH1F sejam limpos.
MS0B, MS0A, MS1A, ELS0B, ELS1B, ELS0A e ELS1AH0IE Bits de seleo de modo, tipo de
borda e nvel inicial do canal 0 e 1 do TIM, conforme Tab 11.
Tab 11. Bits de seleo de modo, tipo de borda e nvel inicial dos canais do TIM
39
TVO0 e TOV1E Bit de controle do comportamento do canal 0 ou 1 do TIM, quando ocorre
overflow do counter, se o canal configurado como sada comparada.
1 = Pino do canal 0 ou 1 do TIM, muda no overflow do timer.
0 = Pino do canal 0 ou 1 do TIM, no muda no overflow do timer.
Obs: Se canal configurado como captura de entrada este bit no ter efeito.
CH0MAX e CH1MAX Bit de seleo de mxima razo cclica do modulo de gerao de sinal
PWM. A sada de um sinal PWM, fica com razo cclica mxima at um ciclo aps o bit ser limpo.
1 = Razo cclica 100% ou 1.
0 = Razo cclica controlada pelo mdulo PWM (ver item XXVIII).
XXXIV. REGISTRADOR DOS CANAIS DO TIM
Este registrador de 16 bits contm o valor alto (8 bits) e o valor baixo (8 bits) do registrador dos
canais do TIM. Quando usado como Modulo de captura de entrada de entrada este registrador
armazenara o valor de cada captura. Se usado como Modulo de Sada comparada ele armazenara o
valor, o qual ser a referencia para ser executada uma comparao.
40
mov #$f0,TSC
f0 hex = 11110 000 bin
Prescaler 0 (Tab 10)
Reset do Tim (sem efeito)
Contador do TIM parado
Interrupo no overflow do Contador habilitado
Deve-se notar que o bit 7 deste registrador somente leitura, ele indica que o contador alcanou
o valor do mdulo ou seja ocorreu um overflow do timer. Primeiramente para a configurao do
registrador o timer deve estar parado como demonstra o exemplo acima.
Com o Registrador de estado e controle do TIM (TSC) configurado deve-se partir para a
configurao do Registrador do modulo do contador do TIM (TMODH e TMODL), que nada mais
do que um registrador de 16 bits que armazena o valor do modulo (numero de contagens ou ciclos
de clock) que o contador ira executar antes do overflow.
41
mov #$05,TMODH
mov #$ff,TMODL
No exemplo seriam necessrios que o contador contasse 5 vezes at ff para ocorrer um overflow
no timer. Em outras palavras o valor armazenado no bit alto seria quantas vezes o bit baixo teria que
contar o valor nele armazenado, para ento o timer ter um overflow.
Configurado o Registrador do modulo do contador do TIM o qual define o perodo do PWM,
deve-se ento configurar a razo cclica que o tempo em que a sada ficara com nvel 1 e o
restante do tempo 0. O registrador que define a razo o RegistradoR dos canais do TIM (TCH0H e
TCH0L). Este registrador define com qual valor de cada contagem ser executada uma comparao
e ento mudado o estado lgico do PWM gerado.
mov #$00,TCH0H
mov #$05,TCH0L
Obs: este registrador deve ter um valor menor que o anterior que define o perodo do PWM.
Neste exemplo a razo cclica definida para o PWM ser de apenas 5 ciclos de clock.
Outro registrador a ser configurado o Registrador de estado e controle dos canais do TIM
(TSC0).
mov #$1a,TSC0
1a hex = 00 0110 10 bin
Razo cclica 100% ou 1 (desabilitada)
PWM muda no overflow do timer (troca de estado)
A sada do canal do TIM PWM e na comparao
a sada colocada em nvel baixo (Tab 11)
Desabilitada a interrupo do TIM (no usada com
o mdulo PWM)
bclr 5,tsc
42
XXXVI. CONJUNTO DE INSTRUES DO MICROCONTROLADOR
As Fig 48, Fig 49, Fig 50, Fig 51, Fig 52, Fig 53, Fig 54, Fig 55, mostram o conjunto de
instrues, as quais so usadas na programao do microcontrolador.
43
44
45
46
47
48
49
ramstart
ds
50
tam1
ds
cont_1
ds
cont_2
ds
cont_3
ds
1
1
1
1
;PROGRAMA
org
romstart
cont_1
cont_2
cont_3
mov
mov
mov
mov
#$00,tam
#$10,ddrb
#$ff,ddrd
#$ff,ddra
adcini
; Rotinas de Inicializao do Conversor ADC
mov
#$06,adscr
esperaconv
adscr
#$80
#$80
esperaconv
;compare com 80
;se bit 7 (adscr) 0, volta para esperaconv
;a rotina faz um AND lgico entre o registrador ADSCR e o nmero $80 hex o que
;mostra que somente o valor do bit 7 deste registrador no ter seu valor
zerado. Como j foi o bit 7 deste registrador o qual avisa se a converso AD
;j esta completa. Ao passo de que se comparada com $80 o resultado desta
;operao indicara se a converso foi ou no completada caso no completada a
;rotina volta para o inicio e executa um novo teste
comparao
;Comparao o valor convertido e desvia a rotina pra uma funo especifica
;dependendo do valor da converso, na verdade so 15 faixas de valores que
;indicam 15 valores de razo cclica e freqncia do mdulo de PWM
lda
cmp
bls
cmp
bls
cmp
bls
adr
#$0f
luz15
#$1e
luz14
#$2d
luz13
51
luz15
luz14
luz13
luz12
luz11
luz10
luz9
luz8
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
cmp
bls
#$3c
luz12
#$4b
luz11
#$5a
luz10
#$69
luz9
#$78
luz8
#$87
luz7
#$96
luz6
#$a5
luz5
#$b4
luz4
#$c3
luz3
#$d2
luz2
#$ff
luz1
mov
mov
jmp
#$34,tam
#$1A,tam1
pwm1
mov
mov
jmp
#$30,tam
#$18,tam1
pwm1
mov
mov
jmp
#$2C,tam
#$16,tam1
pwm1
mov
mov
jmp
#$2C,tam
#$16,tam1
pwm1
mov
mov
jmp
#$28,tam
#$14,tam1
pwm1
mov
mov
jmp
#$24,tam
#$12,tam1
pwm1
mov
mov
jmp
#$22,tam
#$11,tam1
pwm1
mov
mov
jmp
#$1E,tam
#$0F,tam1
pwm1
52
luz7
luz6
luz5
luz4
luz3
luz2
luz1
mov
mov
jmp
#$1C,tam
#$0E,tam1
pwm1
mov
mov
jmp
#$18,tam
#$0C,tam1
pwm1
mov
mov
jmp
#$16,tam
#$0B,tam1
pwm1
mov
mov
jmp
#$12,tam
#$09,tam1
pwm1
mov
mov
jmp
#$10,tam
#$08,tam1
pwm1
mov
mov
jmp
#$0E,tam
#$07,tam1
pwm1
mov
mov
jmp
#$0A,tam
#$05,tam1
pwm1
pwm1
;PWM Inicializao e configurao (configurao j detalhada no item XXXV)
sta
copctl
;clear whatchdog
mov
#$f0,TSC
mov
#$00,TCH0H
mov
tam1,TCH0L
mov
#$00,TMODH
mov
tam,TMODL
mov
#$1a,tsc0
bclr
cli
5,tsc
53
tempo
;Rotina de tempo infinita, apenas sai por interrupo
bra
bra
tempo
tempo
cont1
;a cada overflow que ocorrer no timer acionada esta subrotina
;caso esta subrotina chegue no final da contagem o programa retorna para o
;inicio
;Vetor de Interrupo por Overflow de Timer canal 0
;Cada interrupo incrementa 1 no cont_x
;como mostrado anteriormente existe uma rotina de loop infinto, a qual somente
;interrompida caso ocorra um overflow no timer que esta configurado para a
;gerao de uma interrupo neste caso, onde ento o processamento desviado
;para esta subrotina, a qual conta um determinado tempo
tempocont_1
tempocont_2
volta
sta
lda
adc
sta
bcs
bclr
rti
mov
lda
adc
sta
bcs
bclr
cli
bclr
rti
copctl
cont_1
#$1
cont_1
tempocont_2
7,tsc
;clear whatchdog
#$00,cont_1
cont_2
#$1
cont_2
volta
7,tsc
4,portb
4,portb
adcini
nothing
rti
org
VectorStart
nothing
nothing
nothing
nothing
nothing
;
;
;
;
;
54
dw
dw
dw
dw
dw
dw
dw
dw
dw
dw
dw
dw
nothing
nothing
nothing
nothing
nothing
cont1
nothing
nothing
nothing
nothing
nothing
romstart
;
;
;
;
;
;
;
;
;
;
;
;
;obs: esta ordem no pode ser trocada nem suprimida uma fonte de interrupo, mesmo algumas
;delas no sendo usadas importante que as mesmas estejam presentes nesta tabela.
CH1
CH2
CH3
TAREFA
Piscar todos
Obs: O programa no deve aceitar que a mesma tecla seja pressionada mais de uma vez a cada
ciclo de programa. Para a conexo dos LEDS ao microcontrolador, pode-se usar os 4 pinos da porta
55
D que tem capacidade de corrente para tal ou seno usar circuito integrado do tipo buffer,
optoacoplador ou latch.
ATIVIDADE 2 (programao, uso do conversor A/D, configurao e uso das portas):
. Programa que converta um valor de tenso varivel (0 a 5V) e apartir deste indicar o valor
convertido em binrio, em um display de 8 leds, atualizando o mesmo de tempo em tempo,
conforme exemplo na Tab 13.
Tab 13. pinagem do JK3
Display
00
55
FF
Obs: Como no microcontrolador JK3 e seus derivados de 20 pinos no possua mais de 4 pinos
com capacidade de corrente suficiente para conexo de LEDS, deve-se fazer uso de circuito
integrado do tipo buffer, optoacoplador ou latch para realizao desta atividade, respeitando os
limites de dreno de corrente dos respectivos pinos usados.
. Partindo da atividade anterior, mostrar os dados convertidos em dois displays de 7 segmentos
em hexadecimal, atualizando o mesmo de tempo em tempo. A Fig 56.a mostra o display de sete
segmentos e suas conexes e a Fig 56.b ilustra as conexes do display com o microcontrolador.
Notar que o barramento de dados dos dois displays o mesmo apenas lembrar de atualizar os dados
e habilitar um de cada vez.
56
(a)
(b)
Fig 56. (a) Display de 7 segmentos (b) Conexo do display com o microcontrolador
Caractere
57
ATIVIDADE 3 (programao, captura de entrada, configurao e uso das portas):
. Programa que leia uma chave (NA ou NF), e apartir da captura dos tempos de toque na chave
(mnimo 5 toques), ligar um led nos mesmos intervalos de tempo capturados.
ATIVIDADE 4 (programao, gerao de PWM, configurao e uso das portas):
. Programa que gere um sinal de PWM com freqncia e razo cclica variveis. O valor
destas duas grandezas depende de valores digitados em duas teclas do tipo + ou -, as freqncias so
entre 1 e 60 KHz (o passo poder ser varivel, mas de preferncia de 1 em 1 KHz) e razo cclica
para estes valores entre 0 e 1 (0 e 100%). Podero ser usadas mais que 2 chaves. Lembrando que o
valor da razo cclica dependente do valor da freqncia ento ao mudar o valor da freqncia
devera ser calculado um novo valor de razo cclica.
58
ANEXO
NICO
!!!
59
CARACTERSTICAS ELTRICAS DO
MICROCONTROLADOR
A Tab 15 mostra algumas caractersticas eltricas (mximas) do microcontrolador.
Tab 15. Caracteristicas eltricas
60
A Tab 16 mostra as especificaes eltricas do microcontrolador para uma tenso de
alimentao de 5V.
Tab 16. Caracteristicas eltricas
61
A Tab 17 mostra as especificaes eltricas do microcontrolador para uma tenso de
alimentao de 3V.
Tab 17. Caracteristicas eltricas