o universo hcs08qg8 - joinville.udesc.br · na primeira, há o estudo do microcontrolador e ......

254
1 333 O UNIVERSO HCS08QG8 Teoria, Linguagem Assembly, atividades de laboratório e projetos Ana T. Y. Watanabe

Upload: hanhi

Post on 21-Jun-2018

232 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

1333

O UNIVERSOHCS08QG8

Teoria, Linguagem Assembly, atividades delaboratório e projetos

Ana T. Y. Watanabe

Page 2: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

2

Introdução ao livro e à disciplina

A disciplina de Sistemas Digitais Microprocessados (SDM) tem o intuito de levar oacadêmico à exploração do universo dos microcontroladores e da programação em Assembly.Este livro vem auxiliar nessa missão.

Planejado cuidadosamente para dar um completo material de aprendizado àquelesque nunca viram a programação como forma de melhorar o mundo em que vivemos, esse livrotraz um modelo didático constituído de inúmeros exemplos e exercícios de aplicação da teoriadigital. Ele encaixa a linguagem de programação Assembly ao uso do microcontroladorHCS08QG8, capacitando o leitor com meios sintáticos e lógicos, para solucionar problemas reais.

Ao final do curso, o aluno deve ser capaz de, utilizando a linguagem Assembly,resolver problemas através dos recursos do microcontrolador HCS08QG8 tal como conversão A/D,problemas de temporização e PWM, interrupção, transmissão SCI, entre outros. Além de integrartais conhecimentos, para resolver situações mais complexas, exigidas no meio industrial e nodesenvolvimento de pesquisa e tecnologia.

Além disso, a disciplina investe em um projeto que visa o estudante se dar conta dosinúmeros problemas existentes ao seu redor e, com a autonomia que ele criará ao longo do curso,usar a teoria de microcontroladores para resolvê-los.

O livro vem em auxílio a uma disciplina que dependia de outros dois, um para darconta das instruções da linguagem Assembly, outro que explicava o funcionamento geral dosmicrocontroladores da família HCS08 e, além desses, o Data Sheet (na língua inglesa) doHCS08QG. O intuito é torná-lo a principal referência da disciplina, favorecendo a organização e oaprendizado dos estudantes, acostumando-os facilmente com as instruções Assembly e recursosde microcontroladores.

O livro está dividido em duas partes. Na primeira, há o estudo do microcontrolador eseus periféricos e da linguagem Assembly. Na segunda, estão reunidas atividades de laboratório,exemplos e exercícios de aplicação mais elaborados.

O desafio de elaborar esse material tão específico será recompensado a medida queiluminar os passos dos que cursarem essa disciplina, formar engenheiros eletricistas que sintam apoderosa ferramenta dos microcontroladores como um auxílio pleno em seus projetos.

Page 3: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

3

Créditos

Este livro nasceu de uma necessidade de atender os acadêmicos de SDM que nãodispunham de um material único para atender as exigências da disciplina em 2011. O AcadêmicoArthur Garcia Bartsch aceitou o desafio de escrevermos o livro baseado em livros de autores, data

sheets e experiências de forma a apresentar um livro para a disciplina de SDM que possua todasas especificações de hardware e software do microcontrolador utilizado em sala de aula de formadidática. Agradeço imensamente a dedicação e o empenho do acadêmico, sem o qual estematerial não seria realizado.

Agradeço também aos professores Antonio Heronaldo de Souza, Fabricio Noveletto eFabio de La Rocha, e acadêmicos que contribuíram com suas experiências e dedicação àdisciplina.

Page 4: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

4

SUMÁRIO

PARTE A – ESTUDO DO HCS08 E DA LINGUAGEM ASSEMBLY.......................................................8CAPÍTULO 1: NOÇÃO GERAL DOS MICROCONTROLADORES.........................................................91.1 MICROPROCESSADORES.............................................................................................................101.2 O QUE SÃO MICROCONTROLADORES?.......................................................................................101.3 DIFERENÇAS ENTRE MICROCOMPUTADORES E MICROCONTROLADORES.................................101.4 TIPOS DE ARQUITETURA DE MICROCONTROLADORES...............................................................111.5 RESUMO DO CAPÍTULO..............................................................................................................121.6 EXERCÍCIOS.................................................................................................................................13CAPÍTULO 2: HCS08QG8 – ARQUITETURA, PORTAS, FUNÇÕES...................................................142.1 EVOLUÇÃO DA FAMÍLIA HCS08...................................................................................................152.2 O QUE HÁ NO MC9S08QG8?......................................................................................................152.3 CARACTERÍSTICAS INTERNAS DA CPU........................................................................................162.3.1 Acumulador A..................................................................................................................172.3.2 Contador de Programa PC (Program Counter)...................................................................172.3.3 Registrador de Índice H:X.................................................................................................172.3.4 Apontador de Pilha SP (Stack-Pointer)..............................................................................172.3.5 Registrador de Sinalizadores CCR (Condition Code Register).............................................182.4 MAPA DE MEMÓRIA DO MC9S08QG8.......................................................................................202.5 PINAGEM, CONEXÕES E CARACTERÍSTICAS GERAIS DO MC9S08QG8........................................212.6 RESUMO DO CAPÍTULO..............................................................................................................232.7 EXERCÍCIOS.................................................................................................................................24CAPÍTULO 3: A LINGUAGEM DE PROGRAMAÇÃO ASSEMBLY.....................................................263.1 INTRODUÇÃO À LINGUAGEM ASSEMBLY...................................................................................273.2 MODOS DE ENDEREÇAMENTO...................................................................................................283.2.1 Endereçamento Implícito (INH).........................................................................................293.2.2 Endereçamento Imediato (IMM).......................................................................................293.2.3 Endereçamento Direto (DIR).............................................................................................303.2.4 Endereçamento Estendido (EXT).......................................................................................303.2.5 Endereçamento Relativo (REL)..........................................................................................313.2.6 Endereçamento Memória para Memória (DIR/DIR)..........................................................313.2.7 Endereçamento Indexado (IX)...........................................................................................313.3 INSTRUÇÕES EM ASSEMBLY.......................................................................................................313.3.1 Instruções de Movimentação de bits e Dados...................................................................323.3.1.1 Instruções de Movimentação de bits...................................................................................373.3.1.2 Outras Instruções de Movimentação de Dados...................................................................383.3.2 Instruções de Operações Lógicas e Aritméticas.................................................................393.3.3 Instruções de Operações de Teste e Desvio.......................................................................533.3.3.1 Instruções de Salto de Endereço Absoluto...........................................................................673.3.4 Instruções de Controle do Processador.............................................................................683.4 DIRETIVAS DO COMPILADOR ASSEMBLY....................................................................................713.5 SUB-ROTINAS..............................................................................................................................743.6 CÃO DE GUARDA - WATCHDOG OU COP....................................................................................743.7 REGISTRADORES DE OPÇÕES DO SISTEMA.................................................................................75

Page 5: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

5

3.7.1 Registrador SOPT1 …........................................................................................................753.7.1 Registrador SOPT2...........................................................................................................763.8 PROGRAMANDO EM ASSEMBLY................................................................................................763.9 EXEMPLOS..................................................................................................................................773.10 RESUMO DO CAPÍTULO............................................................................................................803.11 EXERCÍCIOS...............................................................................................................................81CAPÍTULO 4: ENTRADAS E SAÍDAS DIGITAIS...............................................................................834.1 PERIFÉRICOS DO MICROCONTROLADOR....................................................................................844.2 PORTAS DE ENTRADA E SAÍDA....................................................................................................844.3 CONFIGURAÇÃO DAS PORTAS DE ENTRADA E SAÍDA.................................................................854.3.1 Registradores PTAD e PTBD …...........................................................................................854.3.2 Registradores PTADD e PTBDD..........................................................................................864.3.3 Registradores PTAPE e PTBPE...........................................................................................864.3.4 Registradores PTASE e PTBSE …........................................................................................884.3.5 Registradores PTADS e PTBDS ….......................................................................................884.4 PROGRAMANDO PORTAS EM ASSEMBLY...................................................................................894.5 EXEMPLOS..................................................................................................................................894.6 RESUMO DO CAPÍTULO..............................................................................................................914.7 EXERCÍCIOS.................................................................................................................................92CAPÍTULO 5: CONVERSOR E COMPARADOR ANALÓGICO DIGITAL.............................................945.1 CONVERSOR ANALÓGICO-DIGITAL.............................................................................................955.2 ENTRADAS E SAÍDAS ANALÓGICAS.............................................................................................955.2.1 Registrador APCTL1..........................................................................................................965.3 CONFIGURAÇÃO DO CONVERSOR AD........................................................................................965.3.1 Registrador ADCCFG.........................................................................................................965.4 CONTROLE DO CONVERSOR AD.................................................................................................975.4.1 Registrador ADCSC1 …......................................................................................................985.4.2 Registrador ADCSC2..........................................................................................................995.5 SAÍDA DA CONVERSÃO ANALÓGICA E REFERÊNCIA DE COMPARAÇÃO...................................1005.5.1 Registradores ADCRH e ADCRL........................................................................................1005.5.2 Registradores ADCCVH e ADCCVL …................................................................................1015.6 COMPARADOR ANALÓGICO (ACMP)........................................................................................1025.6.1 Registrador ACMPSC...................................................................................................... 1035.7 EXEMPLOS............................................................................................................................... 1045.8 RESUMO DO CAPÍTULO........................................................................................................... 1075.9 EXERCÍCIOS............................................................................................................................. 108CAPÍTULO 6: INTERRUPÇÃO.................................................................................................... 1106.1 CONCEITO DE INTERRUPÇÃO.................................................................................................. 1116.2 CONDIÇÕES, ROTINAS DE TRATAMENTO E VETORES DE INTERRUPÇÃO................................ 1116.3 INTERRUPÇÃO EXTERNA (IRQ)................................................................................................. 1136.3.1 IRQSC ............................................................................................................................ 1146.4 INTERRUPÇÃO EM TEMPO REAL (RTI)..................................................................................... 1156.4.1 SRTISC........................................................................................................................... 1156.5 OUTROS TIPOS DE INTERRUPÇÃO........................................................................................... 1166.5.1 Interrupção por Software (SWI)..................................................................................... 1166.6 EXEMPLOS …............................................................................................................................ 1176.7 RESUMO DO CAPÍTULO........................................................................................................... 1186.8 EXERCÍCIOS.............................................................................................................................. 119

Page 6: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

6

CAPÍTULO 7: SISTEMAS DE RELÓGIO, TEMPORIZADORES E PWM........................................... 1217.1 SISTEMA DE RELÓGIO ............................................................................................................. 1227.2 SISTEMA ICS (INTERNAL CLOCK SOURCE)................................................................................ 1227.2.1 Distribuição dos Sinais de Clock..................................................................................... 1237.3 MODOS DE OPERAÇÃO DO ICS................................................................................................ 1257.4 REGISTRADORES DO MODO ICS.............................................................................................. 1267.4.1 Registrador ICS1 ............................................................................................................ 1267.4.2 Registrador ICS2............................................................................................................. 1277.4.3 Registrador ICSSC .......................................................................................................... 1287.4.4 Registrador ICSTRM ….................................................................................................... 1287.5 TEMPORIZADOR DE 8 BITS MÓDULO TIMER (MTIM).............................................................. 1297.5.1 Registrador MTIMSC...................................................................................................... 1297.5.2 Registrador MTIMCLK.................................................................................................... 1307.5.3 Registrador MTIMCNT................................................................................................... 1317.5.4 Registrador MTIMMOD.................................................................................................. 1317.6 TEMPORIZADOR DE 16 BITS (TPM).......................................................................................... 1327.6.1 Registrador TPMCNTH e TPMCNTL ................................................................................ 1337.6.2 Registrador TPMMODH e TPMMODL ............................................................................ 1337.6.3 Registradores TPMC0VH, TPMC0VL, TPMC1VH e TPMC1VL ........................................... 1337.6.4 Modo de captura do TPM.............................................................................................. 1347.6.5 Modo de Comparação.................................................................................................... 1347.6.6 Modo Modulação por Largura de Pulso (PWM).............................................................. 1357.6.7 Registrador TPMC0SC e TPMC1SC ….............................................................................. 1377.6.8 Registrador TPMSC........................................................................................................ 1387.7 EXEMPLOS............................................................................................................................... 1397.8 RESUMO DO CAPÍTULO........................................................................................................... 1457.9 EXERCÍCIOS.............................................................................................................................. 146CAPÍTULO 8: INTERFACE DE COMUNICAÇÃO SERIAL (SCI)....................................................... 1488.1 INTERFACE SERIAL ASSÍNCRONA............................................................................................. 1498.2 TRANSMISSOR SCI................................................................................................................... 1498.3 RECEPTOR SCI.......................................................................................................................... 1508.4 GERADOR DE BAUD RATE........................................................................................................ 1528.5 INTERRUPÇÕES DA SCI............................................................................................................. 1528.6 REGISTRADORES DA SCI........................................................................................................... 1528.6.1 SCID............................................................................................................................... 1538.6.2 SCIBDH e SCIBDL............................................................................................................ 1538.6.3 SCIC2 ............................................................................................................................ 1548.6.4 SCIS1............................................................................................................................. 1558.6.5 SCIC3............................................................................................................................. 1568.6.7 SCIS2............................................................................................................................. 1578.6.7 SCIC1............................................................................................................................. 1588.7 EXEMPLOS............................................................................................................................... 1598.8 RESUMO DO CAPÍTULO........................................................................................................... 1618.9 EXERCÍCIOS.............................................................................................................................. 162PARTE B – ATIVIDADES DE LABORATÓRIO, EXERCÍCIOS AVANÇADOS E PROJETOSDESENVOLVIDOS.................................................................................................................... 163CAPÍTULO 9: ATIVIDADES DE LABORATÓRIO........................................................................... 1649.1 EXPERIÊNCIA 01 – ENTRADAS E SAÍDAS DIGITAIS.................................................................... 165

Page 7: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

7

9.2 EXPERIÊNCIA 02 – CONVERSOR AD ........................................................................................ 1669.3 EXPERIÊNCIA 03 – INTERRUPÇÃO EXTERNA E INTERRUPÇÃO DE TEMPO REAL ..................... 1679.4 EXPERIÊNCIA 04 – PWM ......................................................................................................... 168CAPÍTULO 10: EXERCÍCIOS AVANÇADOS................................................................................. 16910.1 SISTEMA DE IRRIGAÇÃO........................................................................................................ 17010.2 CONTROLE DE UMA JANELA................................................................................................. 17110.3 ELEVADOR............................................................................................................................. 17210.4 FABRICA DE PEÇAS................................................................................................................ 17310.5 EMPILHADEIRA...................................................................................................................... 17410.6 COMUNICADOR HOSPITALAR............................................................................................... 17610.7 MÁQUINA DE LAVAR-ROUPAS.............................................................................................. 17710.8 MÁQUINA COMPUTADORIZADA........................................................................................... 179CAPÍTULO 11: PROJETOS …..................................................................................................... 18011.1 DOCUMENTAÇÃO DA PLACA DE PROJETO............................................................................ 18111.1.1 instalação do driver..................................................................................................... 18111.1.1.1 WINDOWS 7.................................................................................................................... 18111.1.2 Utilização do kit........................................................................................................... 18311.1.2.1 preparação do código..................................................................................................... 18311.1.2.2 Gravando o código no microcontrolador........................................................................ 18311.2 AUXILIO PARA O HARDWARE DO PROJETO........................................................................... 18511.3 FORMATAÇÃO DO PROJETO ESCRITO................................................................................... 18711.4 PROJETO EXEMPLO................................................................................................................ 188CAPÍTULO 12: BIBLIOTECAS EM C PARA PROJETOS ….............................................................. 20112.1 BIBLIOTECA PARA ENTRADAS E SAÍDAS DIGITAIS.................................................................. 20212.2 BIBLIOTECA PARA CONVERSOR AD........................................................................................ 20712.3 BIBLIOTECA PARA RTI............................................................................................................ 20812.4 BIBLIOTECA PARA LCD........................................................................................................... 209CAPÍTULO 13: MATERIAIS DE APOIO....................................................................................... 21913.1 RESUMO DAS INSTRUÇÕES.................................................................................................... 22013.2 TABELA DE VETORES.............................................................................................................. 23513.3 RESUMO DOS REGISTRADORES DO HCS08QG8..................................................................... 23613.3.1 Registradores do Sistema............................................................................................. 23613.3.2 Entradas Digitais.......................................................................................................... 23713.3.3 Entradas Analógicas, Conversor e Comparador AD....................................................... 23913.3.4 Interrupções................................................................................................................ 24313.3.5 Temporizador de 8 Bits – MTIM................................................................................... 24413.3.6 Temporizador de 16 Bits – TPM.................................................................................... 24513.3.7 Conexão Serial Assíncrona – SCI................................................................................... 248ÍNDICE DAS INSTRUÇÕES DO CAPÍTULO 3............................................................................... 252TABELA ASCII.......................................................................................................................... 253REFERÊNCIAS BIBLIOGRÁFICAS............................................................................................... 254a a

Page 8: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

8

PARTE A

ESTUDO DO HCS08 E DALINGUAGEM ASSEMBLY

Page 9: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

9

Capítulo 1: Noção Geral deMicrocontroladores

Você sabe o que é um microcontrolador? E um sistema embarcado? A diferença entreum microcontrolador e um microprocessador? Essas perguntas serão respondidas nesse capítulo,onde, além disso, você poderá estudar um pouco a respeito da arquitetura de construção dosmicrocontroladores.

1.1 Microprocessadores...........................................101.2 O que são microcontroladores?.........................101.3 Diferenças entre microcomputadores emicrocontroladores................................................. 10

1.4 Tipos de arquitetura de microcontroladores.....111.5 Resumo do Capítulo...........................................121.6 Exercícios............................................................134

”Que outros façam elogios a você, não a sua própria boca; outras pessoas, não os

seus próprios lábios.” Provérbios 27:2

Page 10: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

10

1.1 Microprocessadores

A evolução da microeletrônica levou o homem à criação de dispositivos cada vezmenores e mais repletos de funções. Funções essas que se tornaram programáveis, ou seja,capazes de entender códigos carregados de conjuntos de instruções. Os dispositivos que deciframesses códigos são denominados microprocessadores (MPU).

Um microprocessador incorpora num único circuito integrado (CI) as funções de umaUnidade Central de Processamento (UCP ou CPU). São dispositivos programáveis que recebemdados digitais, capazes de decodificar instruções, processá-las e fornecer resultados com saída,ativando registradores ou outros mecanismos. Além disso, pode se ler e escrever em memórias,realizar operações lógicas e aritméticas.

1.2 O que são microcontroladores?

Os microcontroladores são equipamentos que usam um microprocessador (MPU)para aplicações diversas na engenharia. Na realidade, microcontroladores (MCU) são circuitosdigitais programáveis compostos de um microprocessador, memórias e periféricos de entrada esaída, acoplados em um único chip.

Para executar corretamente as instruções fornecidas, esses equipamentos se utilizamde um Acumulador (A), de outro Acumulador, este indexado (H:X), um contador de instrução (PC)e o apontador de pilha de armazenamento (SP), além de inúmeros Registradores, capazes deconduzir o funcionamento do microcontrolador.

Os microcontroladores são usados para resolver problemas cujas aplicações são específicas. Além disso, visam aplicações de baixo consumo e servem para trabalhar com dadosanalógicos e de controle. Naturalmente, deve-se levar em conta alguns fatores, para escolha domicrocontrolador mais adequado a aplicação desejada, como, funcionalidade do conjunto deinstruções, modos de endereçamento, arquitetura, velocidade de execução, capacidadearitmética e lógica, disponibilidade de memória, consumo de energia, presença dos periféricosdesejados e, mesmo, o tamanho do dispositivo.

1.3 Diferenças entre microcomputadores e microcontroladores

Além de microcontroladores, existem outros sistemas que funcionam através do usode microprocessadores. Desses, os mais encontrados são os microcomputadores.

No microcomputador, a Unidade Central de Processamento (UCP), as memórias(voláteis e não voláteis) e interfaces de seus periféricos (como teclado e mouse) não estãopresentes num único chip.

Os microcomputadores realizam diversas funções ao mesmo tempo, muitas das quaisprovém da interação com usuários, como, editar textos, executar jogos, gerar interfaces gráficas,além de outras funções, que se diferenciam daquelas normalmente realizadas pormicrocontroladores.

Os microcontroladores podem ser usados para controlar os mais diversosequipamentos, desde controle de LEDs a motores elétricos, porque contam com equipamentosperiféricos capazes de gerar conversões Analógicos Digitais (A/D) e Modulação de Largura dePulso (PWM), por exemplo. Algo que microcomputadores, normalmente, não fazem.

Page 11: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

11

Sistemas Embutidos (Embarcados) são sistemas microprocessados no qual omicrocontrolador é completamente encapsulado ou dedicado ao dispositivo ou sistema que elecontrola. Um sistema embarcado realiza tarefas pré-definidas, que possui requisitos bemespecíficos. Desta forma, os microcontroladores se encaixam nesse conceito.

1.4 Tipos de arquitetura de microcontroladores

A arquitetura de um microcontrolador define elementos relevantes para o seufuncionamento. Conhecê-la, auxilia no correto uso das instruções, na escolha da linguagem deprogramação e no uso da memória, principalmente.

Através de estudos em Princeton, foi desenvolvida por John von Neumann, aarquitetura tradicional de microprocessadores que recebeu o seu nome. Ainda hoje é largamenteutilizada nos mais diversos equipamentos, especialmente entre microcontroladores de empresaspioneiras no mercado, como a Freescale. Os primeiros computadores se baseavam nessaarquitetura na sua constituição.

Esse modelo von Neumann é caracterizado por usar barramentos únicos paramemória e instruções, no contato entre a CPU e componentes externos a ela. Por isso, permite acriação de instruções que acessem diretamente a memória, além de flexibilidade na escrita eleitura de dados em Registradores e variáveis. Na arquitetura von Neumann, a escrita e a leiturasão realizadas pela posição de memória, e não pelo tipo desta, pois, há um único caminho damemória à CPU.

Assim, essa proposta obriga o processamento sequencial de dados, uma vez que háum único barramento, por vezes sendo mais lento se comparado à arquitetura Harvard. Essaoutra arquitetura é baseada na von Neumann, é uma “evolução” desse conceito de construção demicroprocessadores. Originou-se de um projeto liderado por Aiken, na universidade de Harvard.

Ela difere da Von Neumann porque implementa em separado os espaços paraprogramar e armazenar dados, gerando assim um paralelismo no processamento. Não é maissequencial como a von Neumann. Por isso, ela é mais rápida, e é capaz de executar dados empipeline, ou seja, permite a busca de uma ou mais instruções, além da próxima a ser executada. Asinstruções são colocadas em uma fila de memória dentro da CPU, na qual, esperam o momentode sua execução.

Com a evolução tecnológica, essas arquiteturas receberam diversas inclusões, mas aessência de suas proposições permanece inalterada. Essências essas que se definem em doismodelos básicos de conjunto de instruções. São eles Complex Instruction Set Computer (CISC) eReduced Instruction Set Computer (RISC).

O modelo CISC é carregado por um elevado número de instruções, mais de cem nasmáquinas atuais. Algumas dessas instruções possuem uma elevada complexidade. Mas mesmo assimples, necessitam de múltiplos ciclos de relógio para serem executadas.

Já a modelagem RISC possui um número bem restrito e específicos de instruções,muitas das quais podem ser combinadas para gerar as instruções mais complexas do modelo CISC.Além disso, cada instrução desse conjunto é executada em um único ciclo de relógio, condizendocom a proposta de alta velocidade de processamento desse modelo.

O conjunto CISC está associado à arquitetura von Neumann, enquanto a arquiteturaHarvard se liga ao modelo RISC.

Contudo, esses modelos estão cada vez mais similares, visto que o conjunto RISC jápossui um número de instruções equivalentes aos primeiros modelos CISC, mas, com o aumentoda tecnologia de semicondutores, já é possível ao modelo CISC executar mais de uma instruçãopor pulso de clock, alcançando velocidades semelhantes a equipamentos desenvolvidos em RISC.

Page 12: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

12

1.5 Resumo do Capítulo

• Microprocessadores são dispositivos programáveis capazes de decodificar instruções, eprocessá-las, ou seja, ativar Registradores ou outros mecanismos que executem essasinstruções. Além de ler e escrever informações em memórias, realiza operações lógicas ematemáticas entre diversas outras funções, tudo em um único chip.

• Microcontroladores são dispositivos programáveis que possuem um microprocessador,memórias e periféricos de entrada e saída, acoplados em um único chip. É um sistemaembutido, ou seja, o microcontrolador é completamente encapsulado ou dedicado aodispositivo que ele controla.

• Microcomputadores são dispositivos de uso pessoal ou profissional que também possuium microprocessador, mas normalmente não é utilizado para controlar equipamentos,mas, para realizar muitas aplicações simultâneas com o uso do microprocessador.

• Há dois tipos de arquitetura para microprocessadores de forma geral, a Von Neumann(sequencial) e a Harvard (em pipeline). Elas são associadas a sistemas CISC (conjuntocomplexo de instruções) e RISC (conjunto de instruções reduzido), respectivamente.

Page 13: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

13

1.6 Exercícios

1- Explique a diferença que existe entre os dispositivos microcontroladores, microcomputadores emicroprocessadores. Dê exemplos de aplicação de cada um deles.

2- Explique também a diferença entre as arquiteturas von Neumann e Harvard.

3- Considere a seguinte afirmação: “A arquitetura Harvard é melhor que a von Neumann por sermais rápida”. O argumento utilizado é válido?

4- Considere que seja necessário um equipamento que controle o estado da luminosidade em umauditório. Esse ambiente recebe palestras, apresentações artísticas (como dança e teatro) eshows, além de outros eventos, que necessitem de luminosidades específicas. Qual tipo desistema processador de informações é mais adequado a esse ambiente. Argumente.

Page 14: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

14

Capítulo 2: HCS08QG8 –Arquitetura, portas, funções

Como é a arquitetura interna do HCS08QG8? Quais elementos constituem sua CPU?Como está distribuída a memória do microcontrolador? Essas são algumas que ao longo dessecapítulo serão respondidas. Além disso, será vista a pinagem do chip e as conexões da placa do kit

de desenvolvimento DEMO9S08QG8.

2.1 Evolução da Família HCS08................................152.2 O que há no MC9S08QG8?................................152.3 Características internas da CPU.........................162.3.1 Acumulador A.................................................172.3.2 Contador de Programa PC (Program

Counter).................................................................. 172.3.3 Registrador de Índice H:X................................172.3.4 Apontador de Pilha SP (Stack-Pointer)............17

2.3.5 Registrador de Sinalizadores CCR (Condition

Code Register).................................................. ...... 182.4 Mapa de memória do MC9S08QG8...................202.5 Pinagem, conexões e características gerais doMC9S08QG8 ............................................................212.6 Resumo do Capítulo...........................................232.7 Exercícios ...........................................................24

”Comer mel demais não é bom, nem é honroso buscar a própria honra.”

Provérbios 25:27

Page 15: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

15

2.1 Evolução da Família HCS08

A família HCS08 é uma evolução do microcontrolador HC908Q. Entre os aspectos aconsiderar a respeito dessa evolução se encontram:

• Código objeto compatível com as famílias HC05 e HC08;

• Extensão da memória disponível;• Alta velocidade de relógio (clock). O HCS08QG8 possui clock de 8MHz.

• Cinco modos de operação, sendo três modos STOP, um WAIT e o modo RUN.

Diversos dispositivos utilizam em seu núcleo um microcontrolador HCS08, dada sualarga aplicabilidade, que dá suporte aos mais diversos periféricos e possui uma arquitetura quefacilita o acesso à memória e à rápida execução de instruções.

2.2 O que há no MC9S08QG8?

O microcontrolador HCS08QG8 é desenvolvido pela Motorola (Freescale), sendo umaevolução da família HC08, pertencendo a família QG, da serie HCS08. A codificação domicrocontrolador MC9S08QG08 possui o seguinte significado: MC = status no mercado: Fully

Quallified, 9 = Memória Flash, S08 = núcleo , QG = Família e 8 = 8kByte de memória.Esse sistema microcontrolado é baseado na arquitetura Von Neumann e possui um

conjunto de instruções CISC (Complex Instruction Set Computer), dando seguimento ao modelotradicional da Freescale.

O HCS08QG8 tem um barramento comum compartilhado entre memória e periféricos(barramento de dados), um barramento de endereços e um barramento de controle. Obarramento de endereços tem uma largura de 16 bits, permitindo endereçamento até 65536bytes. O barramento de dados possui uma largura de 8 bits.

Além disso, conta com uma estrutura interna repleta de dispositivos que distribuemsuas funções. Essa estrutura acopla no chip os seguintes módulos:• Unidade Central de Processamento (UCP): Responsável pela execução das instruções nos

programas;• Memória interna: O microcontrolador possui três tipos de memória, Flash (onde se armazena

o programa), ROM (que contém a BIOS de ativação interna) e RAM (usada para armazenarvalores e variáveis ao longo da execução do programa);

• Portas de Entrada e Saída (E/S ou I/O): A partir dessas estruturas, o microcontrolador pode serelacionar com o meio externo. Elas que fornecem os dados vindos do ambiente para seremprocessados pelo microcontrolador e retornam o valor obtido ao meio. Algumas portas podemser configuradas para receberem tanto sinais digitais quanto analógicos;

• Oscilador interno: Gera os pulsos de relógio (clock) do microcontrolador. Fundamental para oprocessamento das instruções;

• Temporizadores: O HCS08QG8 possui dois temporizadores (timers) independentes entre si.Um de 8 bits (MTIM) e outro de 16 bits (TPM), que podem ser programados a partir do relógio(oscilador interno) ou de uma fonte externa. O TPM é capaz de gerar sinal PWM. Além dostemporizadores, ainda a um sistema de interrupção de tempo real (RTI) independente;

• Conversores Analógico-Digital (A/D): Há um conversor de ADC que pode operar no modo 8bits ou 10 bits. São capazes de fazer a leitura de níveis de tensão e associá-los a valores digitais(binários). Os níveis de tensão são naturalmente sinais analógicos, que podem vir de umsensor;

• Cão de Guarda (Watchdog): Também chamado de COP (Computer Operating Properly ou

Page 16: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

16

Computador Operando Corretamente) pela Motorola (Freescale), usa um temporizador paraobservar a normalidade do comportamento da UCP. De forma que, caso o programa entre emciclo errado, e não retorne mais ao programa principal antes de um tempo pré-programado ,ele força um reinício (reset).

• Módulos de Espera e Parada: Possuem a função de deixar o programa em modos de Espera(Wait) ou em algum dos três modos de Parada (Stop1, Stop2 ou Stop3). Nesses modos, omicrocontrolador não é capaz de executar algumas funções para poupar energia.

• Registradores: Guardam valores de 8 bits, possibilitando, através deles, o funcionamentodesejado de cada função do microcontrolador.

• Módulo Low Voltage Detector (LVI): Este módulo possibilita gerar interrupção quando osníveis de tensão de alimentação ficam abaixo do pré-determinado.

• Unidade Lógica Aritmética (ULA): Dispositivo capaz de realizar operações matemáticas(somas, subtrações), comparativas (verificação de igualdade ou desigualdade) e lógicas(verdadeiro ou falso). Principal unidade depois da CPU.

• Ambiente de integração: Meio que integra as mais diversas unidades internas domicrocontrolador, através de seus barramentos.

2.3 Características internas da CPU

A CPU é a mais importante unidade interna do microcontrolador, pois é a responsávelpor processar os dados do programa e executá-lo.

O microcontrolador possui cinco registradores especiais dentro do ambiente da CPU,são eles o Acumulador A, o Contador de Programa PC (Program Counter), o registrador indexadoH:X, o apontador de pilha SP (Stack Pointer) e o registrador de sinalizadores CCR (Condition Code

Register).

Figura 2.1 – Diagrama de Blocos da CPU e sua Interação com a ULA e a RAM

Page 17: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

17

2.3.1 Acumulador A

Registrador de 8 bits. Armazena dados temporários para operações aritméticas emovimentação de dados e comparações. Como está conectado diretamente na saída da ULA, autilização do Acumulador aumenta a velocidade de execução dos cálculos, em comparação aosquando estes são feitos em uma posição da memória RAM, por exemplo.

O Acumulador possui instruções exclusivas, como LDA (Load Accumulator) e STA(Store Accumulator). Além disso, muitas outras instruções são usadas em referência a esteregistrador (Acumulador A) dada a praticidade de seu uso.

2.3.2 Contador de Programa PC (Program Counter)

Esse contador binário indica a posição do endereço da próxima instrução a serexecutada pelo programa. O PC varia sua contagem de acordo com o tamanho do espaço ocupadopor cada instrução e do local da memória por ela designado para a instrução seguinte. Graças aele o microcontrolador não se perde ao longo da execução do programa.

Ele não pode ser alterado diretamente pelo programador, assim, não existe nenhumainstrução de escrita nesse Registrador. Contudo, existem instruções de salto e de desvio, queindiretamente, alteram o valor contado pelo PC, criando a possibilidade do programa não serunicamente sequencial.

O Contador de Programa (PC) possui 16 bits, portanto existem 2 registradores de 8bits associados PCL e PCH (Program Counter Low e Program Counter High) permitindoendereçamento de até 64kBytes posições de memória. O registrador PCL armazena os valores baixos (menos significativos) e o registradorPCH os valores altos (mais significativos) de memória.

Quando ocorre reset, o PC é inicializado com o valor 0xFFFE. Esta posição e a seguintepossuem o vetor do reset, ou seja, o endereço da primeira instrução a ser executada pela CPU.

Assim, no momento em que o dispositivo microcontrolado começa suas atividades, o PC apontapara essa posição 0xFFFE e o valor contido neste endereço e do seguinte formam o endereço dainstrução a partir do qual o programa começará a ser executado.

2.3.3 Registrador de Índice H:X

Esse elemento da CPU é um registrador de 16 bits que na realidade são doisregistradores distintos (H e X) de 8 bits.

Assim, o Registrador X armazena os valores baixos (menos significativos) e oRegistrador H os valores altos (mais significativos).

Além disso, esse Registrador de índice indexado possui a função de ponteiro, ou seja,quando um valor é guardado nesse Registrador, é possível utilizar instruções em H:X que realizemmodificações ou leitura nesta posição de memória.

2.3.4 Apontador de Pilha SP (Stack-Pointer)

Esse elemento é um registrador de 16 bits capaz de armazenar endereços e valores namemória RAM e depois recuperá-los. Trata-se de um registrador chamado Stack Pointer (SP) queaponta para o topo da pilha. A pilha é uma estrutura de dados do tipo LIFO (Last In First Out) ouseja, o último dado colocado na pilha será o primeiro a ser retirado. É usado para guardar

Page 18: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

18

endereços de retorno de subrotinas, de interrupções e variáveis. A pilha cresce do endereço altoao baixo, ou seja, a cada dado a ser colocado, o SP é decrementado da posição de memória e acada retirada, o SP é incrementado (o início do SP é o endereço $FF, a medida que é acrescentadoalgum dado na pilha, o topo dela vai decrescendo sua posição na memória para $FE, $FD e assimsucessivamente). O SP sempre aponta para uma posição de memória disponível.

Esse mecanismo é muito importante para o correto funcionamento de sub-rotinas einterrupções que serão vistas mais adiante.

2.3.5 Registrador de Sinalizadores CCR (Condition Code Register)

Esse registrador de 8 bits possui valores que são utilizados pelas instruções paradirecionar a atividade do microcontrolador. Esses valores são chamados sinalizadores ou flags

(bandeiras). Servem para indicar o microcontrolador de uma determinada condição alcançadapelas instruções do programa. Cada sinalizador possui uma função específica. Será estudado cadaum individualmente, observe primeiro o diagrama de bits desse registrador:

Tabela do Registrador CCR BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 bits de Leitura e Escrita V 1 1 H I N Z C

Valores Inicializados pelo reset x 1 1 x 1 x x x

C – Sinalizador de transporte/empréstimo (carry/borrow):A letra C é abreviação de Carry (transporte).

Este flag tem um comportamento específico para alguns tipos de operaçõesrealizadas, indicando ao microcontrolador as consequências de tal operação.

* Operação de teste de bit: O flag C recebe o valor do bit testado pela instrução.* Operação de deslocamento ou rotação (D/R) de bits: O flag C se comporta como bit

extra nesse tipo de operação, ou seja, no caso D/R à esquerda, recebe o valor do bit7 e no caso deD/R a direita, recebe o valor do bit0.

* Operações aritméticas (soma/subtração): Para somas, o flag C é setado sempre queultrapassar 255, funcionado como transporte (carry). Já em subtrações, esse flag é setado se oresultado da operação for um número menor que zero, assim, o flag funciona como empréstimo(borrow).

Z – Sinalizador de Zero: A letra Z é abreviação de Zero (zero). Este bit do CCR indica se o valor resultante de uma operação (seja esta lógica,

aritmética ou de movimentação de dados) é zero (Z = 1). Caso o valor seja diferente de zero, oflag continua apagado (Z=0).

Através deste sinalizador, pode-se entender que as operações de comparação, entreoutras, quando executadas com zero, são mais rápidas do que quando usadas com qualquer outrovalor. Como já existe um indicador interno à CPU para o valor zero, não é preciso buscar namemória ou fazer operações aritméticas/lógicas extras para determinar se o resultado obtido naoperação é zero, mas esses processamentos a parte são necessários para qualquer outro valor.

Por isso mesmo, as operações de comparação, normalmente utilizam-se dos doissinalizadores anteriores para comparar valores. Elas fazem a subtração dos dois operandos aserem comparados, e verificam os flags C e Z. Caso o Z esteja aceso, os valores comparados sãoiguais. Caso os dois flags estejam apagados, significa que o primeiro valor é maior que o segundo,caso o flag C esteja aceso, o segundo valor é maior do que o primeiro.

Page 19: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

19

N – Sinalizador de negativoA letra N é abreviação Negative (negativo).Este indicador N normalmente só é utilizado para operações sinalizadas, contudo

algumas aplicações não-sinalizadas podem se utilizar dele tomando-se o devido cuidado deinterpretação.

Este flag é setado se o bit7 (ou seja, o bit mais significativo) do valor resultante em

uma operação estiver setado. Esse bit em operações sinalizadas é o bit de sinal, assim, esse flag

indica se valor resultante é negativo.

I – Sinalizador de Interrupção A letra I é a abreviação de Interruption (interrupção).

Este bit serve para mascarar interrupções, ou seja, evitar o ativamento indevido deinterrupções ao longo da execução do programa. É preciso utilizar-se de instruções específicaspara setá-lo (SEI) ou zerá-lo (CLI). Assim, quando este bit está setado, as interrupções estãodesabilitadas, independentemente da interrupção específica estar habilitada em seu próprioregistrador. Logo:

I Mascarar interrupções0 Interrupção habilitada1 Interrupção desabilitada

H – Indicador de Meio-transporteA letra H é a abreviação de Half-Carry (meio-transporte).O flag H indica a existência de transporte entre os bits 3 e 4, em operações de adição,

no Acumulador. Ele é comumente utilizado em operações envolvendo valores em código BCD(Binary Code Decimal ou, Código Decimal Binário).

V – Sinalizador de Estouro:A letra V vem de oVerflow (estouro).Caso haja um estouro em uma soma de operandos no formato de complemento de 2,

este flag será setado, indicando sua ocorrência. De forma a informar a CPU que a operaçãoexecutada obteve um resultado fora do intervalo [-128; +127].

Page 20: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

20

2.4 Mapa de memória do MC9S08QG8

Faixa deEndereço

Módulo damemória

0x0000:

0x005F

Registradores depágina direta

0x0060:

0x025F

RAM(512 bytes)

0x0260:

0x17FF

Vago(5 536 bytes)

0x1800:

0x184F

Registradores depágina alta

0x1850:

0xDFFF

Vago(51 120 bytes)

0xE000:

0xFFAF

FLASH (8 112 bytes)

0xFFB0:

0xFFBF

Registradores não-voláteis

0xFFC0:

0xFFFF

Área de Vetoresde Interrupção

A memória do microcontrolador está dividida em algumas categorias:1- Registradores de página direta (0x0000 à 0x005F): Endereços que contém registradores usadoscomumente ao longo do programa, que normalmente sofrem alterações no decorrer daexecução. Por isso, estão localizados em valores de endereços baixos, onde qualquer instrução emAssembly tem acesso.

2- Memória RAM (Ramdom Acess Memory - 0x0060 à 0x25F): Esse tipo de memória é utilizadopara alocar constantes e variáveis. Esta memória é volátil, ou seja, se não estiver energizado,perde as informações, que são alterados ao longo do programa. Ela é rápida e garante acessoaleatório às informações (ou seja, acesso não-sequencial, não é preciso percorrer todas asposições de memória para acessar determinado valor). Observe que a RAM dessemicrocontrolador está localizada a partir do endereço 0x0060, e o Apontador da Pilha estãolocalizados no endereço 0x00FF, para baixo. Assim, a pilha se utiliza da memória RAM em seusprocessos.

3- Registradores de página alta(0x1800 à 0x184F): São registradores que não tem seus valoresalterados tão frequentemente ao longo do programa, por isso estão alocados em endereços altos(0x1800). Normalmente, só são acessados nas configurações iniciais dos programas.

4- Memória FLASH (0xE000 à 0xFFAF): Nessa memória, é armazenado o programa embarcado nomicrocontrolador. Como este tipo de memória é não-volátil, os dados do programa não se

Page 21: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

21

perdem quando a fonte é desligada, assim é possível manter os dados do programa, mesmoquando este não está funcionando.

5- Registradores não-voláteis( 0xFFB0 à 0xFFBF): Contém informações necessárias para o corretofuncionamento do microcontrolador, seus dados não podem ser acessados tampouco alteradospelo programador.

6- Área de vetores de interrupção(0xFFC0 à 0xFFFF): Última região da memória, contém osendereços visitados quando surge determinado tipo de interrupção. Serão melhor estudadosposteriormente.

2.5 Pinagem, conexões e características gerais do MC9S08QG8

Muitos pinos do microcontrolador possuem pinos com funções multiplexadas (ou seja,

há várias funções na mesma porta, mas ele utiliza apenas uma por vez, conforme habilitado pelosoftware), conforme descritos na Figura 2.2.

Figura 2.2 – Conexões da Placa DEMO9S08QG8

Pino 1: Este pino está relacionado com a porta PTA5, reset externo do microcontrolador, clock

externo para o Temporizador TPM (TCLK) e pedido de Interrupção Externa (IRQ). Quandoprogramada para porta digital, é exclusivamente uma entrada (não pode ser programado comosaída) e na placa está conectado a um botão, para gerar interrupção externa.

Pino 2: Este pino contém o background do chip – Mode Select (MS), saída do comparadoranalógico, e a porta PTA4, que funciona exclusivamente como saída. Está conectadoexternamente ao Background da placa, ou seja, se estiver em nivel 0, a CPU entra em modo dedepuração, caso contrário, a CPU opera normalmente.

Page 22: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

22

Pino 3: Contém o VCC do chip, aqui deve ser conectada uma tensão de 3,3V.

Pino 4: É o pino de referência do circuito (terra), o pino VSS deve ser ligado a uma tensão de 0V.

Pino 5: Este pino é relativo à entrada de Cristal ou oscilador (EXTAL), ao barramento de clock

serial SCL da conexão serial I²C e à porta PTB7. Externamente, está conectado na placa do kit como LED2.

Pino 6: Este pino é análogo ao pino 5, pois possui a entrada de Cristal ou oscilador (XTAL), aobarramento de dados da conexão serial I²C (SDA) e à porta PTB6. Externamente, está conectadona placa do kit com o LED1.

Pino 7: Este pino está relacionado ao canal 1 de PWM (TPMCH1) e à porta PTB5, além disso,possui o seletor SS, da conexão serial SPI.

Pino 8: Está relacionado a porta PTB4 e a seletiva Master In, Slave Out (MISO) da conexão serialSPI.

Pino 9: Referente à porta PTB3 , à seletiva Master Out, Slave In (MOSI), da conexão serial SPI,além do canal 7 (ADP7) do conversor analógico e do dispositivo 7 da interrupção por teclado(KBI7).

Pino 10: Possui a entrada de clock da conexão serial SPI (SPSCK), além do canal 6 do conversoranalógico (ADP6), do dispositivo 6 da interrupção por teclado (KBI6). Referente à porta PTB2.

Pino 11: Este pino está relacionado a porta PTB1, está ligado, na placa, à Transmissão de dados,na conexão serial SCI (TXD). Também está relacionado ao canal 5 do conversor analógico (ADP5),ao dispositivo 5 de interrupção por teclado (KBI7).

Pino 12: Este pino está ligado, na placa, à Recepção de dados, na conexão serial SCI (RXD). Estárelacionado ao canal 4 do conversor analógico e o dispositivo 4 da interrupção por teclado (KBI4).

Pino 13: Contém a porta PTA3, o canal 3 do conversor analógico (ADP3), o dispositivo 3 dointerruptor de teclado (KBI3), e outro módulo SCL. Está conectado externamente no botão SW2da placa.

Pino 14: Este pino está relacionado à porta PTA2, ao canal 2 do conversor analógico (ADP2), odispositivo 2 do interruptor de teclado (KBI2), e outro módulo SDA. Está conectado externamenteno botão SW1 da placa.

Pino 15: Este pino está relacionado a porta PTA1, do canal 1 do conversor analógico (ADP1), dodispositivo 1 da interrupção de teclado (KBI1) e da entrada inversora do comparador analógico(ACMP-). Está ligado externamente ao Sensor de Luz RZ1 da placa.

Pino 16: Este pino está relacionado à porta PTA0, ao canal 0 de conversão analógica, aointerruptor de teclado 0 (KBI0), à entrada não-inversora do comparador analógico (ACMP+) e aocanal 0 do PWM (TPMCH0). Externamente, está vinculado ao potenciômetro (RV1) da placa.

Page 23: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

23

2.6 Resumo do Capítulo

O microcontrolador HCS08 é uma evolução compatível das famílias HC05 e HC08.Possui arquitetura interna Von Neumann, com um conjunto de instruções CISC. Portanto, possuitrês barramentos (dados, endereços e controle).

Possui como componentes internos principais:

• Unidade Central de Processamento (UCP ou CPU);

• Memória interna;

• Portas de Entrada e Saída (E/S ou I/O);

• Oscilador interno;

• Temporizadores;

• Conversores Analógico-Digital (A/D); • Cão de Guarda (Watchdog);

• Módulos de Espera (Wait) e Parada (STOP);

• Registradores;

• Módulo LVI;

• Unidade Lógica Aritmética (ULA);

• Ambiente de integração.Além disso, a CPU possui cinco Registradores Internos: o Acumulador A, o Contador de

Programa (PC), o Registrador de índice H:X, o Apontador de Pilha SP e o Registrador desinalizadores CCR.

O CCR possui seis sinalizadores ou flags, são eles:

• Indicador de Empréstimo (Carry) C;

• Indicador de Zero Z;

• Indicador de Negativo N;

• Indicador de máscara de Interrupção I;

• Indicador de meio-empréstimo (Half carry) H;

• Indicador de estouro (oVerflow) V.A memória possui seis espaços implementados (Registradores de página direta, RAM,

Registradores de página alta, FLASH, registradores não-voláteis e a área de vetores). Omicrocontrolador possui dezesseis pinos e a placa possui conexões com potenciômetro (pino 16),com sensor de luz (pino 15), com dois botões (pinos 13 e 14), com interruptor externo (pino 1),com background (pino 2), com dois LED's (pinos 5 e 6), com entrada serial SCI (pinos 11 e 12).

Observação Importante

Tome cuidado ao utilizar determinados recursos do microcontrolador. Especialmente em relação à tensão e corrente geradas pelos periféricos ligados aos pinos. Lembre-se que o nível lógico 1 equivale a 3,3 V. Além disso, cuide para que suas conexões estejam de acordo com aquilo que foi programado.

Page 24: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

24

2.7 Exercícios

1- Quais elementos constituem a arquitetura geral do microcontrolador?

2- Descreva cada Registrador da CPU do microcontrolador.

3- Considere um programa que em dado momento executa uma operação de comparação entreos números dados abaixo. Sabendo que a comparação é feita através da análise:

valor1 – valor2 em relação a (<, > ou =) 0Diga quais flags do CCR serão acesos nas seguintes comparações:OBS.: O valor após # indica número decimal, após #$ indica número hexadecimal.

a) valor1 = #8 e valor2 = #9b) valor1 = #9 e valor2 = #$09c) valor1 = #10 e valor2 = #$10d) valor1 = #255 e valor2 = #256e) valor1 = #-128 e valor2 = #-127f) valor1 = #-128 e valor2 = #127g) valor1 = #256 e valor2 = #256h) valor1 = #$FF e valor2 = #255i) valor1 = #$89 e valor2 = #135

4- Considere a leitura do CCR em determinado momento ao longo da execução do programa.Observando que essa leitura resulta no valor hexadecimal igual a #$6C, diga qual afirmação éverdadeira. Justifique as falsas.(a) A última operação executada resultou em um valor negativo.(b) Há possibilidade de a última operação ter sido: #$00FF + $#1000.(c) É possível que o programa seja interrompido a qualquer momento por qualquer interrupção.(d) É impossível que a última operação tenha sido de comparação.(e) Obrigatoriamente o primeiro algarismo seria 6, pois os bits 5 e 6 estão sempre em nível 1.

5- Escreva sobre os Registradores de página alta e de página baixa.

6- Assinale a alternativa falsa:(a) Não é possível alocar uma variável no endereço 0x180A.(b) O tamanho máximo para as instruções do programa (memória FLASH) é de 8kBytes. (c) Registradores de página direta são mais difíceis de serem acessados por causa de seuendereço baixo.(d) Aos vetores de interrupção é separada a última parte dos endereços de memória. (e) Cabem exatamente 4096 bits de memória RAM no microcontrolador HCS08QG8.

7- Por que existem espaços vagos na memória do microcontrolador.

8- Considerando que o SP inicia no endereço $FF, uma operação pede para depositar na pilha oseguinte endereço: 0xE00A. Em seguida, outra operação deseja depositar na pilha o valor doAcumulador A, que é 91. Na sequência, coloca-se na pilha o valor 17. Em seguida empilha-se oseguinte endereço 0xE01A. Diga qual a posição de memória apontada pela pilha depois dessasoperações e qual o valor da posição 0x00FE da memória RAM do microcontrolador.

Page 25: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

25

9- Considere que o microcontrolador necessitará operar com duas conversões analógicas, com umtransmissor e um receptor de SCI, com dois canais de PWM, duas entradas digitais e três saídasdigitais. Faça uma relação de possíveis escolhas para os pinos a fim de atender a esses requisitos.

10- Considerando os requisitos fornecidos abaixo de projeto para programa no kit MC9S08QG8,faça a relação de possíveis escolhas para os pinos do microcontrolador do kit, a fim de atender aesses requisitos. (Considere que só será possível obter níveis analógicos de tensão pelopotenciômetro, níveis de entradas digitais pelos botões, e as saídas pelos LED's):

a) Uma conversão analógica, um canal de PWM, seis botões de interrupção por teclado, duassaídas digitais.

b) Dois canais de PWM, dois botões de entradas de entrada.

c) Um botão para interrupção externa, um botão de interrupção por teclado, duas saídas e duasentradas digitais.

d) Um canal de interrupção externa, duas entradas digitais, um canal de PWM, dois LED's, umsensor de luz e um pino de recepção SCI.

Page 26: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

26

Capítulo 3: A linguagem deprogramação Assembly

Neste capítulo, serão abordados as Instruções Assembly do microcontroladorHCS08QG8. Além das Instruções, tópicos referentes aos modos de endereçamento, asdiretivas do programa, sub-rotinas, a relação da linguagem com os elementos da CPU, oscódigos de operação (opcodes), e iniciação à programação em Assembly, incluindo aconfiguração de registradores (SOPT1 e SOPT2).

Assim, é de grande importância ter bem em mente os conceitos aquiapresentados, pois serão fundamentais ao longo de todo o curso, que visa justamente aprogramação em Assembly.

3.1 Introdução à Linguagem Assembly.....................273.2 Modos de Endereçamento.................................283.2.1 Endereçamento Implícito (INH).......................293.2.2 Endereçamento Imediato (IMM)....................293.2.3 Endereçamento Direto (DIR)...........................303.2.4 Endereçamento Estendido (EXT).....................303.2.5 Endereçamento Relativo (REL)........................313.2.6 Endereçamento Memória para Memória(DIR/DIR)..................................................................313.2.7 Endereçamento Indexado (IX).........................313.3 Instruções em Assembly.....................................313.3.1 Instruções de Movimentação de bits eDados.......................................................................323.3.1.1 Instruções de Movimentação de bits..........373.3.1.2 Outras Instruções de Movimentação deDados.......................................................................38

3.3.2 Instruções de Operações Lógicas eAritméticas...............................................................393.3.3 Instruções de Operações de Teste e Desvio....533.3.3.1 Instruções de Salto de Endereço Absoluto...673.3.4 Instruções de Controle do Processador..........683.4 Diretivas do Compilador Assembly.....................713.5 Sub-Rotinas........................................................743.6 Cão de Guarda - Watchdog ou COP...................743.7 Registradores de Opções do Sistema.................753.7.1 Registrador SOPT1...........................................753.7.1 Registrador SOPT2...........................................763.8 Programando em Assembly................................763.9 Exemplos............................................................773.10 Resumo do Capítulo.........................................803.11 Exercícios..........................................................81

“A palavra proferida no tempo certo é como frutas de ouro incrustadas numa

escultura de prata." Provérbios 25:11

Page 27: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

27

3.1 Introdução à Linguagem Assembly

A CPU necessita de comandos para que ela possa realizar suas funções, portanto osprogramas usam códigos para fornecer as instruções. Estes códigos são chamados de códigos deoperação ou opcodes. Um opcode (representação binária, também denominadas de Linguagem deMáquina) é entendido pela CPU, mas não tem sentido para humanos. Por isso foram criadosinstruções mnemônicas (linguagem Assembly) correspondentes ao opcodes.

A palavra Assembly, em inglês, significa montagem, reunião. Assim, a LinguagemAssembly é também denominada de Linguagem de Montagem, cuja notação é formada porsímbolos mnemônicos que interagem diretamente com a máquina, transmitindo as informaçõesem níveis lógicos para o dispositivo. Compiladores traduzem as linguagens de alto nível para alinguagem Assembly, e um aplicativo chamado Montador Assembler ou simplesmente Assembler

converte a Linguagem Assembly em código de operação ou opcodes. O número de instruções, a forma como são abreviadas, sua funcionalidade entre

outros aspectos da linguagem Assembly dependem da arquitetura do microcontrolador a serestudada. Contudo, a medida que se conhece o lado operacional do Assembly, pode-se trabalharem qualquer microcontrolador de forma análoga. Além disso, linguagens de alto nível dependemdo Assembly de cada microcontrolador, assim conhecendo o Assembly, é possível garantir aotimização do programa em uma linguagem mais elevada.

Portanto, o estudo da linguagem Assembly ainda se faz muito necessário por parte deengenheiros eletricistas e programadores de sistemas embarcados. Até porque, o Assembly é umalinguagem que permite um contato direto do programador com a máquina, dando a este apossibilidade de trabalhar diretamente com os flags, as posições de memória e com osregistradores internos da CPU, possibitando otimização e maior velocidade.

Neste curso, estudar-se-á o Assembly do microcontrolador HCS08QG8, que écompatível com outros dispositivos da Freescale. Antes, entretanto, de iniciar seu estudo, cabealgumas colocações.

Primeiro, o conhecimento da linguagem é fundamental para a construção de bonsprogramas para que além de eficientes sejam eficazes, ou seja, além de serem bem escritos semerros de compilação, funcionem conforme projetados. Mas, como em qualquer áreacomputacional, a lógica de programação é essencial para o sucesso, ela é obtida da prática, daresolução de exercícios e da aplicação em laboratório. Outro ponto muito importante é aprendera configurar corretamente os registradores. Não adianta ter a lógica, mas ser incapaz de utilizá-laem uma aplicação. Com estas considerações podemos seguir adiante em nosso estudo.

A linguagem Assembly é composta de instruções mnemônicas e das pseudo-instruçõesque são as diretivas. As instruções são caracterizadas por possuir um opcode correspondente comou sem operandos de acordo com o modo de endereçamento da respectiva instrução da CPU. Asdiretivas são declarações que fornecem instruções para o Montador Assembler e não para a CPU,como selecionar a base de representação numérica dos números sem prefixo, definir valoresconstantes na memória, alocar posições de memória, etc.

As instruções mnemônicas que formam o arquivo fonte de um programa devem estarescritas com uma sintaxe correta para que o Assembler consiga gerar os opcodes corretamente.Cada linha de código pode conter os seguintes elementos:• Rótulos (labels): nomes dados aos endereços iniciais do programa, subrotinas, instruções de

desvios ou subrotinas de tratamento de interrupções. São precedidas de dois pontos(:). Ex.:Inicio: ;

• Instruções mnemônicas: abreviações simbólicas dos opcodes. Portanto, há um opcode que éum valor hexadecimal para cada instrução;

Page 28: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

28

• Operandos: é o que segue uma instrução mnemônica caso haja necessidade de umcomplemento da instrução. Os operandos estão ligados diretamente aos modos deendereçamento que será dado posteriormente;

• Comentários: o Assembler permite um texto explicativo aos mnemônicos ao colocar umponto-vírgula antes do texto, o qual não é considerado ao gerar os opcodes.

A seguir exemplos de linhas de código válidas:

Rótulo Mnemônico Operando Comentários; O ponto vírgula (;) torna a linha comentadaINICIO: LDA #10 ;carrega o decimal 10 no Acumulador

STA $20 ;armazena o conteúdo de A na posição $20

JSR ATRASO ;salta para a sub-rotina atraso

BSET 1,PTAD ;seta o bit 1 do Registrador PTAD

FIM: BRA FIM ;desvia incondicionalmente para FIM

As instruções podem ser classificadas de diversas maneiras para facilitar o estudodessa linguagem. Uma dessas formas, é classificá-las em:

➔Instruções de movimentação de bits e de dados;

➔Instruções de operações lógicas e aritméticas;

➔Instruções de teste e desvio; e

➔Instruções de controle do processador.Além disso, existem sete principais modos de endereçamento de opcode (cada

instrução pode possuir mais de um modo de endereçamento) na arquitetura do HCS08QG8.

3.2 Modos de endereçamento

Antes de verificar os modos de endereçamento, é preciso entender melhor o conceitode operando.

Operando é o objeto de complemento ou de atuação das instruções Assembly. Assimsendo, a instrução pode agir sobre o operando, pode agir a partir do operando ou pode utilizar ooperando em sua ação sobre outro elemento do microcontrolador. Além disso, uma Instruçãopode não ter operando, ter um único, ou ainda, ter mais de um operando. Os operandos podemser bits, posições de memória, Acumulador, Registrador H:X, um valor numérico (decimal,hexadecimal ou binário) ou um Registrador específico. Estes operandos podem possuir 8 ou 16bits. Portanto, o tamanho do operando determina o modo de endereçamento da instrução. Omodo de endereçamento de uma instrução pode ser entendido como o caminho pelo qual a CPUrecebe as informações para executar a instrução.

Uma mesma instrução pode possuir mais de uma forma de operandos, ou seja, termais de um modo de endereçamento.

Perceba que o conjunto de opcodes + Operando forma uma operação.

Observações Importantes- Sempre se coloca um caractere de tabulação antes das instruções para melhor organização do

programa;- Não se utiliza nomes de váriaveis ou rótulos iniciados em números (ex: 1LOOP);- Não se utiliza acentos em nenhum caractere;

- O rótulo deve ser escrito no canto mais a esquerda possível.

Page 29: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

29

Os modos de endereçamento variam com a arquitetura e o modelo domicrocontrolador. A arquitetura Von Neumann, com seu conjunto CISC, no HCS08QG8providencia sete principais modos de endereçamento. São eles:

➢Implícito;

➢Imediato;

➢Direto;

➢Estendido;

➢Relativo;

➢Memória para memória;

➢Indexado.Para facilitar a compreensão dos exemplos, a tabela a seguir informa o significado dos

símbolos numéricos da linguagem Assembly.

Símbolo Significado Exemplo Conclusão

# Valor decimal #10 Corresponde ao decimal 10

#% Valor binário #%10 Corresponde ao binário 10, ou seja, o decimal 2

#$ Valor Hexadecimal #$10 Corresponde ao hexadecimal 10, ou seja, ao decimal16

$ Endereço $60 Endereço da posição de memória 60 (hexadecimal)

3.2.1 Endereçamento Implícito (INH)

No modo implícito não há operando explícito associado ao opcode da instrução. Já édeclarado implicitamente no próprio mnemônico da instrução.

O opcode destas instruções são sempre de 8 bits (como o da maior parte dasinstruções do conjunto CISC, contudo, estas não tem o complemento de um operandopermanecendo com 8 bits no código do programa), assim o PC avança apenas um endereço dememória( 1 byte), após uso de uma instrução com este modo de endereçamento.

Na sequência, exemplos de instruções com esse endereçamento, seus opcodes e seuuso:

Mnemônico Opcode (HEX) Função da InstruçãoINCA 4C Acrescenta uma unidade no AcumuladorCLI 9A Apaga o bit I do Registrador CCR

CLRX 5F Gera o valor #S00 no Registrador XDAA 72 Ajusta a base numérica do Acumulador para 10

3.2.2 Endereçamento Imediato (IMM)

As instruções do modo imediato apresentam após o opcode um operando de um byte

(8 bits) ou de uma word (16 bits) cujo conteúdo é um valor numérico (decimal, binário ouhexadecimal).

Seguem alguns exemplos de instruções que utilizam esse modo de endereçamento:

Mnemônico + Valor Opcode (HEX) Função da Instrução

LDA #5 A6 05 Carrega o decimal #5 no Acumulador

LDHX #$8F90 45 8F90 Carrega o hexadecimal #$8F90 em H:X

Page 30: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

30

Mnemônico + Valor Opcode (HEX) Função da Instrução

AIX #%00001010 AF 0A Soma o binário #%00001010 com o valor de X

SUB #$80 A0 80 Subtrai o hexadecimal #$80 do Acumulador

ORA #$AA AA AA Faz a operação OR entre #$AA com o conteúdo de A

3.2.3 Endereçamento Direto (DIR)

As instruções de modo direto apresentam após o opcode um operando de um byte (8bits) cujo conteúdo é um endereço de 8 bits.

Portanto, é usado para instruções que tenham o acesso aos endereços da chamadapágina direta, ou seja, aos endereços de posição de memória até endereço $FF.

Mnemônico + Operando Opcode (HEX) Função da InstruçãoLDA $60 B6 60 Carrega o conteúdo da posição $60 no AcumuladorEOR $80 B8 80 Faz a operação XOR entre $80 e o AcumuladorINC $9A 3C 9A Acrescenta uma unidade na posição $9ANEG $FF 30 FF Faz o complemento de 2 na posição $FF

BSET 3, $8C 16 8C Seta o bit 3 do Registrador do endereço $8C

3.2.4 Endereçamento Estendido (EXT)As instruções de modo estendido apresentam após o opcode um operando de uma

word (16 bits) cujo conteúdo é um endereço de 16 bits. Portanto, como é utilizado 16 bits para especificar o endereço de memória, pode-se

acessar qualquer uma das 64k posições de memória. Desta forma, elas possuem acesso àendereços de página alta (a partir do $100 a $FFFF).

Observações Importantes

Um cuidado que deve-se tomar com instruções desse tipo é que, justamente, elas não possuem acesso à endereços de página alta (a partir do $100). Assim, elas são incapazes de, por exemplo, escreverem em registradores ou memórias localizados nessa parte da memória. São muito comuns erros nesse requisito.

Observação Importante

Muitas instruções estão aptas a realizar operações tanto no modo de endereçamento imediato quanto no modo direto. A diferença entre o modo utilizado é simples. O primeiro trabalha com operandos como sendo valores numéricos (decimais, binários ou hexadecimais) enquanto o segundo trata dos operandos como sendo endereços de memória de página direta.

Observe também que quando não é colocado o identificador de operando valor ou posição (# ou $), o Assembler trata o operando como posição de memória, veja no exemplo a seguir:

LDA #80; Carrega o decimal 80 no AcumuladorLDA $80; Carrega o conteúdo da posição 80 no AcumuladorLDA 80; Carrega o conteúdo da posição 80 no Acumulador

Page 31: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

31

Mnemônico + Operando Opcode (HEX) Função da InstruçãoLDA SOPT1 C6 1802 Carrega o conteúdo do Registrador SOPT1 (que está

na posição $1802 da memória) no AcumuladorJMP $E025 CC E025 Faz um "salto"para a posição $E025

3.2.5 Endereçamento Relativo (REL)As instruções de modo relativo são especificamente de desvio para um endereço e

desvio de subrotina. É adicionado ao PC (Program Counter) o conteúdo do operando que umvalor de 8 bits com sinal. Portanto, é fornecido um desvio de 127 bytes para frente ou 128 bytes

para trás do endereço atual do programa, daí o modo receber o nome de endereçamentorelativo.

Mnemônico + Operando Opcode (HEX) Função da InstruçãoBRA $E006 20 06 Desvia o programa para a posição E006, mas de

forma relativa. Considerando que a instrução BRA$E006 esteja na posição $E000, o opcode de desvio

relativo será 06 (seis posições a frente).

3.2.6 Endereçamento memória para Memória (DIR/DIR)Este modo de endereçamento permite realizar cópia de um valor de uma posição de memória depágina direta (8bits) para outra de página direta.

Mnemônico + Operando Opcode (HEX) Função da InstruçãoMOV $60, $80 4E 60 80 Faz uma cópia do conteúdo da posição 60 e

armazena na posição $80.

3.2.7 Endereçamento Indexado (IX)Este modo de endereçamento permite realizar eficientemente geração de códigos de

pesquisa a tabelas e outras estruturas de dados. A indexação é obtida através conteúdo daposição de memória indicado pelo par de Registradores H:X.

Mnemônico + Operando Opcode (HEX) Função da InstruçãoLDA ,X F6 Carrega o conteúdo da posição cujo valor está

armazenado em H:X no AcumuladorSTA ,X F7 Armazena o conteúdo do Acumulador na posição

cujo valor está armazenado em H:X

3.3 Instruções em Assembly

As instruções Assembly do MC9CS08QG8 podem ser classificadas em quatro tipos:

➔Instruções de movimentação de bits e de dados;

➔Instruções de operações lógicas e aritméticas;

➔Instruções de teste e desvio;

➔Instruções de controle do processador.As instruções no decorrer desse capítulo serão mencionadas e exemplificas por ordem

de relevância, assim, para as instruções mais usadas será dado um enfoque mais aprofundado. Oleitor pode verificar cada instrução testando-a em laboratório. A autonomia no estudo dasinstruções é fundamental para a construção do conhecimento da sintaxe e da variação de

Page 32: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

32

possibilidades para um mesmo comando.

Os exemplos de programas estarão simplificados junto às instruções. Entretanto,serão bem desenvolvidos nos capítulos seguintes.

Para os operandos, ao longo das instruções será utilizada a seguinte simbologia:

ii – constante (valor imediato) de 8 bits

jjkk – constante (valor imediato) de 16 bits

dd – endereço direto de 1 byte

hhll – endereço estendido de 1 word

ff – constante com sinal de 8 bits

eeff – constante sinalizada de 16 bits

rr – constante com sinal de 8 bits, para instruções com modo de endereçamento relativo.

3.3.1 Instruções de movimentação de bits e dados

Essas instruções servem para realizar a carga ou transferência de informações pararegiões da memória e da CPU do microcontrolador, como o Acumulador e a pilha. São as maisutilizadas, inclusive para programar registradores de página alta e inicializar variáveis.

LDA – LoaD AccumulatorIMM, DIR, EXT, IX, IX1, IX2, SP1, SP2

Instrução responsável por carregar valores imediatos ou diretos no Acumulador .

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2

Opcode A6 B6 C6 F6 E6 D6 9EE6 9ED6

Operando ii dd hhll -- ff eeff ff eeff

Ciclos de BusClk 2 3 4 3 3 4 4 5

Sinalizadores Alterados O que gera a alteração

V Sempre apagado, V permanece em zero

N É setado se o bit 7 do Acumulador estiver em 1, ao final da instrução

Z É setado se o resultado da operação no Acumulador for 0

Opcode Comando Explicação A V H I N Z C

A60A LDA #10 Carrega o valor decimal 10 no Acumulador #10 0 ? ? 0 0 ?

A62F LDA #$2F Carrega o valor hexadecimal 2F no Acumulador #47 0 ? ? 0 0 ?

B670 LDA $70ou LDA 70

Carrega o conteúdo da posição $70 noAcumulador, considere $70 = #$FF

#255 0 ? ? 1 0 ?

C61802 LDA SOPT1 Carrega o conteúdo do Registrador SOPT1 noAcumulador (SOPT1 = #$D2)

#210 0 ? ? 1 0 ?

F6 LDA Xou

LDA ,X

Carrega o conteúdo da posição de memóriaapontada por H:X no Acumulador

Considere H:X = #$60 e $60 = 0

#0 0 ? ? 0 1 ?

Page 33: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

33

STA – STore AccumulatorDIR, EXT, IX, IX1, IX2, SP1, SP2

Instrução responsável por armazenar o conteúdo do Acumulador em uma posição de memória.

Modo de Endereçamento DIR EXT IX IX1 IX2 SP1 SP2

Opcode B7 C7 F7 E7 D7 9EE7 9ED7

Operando dd hhll -- ff eeff ff eeff

Ciclos de BusClk 3 4 3 3 4 4 5

Sinalizadores Alterados O que gera a alteração

V Sempre apagado, V permanece em zero

N É setado se o bit 7 da posição da memória resultar em 1

Z É setado se o resultado da operação na posição da memória for 0

Opcode Comando Explicação A V H I N Z C

B780 STA 80 Armazena A (#$2F) na posição $80 #47 0 ? ? 1 0 ?

C7012F STA $012F Armazena A (#$00) na posição $012F #0 0 ? ? 0 1 ?

C71808 STA SRTISC Armazena A (#$0D) no Registrador SRTISC #13 0 ? ? 0 0 ?

F7 STA ,X Armazena A (#$80) na posição apontada por H:X #128 0 ? ? 1 0 ?

LDX – LoaD XIMM, DIR, EXT, IX, IX1, IX2, SP1, SP2

Instrução responsável por carregar imediatos ou diretos valores em X.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2

Opcode AE BE CE FE EE DE 9EEE 9EDE

Operando ii dd hhll -- ff eeff ff eeff

Ciclos de BusClk 2 3 4 3 3 4 4 5

Sinalizadores Alterados O que gera a alteração

V Sempre apagado, V permanece em zero

N É setado se o bit 7 da posição da memória resultar em 1

Z É setado se o resultado da operação na posição da memória for 0

Opcode Comando Explicação X V H I N Z C

AE60 LDX #60 Carrega X com o valor decimal 60 #60 0 ? ? 0 0 ?

BE60 LDX 60 Carrega X com o conteúdo da posição $60,considere $60 = #$50

#80 0 ? ? 0 0 ?

FE LDX X Carrega X com o conteúdo da posição dememória armazenado em H:X, considere que

H:X = 80 e que $80 = #$80

#128 0 ? ? 1 0 ?

Page 34: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

34

STX – STore X DIR, EXT, IX, IX1, IX2, SP1, SP2

Instrução responsável por armazenar os valores de X em uma posição da memória.

Modo de Endereçamento DIR EXT IX IX1 IX2 SP1 SP2

Opcode BF CF FF EF DF 9EEF 9EDF

Operando dd hhll -- ff eeff ff eeff

Ciclos de BusClk 3 4 3 3 4 4 5

Sinalizadores Alterados O que gera a alteração

V Sempre apagado, V permanece em zero

N É setado se o bit 7 de X estiver em 1, ao final da instrução

Z É setado se o resultado da operação em X for 0

Opcode Comando Explicação X V H I N Z C

BF80 STX $80 Armazena o conteúdo de X (#$3C)na posição80 da memória RAM

#60 0 ? ? 0 0 ?

FF STX ,X Armazena o conteúdo do Registrador X (#$50)na posição apontada por H:X, se H:X = $80,

então a posição $80 recebe o valor #80

#80 0 ? ? 0 0 ?

EF14 STX 20, X Armazena o conteúdo de X (#$80) na posiçãode memória resultante da soma H:X +

20(decimal), se H:X = $80, então a posiçãofinal $80 + $14 = $94 recebe o valor de #128

#128 0 ? ? 1 0 ?

Page 35: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

35

LDHX – LoaD H:XIMM, DIR, EXT, IX, IX1, IX2, SP1

Instrução responsável por carregar um valor em H:X.Caso esse valor seja superior a 8 bits, o valor é armazenado de forma que o registrador H receba a parte

mais alta e o registrador X a parte mais baixa.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1

Opcode 45 55 32 9EAE 9ECE 9EBE 9EFE

Operando jjkk dd hhll -- ff eeff ff

Ciclos de BusClk 3 4 5 5 5 6 5

Sinalizadores Alterados O que gera a alteração

V Sempre apagado, V permanece em zero

N É setado se o bit 7 do H:X estiver em 1, ao final da instrução

Z É setado se o resultado da operação no H:X for 0

Opcode Comando Explicação H:X V H I N Z C

458770 LDHX #$8770 Carrega em H:X o valor #$8770. Comoesse valor é maior que 8 bits, a parte maissignificativa (#$87) é carregada em H e a

menos significativa (#$70) em X.

87:700 ? ? 1 0 ?

320150 LDHX $150 Carrega em H o conteúdo da posição damemória $150 (#$01), e em X o conteúdo

da posição da memória $151 (#$FF).01:FF

0 ? ? 0 0 ?

5546 LDHX TPMC0VH Carrega em H o conteúdo do RegistradorTPMC0VH - $46( #$00), e em X o

conteúdo do Registrador TPMC0VL -$47(#$5F).

00:5F0 ? ? 0 0 ?

STHX – STore H:XDIR, EXT, SP1

Instrução responsável por armazenar o conteúdo de H:X em uma posição de memória. Fazendo com queo conteúdo de H seja armazenado no endereço do operando e o conteúdo de X na posição seguinte.

Modo de Endereçamento DIR EXT SP1

Opcode 35 96 9EFF

Operando dd hhll ff

Ciclos de BusClk 4 5 5

Sinalizadores Alterados O que gera a alteração

V Sempre apagado, V permanece em zero

N É setado se o bit 7 da posição da memória resultar em 1

Z É setado se o resultado da operação na posição da memória for 0

Opcode Comando Explicação H:X V H I N Z C

961802 STHX $1802 Armazena o H (#$17) na posição de memória$1802 e X (#$80) na posição de $1803.

17:80 0 ? ? 0 0 ?

Page 36: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

36

Opcode Comando Explicação H:X V H I N Z C

3590 STHX $90 Armazena o valor de H (#$85) na posição dememória $90 e o valor de X (#$00) na posição $91.

85:00 0 ? ? 1 0 ?

MOV – MOVement IMM/DIR, DIR/DIR, DIR/IX+, IX+/DIR

Instrução responsável por carregar valores imediatos em posições de memória ou copiar o conteúdo deuma posição de memória e carregá-lo em outro.

Modo de Endereçamento IMM/DIR DIR/DIR DIR/IX+ IX+/DIR

Opcode 6E 4E 5E 7E

Operando ii, dd dd, dd , dd dd

Ciclos de BusClk 4 5 5 5

Sinalizadores Alterados O que gera a alteração

V Sempre apagado, V permanece em zero

N É setado se o bit 7 do resultado do movimento resultar em 1

Z É setado se o resultado da movimentação for 0 na posição de “chegada”

Opcode Comando Explicação Xin

Xfi

V H I N Z C

6EFF60 MOV #$FF, $60 Move o valor hexadecimal imediato #$FFpara a posição $60 da memória

-- 0 ? ? 1 0 ?

4E7094 MOV $70, $94 Copia o conteúdo da posição $70 damemória e “cola” na posição $94. Ambas as

posições terminam com o mesmo valorarmazenado ao final da instrução

-- 0 ? ? - - ?

5E90 MOV $90, X+ Copia o conteúdo da posição $90 earmazena na posição apontada por H:X($80).Ao final, a instrução incrementa o conteúdo

de H:X em uma unidade (H:X = $81).

80 81 0 ? ? - - ?

7E90 MOV X+, $90 Copia o conteúdo da posição apontada porH:X ($80) e armazena na posição $90. Ao

final, a instrução incrementa o conteúdo deH:X em uma unidade (H:X = $81).

80 81 0 ? ? - - ?

Page 37: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

37

CLR - CLeaRINH(A, H ou X), DIR, IX, IX1, SP1

Apaga (coloca em nível 0) todo o conteúdo de uma posição de memória ou de um componente da CPU.

Modo de Endereçamento INH(A) INH(X) INH(H) DIR IX IX1 SP1

Opcode 4F 5F 8C 3F 6F 7F 9E6F

Operando dd ff ff

Ciclos de BusClk 1 1 1 5 4 5 6

Sinalizadores Alterados O que gera a alteração

V Sempre apagado, V permanece em 0

N Sempre apagado, N permanece em 0

Z Sempre setado, Z permanece em 1

Opcode Comando Explicação H, X ou A V H I N Z C

4F CLRA Apaga o conteúdo do Acumulador A A = 0 0 ? ? 0 1 ?

5F CLRX Apaga o conteúdo do Registrador X X = 0 0 ? ? 0 1 ?

8C CLRH Apaga o conteúdo do Registrador H H = 0 0 ? ? 0 1 ?

3F60 CLR $60 Apaga o conteúdo da posição 60 da memória $60 = 0 0 ? ? 0 1 ?

3.3.1.1 Instruções de Movimentação de bits:

BSET – Bit SetDIR (b0), DIR (b1), DIR (b2), DIR (b3), DIR (b4), DIR (b5), DIR (b6), DIR (b7),

Seta o bit selecionado para uma determinada posição da memória

Modo de Endereçamento DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR(b7)

Opcode 10 12 14 16 18 1A 1C 1E

Operando ddrr ddrr ddrr ddrr ddrr ddrr ddrr ddrr

Ciclos de BusClk 5 5 5 5 5 5 5 5

Sinalizadores Alterados Nenhum

Opcode Comando Explicação V H I N Z C

1280 BSET 1, $80 Seta o bit 1 da posição $80 da memória ? ? ? ? ? ?

1A90 BSET 5, VAR Seta o bit 5 de VAR (observe, pelo Opcode, que VAR selocaliza na posição de memória $90)

? ? ? ? ? ?

Page 38: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

38

BCLR – Bit CLeaRDIR (b0), DIR (b1), DIR (b2), DIR (b3), DIR (b4), DIR (b5), DIR (b6), DIR (b7)

Apaga o bit selecionado para uma determinada posição da memória.

Modo de Endereçamento DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR(b7)

Opcode 11 13 15 17 19 1B 1D 1F

Operando ddrr ddrr ddrr ddrr ddrr ddrr ddrr ddrr

Ciclos de BusClk 5 5 5 5 5 5 5 5

Sinalizadores Alterados Nenhum

Opcode Comando Explicação V H I N Z C

1360 BCLR 1, $60 Apaga o bit 1 da posição $60 da memória ? ? ? ? ? ?

110F BCLR 0, IRQSC Apaga o bit 0 do registrador (de página baixa) IRQSC ($0F). ? ? ? ? ? ?

3.3.1.2 Outras instruções de Movimentação de Dados:

Instruções de Transferência (opcode):

TAP (84) – Transference from Accumulator to Processor TPA (85) – Transference from Processor to Accumulator

A instrução TAP copia o conteúdo do Acumulador e armazena no CCR (registrador deestado do processador), alterando seus flags, sem alterar o conteúdo do Acumulador. Já ainstrução TPA faz o inverso, copia o conteúdo do CCR e armazena no Acumulador, sem alterar oCCR. Ambas possuem modo de endereçamento implícito (INH).

Outras instruções de Transferência:TAX (97) – Transfere o conteúdo de A para X, sem alterar o conteúdo de A.

TXA (9F) – Transfere o conteúdo de X para A, sem alterar o conteúdo de X.

TSX (95) – Transfere o conteúdo do SP + 1 para H:X, sem alterar o conteúdo de SP.

TXS (94) – Transfere o conteúdo de H:X-1 para SP, sem alterar o conteúdo de H:X.

Instruções de Armazenamento e Remoção na Pilha (Todas em modo deendereçamento INH):

PSHA (87) – Armazena o conteúdo de A na pilha e decrementa uma posição do SP.

PSHH (8B) – Armazena o conteúdo de H na pilha e decrementa uma posição do SP.

PSHX (89) – Armazena o conteúdo de X na pilha e decrementa uma posição do SP.

PULA (86) – Incrementa uma posição SP, retira seu conteúdo e armazena em A.

PULH (8A) – Incrementa uma posição SP, retira seu conteúdo e armazena em H.

PULX (88) – Incrementa uma posição SP, retira seu conteúdo e armazena em X.

RSP (9C) - SP retorna ao valor inicial, ou seja, SP = $00FF. (INH)

Page 39: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

39

3.3.2 Instruções de operações lógicas e aritméticas

As instruções anteriores eram usadas para movimentar, carregar ou armazenar dadosem posições de memória ou Registradores da CPU. Elas não alteravam os dados. As próximasinstruções serão usadas para operar os dados, ou seja, para mudar o seu valor, não o local onde odado está localizado. As operações realizadas pelas instruções seguintes podem ser lógicas(booleanas) ou aritméticas.

ADC – ADdition with CarryIMM, DIR, EXT, IX, IX1, IX2, SP1, SP2

Realiza a seguinte adição:conteúdo do Acumulador + conteúdo do operando + valor do flag C do CCR (0 ou 1)

Armazena a resultado no Acumulador.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2

Opcode A9 B9 C9 F9 E9 D9 9EE9 9ED9

Operando ii dd hhll -- ff eeff ff eeff

Ciclos de BusClk 2 3 4 3 3 4 4 5

Sinalizadores Alterados O que gera a alteração

V Caso a operação seja feita em complemento de dois, se a respostaultrapassar o intervalo [-128;+127], o flag V será aceso

N É setado se o bit 7 do Acumulador estiver em 1, ao final da instrução

Z É setado se o resultado da operação no Acumulador for 0

H Ele é setado se ocorreu algum transporte do bit 3 para o bit 4 do Acumulador

C Ele é setado se o resultado da soma no Acumulador ultrapassar 8 bits, ouseja, se o valor da resposta for superior a 255.

Opcode Comando Explicação A V H I N Z C

A90C ADC #$0C A instrução fará a soma #$0C + #$03(A) + #$01(C) =#$10. Este valor será armazenado no Acumulador.

#$03 0 1 ? 0 0 0

A9F1 ADC #$F1 A instrução fará a soma #$F1 + #$0E (A) + #$01(C)= #$0100, valor maior que #$FF. Com isso, o valorarmazenado em A é a parte equivalente aos oitobits inferiores (#$00) e o nono bit é armazenado

no flag de transporte C. Os demais flags sãoalterados de acordo com o resultado da operação.

#$0E 0 1 ? 0 1 1

B960 ADC $60 Considerando inicialmente $60 = #$7F, a instruçãofará a soma #$7F + #$00(A) + 1(C) = #$80. Este

valor será armazenado no Acumulador.

#$00 0 1 ? 1 0 0

F9 ADC ,XConsiderando inicialmente H = #$0, X = #$90 e$0090 = #$00, a instrução fará a soma #$00 +

#$00(A) + #$00(C) = 0 e armazenará esse valor noAcumulador. É somado o valor da posição de

memória apontada por H:X, que no caso é $0090.

#$000 0 ? 0 1 0

C91802 ADC SOPT1 Considerando inicialmente SOPT1 = #$D2, ainstrução fará a soma #$D2 + #$01(A) + #$01(C) =

#$D4.

#$01 0 0 ? 1 0 0

Page 40: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

40

ADD – ADDitionIMM, DIR, EXT, IX, IX1, IX2, SP1, SP2

Realiza a seguinte adição:conteúdo do Acumulador + conteúdo do operando.

Armazena a resposta no Acumulador.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2

Opcode AB BB CB FB EB DB 9EEB 9EDB

Operando ii dd hhll -- ff eeff ff eeff

Ciclos de BusClk 2 3 4 3 3 4 4 5

Sinalizadores Alterados O que gera a alteração

V Caso a operação seja feita em complemento de dois, se a respostaultrapassar o intervalo [-128;+127], o flag V será aceso

N É setado se o bit 7 do Acumulador estiver em 1, ao final da instrução

Z É setado se o resultado da operação no Acumulador for 0

H Ele é setado se ocorreu algum transporte do bit 3 para o bit 4 do Acumulador

C Ele é setado se o resultado da soma no Acumulador ultrapassar 8 bits, ouseja, se o valor da resposta for superior a 255.

Opcode Comando Explicação A V H I N Z C

AB0C ADD #$0C Considerando inicialmente A = #$02, a instruçãofará a soma #$0C + #$02 = #$0E. Este valor será

armazenado no Acumulador.

#$02 0 0 ? 0 0 0

ABF1 ADD #$F1 Considerando inicialmente A = #$0F, a instruçãofará a soma #$F1 + #$0F = #$0100, valor maior que#$FF. Com isso, o valor armazenado em A é a parteequivalente aos oito bits inferiores (#$00) e o nono

bit é armazenado no flag de transporte C. Osdemais flags são alterados de acordo com o

resultado da operação.

#$0F 0 1 ? 0 1 1

BB60 ADD $60 Considerando inicialmente A = #$0 e $60 = #$7F, ainstrução fará a soma #$7F + #$00 = #$7F. Este

valor será armazenado no Acumulador.

#$00 0 1 ? 1 0 0

FB ADD ,X Considerando inicialmente X = #$90 e $90 = #$00,a instrução fará a soma #$00 + #$00 = 0 e

armazenará esse valor no Acumulador. Observeque é usado na soma o valor da posição de

memória apontada por H:X, que no caso é $90.

#$00 0 0 ? 0 1 0

Page 41: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

41

AIS – Addition Indexed to Stack-pointerIMM

Soma um operando sinalizado ao endereço apontado pelo SP (Stack Point), e armazena o resultado napilha. Observe que a instrução, antes de realizar a operação, há a conversão do operando para um valor

hexadecimal sinalizado de 16 bits.

Modo de Endereçamento IMM

Opcode A7

Operando ii

Ciclos de BusClk 2

Não altera nenhum sinalizador

Opcode Comando Explicação V H I N Z C

A740 AIS #64 Considerando inicialmente SP = $FF, a instrução fará asoma $00FF + #$40 = $013F. Este valor será

armazenado no apontador da pilha (SP).

? ? ? ? ? ?

AIX – Addition Indexed to H:XIMM

Soma um operando sinalizado ao conteúdo do valor de H:X, e armazena o resultado em H:X. Observe quea instrução, antes de realizar a operação, há a conversão do operando para um valor hexadecimal

sinalizado de 16 bits.

Modo de Endereçamento IMM

Opcode AF

Operando ii

Ciclos de BusClk 2

Não altera nenhum sinalizador

Opcode Comando Explicação V H I N Z C

AF20 AIX #32 Considerando inicialmente H:X = #$01FF, a instruçãofará a soma #$01FF + #$20 (#$20 = #32) = #$021F.

Este valor será armazenado em H:X.

? ? ? ? ? ?

AFFF AIX #-1 Considerando inicialmente H:X = #$01FF, a instruçãofará a soma #$01FF + #$FF (número equivalente em

complemento de dois ao número #$-1) = #$01FE. Estevalor será armazenado em H:X.

? ? ? ? ? ?

Page 42: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

42

SBC – SuBtraction with CarryIMM, DIR, EXT, IX, IX1, IX2, SP1, SP2

Realiza a seguinte subtração:conteúdo do Acumulador - conteúdo do operando - valor do flag C do CCR (0 ou 1)

Armazena a resposta no Acumulador.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2

Opcode A2 B2 C2 F2 E2 D2 9EE2 9ED2

Operando ii dd hhll -- ff eeff ff eeff

Ciclos de BusClk 2 3 4 3 3 4 4 5

Sinalizadores Alterados O que gera a alteração

V Caso a operação seja feita em complemento de dois, se a resposta ultrapassaro intervalo [-128;+127], o flag V será aceso

N É setado se o bit 7 do Acumulador estiver em 1, ao final da instrução

Z É setado se o resultado da operação no Acumulador for 0

C Ele é setado se o resultado da subtração no Acumulador for inferior a zero.

Opcode Comando Explicação V H I N Z C

A260 SBC #$60 Considerando inicialmente A = #$61 e C = 1, a instruçãofará a subtração #$61 - #$60 - #$01 = #$00. Este valor será

armazenado no Acumulador.

0 ? ? 0 1 0

A262 SBC #$62 Considerando inicialmente A = #$61 e C = 1, a instruçãofará a subtração #$61 - #$62 - #$01 = -#$02, que em

complemento de 2 é igual a #$FE, Como -2 é menor quezero, o flag de transporte C é setado.

0 ? ? 1 0 1

B260 SBC $60 Considerando inicialmente A = #$0, C = 0 e $60 = #$7F, ainstrução fará a subtração #$00 - #$7F - #$00 = -#$7F, que

em complemento de 2 é igual a #$81. Este valor seráarmazenado no Acumulador. Como -#$7F, é menor que

zero, o flag de transporte C é setado.

0 ? ? 1 0 1

F2 SBC ,X Considerando inicialmente A =#$F5, C = 1, H = 0 e X = #$90e $0090 = #$F4, a instrução fará a subtração #$F5 - #$F4 -#$01 = 0 e armazenará esse valor no Acumulador. Observeque é usado na subtração o valor da posição de memória

apontada por H:X, que no caso é $0090.

0 ? ? 0 1 0

Page 43: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

43

SUB – SUBtractionIMM, DIR, EXT, IX, IX1, IX2, SP1, SP2

Realiza a seguinte subtração:conteúdo do Acumulador - conteúdo do operando

Armazena a resposta no Acumulador.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2

Opcode A0 B0 C0 F0 E0 D0 9EE0 9ED0

Operando ii dd hhll -- ff eeff ff eeff

Ciclos de BusClk 2 3 4 3 3 4 4 5

Sinalizadores Alterados O que gera a alteração

V Caso a operação seja feita em complemento de dois, se a resposta ultrapassaro intervalo [-128;+127], o flag V será aceso

N É setado se o bit 7 do Acumulador estiver em 1, ao final da instrução

Z É setado se o resultado da operação no Acumulador for 0

C Ele é setado se o resultado da subtração no Acumulador for inferior a zero.

Opcode Comando Explicação V H I N Z C

A060 SUB #$60 Considerando inicialmente A = #$61, a instrução fará asubtração #$61 - #$60 = #$01. Este valor será armazenado

no Acumulador.

0 ? ? 0 0 0

A062 SUB #$62 Considerando inicialmente A = #$61, a instrução fará asubtração #$61 - #$62 = -#$01, que em complemento de 2

é igual a #$FF, Como -1 é menor que zero, o flag detransporte C é setado.

0 ? ? 1 0 1

B060 SUB $60 Considerando inicialmente A = #$0 e $60 = #$7F, ainstrução fará a subtração #$00 - #$7F = -#$7F, que em

complemento de 2 é igual a #$81. Este valor seráarmazenado no Acumulador. Como -#$7F, é menor que

zero, o flag de transporte C é setado.

0 ? ? 1 0 1

F0 SUB ,X Considerando inicialmente A =#$00, e X = #$90 e $90 =#$00, a instrução fará a subtração #$00 - #$00= 0 e

armazenará esse valor no Acumulador. Observe que éusado na subtração o valor da posição de memória

apontada por H:X, que no caso é $90.

0 ? ? 0 1 0

Page 44: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

44

MUL – MULtiplicationINH

Realiza a seguinte multiplicação sem sinal:conteúdo de X vezes conteúdo de A

Armazena o resultado na forma de 16 bits, concatenando em X a parte mais alta e em A a parte maisbaixa do resultado.

Modo de Endereçamento INH

Opcode 42

Operando --

Ciclos de BusClk 5

Sinalizadores Alterados O que gera a alteração

H Sempre Zero.

C Sempre Zero.

Opcode Comando Explicação V H I N Z C

42 MUL Considerando inicialmente que A = #$15 e que X =#$40, a instrução fará a multiplicação #$15 * #$40 =#$0540. Então #$05 será armazenado em X e #$40

será armazenado em A.

? 0 ? ? ? 0

DIV – DIVisionINH

Realiza a seguinte divisão sem sinal:conteúdo de H:A / conteúdo de X

O quociente da divisão é armazenado em A e o resto em H. O divisor X não é alterado

Modo de Endereçamento INH

Opcode 52

Operando --

Ciclos de BusClk 6

Sinalizadores Alterados O que gera a alteração

Z Setado se o resultado da operação (conteúdo de H) for igual a zero.

C Setado se haver erro na divisão (caso o quociente seja maior que #$FF ouaconteça uma divisão por zero).

Opcode Comando Explicação V H I N Z C

52 DIV Considerando inicialmente que A = #$50 e que H:X =#$2040, a instrução fará a divisão:

#$2050 / #$40 = #$0081 e resto = #$000A. Então#$81 será armazenado em A e #$0A será armazenado

em H, resultando em H:X = #$0A40.

? ? ? ? 0 0

Page 45: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

45

Opcode Comando Explicação V H I N Z C

52 DIV Considerando inicialmente que A = #$82 e que H:X =#$2000, a instrução fará a divisão:

#$2082/#$00 que não existe, acendendo o flag C.Os Registradores A e H receberão dados aleatórios ao

final da instrução.

? ? ? ? 0 1

52 DIV Considerando inicialmente que A = #$81 e que H:X =#$2002, a instrução fará a divisão:

#$2081 / #$02 = #$1041 e resto = #$0001.Como o valor do quociente é maior que #$00FF, o flag

C é setado, indicando a ocorrência de um erro. Osregistradores A e H receberão dados aleatórios ao

final da instrução.

? ? ? ? 0 1

INC – INCreaseDIR, INH(A), INH(X), IX, IX1, SP1

Incrementa uma unidade no local indicado no operando.

Modo de Endereçamento DIR INH(A) INH(X) IX IX1 SP1

Opcode 3C 4C 5C 7C 6C 9E6C

Operando dd -- -- -- ff ff

Ciclos de BusClk 5 1 1 4 5 6

Sinalizadores Alterados O que gera a alteração

V Setado se a operação resultar em um estouro de complemento de 2

N É setado se o bit 7 do operando resultar em 1

Z É setado se o resultado da operação no operando for 0

Opcode Comando Explicação V H I N Z C

3C80 INC $80 Considerando inicialmente que $80 = #$00, ao final dainstrução $80 = #$01.

0 ? ? 0 0 ?

4C INCA Considerando inicialmente que A= #$00, ao final da instruçãoA = #$01.

0 ? ? 0 0 ?

5C INCX Considerando inicialmente que X= #$90 e que $90 = #$02 aofinal da instrução X = #$91 e $90 = #$02.

0 ? ? 0 0 ?

7C INC ,X Considerando inicialmente que X= #$90 e que $90 = #$02 aofinal da instrução X = #$90 e $90 = #$03.

0 ? ? 0 0 ?

Page 46: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

46

DEC – DECreaseDIR, INH(A), INH(X), IX, IX1, SP1

Decrementa uma unidade no local indicado no operando.

Modo de Endereçamento DIR INH(A) INH(X) IX IX1 SP1

Opcode 3A 4A 5A 7A 6A 9E6A

Operando dd -- -- -- ff ff

Ciclos de BusClk 5 1 1 4 5 6

Sinalizadores Alterados O que gera a alteração

V Setado se a operação resultar em um estouro de complemento de 2

N É setado se o bit 7 do operando resultar em 1

Z É setado se o resultado da operação no operando for 0

Opcode Comando Explicação V H I N Z C

3A80 DEC $80 Considerando inicialmente que $80 = #$00, ao final dainstrução $80 = #$FF.

0 ? ? 1 0 ?

4A DECA Considerando inicialmente que A= #$01, ao final da instruçãoA = #$00.

0 ? ? 0 1 ?

5A DECX Considerando inicialmente que X= #$90 e que $90 = #$01 aofinal da instrução X = #$89 e $90 = #$01.

0 ? ? 0 0 ?

7A DEC ,X Considerando inicialmente que X= #$90 e que $90 = #$02 aofinal da instrução X = #$90 e $90 = #$01.

0 ? ? 0 1 ?

DAA – Decimal Accumulator Adjust

INH

Efetua o ajuste decimal do Acumulador, para operações realizadas em BCD, após adições com ou semtransporte. Ela corrige o conteúdo do Acumulador, de forma a restaurar a correta configuração em BCD,

para a resposta da operação.

Modo de Endereçamento INH

Opcode 72

Operando --

Ciclos de BusClk 1

Sinalizadores Alterados O que gera a alteração

Z Setado se o resultado da operação for igual a zero.

V Indefinido

N É setado se o bit 7 do operando resultar em 1 ao final da operação

C Setado se o resultado for maior que 99 em BCD

Page 47: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

47

Opcode Comando Explicação V H I N Z C

72 DAA Considerando inicialmente que A= #$03 e que $90 =#$79. Foi executada a instrução ADD $90, assim #$03

+ #$79 = #$7C. Mas, com o uso de DAA, o valor noAcumulador é alterado para #$82, resultado da

operação #03+#79. Observe que a base doAcumulador continua sendo hexadecimal.

-- ? ? 0 0 0

AND – AND IMM, DIR, EXT, IX, IX1, IX2, SP1, SP2

Realiza a operação booleana AND (E ou &) entre o Acumulador e o valor indicado no operando.É muito útil no isolamento de bits, criando máscaras.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2

Opcode A4 B4 C4 F4 E4 D4 9EE4 9ED4

Operando ii dd hhll -- ff eeff ff eeff

Ciclos de BusClk 2 3 4 3 3 4 4 5

Sinalizadores Alterados O que gera a alteração

V Sempre apagado.

N É setado se o bit 7 do Acumulador estiver em 1, ao final da instrução

Z É setado se o resultado da operação no Acumulador for 0

H É setado se houver transporte entre os bits 3 e 4

Opcode Comando Explicação V H I N Z C

A4F1 AND #$F1 Considerando inicialmente A = #$0F, a instrução fará aoperação #$0F & #$F1 = #$0001

0 1 ? 0 0 0

B460 AND $60 Considerando inicialmente A = #$00 e $60 = #$7F, ainstrução fará a operação #$7F & #$00 = #$00. Este

valor será armazenado no Acumulador.

0 1 ? 0 1 0

F4 AND X Considerando inicialmente A =#$FF, X = #$90 e $90 =#$40, a instrução fará a operação #$FF & #$40 = #$40e armazenará esse valor no Acumulador. Observe queé usado na operação o valor da posição de memória

apontada por H:X, que no caso é $90 e não o valor doregistrador X.

0 0 ? 0 0 0

Page 48: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

48

ORA – OR AccumulatorIMM, DIR, EXT, IX, IX1, IX2, SP1, SP2

Realiza a operação booleana OR (OU ou |) entre o Acumulador e o valor indicado no operando.É muito útil para a fusão de bits.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2

Opcode AA BA CA FA EA DA 9EEA 9EDA

Operando ii dd hhll -- ff eeff ff eeff

Ciclos de BusClk 2 3 4 3 3 4 4 5

Sinalizadores Alterados O que gera a alteração

V Sempre apagado.

N É setado se o bit 7 do Acumulador estiver em 1, ao final da instrução

Z É setado se o resultado da operação no Acumulador for 0

H É setado se houver transporte entre os bits 3 e 4

Opcode Comando Explicação V H I N Z C

AAF1 AND #$F1 Considerando inicialmente A = #$0F, a instrução fará aoperação #$0F & #$F1 = #$FF

0 1 ? 1 0 0

BA60 AND $60 Considerando inicialmente A = #$00 e $60 = #$7F, ainstrução fará a operação #$7F & #$00 = #$7F. Este

valor será armazenado no Acumulador.

0 1 ? 1 0 0

FA AND X Considerando inicialmente A =#$00, X = #$90 e $90 =#$00, a instrução fará a operação #$00 & #$00 = #$00e armazenará esse valor no Acumulador. Observe queé usado na operação o valor da posição de memória

apontada por H:X, que no caso é $90 e não o valor doregistrador X.

0 0 ? 0 1 0

COM – COMplement of 1INH (A), INH (X), DIR, IX, IX1, SP1

Faz o complemento de 1 (troca zeros por uns e uns por zeros) no operando ou Registrador especificado,ou seja, faz a operação M = #$FF – M, onde M é a posição de memória

Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1

Opcode 33 43 53 73 63 9E63

Operando dd -- -- -- ff eeff

Ciclos de BusClk 5 1 1 4 5 6

Sinalizadores Alterados O que gera a alteração

V Sempre apagado.

C Sempre setado

N É setado se o bit 7 do operando estiver em 1, ao final da instrução

Z É setado se o resultado da operação no operando for 0

Page 49: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

49

Opcode Comando Explicação V H I N Z C

3380 COM $80 Considerando que inicialmente $80 = #$A3, ao final daoperação $80 = #$5C.

0 ? ? 0 0 1

43 COMA Considerando inicialmente A = #$00, ao final dainstrução A = #$FF.

0 ? ? 1 0 1

53 COMX Considerando inicialmente H:X = #$0060 e $60 = #$00,ao final da instrução H:X = #$009F e $60 = #$00.

0 ? ? 1 0 1

73 COM ,X Considerando inicialmente H:X = #$0060 e $60 = #$FF,ao final da instrução H:X = #$0060 e $60 = #$00.

0 ? ? 0 1 1

NEG – NEGationINH (A), INH (X), DIR, IX, IX1, SP1

Faz o complemento de 2 (troca zeros por uns e uns por zeros e soma #$01 ao valor obtido) no operandoou Registrador especificado. (Faz a operação M = (#$FF - M) + #$01).

Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1

Opcode 30 40 50 70 60 9E60

Operando dd -- -- -- ff Eeff

Ciclos de BusClk 5 1 1 4 5 6

Sinalizadores Alterados O que gera a alteração

V Setado se a operação resultou num estouro de limites do formatocomplemento de 2, ou seja, se o operando era IGUAL ao valor #$80 ao início

da operação.

C É setado caso o operando era diferente de zero ao inicio da operação.

N É setado se o bit 7 do operando estiver em 1, ao final da instrução.

Z É setado se o resultado da operação no operando for 0.

Opcode Comando Explicação V H I N Z C

3080 NEG $80 Considerando que inicialmente $80 = #$A0, ao final daoperação $80 = #$60.

0 ? ? 0 0 1

40 NEGA Considerando inicialmente A = #$00, ao final dainstrução A = #$00.

0 ? ? 0 1 0

50 NEGX Considerando inicialmente H:X = #$0060 e $60 = #$80,ao final da instrução H:X = #$00A0 e $60 = #$80.

0 ? ? 1 0 1

70 NEG ,X ouNEG X

Considerando inicialmente H:X = #$0060 e $60 = #$80,ao final da instrução H:X = #$0060 e $60 = #$FF (80).

Perceba que o flag V ficou setado ao final daoperação.

1 ? ? 1 0 1

Page 50: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

50

NSA – Nibble Switch AccumulatorINH

Efetua a troca dos nibbles do Acumulador, ou seja, troca os dígitos hexadecimais e armazena no próprioAcumulador.

Modo de Endereçamento INH

Opcode 62

Operando --

Ciclos de BusClk 1

Não altera nenhum sinalizador

Opcode Comando Explicação V H I N Z C

62 NSA Considerando inicialmente que A= #$4A, ao final daoperação, A = #$A4

? ? ? ? ? ?

62 NSA Considerando inicialmente que A= #$03, ao final daoperação, A = #$30

? ? ? ? ? ?

ASL – Arithmetic Shift Left

LSL – Logical Shift LeftINH (A), INH (X), DIR, IX, IX1, SP1

Realiza o deslocamento à esquerda dos bits do conteúdo do operando, é equivalente à multiplicaçãointeira por dois. As duas instruções (ASL e LSL) fazem exatamente isso.

O último bit é deslocado para o flag C e o menos significativo é preenchido com 0.

Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1

Opcode 38 48 58 78 68 9E68

Operando dd -- -- -- ff eeff

Ciclos de BusClk 5 1 1 4 5 6

Sinalizadores Alterados O que gera a alteração

V Setado se a operação XOR (ou exclusivo) entre os flags N e C resulta em 1,indicando que o sinal foi alterado.

C É setado caso o bit 7 do operando, antes da operação, estava setado.

N É setado se o bit 7 do operando estiver em 1, ao final da instrução.

Z É setado se o resultado da operação no operando for 0.

Opcode Comando Explicação V H I N Z C

3880 ASL $80ou LSL $80

Considerando inicialmente $80 = #$A2,Ao final da instrução, $80 = #$44.

1 ? ? 0 0 1

48 LSLAou ASLA

Considerando inicialmente A = #$FF,ao final da instrução A = #$FE

0 ? ? 1 0 1

58 LSLXou ASLX

Considerando inicialmente H:X = #$0080 e que $80 =#$80, ao final da instrução, H:X = #$0000 e $80 = #$80

1 ? ? 0 1 1

78 LSL Xou ASL ,Xou ASL X

Considerando inicialmente H:X = #$0080 e que $80 =#$80, ao final da instrução, H:X = #$0080 e $80 = #$00

1 ? ? 0 1 1

Page 51: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

51

ASR – Arithmetic Shift RightINH (A), INH (X), DIR, IX, IX1, SP1

Realiza o deslocamento à direita dos bits do conteúdo do operando, é equivalente à divisão inteira pordois (sinalizada).

O bit0 é deslocado para o flag C e o mais significativo é preenchido com o valor anterior à execução dainstrução.

Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1

Opcode 37 47 57 77 67 9E67

Operando dd -- -- -- ff eeff

Ciclos de BusClk 5 1 1 4 5 6

Sinalizadores Alterados O que gera a alteração

V Setado se a operação XOR (ou exclusivo) entre os flags N e C resulta em 1,indicando que o sinal foi alterado.

C É setado se inicialmente o bit 0 do operando estava setado.

N É setado se o bit 7 do operando estiver em 1, ao final da instrução.

Z É setado se o resultado da operação no operando for 0.

Opcode Comando Explicação V H I N Z C

3780 ASR $80 Considerando inicialmente $80 = #$10,Ao final da instrução, $80 = #$00.

1 ? ? 0 1 1

47 ASRA Considerando inicialmente A = #$0F,ao final da instrução A = #$07

1 ? ? 0 0 1

57 ASRX Considerando inicialmente H:X = #$0080 e que $80 =#$80, ao final da instrução, H:X = #$0040 e $80 = #$80

0 ? ? 0 0 0

77 ASR ,X Considerando inicialmente H:X = #$0080 e que $80 =#$80, ao final da instrução, H:X = #$0080 e $80 = #$40

0 ? ? 0 0 0

LSR – Logic Shift RightINH (A), INH (X), DIR, IX, IX1, SP1

Realiza o deslocamento lógico à direita dos bits do conteúdo do operando, é equivalente à divisãonatural por dois (não-sinalizada).

O bit0 é deslocado para o flag C e o mais significativo é preenchido com zero.

Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1

Opcode 34 44 54 74 64 9E64

Operando dd -- -- -- ff Eeff

Ciclos de BusClk 5 1 1 4 5 6

Sinalizadores Alterados O que gera a alteração

V É setado se, inicialmente, o bit 0 estava setado .

C É setado se, inicialmente, o bit 0 estava setado.

N Sempre Apagado.

Z É setado se o resultado da operação no operando for 0.

Page 52: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

52

Opcode Comando Explicação V H I N Z C

3480 LSR $80 Considerando inicialmente $80 = #$01,Ao final da instrução, $80 = #$00.

1 ? ? 0 1 1

44 LSRA Considerando inicialmente A = #$0F,ao final da instrução A = #$07

1 ? ? 0 0 1

54 LSRX Considerando inicialmente H:X = #$0080 e que $80 =#$80, ao final da instrução, H:X = #$0040 e $80 = #$80

0 ? ? 0 0 0

74 LSR X Considerando inicialmente H:X = #$0080 e que $80 =#$80, ao final da instrução, H:X = #$0080 e $80 = #$40

1 ? ? 0 0 1

ROL – ROtation LeftINH (A), INH (X), DIR, IX, IX1, SP1

Realiza a rotação à esquerda dos bits do conteúdo do operando. Assim, os bits são deslocados àesquerda, o bit menos significativo recebe o valor inicial do sinalizador C e o sinalizador C recebe o valor

inicial do bit mais significativo.

Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1

Opcode 39 49 59 79 69 9E69

Operando dd -- -- -- ff eeff

Ciclos de BusClk 5 1 1 4 5 6

Sinalizadores Alterados O que gera a alteração

V Setado se a operação XOR (ou exclusivo) entre os flags N e C resulta em 1,indicando que o sinal foi alterado.

C É setado caso o bit 7 do operando, antes da operação, estava setado.

N É setado se o bit 7 do operando estiver em 1, ao final da instrução

Z É setado se o resultado da operação no operando for 0

Opcode Comando Explicação V H I N Z C

3980 ROL $80 Considerando inicialmente $80 = #$A2 e que C = #$01,Ao final da instrução, $80 = #$45.

1 ? ? 0 0 1

49 ROLA Considerando inicialmente A = #$FF e C = #$01,ao final da instrução A = #$FF

0 ? ? 1 0 1

59 ROLX Considerando inicialmente H:X = #$0080 e que $80 =#$80 e que C = #$01, ao final da instrução, H:X =

#$0001 e $80 = #$80

1 ? ? 0 0 1

79 ROL X Considerando inicialmente H:X = #$0080 e que $80 =#$80 e que C = #$01, ao final da instrução, H:X =

#$0080 e $80 = #$01

1 ? ? 0 0 1

Page 53: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

53

ROR – ROtation RightINH (A), INH (X), DIR, IX, IX1, SP1

Realiza a rotação à direita dos bits do conteúdo do operando. Assim, os bits são deslocados à direita, obit mais significativo recebe o valor inicial do sinalizador C e o sinalizador C recebe o valor inicial do bit

menos significativo.

Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1

Opcode 36 46 56 76 66 9E66

Operando dd -- -- -- ff Eeff

Ciclos de BusClk 5 1 1 4 5 6

Sinalizadores Alterados O que gera a alteração

V Setado se a operação XOR (ou exclusivo) entre os flags N e C resulta em 1,indicando que o sinal foi alterado.

C É setado caso o bit 7 do operando, antes da operação, estava setado.

N É setado se o bit 7 do operando estiver em 1, ao final da instrução

Z É setado se o resultado da operação no operando for 0

Opcode Comando Explicação V H I N Z C

3680 ROR $80 Considerando inicialmente $80 = #$A2 e que C = #$01,Ao final da instrução, $80 = #$D1.

0 ? ? 1 0 1

46 RORA Considerando inicialmente A = #$FF e C = #$01,ao final da instrução A = #$FF

0 ? ? 1 0 1

56 RORX Considerando inicialmente H:X = #$0080 e que $80 =#$80 e que C = #$01, ao final da instrução, H:X =

#$00C0 e $80 = #$80

0 ? ? 1 0 1

76 ROR X Considerando inicialmente H:X = #$0080 e que $80 =#$80 e que C = #$00, ao final da instrução, H:X =

#$0080 e $80 = #$40

1 ? ? 0 0 1

3.3.3 Instruções de operações de teste e desvio

Já foram vistas instruções de carregamento de dados, de manipulação de dados e deoperação sobre os dados. Agora serão estudadas as operações de teste e desvio. Estas analisam odado e lhe conferem um julgamento (verdadeiro ou falso) em comparação a outro dado(operações de teste).

Com isso, existem operações de desvio que realizam alguma ação a partir dessejulgamento. Com esse conjunto de instruções é possível gerar estruturas condicionais (análogas àinstrução if, na linguagem C) e estruturas cíclicas (análogas às instrução for ou while, na linguagemC), além de chamadas de subrotina (análogas à chamada de funções, na linguagem C).

Estas operações são indispensáveis à lógica de programação tanto para solução deproblemas simples quanto de problemas complexos.

Page 54: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

54

CMP - CoMPareIMM, DIR, EXT, IX, IX1, IX2, SP1, SP2

Compara os valores do Acumulador com o operando, a partir da subtração entre o conteúdo do operandoe o conteúdo do Acumulador (sem alterá-los). Essa operação serve para valores sinalizados ou não.

Operação = A - M

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2

Opcode A1 B1 C1 F1 E1 D1 9EE1 9ED1

Operando ii dd hhll -- ff eeff ff eeff

Ciclos de BusClk 2 3 4 3 3 4 4 5

Sinalizadores Alterados O que gera a alteração

V Setado se a operação resultar num estouro de limites no formato decomplemento de dois.

N É setado se o resultado da operação for maior que 0 (A > M)

Z É setado se o resultado da operação for 0 (valores iguais)

C É setado se o resultado da operação for menor que 0 (A < M)

Opcode Comando Explicação V H I N Z C

A190 CMP #$90 Considerando que inicialmente A = #$00, a instruçãocompara A com #$90, fazendo #$00 - #$90 = -#$90,assim o flag C é aceso, indicando que o conteúdo da

posição $90 é maior que o do Acumulador.

0 ? ? 0 0 1

B170 CMP $70 Considerando que inicialmente A = #$30 e $70 = #$10,instrução compara A com #$10, conteúdo da posição

$70, fazendo #$30 - #$10 = #$20, assim o flag N éaceso, indicando que o conteúdo da posição $70 é

menor que o do Acumulador.

0 ? ? 1 0 0

F1 CMP ,X Considerando que inicialmente A = #$30, H:X = #$0060e $60 = #$30, instrução compara A com #$30, que é oconteúdo da posição de memória apontada por H:X

(posição $60), fazendo #$30 - #$30 = #$00, assim o flag

Z é aceso, indicando que o conteúdo da posiçãoapontada por H:Z é igual ao conteúdo do Acumulador.

0 ? ? 0 1 0

Page 55: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

55

CPX – ComPare XIMM, DIR, EXT, IX, IX1, IX2, SP1, SP2

Compara os valores do Registrador X com o operando, a partir da subtração entre o conteúdo dooperando e o conteúdo do Acumulador (sem alterá-los). Essa operação serve para valores

sinalizados ou não.Operação = X - M

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2Opcode A3 B3 C3 F3 E3 D3 9EE3 9ED3Operando ii dd hhll -- ff eeff ff eeffCiclos de BusClk 2 3 4 3 3 4 4 5Sinalizadores Alterados O que gera a alteração

V Setado se a operação resultar num estouro de limites no formato decomplemento de dois.

N É setado se o resultado da operação for maior que 0 (X >M)Z É setado se o resultado da operação for 0 (valores iguais)C É setado se o resultado da operação for menor que 0 (X <M)

Opcode Comando Explicação V H I N Z CA390 CPX #$90 Considerando que inicialmente H:X = #$00, a

instrução compara X com #$90, fazendo #$00 -#$90 = -#$90, assim o flag C é aceso, indicando que

o valor imediato #$90 é maior que o do que oconteúdo Registrador X.

0 ? ? 0 0 1

B370 CPX $70 Considerando que inicialmente H:X = #$1030 e $70= #$10, instrução compara X com #$10, conteúdoda posição $70, fazendo #$30 - #$10 = #$20, assim

o flag N é aceso, indicando que o conteúdo daposição $70 é menor que o do Registrador X.

0 ? ? 1 0 0

F3 CPX ,Xou

CPX X

Considerando que inicialmente H:X = #$0060 e $60= #$30, instrução compara X com #$30, que é o

conteúdo da posição de memória apontada por H:X(posição $60), fazendo #$60 - #$30 = #$30, assim o

flag N é aceso, indicando que o conteúdo daposição apontada por H:X é menor que o conteúdo

do Registrador X.

0 ? ? 1 0 0

Page 56: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

56

CPHX - ComPare H:XIMM, DIR, EXT, SP1

Compara o conteúdo do Registrador H:X com o conteúdo de 16 bits do operando. Caso aoperação envolva uma posição de memória de 8 bits, a instrução automaticamente selecionará a

posição seguinte, completando 16 bits ao operando (a posição indicada é a parte maissignificativa e a seguinte é a menos significativa).

Modo de Endereçamento IMM DIR EXT SP1Opcode 3E 75 65 9EF3Operando jjkk dd hhll ffCiclos de BusClk 4 5 5 5Sinalizadores Alterados O que gera a alteração

V Setado se a operação resultar num estouro de limites no formato decomplemento de dois.

N É setado se o resultado da operação for maior que 0 (H:X >M)Z É setado se o resultado da operação for 0 (valores iguais)C É setado se o resultado da operação for menor que 0 (H:X <M)

Opcode Comando Explicação V H I N Z C3E9000 CPHX

#$9000Considerando que inicialmente H:X = #$0000, a

instrução compara H:X com #$9000, fazendo #$0000- #$9000 = -#$9000, assim o flag C é aceso,

indicando que o conteúdo da posição $90 é maiorque o do par H:X.

0 ? ? 0 0 1

7575 CPHX $75 Considerando que inicialmente H:X = #$1030, $75 =#$10 e $76 = #$31, instrução compara H:X com#$1031, conteúdo da posição $75 na parte mais

significativa e da posição $76 na parte menossignificativa, fazendo #$1030 - #$1031 = -#$0001,assim o flag C é aceso, indicando que o conteúdodas posições $70:$71 é maior que o do par H:X.

0 ? ? 0 0 1

650150 CPHX $150 Considerando que inicialmente H:X = #$0A60, $150= #$0A e $151 = 60, instrução compara H:X com

#$0A60, da posição $150 na parte mais significativae da posição $151 na parte menos significativa,

fazendo #$0A60 - #$0A60 = #$0000, assim o flag Z éaceso, indicando que o conteúdo do par H:X é igual

ao conteúdo de $150:$151.

0 ? ? 0 1 0

Page 57: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

57

TST - TeSTINH (A), INH (X), DIR, IX, IX1, SP1

Testa o conteúdo do operando, modificando os bits Z e N do CCR de acordo com o valorcomparado.

Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1Opcode 3D 4D 5D 7D 6D 9E6DOperando dd -- -- -- ff ffCiclos de BusClk 4 1 1 3 4 5Sinalizadores Alterados O que gera a alteração

V Sempre apagado.N É setado se o bit 7 do operando estiver em 1.Z É setado se o conteúdo do operando for 0

Opcode Comando Explicação V H I N Z C4D TSTA Considerando que antes da instrução A = #$87, a

instrução irá setar o bit N, pois o bit maissignificativo do Acumulador está setado, e, apagar obit Z, pois, o conteúdo Acumulador difere de zero.

? ? ? 1 0 ?

7D TST ,X Considerando que antes da instrução H:X = #$0180e que $180 = #$00, a instrução irá setar o bit Z, poiso conteúdo da posição de memória apontado por

H:X ($180) é zero e apagar o flag N, pelo fato do bit

mais significativo da mesma posição estar apagado.

? ? ? 0 1 ?

BRA – BRanch AlwaysREL

Efetua o desvio do fluxo do programa. O operando da instrução é um endereço relativo de 8 bits

em formato de complemento de 2. Por isso, ele permite o desvio de valores até 127 posiçõesadiante e 128 posições para trás.

Modo de Endereçamento REL

Opcode 20Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

Opcode Comando Explicação V H I N Z C2004 BRA $E008 Desvia o programa para a posição E008, mas de

forma relativa. Considerando que a instrução BRA $E008 esteja na posição E004, o opcode de

desvio relativo será 04 (quatro posições a frente).

? ? ? ? ? ?

20F8 BRA $E018 Desvia o programa para a posição E018, mas deforma relativa. Considerando que a instrução

BRA $E018 esteja na posição E020, o opcode dedesvio relativo será 08 (oito posições para trás).

? ? ? ? ? ?

Observação Importante

Estas duas Instruções de desvio a seguir não precisam de instruções de comparação antes delas.

Page 58: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

58

BRN – BRanch NeverREL

Nunca desvia (equivale à instrução NOP, com três ciclos)Modo de Endereçamento REL

Opcode 21Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

Opcode Comando Explicação V H I N Z C21FC BRN $E015 Não desvia para a posição $E015. Se você considerar

que a instrução está na posição $E019, o opcode dainstrução será FC (em complemento de dois),

indicando o não-desvio do programa em -4 posições.

? ? ? ? ? ?

BEQ – Branch Equal (se Z = 1)REL

Desvia se o bit Z (Zero) igual a 1, ou seja o resultado da última operação foi igual a zero.Modo de Endereçamento REL

Opcode 27Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

Opcode Comando Explicação V H I N Z C270A BEQ INICIO É verificado o valor do flag Z, se for igual a 1, vai

para o endereço indicado pelo rótulo INICIO.? ? ? ? ? ?

BNE – Branch Not Equal (Se Z = 0)REL

Desvia se o bit Z( |Zero) igual a 0, ou seja o resultado da ultima operação foi diferente de zero.

Modo de Endereçamento REL

Opcode 26

Operando rr

Ciclos de BusClk 3

Sinalizadores Alterados Nenhum

Opcode Comando Explicação V H I N Z C

2608 BNE FIM O desvio irá ocorrer se a última operação resultar emum valor diferente de zero, ou seja, o Z = 0. (Observeque o fim está 08 posições a frente dessa instrução.)

? ? ? ? ? ?

Observação Importante

As duas instruções a seguir podem ser utilizadas após uma instrução de comparação, mas caso a igualdade seja em relação à zero e em comparação com o acumulador, não é preciso de uma instrução de comparação antes dessas instruções.

Page 59: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

59

BPL – Branch if Plus (Se N = 0)REL

Desvia se bit N (Negative) igual a 0, ou seja, o resultado da última operação é positivo.Modo de Endereçamento REL

Opcode 2AOperando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BMI – Branch if Minus (Se N = 1)REL

Desvia se bit N (Negative) igual a 1, ou seja, o resultado da última operação é negativo.Modo de Endereçamento REL

Opcode 2BOperando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BCC – Branch Carry Clear (Se C = 0)REL

Desvia se o bit C (Carry) é igual a 0.Modo de Endereçamento REL

Opcode 24Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BCS – Branch Carry Set (Se C = 1)REL

Desvia se o bit C (Carry) é igual a 1. (Idêntica a instrução BLO)Modo de Endereçamento REL

Opcode 25Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

Page 60: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

60

BHCC – Branch Half-Carry Clear (Se H = 0)REL

Desvia se o bit H (Half-Carry) é igual a 0.Modo de Endereçamento REL

Opcode 28Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BHCS – Branch Half-Carry Set (Se H = 1)REL

Desvia se o bit H (Half-Carry) é igual a 1.Modo de Endereçamento REL

Opcode 29Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BMC – Branch Mask-interruption Clear (Se I = 0)REL

Desvia se o bit I (máscara de Interrupções) é igual a 0 (ou seja, interrupções habilitados).Modo de Endereçamento REL

Opcode 2COperando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BMS – Branch Mask-interruption Set (Se I = 1)REL

Desvia se o bit I (máscara de Interrupções) é igual a 1 (ou seja, interrupções desabilitados).Modo de Endereçamento REL

Opcode 2DOperando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

Page 61: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

61

BHI – Branch High (Se Z e C igual 0)REL

Desvia se bit Z (Zero) igual a 0 e bit C (Carry) igual a 0 , ou seja , se maior que o valor dacomparação.

Modo de Endereçamento REL

Opcode 22Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BHS – Branch High or Same (Se C igual 0)REL

Desvia se o bit C (Carry) igual a 0 , ou seja, se maior ou igual a que o valor da comparação.Modo de Endereçamento REL

Opcode 24Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BLO – Branch Lower (Se C igual a 1)REL

Desvia se o bit C (Carry) igual a 1, ou seja , menor que o valor da comparação.Modo de Endereçamento REL

Opcode 25Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BLS – Branch Lower or Same (Se Z ou C igual 1)REL

Desvia se bit Z (Zero) igual a 1 ou bit C (Carry) igual a 1 , ou seja , se menor ou igual que o valorda comparação.

Modo de Endereçamento REL

Opcode 23Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

Observação Importante

As próximas instruções devem ser usadas em operações sem sinal. Isso após as instruções CMP, CPHX, CPX, SBC e SUB.

Page 62: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

62

BGT – Branch Greater Than (Se Z = 1 ou N = V)REL

Desvia se o bit Z (Zero) é igual a 1 ou bit N (Negative) igual a V (oVerflow), ou seja, se maior. Modo de Endereçamento REL

Opcode 92Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BGE – Branch Greater or Equal (Se N=V)REL

Desvia se o bit N (Negative) igual a V (oVerflow), ou seja, se maior ou igual. Modo de Endereçamento REL

Opcode 90Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BLT – Branch Less Than (Se N ≠ V) REL

Desvia se o bit N (Negative) é diferente a V (oVerflow), ou seja, se menor. Modo de Endereçamento REL

Opcode 91Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

Observação Importante

As próximas instruções devem ser usadas em operações sinalizadas (complemento de dois). Isso após as instruções CMP, CPHX, CPX, SBC e SUB

Page 63: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

63

BIL – Branch Irq LowREL

Desvia para a posição indicada se o pino IRQ estiver em nível 0.Modo de Endereçamento REL

Opcode 2EOperando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BIH – Branch Irq HighREL

Desvia para a posição indicada se o pino IRQ estiver em nível 1.Modo de Endereçamento REL

Opcode 2FOperando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BRSET – BRanch if bit SETDIR (b0), DIR (b1), DIR (b2), DIR (b3), DIR (b4), DIR (b5), DIR (b6), DIR (b7).

Desvia se o bit indicado, da posição de memória descrita no operando, estiver setado.Modo de Endereçamento DIR

(b0)DIR(b1)

DIR(b2)

DIR(b3)

DIR(b4)

DIR(b5)

DIR(b6)

DIR(b7)

Opcode 00 02 04 06 08 0A 0C 0EOperando ddrr ddrr ddrr ddrr ddrr ddrr ddrr ddrrCiclos de BusClk 5 5 5 5 5 5 5 5Sinalizadores Alterados NenhumOpcode Comando Explicação V H I N Z C020FF2 BRSET 1, IRQSC, MAIN Desvia para MAIN se o bit 1 do Registrador

IRQSC estiver setado.? ? ? ? ? ?

0A90FA BRSET 5, VAR, LOCAL Desvia para LOCAL se o bit 5 de VAR (posição$90 da memória) estiver setado.

? ? ? ? ? ?

Observação Importante

As próximas duas instruções envolvem o estado pino IRQ (só podem ser usadas se PTA5 estiver configurado para essa função)

Observação Importante

As últimas instruções de desvio relativo são as seguintes e se referem a bits de posições de páginas baixas da memória.

Page 64: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

64

BRCLR – BRanch if bit CLeaRDIR (b0), DIR (b1), DIR (b2), DIR (b3), DIR (b4), DIR (b5), DIR (b6), DIR (b7).

Desvia se o bit indicado, da posição de memória descrita no operando, estiver apagado.Modo de Endereçamento DIR

(b0)DIR

(b1)DIR

(b2)DIR

(b3)DIR

(b4)DIR (b5)

DIR (b6)

DIR(b7)

Opcode 01 03 05 07 09 0B 0D 0FOperando ddrr ddrr ddrr ddrr ddrr ddrr ddrr ddrrCiclos de BusClk 5 5 5 5 5 5 5 5Sinalizadores Alterados NenhumOpcode Comando Explicação V H I N Z C0580F3 BRCLR 2, $80, MAIN Desvia para MAIN (se o programa respeitar o

limite de memória em 8 bits) se o bit 2 daposição $80 da memória estiver apagado.

? ? ? ? ? ?

019004 BRCLR 0, VAR, LOOP Desvia para LOOP (se o programa respeitar olimite de memória em 8 bits) se o bit 0 de VAR

(posição $90 da memória) estiver apagado.

? ? ? ? ? ?

BSR – Branch Sub-RoutineREL

Desvia para a sub-rotina indicada. A instrução armazena na pilha os valores do PC, para o retornocorreto do fluxo do programa. A instrução RTS complementa essa instrução, fazendo o processo

inverso.PC = (PC) +2; Empilha (PCL); SP = (SP) – 1; Empilha (PCH); SP = (SP) – 1; PC = (PC) + rel

Modo de Endereçamento REL

Opcode ADOperando rrCiclos de BusClk 5Sinalizadores Alterados Nenhum

DBNZ – Decrease and Branch if Not ZeroDIR, IX, IX1, SP1

Decrementa o conteúdo da posição indicada no operando e desvia para posição apontada nooperando, caso o valor seja diferente de zero.

É análoga ao conjunto de instruções:DEC dd, CMP #0, BNE rr

Modo de Endereçamento DIR IX IX1 SP1Opcode 3B 7B 6B 9E6BOperando ddr

rrr ffrr ffrr

Ciclos de BusClk 7 6 7 8Sinalizadores Alterados Nenhum

Opcode Comando Explicação V H I N Z C3B80F2 DBNZ $80, LAB Decrementa o conteúdo da posição $80 e desvia

para LAB, se o resultado for diferente de zero.? ? ? ? ? ?

7B0C DBNZ X, RET Decrementa o conteúdo da posição de memóriaapontada por H:X e desvia para RET caso o resultado

seja diferente de zero.

? ? ? ? ? ?

Page 65: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

65

DBNZA – Decrease and Branch if Not Zero in AccumulatorINH

Decrementa o conteúdo de A e desvia para posição apontada no operando, caso o valor sejadiferente de zero.

É análoga ao conjunto de instruções: DECA, BNE rrModo de Endereçamento IMM

Opcode 4BOperando rrCiclos de BusClk 4Sinalizadores Alterados NenhumOpcode Comando Explicação V H I N Z C

4BF1 DBNZA MAIN Decrementa o conteúdo de A e desvia para MAIN seeste for diferente de zero.

? ? ? ? ? ?

DBNZX – Decrease and Branch if Not Zero in XINH

Decrementa o conteúdo de X e desvia para posição apontada no operando, caso o valor sejadiferente de zero.

É análoga ao conjunto de instruções: DECX, BNE rrModo de Endereçamento INH

Opcode 5BOperando rrCiclos de BusClk 4Sinalizadores Alterados NenhumOpcode Comando Explicação V H I N Z C

4BF1 DBNZA MAIN Decrementa o conteúdo de X e desvia para MAIN seeste for diferente de zero.

? ? ? ? ? ?

CBEQ – Compare and Branch if EQualDIR, IX+, IX1+, SP1

Compara o conteúdo do Acumulador com o conteúdo da posição de memória do operando e desvia paraa posição indicada, se forem iguais. Esse instrução é, na pratica, a união das instruções CMP e BEQ, mas

não altera sinalizadores e é executada mais rapidamente que as duas.

Modo de Endereçamento DIR IX+ IX1+ SP1

Opcode 31 71 61 9E61

Operando ddrr ee ffrr ffrr

Ciclos de BusClk 5 5 5 6

Sinalizadores Alterados Nenhum

Opcode Comando Explicação V H I N Z C

316001 CBEQ $60,POSICAO

Considerando que antes da instrução A = #$70 e que$60 = #$70, a instrução fará a comparação de A com o

valor #$70, conteúdo do operando. Como A é igualao valor do conteúdo do $60, o programa desviará

para a label POSICAO. Observe que o opcode indica olocal da posição da label relativa à posição.

? ? ? ? ? ?

Page 66: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

66

CBEQA – Compare and Branch if EQual AccumulatorIMM

Compara A com o valor imediato indicado e desvia se igual.Modo de Endereçamento IMM

Opcode 41Operando iirrCiclos de BusClk 4

Sinalizadores Alterados NenhumOpcode Comando Explicação V H I N Z C415004 CBEQA #$50,

PROXConsiderando que antes da instrução A = #$50, a

instrução fará a comparação de A com o valor #$50do operando. Como A é igual a esse valor, a instruçãoexecutará o desvio para o local no programa indicado

pela label PROX. Se a posição do PC for E004 e a dolocal indicado por PROX for E008, o desvio será um

valor relativo igual à posição final menos a apontadapelo PC, ou seja, E008 – E004 = 04, e esse valor é

indicado no opcode.

? ? ? ? ? ?

CBEQX – Compare and Branch if EQual XIMM

Compara X com o valor imediato indicado e desvia se igual.Modo de Endereçamento IMM

Opcode 51Operando iirrCiclos de BusClk 4

Sinalizadores Alterados NenhumOpcode Comando Explicação V H I N Z C5150F4 CBEQX #$00,

PROXConsiderando que antes da instrução H:X = #$0000, a

instrução fará a comparação de A com o valor #$00 dooperando. Como X é igual a esse valor, a instruçãoexecutará o desvio de A para o local no programa

indicado pela label PROX. Se a posição do PC for E008e a do local indicado por PROX for E014, o desvio será

um valor relativo igual à posição final menos a aapontada pelo PC, ou seja, E008 – E0014 = F4

(complemento de 2), e esse valor é indicado noopcode.

? ? ? ? ? ?

Page 67: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

67

3.3.3.1 Instruções de Salto de Endereço Absoluto

JMP – JuMPDIR, EXT, IX, IX1, IX2

Faz o salto do programa para determinada posição de memória. Observe que essa instrução ésemelhante a BRA, só que, ao invés de fazer um desvio relativo, ela faz um desvio absoluto para

a posição de memória indicada.PC = endereço de destino

Modo de Endereçamento DIR EXT IX IX1 IX2Opcode BC CC FC EC DCOperando dd eeff -- ff eeffCiclos de BusClk 3 4 3 3 4Sinalizadores Alterados NenhumOpcode Comando Explicação V H I N Z CCCE00A JMP $E00A Desvia o fluxo de execução do programa (PC) para

instrução indicada na posição $E00A.? ? ? ? ? ?

CCE00A JMP LABBLE Considerando que a label LABBLE esteja na posição$E00A, a instrução desvia o fluxo de execução do

programa (PC) para a instrução indicada na posição$E00A

? ? ? ? ? ?

DCE000 JMP E000 ,X Considerando que, antes da instrução, H:X = #$0060 eque $60 = #$0A, a instrução desvia o fluxo de

execução do programa (PC) para a instrução indicadana posição $0A, conteúdo da posição apontada por

H:X, adicionada de #$E000, assim, a instruçãoseguinte a ser executada é a que está indicada em

E00A

? ? ? ? ? ?

JSR – Jump Sub-RoutineDIR, EXT, IX, IX1, IX2

Faz o salto do programa para determinada sub-rotina. Observe que essa instrução é semelhantea BSR, só que, ao invés de fazer um desvio relativo, ela faz um desvio absoluto para a posição de

memória indicada. Assim como BSR, a instrução armazena na pilha os valores do PC, para oretorno correto do fluxo do programa. A instrução RTS realiza o processo inverso.

PC = (PC) + n (n = 1,2, ou 3); Empilha (PCL); SP = (SP) – 1; Empilha (PCH); SP = (SP) – 1; PC =endereço

Modo de Endereçamento DIR EXT IX IX1 IX2Opcode BD CD FD ED DDOperando dd eeff -- ff eeffCiclos de BusClk 5 6 5 5 6Sinalizadores Alterados NenhumOpcode Comando Explicação V H I N Z CCDE00A JSR LABBLE Considerando que a label LABBLE esteja na posição

$E00A, a instrução desvia o fluxo de execução doprograma (PC) para a instrução indicada na posição

$E00A e armazena na pilha os valores da posiçãoatual para o retorno adequado.

? ? ? ? ? ?

Page 68: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

68

RTS – ReTurn Sub-routineINH

Provoca o retorno do fluxo do programa ao ponto seguinte ao de onde ocorreu a chamada desub-rotina. Para isso, o endereço de retorno é retirado da pilha (primeiro a parte alta (PCH -

MSB) depois a parte baixa (PCL - LSB)), em seguida esse retorno é carregado no PC de forma queo programa retorna ao ponto seguinte à chamada da sub-rotina. Essa instrução realiza o

processo inverso das instruções BSR e JSR.SP = SP + 1; retira a PCH da pilha; SP = SP + 1; retira PCL da pilha

Modo de Endereçamento INH

Opcode 81Operando --Ciclos de BusClk 6Sinalizadores Alterados NenhumOpcode Comando Explicação V H I N Z C

81 RTS Retorna da sub-rotina atual. ? ? ? ? ? ?

RTI – ReTurn InterruptionINH

Provoca o retorno do fluxo do programa ao ponto seguinte de onde ocorreu a interrupção. Paraisso, o endereço de retorno é retirado da pilha (PCH) depois a parte baixa (PCL)), em seguida esse

retorno é carregado no PC de forma que o programa retorna ao ponto seguinte à chamada dainterrupção. Observe que antes de recuperar o PCH e o PCL, a instrução recupera da pilha os

valores salvos do CCR, A, X, nessa ordem, que também foram salvos na pilha.SP = SP + 1; retira CCR da pilha, SP = SP +1; retira A da pilha, SP = SP +1; retira X da pilha;

SP = SP + 1; retira PCH da pilha; SP = SP + 1; retira PCL da pilhaModo de Endereçamento INH

Opcode 80Operando --Ciclos de BusClk 9Sinalizadores Alterados Todos, que recuperam o seu estado antes da interrupçãoOpcode Comando Explicação V H I N Z C

80 RTS Retorna da sub-rotina atual. ? ? ? ? ? ?

3.3.4 Instruções de controle do processador

Essas são últimas instruções do conjunto. São utilizadas para controlar algumascaracterísticas do funcionamento da CPU do microcontrolador, forçando estados ao CCR ouexecutando a mudança de estado do programa.

Observação Importante

É imprescindível o uso dessa instrução na rotina de tratamento de interrupção, mas não se confunda essa instrução com a sigla RTI de Real Time Interruption (Rotina de Tratamento de

Interrupção)

Page 69: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

69

SEC – SEt CarryINH

Seta o sinalizador C do CCR.Modo de Endereçamento INH

Opcode 99Operando --Ciclos de BusClk 1Sinalizadores Alterados O que gera a Alteração

C Sempre SetadoOpcode Comando Explicação V H I N Z C

99 SEC Seta o flag C ? ? ? ? ? 1

CLC – CLear CarryINH

Apaga o sinalizador C do CCR.Modo de Endereçamento INH

Opcode 98Operando --Ciclos de BusClk 1Sinalizadores Alterados O que gera a Alteração

C Sempre ApagadoOpcode Comando Explicação V H I N Z C

98 CLC Apaga o flag C ? ? ? ? ? 0

SEI – SEt Interruption-maskINH

Seta o sinalizador I do CCR. (Desabilita todas as interrupções)Modo de Endereçamento INH

Opcode 9BOperando --Ciclos de BusClk 1Sinalizadores Alterados O que gera a Alteração

I Sempre SetadoOpcode Comando Explicação V H I N Z C

9B SEI Desabilita as interrupções, a partir desse momento,no programa.

? ? 1 ? ? ?

Page 70: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

70

CLI – CLear Interruption-maskINH

Seta o sinalizador I do CCR. (Habilita todas as interrupções)

Modo de Endereçamento INH

Opcode 9A

Operando --

Ciclos de BusClk 1

Sinalizadores Alterados O que gera a Alteração

I Sempre Apagado. (Habilita todas as interrupções)

Opcode Comando Explicação V H I N Z C

9A CLI Habilita as interrupções, a partir desse momento, noprograma.

? ? 0 ? ? ?

NOP – No OPeration INH

Não realiza nenhuma operação, apenas gasta um ciclo de relógio do programa.

Modo de Endereçamento INH

Opcode 9D

Operando --

Ciclos de BusClk 1

Sinalizadores Alterados Nenhum

Opcode Comando Explicação V H I N Z C

9D NOP Gasta um ciclo do BusClk ? ? ? ? ? ?

SWI – SoftWare InterruptionINH

Gera uma interrupção por software. Como qualquer outra interrupção, ela salva os conteúdos dePC+1, A, X e do CCR na pilha. Além disso, seta o sinalizador I, inibindo as demais interrupções.

Desvia, depois disso, o programa para o endereço apontado pelo vetor $FFFC, sendo esta ainterrupção de mais alta prioridade. Inclusive, ela não é mascarada (desabilitada) pelo

sinalizador I do CCR. Modo de Endereçamento INH

Opcode 83Operando --Ciclos de BusClk 11Sinalizadores Alterados O que gera a Alteração

I Sempre SetadoOpcode Comando Explicação V H I N Z C

83 SWI Provoca uma interrupção por software ? ? 1 ? ? ?

Page 71: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

71

STOP – STOPINH

Coloca a CPU em algum dos modos de parada (STOP3, STOP2 ou STOP1) dependendo daconfiguração dos Registrador SPMSC2. Essa função não pode ser executada, caso não esteja

habilitada. Essa configuração é feita no Registrador SOPT1. Modo de Endereçamento INH

Opcode 8EOperando --Ciclos de BusClk >=2Sinalizadores Alterados O que gera a Alteração

I Sempre Apagado. (Habilita todas as interrupções)Opcode Comando Explicação V H I N Z C

8E STOP Coloca a CPU em algum dos modos de parada. ? ? 0 ? ? ?

WAIT – WAITINH

Coloca a CPU no modo de espera (WAIT mode).Modo de Endereçamento INH

Opcode 8FOperando --Ciclos de BusClk >=2Sinalizadores Alterados O que gera a Alteração

I Sempre Apagado. (Habilita todas as interrupções)Opcode Comando Explicação V H I N Z C

8F WAIT Coloca a CPU no modo de espera de interrupção. ? ? 0 ? ? ?

3.4 Diretivas do compilador Assembly

As diretivas do compilador são pseudocódigos que orientam o montador Assembler

do compilador no “encaixe” das instruções na memória do microcontrolador. Elas não possuemopcodes, não são instruções, por isso, muito cuidado ao executá-las.

Segue a lista das diretivas. Os exemplos aqui servem apenas para exemplificar asintaxe, na lista de exemplos de programas eles estarão comentados e aplicados.

Nome da diretiva: BASE – BASE Descrição: Define uma base numérica para as constantes do programa.

Um detalhe importante, é que mesmo utilizando BASE 16, é necessárioutilizar a simbologia #$ para números terminados com D, para que o

montador não interprete como um número decimal.Sintaxe: BASE [n]

[n] = 2, 8, 10 ou 16 (Bases numéricas)Exemplo: BASE 16

Page 72: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

72

Nome da diretiva: DC – Define Constant

Descrição: Define uma constante na memória.A quantidade de memória alocada depende do tamanho da constante.

Sintaxe: [nome]: DC .[tamanho] [expressão]DC.B ou FCB indica a alocação de 1 byte

DC.W ou FDB indica a alocação de 2 bytes

DC.L ou FQB indica a alocação de 4 bytes

Exemplos: STRING: DC.B “string de teste”SOL: DC.B $0A ;não use #$ apenas $

Nome da diretiva: DCB – Define Constant Block

Descrição: Solicita ao montador que ele preencha um bloco da memória com os valoresconstantes designados pela instrução

Sintaxe: [nome]: DCB .[tamanho] [contagem], [valor]DCB.B indica a alocação de 1 byte vezes o valor da contagemDCB.W indica a alocação de 2 bytes vezes o valor da contagemDCB.L indica a alocação de 4 bytes vezes o valor da contagem

Exemplos: DCB.W 10, $17 ; indica um bloco de 10*2 bytes preenchido com #$17

Nome da diretiva: DS – Define Space

Descrição: Reserva a memória para variáveis. O conteúdo da memória não é inicializadoe a quantidade de memória alocada é igual ao tamanho vezes a contagem.

Sintaxe: [nome]: DS .[tamanho] [contagem]DS.B ou RMB indica a alocação de 1 byte

DS.W ou RMD indica a alocação de 2 bytes

DS.L ou RMQ indica a alocação de 4 bytes

Exemplos: VAR: DS.B 2; define VAR com 2 bytes de memória.

Nome da diretiva: IF/ELSE/ENDIFDescrição: Diretivas que criam uma estrutura condicional ao programa. Assim, será

compilado o bloco de instruções escrito após IF, se a proposta for verdadeira.Caso contrário, será compilado o o bloco de instruções escrito após ELSE. A

diretiva ENDIF encerra a estrutura condicional, as instruções que asucederem serão compiladas normalmente.

Sintaxe: IF [condição de igual da (definida pela diretiva EQU)] [Comandos Assembly]ELSE [Comandos Assembly]ENDIF

Exemplos: IGUAL: EQU $40 IF IGUAL = 40 CLRA ELSE INCX ENDIF INCA

Page 73: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

73

Nome da diretiva: EQU - EQUality Descrição: Gera uma igualdade entre uma nomeação e um valorSintaxe: [nome]: EQU [expressão]Exemplos: VAL: EQU $70

ZERO: EQU 0Como renomearem Assembly

(código deprograma):

MOTOR: EQU 1LED: EQU 2::BSET MOTOR, PTBD ;PTB1 é associado a um motorBSET LED, PTBD ;PTB2 é associado a um LED

Nome da diretiva: INCLUDE – INCLUDE Descrição: Inclui o arquivo indicado na expressão no texto do programa. O arquivo

externo é inserido no ponto em que a diretiva estiver localizada.Sintaxe: INCLUDE 'nome_arquivo'Exemplos: INCLUDE 'MC9S08QG8.inc'

Nome da diretiva: MACRO/ENDMDescrição: Gera uma macro instrução (conjunto de instruções), que inicia com o

comando MACRO e se encerrá com o comando ENDM. Para a macroinstrução ser usada, ser chamada pelo nome, como se fosse uma instrução

comum.Sintaxe: [nome]: MACRO

ENDM

Exemplos: DES_COP: MACRO LDA SOPT1 AND #127 STA SOPT1 ENDM

Nome da diretiva: ORG - ORiGin

Descrição: Especifica o endereço da montagem das instruções, ou seja, o compilador iráimplementar o código no microcontrolador nos endereços de memória

seguintes aos designados por essa diretiva.Sintaxe: ORG [endereço]Exemplos: ORG $E000

Nome da diretiva: SECTION – SECTION Descrição: Declara uma seção de código realocável na memória, ou seja, cria um

conjunto de símbolos que poderá ser realocado por outro software ao longoda link-edição (processo de criação do programa).

Existem três tipos de seção:-Seção de código: contém ao menos uma instrução Assembly;

Page 74: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

74

-Seção de constantes: contém somente diretivas DC ou DCB;-Seção de dados: contém pelo menos uma diretiva DS. Observe que umaseção vazia, sem declarações, também é considerada uma seção de dados.

O especificador SHORT permite declarar uma seção que utiliza o modo deendereçamento direto.

Sintaxe: [nome]: SECTION {SHORT} Exemplos: DADOS: SECTION SHORT

VAR1: DS.B 1 VAR2: DS.B 2

3.5 Sub-rotinas

São um conjunto de instruções localizado fora do escopo do programa principal.Funcionam como as funções na linguagem C, ou seja, podem ser chamadas para realizaremdeterminada operação, servem para deixar o código mais organizado e evitar desperdícios dememória. Além disso, normalmente, são usadas quando é necessário realizar repetidas vezes amesma operação.

As sub-rotinas são mais vantajosas para a memória FLASH que a diretiva MACRO, quetambém cria séries de instruções. Isso, porque as sub-rotinas têm seu código gerado uma únicavez, enquanto a macro-instrução é compilada cada vez que é chamada.

Há duas instruções que fazem a chamada de sub-rotina, as instruções BSR (chamadarelativa) e JSR (chamada absoluta). A primeira tem um opcode de 2 bytes (pois possui um modode endereçamento relativo) quando executada, mas realiza uma chamada a um espaço limitadodo programa. Já a outra possui um opcode de 3 bytes (pois faz a chamada de um valor deendereço absoluto), contudo, pode ser usada para atingir qualquer endereço dentro da memóriado microcontrolador.

Confira os exemplos de sub-rotinas na seção exemplos desse capítulo.

3.6 Cão de Guarda - Watchdog ou COP

O COP é um temporizador interno do microcontrolador e pode ser utilizado para gerarum reset na CPU, caso aconteça um funcionamento inadequado no sistema.

Ele funciona da seguinte maneira: primeiramente é selecionada a fonte de clock doCOP (Registrador SOPT2) e, em seguida, escolhe-se o número de ciclos para acontecer o reset

(Registrador SOPT1).Quando está ativo, o programador deve incluir funções que gerem um reset na

contagem do COP. Caso esse reinício de contagem não aconteça, o COP irá provocar um reset naCPU, pois entende que o programa está trabalhando de forma anômala. Para realizar esse reset

no contador do COP, é preciso realizar a escrita de um valor qualquer no registrador SRS.O COP é temporariamente desativado quando a CPU está no modo de depuração.

Além disso, para programadores iniciantes, é recomendável a desativação do Watchdog domicrocontrolador, no início de cada programa.

Page 75: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

75

3.7 Registradores de Opções do sistema

Agora que conhecemos as instruções da linguagem Assembly, elas serão utilizadaspara programar Registradores do microcontrolador.

------------------------------------------3.7.1 Registrador SOPT1 - System OPTions register 1

------------------------------------------O primeiro deles, o registrador SOPT1 é sempre configurado nos programas Assembly,

por isso é o primeiro a ser alvo de estudo deste livro.

Endereço: 0x1802 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: COPE COPT STOPE ---- ---- ---- BKGPE RSTPE

Leitura(R)/Escrita(W): R/W R/W R/W ---- R R R/W R/W

Após o reset: 1 1 0 1 0 0 1 0

Configuração usual: 0 1 0 1 0 0 1 0

BIT0 - RSTEPE - reset Enable Pin EnableHabilita a função reset do pino 0 do microcontrolador.0 - pino na função de Entrada/Saída ou outra.1 - pino operando na função de reset externo do programa.

BIT1 - BKGPE - BacKGroud Pin EnableHabilita a função backgroung do pino 1 do microcontrolador.0 - função de depuração do pino desabilitada.1 - função de depuração do pino habilitada.

BIT5 - STOPE - STOP EnableHabilita a instrução STOP do microcontrolador.0 - modo STOP desabilitado, a instrução STOP não será reconhecida pelo compilador.1 - modo STOP habilitado.

BIT6 - COPT - COP TimeoutSeleção de contagem do timeout (tempo para ele começar a funcionar após o reset)

do COP.0 - Acontecerá um reset após 8 192 clocks de barramento.1 - Acontecerá um reset após 262 144 clocks de barramento.

Observação Importante

Os registradores que controlam as opções do sistema (SOPT1 e SOPT2) só podem ser programados uma única vez depois do reset do programa.

Page 76: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

76

BIT7 - COPE - COP EnableHabilita o Watchdog (COP) do microcontrolador.0 - COP desativado.1 - COP ativado.

------------------------------------------ 3.7.2 Registrador SOPT2 - System OPTions register 2

------------------------------------------

Endereço: 0x1803 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: COPCLKS ---- ---- ---- ---- ---- IICPS ACIC

Leitura(R)/Escrita(W): R/W ---- ---- ---- ---- ---- R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 0 0 0 0 0 0 0 0

BIT0 - ACIC - Analog Comparator Imput Capture enablePino responsável por conectar a saída do comparador à entrada de captura do TPM.0 - Saída do Comparador Analógico desvinculada do TPM.1 - Saída do Comparador Analógico vinculada ao canal 0 do TPM.

BIT1 - IIC Pin SelectSeleciona quais pinos serão das conexões SDA e SCL do modo de conexão serial I²C.0 - sinal do SDA no pino da PTA2 e da SCL no pino da PTA3.1 - sinal do SDA no pino da PTB6 e da SCL no pino da PTB7.

BIT7 - COP clock SelectSeleciona a fonte de clock do COP.0 - Fonte vinda do oscilador interno de 1kHz.1 - Fonte vinda do clock interno do barramento (FBUS).

3.8 Programando em Assembly

Com o conhecimento das instruções Assembly, é possível gerar um lista ordenada decomandos, que por definição, é nomeada programa.

O programa basicamente se constitui de duas partes, a parte de configurações e aparte de lógica. A primeira para serve para determinar quais periféricos e processamentosinternos estarão ativos no microcontrolador. A segunda, serve para determinar como estesperiféricos se comportarão com o meio.

Evidentemente, essa estruturação é feita quando está-se programando o chip. Épossível construir programas que não tenham significado físico (ou seja, o hardware interagir como meio).

Observe que a linguagem Assembly é diferente das linguagens de alto nível, como o C.

Page 77: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

77

No microcontrolador, o programa realiza interações com o usuário através de níveis lógicos (ouanalógicos) nas interfaces pré-programadas do microcontrolador.

Outro tópico importante é que, ao final de cada programa, é preciso indicar o local emque ele iniciará a execução do programa após o reset do microcontrolador. Para isso, usa-se adiretiva ORG, na posição $FFFE, que é o endereço do vetor reset (isso será visto com maisdetalhes no capítulo 5). O vetor possui sempre uma constante alocada (através da diretiva DC.W),cuja constante é a posição de início do programa. Usualmente, o rótulo que marca o início doprograma é chamado INICIO, assim, basta trabalhar com a constante INICIO, até porque, nemsempre, o início do programa coincide com o início da memória FLASH, por isso, seria perigosoalocar sempre a constante $E000.

3.9 Exemplos

3.9.1 Exemplo 1 – Contagem: - Criar um programa em Assembly que faça a contagem até o valor 20.Solução:

Para fazer uma contagem, a ideia principal é incrementar unitariamente um valor efazer a comparação com o valor a ser atingido, caso seja menor, deve-se repetir a operação.Observe essa sequência lógica na forma de instruções Assembly:

Endereço Opcode Rótulo Instruções/Diretivas ExplicaçãoORG $E000 ;direciona o montador ao local

onde o programa será criado$E000 4F INICIO: CLRA ;limpa o Acumulador$E001 4C LOOP: INCA ;incrementa o Acumulador$E002 A114 CMP #20 ;compara com vinte

$E004 25FB BLO LOOP ;desvia se for menor para oLOOP, fazendo um novo ciclo até que o valor no Acumuladoralcance 20

$E006 20F8 BRA INICIO ;retorna para o início, parareiniciar a contagem

ORG $FFFE ;direciona a posição damemória para a área de vetores(no caso o reset)

$FFFE RESET: DC.W INICIO ;inicia a compilação doprograma no local rotuladoINICIO

3.9.2 Exemplo 2 – Programação de Variáveis: - Criar um programa que chame uma sub-rotina para incrementar até dez o Acumulador. E façaisso para armazenar esse valor nas variáveis VAR1, VAR2 e VAR3.Solução:

A lógica de incrementa é semelhante à anterior, contudo, teremos de aprender doisconceitos ainda não explorados, em relação a sintaxe do Assembly: declarar variáveis e utilizarsub-rotinas.

A criação das variáveis é feita na memória RAM (volátil), ou seja, entre as posições$0060 e $025F do mapa de memória do microcontrolador. Para acessar essa faixa da memória énecessário utilizar a diretiva ORG e para declarar uma variável é preciso utilizar a diretiva DS eexplicitar o número de bytes ocupado pela variável. Além de criá-las e declará-las, é necessáriofazer a inicialização. Essa inicialização deve acontecer na memória FLASH, pois é uma parteintegrante do programa, e ocorre com a instrução CLR (iniciar com zero) Isso se deve ao fato de

Page 78: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

78

que as variáveis possam estar carregadas com algum tipo de “lixo” lógico, ou seja, com valoresaleatórios de usos anteriores do microcontrolador.

A sub-rotina deve, também, ser criada em um local à parte do programa, o PC nãopode "chegar" na sub-rotina sequencialmente. A chamada de sub-rotina pode ser feita por duasinstruções, JSR (chamada absoluta) e BSR (chamada relativa). Como o programa é pequeno (nãopossui mais do que 127 posições na memória FLASH), optaremos pela instrução BSR, visto que aJSR ocupa 1 byte a mais na memória. Lembre-se que toda sub-rotina deve encerrar-se com ainstrução RTS.

END Opcode VARIÁVEL DIRETIVA Explicação

ORG $0060 ;direciona o montador ao localonde as variáveis serãocriadas (memória RAM)

$0060 VAR1: DS.B 1 ;declaração de VAR1, VAR2 eVAR3

$0061 VAR2: DS.B 1

$0062 VAR3: DS.B 1

Rótulo Instruções/Diretivas

ORG $E000 ;direciona o montador ao localonde o programa será criado(memória FLASH)

$E000 3F60 INICIO: CLR VAR1 ;inicialização das variáv eis

$E002 3F61 CLR VAR2 ; VAR1 = VAR2 = VAR3 = 0

$E004 3F62 CLR VAR3

$E006 AD08 BSR INCREM ;chamada da subrotina

$E008 B760 STA VAR1 ;carrega VAR1, VAR2 e VAR3 com;o valor do Acumulador

$E00A B761 STA VAR2

$E00C B762 STA VAR3

$E00E 20F0 BRA INICIO ;desvia para o inicio,impedindo a ida sequencial doprograma para a sub-rotina

$E010 4F INCREM: CLRA ;apaga o Acumulador

$E011 4C LOOP: INCA ;incrementa o Acumulador

$E012 A10A CMP #10 ;compara com dez

$E014 25FB BLO LOOP ;desvia se for menor

$E016 81 RTS ;retorna da subrotina

ORG $FFFE ;direciona a posição damemória para a àrea de vetores(no caso o reset)

$FFFE RESET: DC.W INICIO ;inicia a compilação doprograma no local rotuladoINICIO

Page 79: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

79

3.9.3 Exemplo 3 – Desativar o COP: - Criar um programa em Assembly que desative o COP.Solução:

Nesse programa, pela primeira vez, configuraremos o Registrador, o SOPT1, paradesativarmos o COP, prática que se tornará comum nos próximos exercícios.

Para fazer isso, basta perceber que se o BIT7 desse Registrador estiver apagado, o COPserá desativado, independente dos valores dos demais bits. Dessa forma, poderíamos pensar emusar um BCLR 7, SOPT1, para zerarmos, mas esse Registrador é de página alta, e essa instruçãonão poderá ser utilizada.

Por isso, será preciso fazer uma pequena lógica booleana. Você não precisa sabercomo devem ser preenchidos os demais bits, basta que apague-se o BIT7. Assim, a operação ANDseria adequada visto que, Y & 0 = 0 e Y & 1 = Y. Precisamos de 0 no bit mais significativo e 1 nosdemais bits, para termos o número adequado a nossa lógica, observe:

Bits BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Valor inicial SOPT1 1 X X X X X X X

Valor para operação AND 0 1 1 1 1 1 1 1

Valor desejado SOPT1 0 X X X X X X X

Veja que o número binário 0111 1111, é equivalente ao hexadecimal 7F e ao decimal127. O programa Assembly ficará assim:

END Opcode Rótulo Instruções/Diretivas Explicação

ORG $E000 ;direciona o montador ao localonde o programa será criado

$E000 C61802 INICIO: LDA SOPT1 ;logica de desativar o COP

$E003 A47F AND #$7F

$E005 C71802 STA SOPT1

$E008 20FE FIM: BRA FIM ;ciclo infinito queestaciona ;o programa em FIM

ORG $FFFE ;direciona a posição damemória para a área devetores (no caso o reset)

$FFFE RESET: DC.W INICIO ;inicia a compilação doprograma no local rotuladoINICIO

Page 80: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

80

3.10 Resumo do Capítulo

A Linguagem Assembly é composta de instruções hexadecimais que são codificadasem mnemônicos, para facilitar sua identificação. Assim, está associado um “opcode” hexadecimala cada instrução.

Além das instruções, existem outros elementos de programação. Há então Rótulos(labels), Diretivas, os Operandos das instruções e os Comentários de um programa.

As instruções são endereçadas de sete modos diferentes, são eles: Implícito, Imediato,Direto, Extendido, Relativo, Memória para memória e Indexado. Além disso, elas são classificadasda seguinte forma:

• Instruções de movimentação de bits e de dados;

• Instruções de operações lógicas e aritméticas;

• Instruções de teste e desvio; e

• Instruções de controle do processador.Um bom programa se utiliza de sub-rotinas para organizar melhor seu espaço, além de

utilizar os demais recursos disponíveis. Além disso, para os programas desenvolvidos nessadisciplina é necessário desativar o COP, ou seja, o sistema de segurança do dispositivo. Abaixosegue o “esqueleto” da programação, ou seja, um programa pré-formatado com as partesfundamentais de direcionamento da memória. ; Inclui a biblioteca onde existem as definicoes do microcontrolador INCLUDE 'MC9S08QG8.inc'

; Inicio da area de variaveis ORG $0060;; Inicio do codigo ORG $e000

; *********************** O PROGRAMA INICIA AQUI *************************** INICIO:

;************************************************** ************;* Vetor de interrupcoes *;************************************************** ************ ORG $FFFE

reset: DC.W INICIO

Page 81: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

81

3.11 Exercícios

1- Escreva um programa em Assembly que armazena $34 no Acumulador e, a seguir, envia para aposição $0080 da memória.

2- Limpe a posição $0090 da memória.

3- Escreva um programa que limpa a memória entre os endereços $0080 e $0100.

4- Coloque $FF na área de memória compreendida entre $0080 e $0100.

7- Escrever um programa que calcule $23 + $12 – $56.

8- Escrever um programa que execute a multiplicação dos decimais 12 e 15.

9- Escreva um programa que calcule 15 /5.

10- Escreva um programa que lê o conteúdo do Acumulador previamente carregado. A seguir,testa se o “bit” menos significativo é igual a 1. Em caso positivo, aciona um LED na porta de saídaA ($0000), caso contrário, aciona 2 LEDs na porta de saída A ($0000).

11- Os “bits” 3, 4 e 5 da porta de saída A ($0000) são usados para comandar as três lâmpadas deum semáforo. Escreva um programa que execute a tarefa. Crie um delay para cada lâmpada.

12- Escreva um programa que usa a porta de saída como um contador decrescente que, iniciandoem $FF, pára ao atingir o estado $00.

13- Escreva um programa que usa a porta de saída como um contador decrescente que, iniciandoem $FF, pára ao atingir o estado $AA.

14- Escreva um dado na posição $0080 e obtenha o complemento de 1. A seguir, coloque oresultado na porta de saída B ($0001).

15- Desloque o conteúdo do Acumulador para a esquerda em 1 “bit”. Envie o resultado para aporta de saída B ($0001).

16- Entre com um dado no Acumulador e desloque para a esquerda o seu conteúdo em 3 “bits”.Envie o resultado para a porta de saída B ($0001).

17- Escreva dois dados D1 e D2, colocando-os em posições consecutivas de memória. Escolha, aseguir, o maior deles e envie para a porta de saída B ($0001).

18- Calcule a soma de uma série de números. O comprimento da série deve ser previamentearmazenado na posição $0080. O início da série deve ser armazenado na posição $0081. Envie oresultado para a porta de saída B ($0001).

19- Considerando o programa a seguir com os valores iniciais, determine os valores dosregistradores e memória ao longo do programa até o programa atingir o rótulo FIM.

Page 82: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

82

………….…… INICIO: LDX #$A0

…..................…LOOP: JSR SUB1….............................. INCA….............................. STA X…...................... FIM: BRA FIM…......................SUB1: PSHA…............................. ADD #$08…............................... STA $80 ……………………..... MOV $80,X+…............................... PULA…............................... JSR SUB2

…................................ RTS…......................SUB2: PSHA…................................ ADD #$F0

………………….......... STA $80 ……………………........ MOV $80,X+……………………........ PULA

….............................. RTS

Valores iniciais:HX= 0000 A = 00 $80=00$A0 à $A4=00 SP=FF PC=E000 Valores Registradores/memória/ pilha:A= HX=SP=

PC=

$80= $A0= $A1= $A2 =$A3 = $A4 =$FF= $FE= $FD=$FC= $FB=

20- Considerando o código Assembly a seguir com os valores iniciais, determine os valores dosregistradores e memória ao longo do programa até o programa atingir o rótulo FIM.

……….…… …. MAIN: LDHX #$0090….............................. MOV #%00000001,$80…............................... JSR SL…................................JSR SR….............................. PSHX…........................... BRA FIM……………………....SL: MOV $80,X+…............................. LSL $80….............................. CPX #$92…............................... BLO SL…............................... RTS…..........................SR: MOV $80,X+….............................. LSR $80…............................... CPX #$94…................................ BLO SR….................................RTS…..........................FIM: CLRA

Valores iniciais:HX= 0000 A = 00 $80=5 SP=FF PC=E000 Valores Registradores/memória/ pilha:A= HX=SP=

PC=

$80= $90= $91= $92 = $93 = $94 =$FF= $FE= $FD=$FC= $FB=

Page 83: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

83

Capítulo 4: Entradas e SaídasDigitais

A partir de agora, o livro abordará os periféricos do microcontrolador HCS08QG8.Nesse capítulo, serão estudadas as portas de entrada e saída digitais, pull-up e os diversosregistradores envolvendo as entradas e saídas digitais.

4.1 Periféricos do microcontrolador........................844.2 Portas de Entrada e Saída..................................844.3 Configuração das portas de entrada e saída......854.3.1 Registradores PTAD e PTBD............................854.3.2 Registradores PTADD e PTBDD.......................864.3.3 Registradores PTAPE e PTBPE.........................86

4.3.4 Registradores PTASE e PTBSE..........................884.3.5 Registradores PTADS e PTBDS.........................884.4 Programando Portas em Assembly....................894.5 Exemplos............................................................894.6 Resumo do Capítulo...........................................914.7 Exercícios...........................................................92

”A boa reputação vale mais que grandes riquezas; desfrutar de boa estima

vale mais que prata e ouro.” Provérbios 22:1

Page 84: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

84

4.1 Periféricos do microcontrolador

Os periféricos são módulos internos do microcontrolador que se comunicam com omeio externo a ele. Através dos periféricos, o microcontrolador é capaz retirar as informações domeio, como sinais de liga desliga ou ainda grandezas físicas como temperatura, luminosidade oupressão para depois de processá-las, e cumprir sua finalidade ativando ou desativando as saídas,enviando sinais para o computador ou ainda controlando a potência de uma carga.

4.2 Portas de Entrada e Saída Digital

O primeiro grupo periférico a ser estudado será a comunicação de portas de entradae saída de sinais digitais.

Esse grupo faz com que o microcontrolador receba ou gere níveis lógicos de tensão, deou para um meio. Com isso, é possível, por exemplo, ligar equipamentos, acender LED's, dispararalarmes, entre outros, através da leitura de sensores, botões, etc.

Seu princípio de funcionamento é simples. Através das portas de entrada, o chip

recebe dados, e, através das portas de saída, ele gera dados.Esse grupo ocupa todos os pinos do microcontrolador, à exceção dos pinos de

alimentação e de referência. Verifique o esquema de pinos do capítulo 2 para perceber isso.Existem 12 pinos que são de entrada e saída, um de entrada exclusiva e outro de saída exclusiva,totalizando 14 dentre 16.

Além disso, esse grupo está dividido em dois tipos de portas: portas A e portas B. Oprincípio de funcionamento dos Registradores de cada tipo é idêntico. O grupo A é constituído deseis portas, sendo quatro delas (PTA0, PTA1, PTA2 e PTA3) de entrada e saída, uma sendo saídaexclusiva (PTA4) e uma sendo entrada exclusiva (PTA5). Já o grupo B é constituído de oito portas,todas de entrada e saída (PTB0, PTB1, PTB2, PTB3, PTB4, PTB5, PTB6, e PTB7).

A Figura 4.1 mostra um diagrama básico da estrutura de uma porta do HCS08QG8:

Figura 4.1 – Diagrama básico de uma porta do HCS08QG8 (fonte: Datasheet HCS08QG08)

Observação Importante

Lembrem-se que os níveis lógicos não correspondem necessariamente ao valor de tensão indicada, nível 1 não indica 1 Volt (mas sim, 3,3 Volt, no caso deste microcontrolador).

Page 85: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

85

4.3 Configuração das portas de entrada e saída

Todos os periféricos do microcontrolador devem ser configurados, para que o chip

"entenda" o que determinado pino está projetado a executar. Essa configuração é feita através deda escrita em Registradores. Embora, todos os Registradores possuam um valor default (padrão)ao ser realizado um power on reset (ao ligar o chip ou reset), é uma boa técnica configurar todosos periféricos utilizados.

Conforme descrito no item 4.2, esse periférico pode ser configurado por dois gruposde cinco Registradores (um para as portas do tipo A e outro para as portas do tipo B). A seguir,tem-se o detalhamento de cada um deles:

------------------------------------------4.3.1 Registradores PTAD e PTBD - PorT A (B) Data

------------------------------------------Esses Registradores são responsáveis por armazenar os valores dos níveis lógicos das

portas de todas os pinos configurados como portas (A ou B). Assim, para conhecer o valor queestá vindo do meio externo a uma porta de entrada é preciso ler esses Registradores e, paraenviar um nível digital para o meio externo, através de uma porta, é preciso escrever nessesRegistradores.

Endereço: 0x0000 - Página Direta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ---- ---- PTAD5 PTAD4 PTAD3 PTAD2 PTAD1 PTAD0

Leitura(R)/Escrita(W): R R R W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0002 - Página Direta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: PTBD7 PTBD6 PTBD5 PTBD4 PTBD3 PTBD2 PTBD1 PTBD0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - PTXDn - PorT X Data nConteúdo do nível lógico do pino configurado como porta de entrada ou saída.0 - Porta está recebendo ou enviando nível lógico 0.1 - Porta está recebendo ou enviando nível lógico 1.

Observação Importante

A porta PTA4 só funciona como saída lógica (é um bit de escrita), enquanto a porta PTA5 só funciona na função de entrada digital (é um bit de leitura)!

Page 86: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

86

------------------------------------------4.3.2 Registradores PTADD e PTBDD - PorT A (B) Data Direction

------------------------------------------Esses Registradores são capazes de configurar os pinos como porta de entrada ou

porta de saída.

Endereço: 0x0001 - Página Direta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ---- ---- PTADD5 PTADD4 PTADD3 PTADD2 PTADD1 PTADD0

Leitura(R)/Escrita(W) R R R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0003 - Página Direta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: PTBDD7 PTBDD6 PTBDD5 PTBDD4 PTBDD3 PTBDD2 PTBDD1 PTBDD0

Lei.(R)/Esc.(W) R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - PTXDDn - PorT X Data Direction nConfiguração do pino como porta de entrada ou saída.0 - Porta configurada como entrada.1 - Porta configurada como saída.

Lembre-se que após o power on reset (ao ligar o chip ou reset), por default (padrão) omicrocontrolador vem com todos os seus pinos configurados como entradas digitais.

------------------------------------------4.3.3 Registradores PTAPE e PTBPE - PorT A (B) pull-up Enable

------------------------------------------Esses Registradores configuram o pull-up das portas. Pull é uma expressão da

eletrônica digital que indica promover a manutenção de um determinado nível de tensão, paraevitar flutuações em uma dada entrada do circuito. Portanto, para o chip não receber informaçõesque ele não saiba distinguir em qual nível lógico está, há a necessidade de criar uma estruturapull-up (mantém nível 1) ou pull-down (mantém nível 0).

Este microcontrolador disponibiliza para as portas de entrada digital apenas pull-up

interno, não disponibilizando pull-down. Se for necessário, o usuário pode criar um pull-up ou

Observação Importante

Embora, os BITS 4 e 5 do registrador PTADD sejam de leitura e escrita, configurar esses bits não surte nenhum efeito, visto que essas portas já sejam exclusivamente entrada (PTA5) e saída (PTA4).

Page 87: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

87

pull-down externo, em um projeto. O pull-up normalmente é feito com um resistor, conectadoconforme o esquema da figura 4.2.

Figura 4.2 – Pull-up externo

Endereço: 0x1840 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: -- -- PTAPE5 PTAPE4 PTAPE3 PTAPE2 PTAPE1 PTAPE0

Lei.(R)/Esc.(W): R R R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x1844 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: PTBPE7 PTBPE6 PTBPE5 PTBPE4 PTBPE3 PTBPE2 PTBPE1 PTBPE0

Lei.(R)/Esc.(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - PTXPEn - PorT X D Pull-up Enable nHabilita ou desabilita o pull-up interno (apenas em pinos configurados como entrada)0 - pull-up desabilitado.1 - pull-up habilitado.

Observação Importante

Não há efeito nenhum caso escolher nível 1 na porta PTA4 (exclusivamente saida).

Page 88: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

88

------------------------------------------4.3.4 Registradores PTASE e PTBSE - PorT A (B) Slew-rate Enable

------------------------------------------Os registradores PTASE e PTBSE habilitam o controle de Slew-rate das saídas do

microcontrolador. Slew Rate (velocidade de varrimento) é definido como a velocidade de respostada saída de um amplificador a uma variação de tensão na entrada, este valor na teoria deveria serinfinito, ou seja, o valor da saída deveria acompanhar a entrada instantaneamente. Essa entradanão é a entrada digital do microcontrolador, mas sim, o sinal enviado pelo mesmo para a suasaída.

Logo, conclui-se que quanto maior for o valor deste parâmetro melhor será a respostada saída do amplificador, ou seja, se um pino está ativo nesse registrador, ele irá aumentar o Slew

Rate, diminuindo assim a taxa de emissão eletromagnética (EMI). Esse recurso deve ser usadoquando necessita-se de uma saída com chaveamento rápido.

Endereço: 0x1841 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ---- ---- PTASE5 PTASE4 PTASE3 PTASE2 PTASE1 PTASE0

Leitura(R)/Escrita(W): R R R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x1845 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: PTBSE7 PTBSE6 PTBSE5 PTBSE4 PTBSE3 PTBSE2 PTBSE1 PTBSE0

Lei.(R)/Esc.(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - PTXSDn - PorT X Slew-rate Enable nHabilita ou desabilita o slew-rate interno (apenas em pinos configurados como saída)0 - slew-rate desabilitado.1 - slew-rate habilitado.

------------------------------------------4.3.5 Registradores PTADS e PTBDS - PorT A (B) Drive Strength select

------------------------------------------Registradores que servem para aumentar a corrente de saída das portas do

microcontrolador, controlando a potência do nível lógico. Esse recurso é importante para quandoo microcontrolador necessita controlar uma carga que usa maior quantidade de corrente em seufuncionamento. Observe que sem esse recurso a corrente de saída é de 2mA, com ele, a corrente

Observação Importante

Não há efeito nenhum caso escolher nível 1 na porta PTA4 (exclusivamente entrada).

Page 89: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

89

atinge até 10mA. Caso seja necessária uma corrente superior, o dispositivo de proteção deamplificadores operacionais é acionado, impedindo o funcionamento do microcontrolador,exigindo-se, assim, o uso de um reforçador de corrente.

Endereço: 0x1842 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ---- ---- PTADS5 PTADS4 PTADS3 PTADS2 PTADS1 PTADS0

Leitura(R)/Escrita(W): R R R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x1846 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: PTBDS7 PTBDS6 PTBDS5 PTBDS4 PTBDS3 PTBDS2 PTBDS1 PTBDS0

Lei.(R)/Esc.(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - PTXDDn - PorT X Drive Strenght selection nConfiguração da corrente de saída da porta.0 - Corrente em modo normal (até 2mA).1 - Corrente em modo ampliado (até 10mA).

4.4 Programando Portas em Assembly

A programação do microcontrolador consiste em duas etapas. A primeira é aconfiguração dos Registradores e a segunda na lógica de controle do processo ao qual omicrocontrolador será submetido. A configuração dos Registradores das portas, por exemplo,define quais portas serão entradas e quais serão saídas lógicas. Assim, é possível criar uma lógicaque receba uma informação na entrada, processe essa informação e dê um resultado digital nasaída, controlando um dispositivo ou processo.

4.5 Exemplos

4.5.1 Exemplo 1:Criar um programa em Assembly que acenda o LED1 da placa, enquanto o botão SW1 estiverpressionado.

Observação Importante

A configuração dos registradores normalmente acontece na primeira parte do programa. Não deixe de observar o fato do registrador ser de página alta ou de página direta ao configurá-los.

Page 90: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

90

Solução:Lembre que na placa, o LED1 está relacionado à porta PTB6 e que o SW1 está

relacionado à porta PTA2.

Rótulo Instruções ExplicaçãoORG $E000 ;direciona o montador para o endereço on de o

programa será criado

;configuraçõesINICIO: LDA SOPT1 ;logica de desativar o COP

AND #$7FSTA SOPT1BSET 6, PTBD ;inicializa porta antes de defini-la co mo saída

conforme recomendação do fabricante.BSET 6, PTBDD ;configura PTB6 como saída LED1BCLR 2, PTADD ;configura PTA2 como entrada SW1LDA PTAPE ;configura o pull-up da entrada SW1ORA #$04STA PTAPE

APAGA: BSET 6, PTBD ; apaga o LED1

MAIN: LDA PTAD ;Lê a chave SW1AND #$04 ; Verifica se está pressionadaCMP #$04BEQ APAGA ;senão, apaga LED1

ACENDE: BCLR 6, PTBD ; se sim, acende o LED1BRA MAIN ; Volta a ler a chave SW1

ORG $FFFE ; origem do vetor de resetRESET: DC.W INICIO ;inicia o programa no local rotula do INICIO

Page 91: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

91

4.6 Resumo do Capítulo

O microcontrolador se comunica com o ambiente externo através de portas. Nessecapítulo, foram vistas portas que funcionam como entradas e saídas digitais.

Há dois tipos de portas:

• PTA → Há seis tipos (PTA0, PTA1, PTA2, PTA3, PTA4, PTA5), sendo as quatro primeirasprogramáveis como entrada ou saída, a quinta (PTA4) unicamente como saída e a sexta(PTA5) unicamente como entrada.

• PTB → Há oito tipos (PTB0-PTB7), sendo que todas podem ser programadas comoentradas ou saídas.

Os seguintes Registradores foram vistos também:

• PTxD → É usado para receber a informação de uma entrada ou enviar uma informação auma saída.

• PTxDD → É usado para configurar uma porta como entrada ou saída.

• PTxPE → É utilizado para configurar o pull-up das entradas digitais.

• PTxSE → Serve para configurar a slew-rate da saídas digitais.

• PTxDS → Serve para configurar a corrente de saída das saídas digitais.Para a programação em Assembly, recomenda-se que haja duas partes, uma para a

configuração dos Registradores e outra para a lógica do programa.

Page 92: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

92

4.7 Exercícios

1- Escreva um programa em Assembly para configurar as portas PTA0 e PTA1 como entradas ePTB0 e PTB1 como saídas. O programa também deve configurar o pull-up e a corrente de saída(em 10mA). Não se esqueça de desativar o COP.

2- Escreva um programa em Assembly para controlar dois LED's. A entrada PTB0 é conectada a umbotão (não esqueça de configurar o pull-up), quando ele é pressionado envia nível 0 e acende umLED conectado a PTB1. Quando ele é pressionado de novo ele envia nível 0 novamente e apaga omesmo LED. O mesmo sistema funciona para o botão conectado a PTB4 em relação ao LED

conectado em PTB5. Não se esqueça de desativar o COP.

3- O microcontrolador vai controlar um motor DC de tensão nominal 3,3V (conectado à PTB0). Acorrente que esse motor exige para funcionar é de 10mA. O motor deve ser acionado sempre queo botão conectado à PTA0 for pressionado. Além disso, há um LED amarelo, conectado à PTB1,que deve ser ligado (com nível lógico 1), sempre que o motor for acionado. Escreva o programaem Assembly para essa situação. Não se esqueça de configurar o pull-up e desativar o COP.

4- O microcontrolador é usado para controlar um sistema de fabricação de peças, que possui trêsprocessos. Há três sensores (conectados à PTA0, PTA1 e PTA2) que indicam ao microcontroladorem qual fase as peças estão. Cada vez que um desses sensores é ativado, o microcontroladorprecisa ativar rapidamente acionadores (conectados à PTB0, PTB1 e PTB2, e são respectivos aossensores) para a mudança de fase do processo, ou seja, necessitam de alta slew-rate. Omicrocontrolador deve acionar LED's (ligados à PTB4, PTB5 e PTB6) para indicar em qual fase estáa fabricação. Há também um último LED ligado à PTB7, que deve ser acionado quando o processofinalizar para iniciar um novo ciclo. Crie um programa em Assembly que capacite omicrocontrolador para controlar esse sistema.Dados: os sensores indicam presença enviando nível baixo; os LED's acendem quando é enviadonível alto aos mesmos; os acionadores são ativados com nível baixo. Não esquecer de configurar oCOP e o pull-up onde for necessário.

Sensor 0

Sensor 1

Sensor 2

(Entradas)

PTA0

PTA1

PTA2

(Saídas)

PTB0PTB1PTB2

PTB4PTB5PTB6PTB7

MICROCONTROLADORHCS08QG8

Acionador 0Acionador 1Acionador 2

LED 0LED 1LED 2LED 3

Page 93: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

93

5- Elaborar um programa em Assembly para automatizar um sistema de irrigação, de acordo comas características definidas abaixo:

• A bomba B1 ficará ligada enquanto o nível de água do reservatório for maior que o nívelbaixo do mesmo (nível lógico 0 em PTB0).

• Se o nível de água do reservatório for menor que o nível baixo, a bomba B1 deverá serdesligada e a bomba B2 deverá ser ligada, ficando neste estado até que o nível de água doreservatório seja igual ao nível alto do mesmo (nível lógico 0 em PTB1) ou o nível de águado poço seja menor que o seu nível mínimo (nível lógico 0 em PTA1).

• As bombas são acionadas com nível lógico 1 e o programa fica num loop verificando nívelde água do reservatório e do poço.

Page 94: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

94

Capítulo 5: Conversor eComparador Analógico Digital

Neste capítulo, será estudada a interação do chip com sinais externos analógicos, ouseja, com níveis de tensão variáveis. Assim, será estudado o conversor AD do HCS08QG8, osRegistradores envolvidos nesse processo e suas aplicações. Observe que na placa do kit dedesenvolvimento (DEMO 9S08QG8), a variação dos níveis de tensão analógicos é realizada comum potenciômetro RV1 e um sensor de luminosidade RZ1. Além disso, neste capítulo serãoestudados os processos de comparação analógica associados ao Conversor e ao ComparadorAnalógico.

5.1 Conversor Analógico-Digital..............................955.2 Entradas e Saídas analógicas.............................955.2.1 Registrador APCTL1........................................965.3 Configuração do Conversor AD.........................965.3.1 Registrador ADCCFG.......................................965.4 Controle do Conversor AD.................................975.4.1 Registrador ADCSC1 …....................................985.4.2 Registrador ADCSC2........................................995.5 Saída da conversão analógica e referência decomparação...........................................................100

5.5.1 Registradores ADCRH e ADCRL.....................1005.5.2 Registradores ADCCVH e ADCCVL.................1015.6 Comparador Analógico (ACMP).......................1025.6.1 Registrador ACMPSC.....................................1035.7 Exemplos..........................................................1045.8 Resumo do Capítulo.........................................1075.9 Exercícios.........................................................108

”Os planos do diligente tendem à abundância, mas a pressa excessiva, à

pobreza.” Provérbios 21:5

Page 95: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

95

5.1 Conversor Analógico-Digital

O microcontrolador possui um conversor denominado ADC (Analogic-Digital

Converter), que é composto de um conversor de resolução de 8 ou 10 bits, distribuído em oitopinos multiplexadas. Além disso, ele utiliza a técnica de aproximações sucessivas, atravésamplificadores operacionais. A Figura 5.1 mostra o diagrama de blocos do conversor.

Figura 5.1 – Diagrama de Blocos do Conversor AD (Fonte: datasheet HCS08QG8)

O conversor começa a funcionar logo após a seleção do canal de conversão(Registrador ADCSC1), automaticamente. Além disso, ele permite que a conversão seja única oucontínua, permite a mudança do tempo de amostragem (tempo de análise do sinal analógico) epermite optar por uma conversão de resolução em 8 ou 10 bits. Também possível tomar um valorde conversão de referência e ainda selecionar a Interrupção de Tempo Real (RTI, que será vistamais adiante) como uma fonte de acionamento do conversor AD.

5.2 Entradas analógicas

Para haver a conversão analógico-digital é necessária a entrada de algum sinalanalógico no microcontrolador, assim, o chip possui um Registrador capaz de tornar os pinosmultiplexados do Registrador em entradas analógicas. Observe que se uma porta está

Page 96: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

96

programada como entrada analógica, ela não poderá funcionar como entrada digital, mesmo queseja escrito 0 nos Registradores PTADD e PTBDD. Isto é devido ao nivel de prioridade da funçãoanalógica ser maior do que ao digital. O Registrador que gerencia as entradas analógicas é oAPCTL1 (Analogic Pin ConTroL register 1).

------------------------------------------5.2.1 Registrador APCTL1 - Analogic Pin ConTroL register 1

------------------------------------------

Endereço: 0x0017 - Página Direta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ADPC7 ADPC6 ADPC5 ADPC4 ADPC3 ADPC2 ADPC1 ADPC0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - ADPCn - AD Pin Control nConfiguração do pino como porta de entrada analógica ou porta digital.0 - Porta configurada em modo digital.1 - Porta configurada como entrada analógica.

Observe que após o reset, por default (padrão) o microcontrolador vem com todos osseus pinos configurados como entradas digitais e não analógicas.

A tabela a seguir indica a equivalência entre as portas e os canais de conversãoanalógico.

Canal do ADC: ADPC0 ADPC1 ADPC2 ADPC3 ADPC4 ADPC5 ADPC6 ADPC7

Porta: PTA0 PTA1 PTA2 PTA3 PTB0 PTB1 PTB2 PTB3

5.3 Configuração do Conversor AD

O Registrador ADCCFG (ADC ConFiGuration) é o responsável por configurar osprocessos de conversão do conversor, como: nível de consumo, velocidade de conversão, divisorde clock, tempo de amostragem, número de bits e fonte de clock.

------------------------------------------5.3.1 Registrador ADCCFG - ADC ConFiGuration

------------------------------------------

Endereço: 0x0016 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ADLPC ADIV ADLSMP MODE ADICLK

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 1 0 0 1 1 0 0 0

Page 97: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

97

BIT1 e BIT0- ADICLK- AD Input CLK selectResponsável por selecionar a fonte de clock do conversor00 - a fonte selecionada é Busclk/101 - a fonte selecionada é Busclk/2

10 - não disponivel11 - clock interno ADACK

BIT3 e BIT 2 - MODEResponsável por selecionar o número de bits de resolução do ADC00 - resolução do resultado de conversão: 8 bits 10 - resolução do resultado de conversão: 10 bits

BIT4 - ADLSMP - AD Long SamPle time configurationResponsável por selecionar o tempo de amostragem do nível de tensão analógico.0 - tempo de amostragem normal (4 ciclos do clock do ADC que foi selecionado)1 - tempo de amostragem estendido (24 ciclos do clock do ADC que foi selecionado)

BIT6 e BIT5 - ADIV - clock DIVide SelectSeleciona o divisor de clock do conversor00 - Divide a fonte de clock selecionada por 101 - Divide a fonte de clock selecionada por 210 - Divide a fonte de clock selecionada por 411 - Divide a fonte de clock selecionada por 8

BIT7 - ADLPC - AD Low Power ConfigurationConfigura a relação velocidade de conversão/consumo do conversor.0 - alta velocidade de conversão (consumo elevado)1 - baixa consumo de conversão (velocidade reduzida)

5.4 Controle do Conversor AD

Os Registradores ADCSC1 e ADCSC2 são responsáveis por controlar os processos deconversão do conversor. Isso a partir da seleção do canal de conversão, da contiguidade daconversão e da habilitação da interrupção de conversão. Além disso, esses Registradoresverificam status, ou seja, possuem flags indicadores do estado da conversão analógica.

Os recursos básicos de conversão são habilitados pelo Registrador ADCSC1, comotempo de amostragem, consumo e canais de conversão, enquanto outros, mais avançados, comonível de referência para a conversão e seleção de gatilho de início da conversão, são habilitadospelo ADCSC2.

Page 98: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

98

------------------------------------------5.4.1 Registrador ADCSC1 - ADC Status and Control 1

------------------------------------------Esse Registrador é responsável por controlar o conversor analógico-digital do micro-

controlador e verificar o status de sua operação.

Endereço: 0x0010 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: COCO AIEN ADCO ADCH

Leitura(R)/Escrita(W): R R/W R/W R/W

Após o reset: 0 0 0 1 1 1 1 1

Configuração usual: 0 0 1 0 0 0 0 0

BIT4, BIT3, BI2, BIT1 e BIT0- ADCH - AD CHannel selectResponsável por selecionar o canal de conversão conversor ou a tensão de referência

do conversor. A tabela a seguir mostra a equivalência de seleção entre o valor de escrita e o canalde conversão:

Valor Significado Valor Significado

00000 Canal AD0 11010 Sensor de Temperatura Interno

00001 Canal AD1 11011 Referência Interna (bandgap)

00010 Canal AD2 11101 VREFH

00011 Canal AD3 11110 VREFl

00100 Canal AD4 11111 Modo de conversão desativado

00101 Canal AD5

00110 Canal AD6

00111 Canal AD7

BIT5- ADCO - AD COntinuos conversion enableResponsável por habilitar o processo de conversão contínua.0 - Conversão única.1 - Conversão contínua.

BIT6 - AIEN - AD Interruption ENableResponsável por habilitar a interrupção do conversor analógico.0 - Interrupção desabilitada.1 - Interrupção habilitada, a interrupção acontece quando o BIT7 é setado e o

Sinalizador I do CCR está apagado (Vetor 19 - $FFD8).

BIT7- COCO - COnversion COmplete flag

Sinalizador responsável por indicar o término da conversão, sendo setado quando isso

acontecer. Para apagar esse bit, é necessário ler o Registrador ADCRL. Esse flag, no modo decomparação, do Registrador ADCSC2, é setado caso a comparação de resultado seja verdadeiroem relação ao selecionado.

Page 99: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

99

0 - Realizando a Conversão (ou resultado de comparação não condizente).1 - Conversão completa (ou resultado de comparação condizente).

------------------------------------------5.4.2 Registrador ADCSC2 - ADC Status and Control 2

------------------------------------------

Esse Registrador é utilizado para habilitar alguns recursos adicionais de conversão.Primeiramente, o bit 4 e bit 5 estão ligados à comparação que esse Registrador é capaz de fazer.Ela é diferente da realizada pelo ACMP e funciona da seguinte maneira: quando ativada, ela sótorna válido o resultado da conversão se este for “verdadeiro” em relação ao valor de referência(em bits) do Registrador ADCCVH (ou ADCCVL). Assim, há uma seleção durante a conversão, poiso sinalizador da conversão só é setado, caso a conversão apresente um valor “válido”.

Outro recurso de conversão apresentado por esse Registrador é a fonte de gatilho daconversão. Assim, é possível realizar uma conversão sem a necessidade de ativá-la em ADCSC1.Há uma entrada nesse registrador, denominada ADHWT, ela é ligada à saída da RTI, tornandopossível uma conversão a cada término de ciclo dessa interrupção. Isso é útil em casos deoperação em modos de baixo consumo de energia (como WAIT e STOP), pois a RTI é uma“ferramenta de ativação” do microcontrolador, desses modos para o modo RUN (normal).

Por fim, há um flag ADACT, que diz se há alguma conversão em andamento nosistema.

Endereço: 0x0011 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ADACT ADTRG ACFE ACFGT 0 0 0 0

Leitura(R)/Escrita(W): R R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 0 0 0 0 0 0 0 0

BIT0,BIT1 Os bits 0 e 1 devem ser mantidos em 0 para o funcionamento do registrador, apesarde os mesmos não executarem nenhuma função particular.

BIT2,BIT3 Não utilizados. Não é possível escrever neles.

BIT4 - ACFGT - Analogic Compare Function Greater Than enableConfigura o sinalizador da conversão em função da comparação desse Registrador.0 - O sinalizador de conversão é setado caso o resultado da conversão seja um valor

menor que o da referência de comparação (o BIT7 COCO do ADCSC1 é setado, se assim for oresultado da comparação).

1 - O sinalizador de conversão é setado caso o resultado da conversão seja um valorigual ou maior que o da referência de comparação (o BIT7 COCO do ADCSC1 é setado, se assim foro resultado da comparação).

Page 100: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

100

BIT5 - ACFE - Analogic Compare Function EnableResponsável por ativar a função de comparação de valores:0 - Comparação desabilitada.1 - Comparação habilitada.

BIT6 - ADTRG - AD conversion TRiGger SelectResponsável por escolher a fonte do gatilho de conversão:0 - Gatilho via software (escrita no Registrador ADCSC1).1 - Gatilho via hardware (entrada em ADHWT, ou seja, proveniente da saída da RTI).

BIT7- ADACT - AD conversion ACTive

Sinalizador que indica o andamento da conversão:

0 - Sem conversão em andamento.1 - Conversão em andamento.

5.5 Saída da conversão analógica e referência de comparação

O conversor analógico converte o nível de tensão a um equivalente digital e, após oBIT7 do Registrador ADCSC1 ser setado, é armazenado esse valor nos Registradores ADCRH (casoa conversão seja de 10 bits, armazena a parte alta do valor obtido) e ADCRL (caso a conversãoseja de 8 bits, armazena todo o valor obtido, e, caso a conversão seja de 10 bits, armazena a partebaixa do valor resultante).

A leitura desse Registrador apaga o sinalizador COCO do Registrador ADCSC1,possibilitando assim a realização de uma nova conversão. Para ler no formato de 10 bits, énecessário o uso do Registrador indexado H:X. No caso do modo de comparação, essesRegistradores só armazenam seus valores caso a sentença da comparação seja verdadeira.

Para a comparação, o valor de referência é armazenado nos Registradores ADCCVH(caso a conversão seja de 10 bits, armazena a parte alta do valor) e ADCCVL (caso a conversãoseja de 8 bits, armazena todo o valor , e, caso a conversão seja de 10 bits, armazena a parte baixado valor ).

------------------------------------------5.5.1 Registradores ADCRH e ADCRL - ADC Result High e ADC Result Low

------------------------------------------

ADCRH – Endereço: 0x0012 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: 0 0 0 0 0 0 ADR9 ADR8

Leitura(R)/Escrita(W): R R R R R R R R

Após o reset: 0 0 0 0 0 0 0 0

ADCRL – Endereço: 0x0013 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ADR7 ADR6 ADR5 ADR4 ADR3 ADR2 ADR1 ADR0

Leitura(R)/Escrita(W): R R R R R R R R

Após o reset: 0 0 0 0 0 0 0 0

Page 101: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

101

BITn - ADRn - AD Result nValor de conversão no bit indicado.0 - O nível lógico convertido da tensão nesse bit é 0.1 - O nível lógico convertido da tensão nesse bit é 1.

------------------------------------------5.5.2 Registradores ADCCVH e ADCCVL - ADC Compare Value High e

Low

------------------------------------------Esse Registrador é responsável por armazenar o valor a ser comparado com o

resultado da conversão analógica. A leitura desses Registradores apaga o sinalizador COCO, doRegistrador ADCSC1.

Endereço: 0x0014 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: 0 0 0 0 0 0 ADCV9 ADCV8

Leitura(R)/Escrita(W): R R R R R R R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0015 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ADCV7 ADCV6 ADCV5 ADCV4 ADCV3 ADCV2 ADCV1 ADCV0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - ADRn - AD Result nValor a ser comparado no bit indicado:0 - O nível lógico nesse bit é 0.1 - O nível lógico nesse bit é 1.

Observação Importante

Para interromper uma conversão em andamento, é necessário escrever alguma informação nos registradores ADCSC1, ADCSC2 ou ADCCFG, alterando sua configuração ao início da conversão. A escrita em ADCCRH (ou ADCCRL) não interrompe a conversão.

Page 102: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

102

5.6 Comparador Analógico (ACMP)

O comparador analógico é capaz de comparar duas tensões analógicas externas oucomparar uma tensão externa com um valor interno fixo. Todas as funções do comparador estãoassociadas a um único registrador (ACMPSC), o que torna o trabalho desse periférico simples.

O comparador possui um amplificador operacional em sua constituição, e,consequentemente, duas entradas, a inversora (ACMP-, associada a porta PTA0) e a não-inversora (ACMP+, associada a porta PTA1). A entrada não-inversora pode ser associado a umnível externo de tensão ou a um nível interno de referência, de valor próximo a 1,2Volts. Já aentrada inversora, deve ser associada a seu pino e buscar um valor externo de tensão.

O resultado da comparação pode ser indicado de duas formas. A primeira é através dasaída externa do comparador (ACMP0, associada a porta PTA4) e a segunda através da leitura doBIT ACO do Registrador ACMPSC (Analog CoMParator status and Control). Para ambas asindicações, se o nível lógico estiver em 0, significa que a tensão presente na entrada inversora émaior que a presente na entrada não-inversora, caso esteja em 1, a tensão presente na entradainversora é menor que a presente na entrada não-inversora. A Figura 5.2 apresenta o Diagramade Blocos do Comparador Analógico.

Figura 5.2 – Diagrama de Blocos do Comparador Analógico (Fonte: datasheet HCS08QG8adaptado)

Observação Importante

O resultado da comparação é dado da seguinte forma:V

acmp- > V

acmp+ → Nível 0 em ACO e ACMPO

Vacmp-

< Vacmp+

→ Nível 1 em ACO e ACMPO

Page 103: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

103

------------------------------------------5.6.1 Registrador ACMPSC - Analog CoMParator Status and Control ------------------------------------------

Esse Registrador é responsável por controlar o comparador analógico domicrocontrolador e verificar o status de sua operação.

Endereço: 0x001A - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ACME ACBGS ACF ACIE ACO ACOPE ACMOD

Leitura(R)/Escrita(W): R/W R/W R/W R/W R R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 1 0 0 0 0 0 X 0

BIT1 e BIT0 - ACMOD - Analogic Comparator MODeSeleciona o modo de operação do comparador analógico.X0 - O BIT5 será setado na borda de descida do BIT3 do comparador.01 - O BIT5 será setado na borda de subida do BIT3 do comparador.11 - O BIT5 será setado na borda de subida ou descida do BIT3 do comparador.

BIT2 - ACOPE - AC Output Pin EnableResponsável por habilitar a saída do comparador analógico.0 - Saída externa desabilitada (assim, PTA4 pode ser utilizada para outras funções).1 - Saída externa habilitada.

BIT3 - ACO - AC OutputResponsável por armazenar o valor da saída do comparador analógico.0 - Tensão na entrada inversora é maior que na entrada não-inversora.1 - Tensão na entrada inversora é menor que na entrada não-inversora.

BIT4 - ACIE - AC Interrupt Enable

Responsável por habilitar a interrupção do comparador analógico.

0 - Interrupção desabilitada.1 - Interrupção habilitada (Vetor 20 - $FFD6). A interrupção acontece quando o BIT5 é

setado, indicando o término da comparação.

BIT5 - ACF - AC flagSinalizador que indica o término da comparação, de acordo com aquilo que foi

selecionado nos bits BIT0 e BT1 (ACMOD). Pode ser apagado ao setar esse bit com algumainstrução de escrita, observe que não há um par "ACK" nesse Registrador e esse sinalizador é deleitura e escrita.

0 - Nenhum evento de comparação ocorreu.1 - Ocorreu algum evento de comparação.

BIT6 - ACBGS - AC BandGap Select

Page 104: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

104

Responsável por selecionar o valor da referência na entrada não-inversora.0 - Tensão na entrada não-inversora é proveniente do pino associado a PTA1.1 - Tensão na entrada não-inversora do comparador é proveniente de uma referência

interna de aproximadamente 1,2 V .

BIT7 - ACME - AC Module Enable

Responsável por habilitar o módulo de comparador analógico.

0 - Módulo desabilitado.1 - Módulo habilitado, assim, a porta PTA0 não se comporta como entrada digital.

5.7 Exemplos

5.7.1 Exemplo 1 – Conversor AD: Criar um programa que realiza a conversão de um sinal de Temperatura. Considere que 3,3V equivale a 55° C e que a resolução do transdutor é de 0,06V/°C. Caso a temperatura seja inferior a 25°, o microcontrolador deve ativar PTB0. Caso seja superior a 35°, ele deve ativar PTB1. Use o ADC com resolução de 10bits.

Solução:Observe que:

Como a resolução do transdutor é de 0,06 V/°C, temos que 0,06V equivale a 1°C. Assim, podemos calcular a temperatura equivalente para 25° e 35°. Observe:

Agora, precisamos calcular a equivalência dessas tensões analógicas com o número de bits digitais disponíveis. Como a resolução é de 10 bits, temos que 3,3V equivalem a1023 bits, logo:

Com esses valores de equivalência devidamente calculados, podemos fazer oprograma.

Usaremos, por conveniência e disponibilidade, o canal ADC0 (PTA0) para conversão AD.

Bx1

1.5V=

1023bits3,3V

⇒Bx1=465bits

Bx2

2.1V=

1023bits3,3V

⇒Bx2=651bits

Vx1

25° C=0.06V /° C⇒Vx1=1.5V

Vx2

35° C=0.06V /° C⇒Vx2=2.1V

3,3V55° C

=0.06V /° C

Page 105: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

105

Rótulo Instruções Explicação

ORG $E000 ;direciona o montador para o endereço on de oprograma será criado.

INICIO:

LDA SOPT1 ; Desativação do COP

AND #127

STA SOPT1

MOV #$00, PTBD ;inicialização das saídas (desligado)

; Configuração das E/S digitais

MOV #$03, PTBDD ;PTB0 e PTB1 são saídas digitais

BSET 0, APCTL1 ;escolhe PTA0 como entrada analógica

MOV #$88, ADCCFG ;Conversão em 10 bits, tempo de amostragemnormal e baixo consumo

MOV #$0, ADCSC2 ;sem comparação analógica

MOV #$20, ADCSC1 ;conversão contínua, canal 0 de con versãoativo

MAIN: ;inicio da lógica do programa

COCO: BRCLR 7,ADCSC1,COCO ;aguarda o término da conve rsão

LDHX ADCRH ;Carrega o valor da conversão no Registra dorHX, ao ler ADCL apaga o bit COCO

CPHX #465 ;compara com o valor 465(25°C)

BLO TMP_BAIXA ;caso seja menor que 25°C, desvia par aTMP_BAIXA

CPHX #651 ;se não,verifica se é maior que 35°C

BHI TMP_ALTA ;caso seja maior que 35°C, desvia paraTMP_ALTA

BRA MAIN ;se chegou até aqui é porque a temperaturaestá entre 25°C e 35°C, assim o programaretorna para MAIN para fazer uma novaverificação da temperatura

TMP_ALTA: MOV #01, PTBD ;ativa a PTB0, pois a tempera tura é menor que25°C

BRA MAIN ;retorna para MAIN para realizar uma novaverificação da temperatura

TMP_BAIXA: MOV #02, PTBD ;ativa a PTB1, pois a temper atura é maior que35°C

BRA MAIN ;retorna para MAIN para realizar uma novaverificação da temperatura

ORG $FFFE ;área do vetor reset

RESET: DC.W INICIO ;inicia o programa em INICIO

Page 106: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

106

5.7.2 Exemplo 2 – Comparador Analógico

Um potenciômetro está conectado na porta PTA0 (entrada ACMP- que está conectadaao potenciômetro RV1 da placa) e outro na PTA1 (entrada ACMP+ que está conectada ao sensor deluz RZ1 da placa).

Um LED, conectado a PTB6, deve acender se a tensão na entrada ACMP+ for maior quea tensão na entrada ACMP-. Programar o comparador analógico para executar essa função.

Solu çã o: Segue o programa.

Rótulo Instruções ExplicaçãoORG $E000 ;direciona o montador para o endere ço

onde o programa ser á criado. INICIO:

LDA SOPT1 ; Desativa ção do COPAND #127STA SOPT1

BSET 6, PTBD ;apaga o LEDBSET 6, PTBDD ;configura PTB6 como sa ída digital

;configura o ACMPMOV #$83, ACMPSC ;habilita o comparador e opera o m esmo

para capturar sinal tanto na borda desubida, quando na borda de descida dosinal

ACF: BRCLR 5, ACMPSC, ACF ;espera acontecer uma compara ção, oprograma n ão avan ça enquanto n ão acontecera compara ção

BRCLR 3, ACMPSC, AP ;desvia para AP se a sa ída do comparadorestiver apagada

BRSET 3, ACMPSC, AC ;desvia para AC se a sa ída do comparadorestiver setada

AP: BSET 6, PTBD ;apaga o LED se ACMP+ menor que AC MP-BRA RET_ACF

AC: BCLR 6, PTBD ;acende o LED se ACMP+ maior que A CMP-BRA RET_ACF

RET_ACF: BSET 5, ACMPSC ;apaga o flag ACF para agu ardar novacompara ção

BRA ACF

ORG $FFFE ; área do vetor resetRESET: DC.W INICIO ;inicia o programa em INICIO

Observação Importante

Observe que o comparador é muito útil quando se trabalha com sensores ópticos. Isso porque, nesse caso, é preciso colher uma informação digital de um sinal analógico diferencial.

Page 107: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

107

5.8 Resumo do Capítulo

Há dois dispositivos no HCS08 que trabalham com entradas analógicas, o Conversor

AD e o Comparador AD. Dados do Conversor AD:

• Duas resoluções de conversão (8 ou 10 bits);

• Ordem de programação dos Registradores: APCTL1 (configura entradas analógicas);ADCCFG (define os parâmetros da conversão); ADCSC2 (status e controle da conversão,normalmente, com todos os bits em 0); e, ADCSC1 (status e controle da conversão,regulando consumo, canal de conversão a ser usado e número de conversões)

Dados do Comparador:

• Possui duas entradas analógicas (ACMP- / PTA0 e ACMP+ / PTA1) e uma saída digital(ACMPO / PTA4);

• A entrada não-inversora do comparador pode ser associada a uma referência interna de1,2 V, liberando PTA1 para outros usos;

• Da mesma forma, a saída do comparador pode ser apenas virtual, lendo-se o bit ACO doregistrador ACPMSC;

• O Registrador ACPMSC está associado a sua configuração, controle e status.

Page 108: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

108

5.9 Exercícios

1- Faça um programa que realize a conversão analógica utilizando o canal 4 do conversor AD de10 bits. Lembre-se que 3,3 V = 1023 bits.

2- Uma máquina elétrica classe F precisa ter sua temperatura controlada para que funcionecorretamente, observe o quadro abaixo. Para isso, faça um programa que utilize o canal 0 doconversor AD do HCS08QG8, com resolução de 10 bits e baixo consumo. Use 20°C = 0V e 165°C = 3,3V.

Temperatura(°C)

Status de operação Ação

Até 40° Operação normal LED verde conectado a PTB1 ligado

De 41° a 140° Sobre-elevação de temperatura LED laranja conectado a PTB2 ligadoSistema de refrigeração conectado a PTB5acionado.

De 140° a 165° Limite de temperatura permitido LED vermelho conectado a PTB3 ligadoSistemas de refrigeração conectados aPTB5 e a PTB6 acionados.Buzzer conectado a PTB4 ligado.

3- Elaborar um programa em Assembly para indicar a temperatura de uma piscina.A resolução do sensor de temperatura (ligado em PTA0) é de 0,06V para cada °C.Há um conjunto de 3 LEDs que indicam a temperatura da piscina: quente (uso ofurô), morna(hidroginástica) e fria (desligada).Se a temperatura da água da piscina for maior que 23oC deve ser indicado temperatura quente.Se for abaixo, porém acima de 18oC deve ser indicado temperatura morna, e abaixo de 18oCtemperatura fria. O valor máximo de temperatura que a piscina pode atingir é de 35o C.Programar o conversor analógico digital para 10 bits.

4- Um pardal está colocado em uma rodovia para controlar a velocidade e a massa dos veículosque ali passam. Faça um programa que utilize os canais 3 e 4 do conversor AD de 8 bits, de modoa cumprir as requisições do quadro abaixo. Considere todos os equipamentos ideais.Resolução da velocidade = 0,025V/km/h e 1V equivale a 40km/h.Resolução de massa = 0,1V/ton e 1V equivale a 2ton.

Page 109: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

109

Velocidade (km/h) Ação Massa (ton) Ação

Abaixo de 40 LED verde conectado a PTA0acionado

Até 2 Nenhuma ação

Entre 40 e 60 LED vermelho conectado aPTA1 acionado e máquinaligada a PTB0 acionada.

De 2 a 4 LED laranja conectado a PTB6ligado e máquina ligada aPTB1 acionada.

Acima de 60 LED vermelho conectado aPTA1 acionado, máquina ligadaa PTB0 acionada e buzzer dealerta (PTB7) ligado

Acima de 4 LED vermelho conectado aPTB5 ligado e buzzer alerta(PTB7) ligado.

5- Elaborar um programa em Assembly para efetuar o controle de uma usina hidroelétrica. A potência fornecida pela usina é feita por 3 geradores e funciona da seguinte forma:

− Para um consumo menor ou igual a 50MW somente o gerador 1 deve estar acionado.

− Para um consumo maior que 50MW e menor ou igual a 100 MW somente os geradores1 e 2 dever estar acionados.

− Para um consumo maior que 100MW todos os geradores devem estar acionados.

Existe também um controle do nível de água no reservatório e funciona da seguinte forma:1. Para um nível de água menor ou igual a que 18m desligar todos os geradores.2. Para um nível de água maior que 18m e menor ou igual a 50m abrir a comporta 1.3. Para um nível de água maior que 50m abrir as comportas 1 e 2.

O transdutor para leitura do consumo tem uma resolução de 0.03V para cada MW.O transdutor para leitura do nível de água no reservatório tem uma resolução de 0.05V para cadametro.O conversor AD deve operar no modo 10 bits. A tensão de alimentação do microcontrolador é de3,3V (usar para tensão de referência do conversor AD).Lembre-se de inicializar os Registradores, COP, portas de entradas/saídas,e etc...

Page 110: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

110

Capítulo 6: Interrupção

Nesse capítulo serão estudados dois tipos de interrupção: Interrupção Externa (IRQ) eInterrupção de Tempo Real (RTI), e os Registradores envolvidos nesses processos. Após esseconceito melhor formado, será advertido que há interrupção em outros periféricos e seráexplorado o conceito de interrupção por software (SWI).

6.1 Conceito de Interrupção..................................1116.2 Condições, Rotinas de Tratamento e Vetores deInterrupção............................................................1116.3 Interrupção Externa (IRQ)................................1136.3.1 IRQSC............................................................1136.4 Interrupção em Tempo Real (RTI)....................114

6.4.1 SRTISC...........................................................1156.5 Outros Tipos de Interrupção............................1166.5.1 Interrupção por Software (SWI)...................1166.6 Exemplos …......................................................1176.7 Resumo do Capítulo.........................................1186.8 Exercícios.........................................................119

”Não ames o sono, para que não empobreças; abre os olhos e te fartarás do

teu próprio pão.” Provérbios 20:13

Page 111: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

111

6.1 Conceito de Interrupção

Antes de estudarmos formalmente o conceito de interrupção, vamos avaliar algumasideias a respeito do assunto.

Imagine que você esteja em uma aula, o professor está passando o conteúdo damatéria normalmente. Em um dado instante, o chefe do departamento, aparece, interrompe aaula e fornece uma informação a respeito de um evento no departamento, em seguida, vaiembora. A aula continua normalmente após esse evento.

Algo similar pode ocorrer no microcontrolador através de uma interrupção. Asinterrupções são ocorrências inesperadas pelo programa que está em andamento. Elas surgem apartir de condições paralelas ao programa que não estavam previamente programadas paraacontecerem, como por exemplo, o término de uma conversão analógica, o término de umacontagem interna, uma transição de nível lógico no pino de Interrupção Externa (IRQ) e assimpor diante.

Perceba que no exemplo, o programa (aula) corria normalmente. Sem que oprograma esperasse, ele é interrompido (o chefe chega na sala). Ele dá o recado (tratamento darotina de interrupção) e quando a interrupção acaba (o chefe vai embora), o programa continuanormalmente do ponto onde parou (o professor continua sua aula).

6.2 Condições, Rotinas de Tratamento e Vetores de Interrupção

O tratamento de uma interrupção é feito por uma rotina de tratamento interrupção,que é muito semelhante às sub-rotinas, já estudadas. Elas não estão na sequência natural doprograma, mas a parte.

Existem duas condições para que uma interrupção aconteça. A primeira é que a o bit

de máscara de interrupção esteja apagado. A instrução CLI realiza isso (bit I do CCR = 0). Paradesabilitar as interrupções, pode-se setar este bit com a instrução SEI. A segunda condição paraque uma interrupção aconteça é que ela esteja habilitada no registrador apropriado. Lembre-seque existem 23 diferentes tipos de interrupção no HCS08QG8.

Tais condições funcionam de modo semelhante a uma chave geral (bit de máscara deinterrupção) e demais chaves em um determinado circuito (habilitação da interrupção noregistrador próprio). Assim, se a chave geral não estiver fechada, mesmo que as demais estejam,o circuito não funcionará. Por isso, se você deseja que o seu programa tenha interrupções utilize ainstrução CLI.

Essas rotinas se localizam em posições da memória FLASH. Para iniciar uma rotina detratamento de interrupção, acontecem os seguintes passos:

1. Identificação do eventoUm sinalizador é setado, indicando que determinado evento ocorreu2. Salvamento das informações correntesO Registrador salva na pilha a posição do PC, o valor armazenado no Acumulador, o

valor de X, e do CCR.3. Habilitação da máscara de interrupçõesO bit I do CCR é setado. Isso ocorre para evitar que outras interrupções aconteçam

enquanto o microcontrolador está tratando uma interrupção. Observe que, se aconteceu umainterrupção enquanto o programa estava em uma rotina de tratamento, essa nova interrupçãoficará como em uma "fila de espera", e será iniciada após o término da rotina de tratamento emexecução.

Page 112: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

112

4. Mudança do fluxo do programaO PC recebe o valor do endereço indicado pelo vetor de interrupção, próprio do tipo

de interrupção ocorrido. Existem 18 vetores de interrupção, um para cada tipo, além do reset. Atabela 6.1 indica esses vetores e sua relação com cada tipo de interrupção.

Os números dos vetores também indicam a prioridade na ocorrência da interrupção.Assim, caso duas interrupções ocorram ao mesmo tempo, aquela que possuir o menor valor devetor terá prioridade, na escolha de qual interrupção o microcontrolador irá executar.

5. Execução da rotina de tratamento de interrupçãoApós ter o fluxo do programa desviado, o microcontrolador executa uma rotina para

tratar o evento que interrompeu o programa. Uma atividade dessa rotina é, obrigatoriamente,apagar o sinalizador que indica que essa interrupção aconteceu, da maneira própria do tipo deinterrupção. Em seguida, essa rotina deve executar a lógica para a sua aplicação.

As rotinas de tratamento de interrupção possuem uma estrutura padrão fixa, que seráapresentada adiante. Um ponto relevante na construção dessas rotinas de tratamento deinterrupção é que elas devem ser curtas. Não devem possuir mais do que algumas linhas deinstruções. A estrutura básica é a mostrada na figura 6.1.

6. Instrução RTI e retorno à sequência do programaAo terminar de executar a rotina de tratamento de interrupção, o programa deve

executar a instrução RTI. Ela irá recuperar os valores depositados na pilha, inclusive o valor do PCe na sequência, irá utilizá-lo para retornar a execução normal do programa.

Figura 6.1: Estrutura da Rotina de Tratamento de interrupção

Valor Endereço Nome do Vetor Sinalizador Bit de Habilitação Módulo

0 $FFFE Vreset - - reset

1 $FFFC Vswi - - SWI

2 $FFFA Virq IRQSC: IRQF IRQSC: IRQIE IRQ

3 $FFF8 Vlvd SPMSC1:LVDF SPMSC1: LVDIE LVD

Apaga o sinalizador da interrupção

Executa um rápido conjunto de instruções

Finaliza a rotina com a instrução RTI

Page 113: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

113

Valor Endereço Nome do Vetor Sinalizador Bit de Habilitação Módulo

5 $FFF4 Vtpmch0 TPMC0SC: CH0F TPMC0SC: CH0IE TPM canal 0

6 $FFF2 Vtpmch1 TPMC1SC: CH1F TPMC1SC: CH1IE TPM canal 1

7 $FFF0 Vtpmovf TPMSC: TOF TPMSC: TOIE overflow TPM

12 $FFE6 Vmtim MTIMSC: TOF MTIMSC: TOIE overflow MTIM

13 $FFE4 Vspi SPIS: SPRFSPIS: MODFSPIS: SPTEF

SPIC1: SPIESPIC1: SPIE

SPIC1: SPTIE

SPI

14 $FFE2 Vscierr SCIS1: ORSCIS1: NFSCIS1: FESCIS1: PF

SCIC3: ORIESCIC3: NFIESCIC3: FEIESCIC3: PFIE

erro SCI

15 $FFE0 Vscirx SCISC1: IDLESCISC1: RDRF

SCIC2: ILIESCIC2: RIE

recepção SCI

16 $FFDE Vscitx SCIS1: TDRESCIS1: TC

SCIC2: TIESCIC2: TCIE

transmissão SCI

17 $FFDC Viic IICS:IICIF IICC:IICIE I²C

18 $FFDA Vkeyboard KBISC: KBF KBISC: KBIE KBI

19 $FFD8 Vadc ADCSC1: COCO ADCSC1: AIEN A/D

20 $FFD6 Vacmp ACMPSC: ACF ACMPSC: ACIE ACMP

23 $FFD0 Vrti SRTISC: RTIF SRTISC: RTIE RTI

Tabela 6.1: Vetores de interrupção

6.3 Interrupção Externa (IRQ)Agora que tivemos uma ideia geral a respeito de interrupções, vamos iniciar o estudo

de um tipo de interrupção, a Interruption Request (IRQ - Interrupção Externa). Esse tipo deinterrupção acontece quando o nível lógico do pino de pedido de interrupção é alterado. O pinoestá associado à porta PTA5. É dito interrupção por pedido externo, pois esse tipo de interrupçãoestá não está associado a um módulo interno do microcontrolador. Ele acontece com alteraçõesexternas. O Registrador responsável por esse tipo de interrupção é o IRQSC.

Observação Importante

O bit I do CCR antes da instrução RTI (durante a execução da rotina de tratamento da interrupção) era I = 1, ou seja, as interrupções estavam desabilitadas. Após a execução da instrução RTI, o valor no instante anterior a chamada da interrupção é recuperado, ou seja, o bit

I = 0, habilitando novamente as interrupções. Isso é um mecanismo de segurança que impede que mais de uma interrupção ocorra ao mesmo tempo.

Page 114: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

114

------------------------------------------6.3.1 Registrador IRQSC - Interruption Pin ReQuest Status and Control

------------------------------------------Esse Registrador controla a IRQ do microcontrolador e verifica seu status.

Endereço: 0x00F - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: 0 IRQDD 0 IRQPE IRQF IRQACK IRQIE IRQMOD

Leitura(R)/Escrita(W): R R/W R R/W R W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 0 0 0 1 0 0 1 0

BIT0 - IRQMOD - IRQ detection MODe Seleciona a borda de disparo de comparação do IRQ.0 - O gatilho dispara com a transição do sinal de entrada.1 - O gatilho dispara com a transição e no nível lógico da entrada.

BIT1 - IRQIE - IRQ Interrupt EnableResponsável por ativar a função de interrupção por IRQ.0 - Função desabilitada.1 - Função habilitada.

BIT2 - IRQACK - IRQ ACKnowlegdeBit de reconhecimento de interrupção. Para apagar o sinalizador IRQF, é preciso

escrever 1 nesse bit. Observe que se IRQMOD = 0 (interrupção ativada por borda), pode-seescrever 1 nesse bit já no início da interrupção. Caso IRQMOD = 1 (interrupção ativada por bordae nível lógico), é necessário esperar a mudança do nível lógico que ativou a interrupção, paraescrever 1 nesse bit.

BIT3 - IRQF - IRQ flag

Sinalizador que indica o evento de interrupção.

0 - Não ocorreu interrupção.1 - ocorreu interrupção.

BIT4 - IRQPE - IRQ Pin EnableResponsável por ativar a função do pino PTA5 para Interrupção Externa0 - Pino desabilitado.1 - Pino habilitado.

BIT6 - IRQDD - IRQ pull Device Disable

Controla o pull interno do pino, caso ele esteja habilitado para IRQ.

0 - pull-up habilitado.1 - pull-up desabilitado.

Page 115: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

115

6.4 Interrupção em Tempo Real (Real Time Interrupt – RTI)

A Interrupção em tempo real é um mecanismo que permite interromper o programaapós determinado intervalo de tempo. É um módulo com um princípio de funcionamento bemsimples. Esse módulo pode ter duas fontes de clock. Uma referência interna de 1kHz e umareferência externa, proveniente da configuração do módulo ICS. Esse mecanismo é muito útil paragerar bases de tempo específicas, como aplicações que necessitam ser repetidas a cada segundo(se for admitida um aproximação).

------------------------------------------6.4.1 Registrador SRTISC – System Real Time Interruption Status and

Control

------------------------------------------Esse Registrador é responsável por controlar o funcionamento do sistema de

Interrupção em Tempo Real do microcontrolador e verificar o status de sua operação.

Endereço: 0x1808 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: RTIF RTIACK RTICLCKS RTIE --- RTIS2 RTIS1 RTIS0

Leitura(R)/Escrita(W): R W R/W R/W R R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 0 0 0 1 0 1 1 1

BIT2, BIT1 e BIT0 – RTISn – RTI Delay Select

Bits de seleção do fator de divisão do clock do módulo RTI. Essa divisão permite

escolher o intervalo de periódico de tempo dessa interrupção. A tabela 6.2 mostra a configuraçãodesses bits e a relação desta com o tempo de interrupção.

BIT4 - RTIE – RTI Enable

Bit responsável por habilitar o módulo RTI.

0 – Interrupção desabilitada.1 – Interrupção habilitada. (Vetor $FFD0)

BIT5 - RTICLCKS - RTI Clock SelectResponsável por escolher a fonte de clock da RTI.0 – Fonte interna de 1kHz.1 – Fonte externa. Se necessitar um relógio de excelente precisão é possível utilizar

um cristal de 32.768Hz como fonte externa. Deve-se então usar o fator 32.768 para obtermosuma interrupção a cada 1s.

BIT6 - RTIACK – RTI acknowlegdgeBit responsável por reconhecer a interrupção. Para apagar o sinalizador, é preciso

escrever 1 nesse bit na rotina de tratamento de RTI.1 - Apaga sinalizador de interrupção.

Page 116: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

116

BIT7 - RTIF - RTI flag

Sinalizador que indica o evento de interrupção.

0 - Não ocorreu interrupção.1 – Há uma interrupção pendente.

RTIS2 RTIS1 RTIS0 Clock Interno (1kHz) Clock externo0 0 0 Não opera RTI Não opera RTI0 0 1 8 ms Freq / 2560 1 0 32 ms Freq / 10240 1 1 64 ms Freq / 20481 0 0 128 ms Freq / 40961 0 1 256 ms Freq / 81921 1 0 512 ms Freq / 163841 1 1 1024 ms Freq / 32768

Tabela 6.2 – Configuração dos bits 0, 1 e 2 do Registrador SRTISC

6.5 Outros Tipos de Interrupção

Além dos tipos de interrupção apresentados anteriormente nesse capítulo (IRQ e RTI),quase todos os periféricos apresentam sua interrupção (muitas vezes, mais de um tipo deinterrupção), essas são apresentadas junto a eles. Entretanto, há um tipo especial de interrupção,que não está associado a periféricos, mas sim, a uma instrução. É a interrupção por software

(SWI).

6.5.1 Interrupção por Software (SWI)

A instrução Assembly SWI permite a geração de uma interrupção via software, ou seja,existente no código do programa. Esse é o tipo de interrupção de mais alta prioridade e éclassificado como uma interrupção síncrona (diferentemente das interrupções não previstas,como as normalmente geradas por periféricos, denominadas assíncronas) ou trap (exceção desoftware).

Esse modo de interrupção é utilizado, entre outras funções, para requisitar ou ativarum parâmetro, em função de uma condição de entrada ou saída do Registrador (visto que não háinterrupções associadas às portas digitais de entrada ou saída).

Além disso, outra função comum para esse recurso é a organização do programa, deforma semelhante a chamada de sub-rotina, mas, através do uso de uma interrupção.

Page 117: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

117

6.6 Exemplos

Exemplo 1 – IRQ-Faça um programa em Assembly que ao sofrer uma Interrupção Externa, incremente umaunidade na variável VAR.

Solução:

Rótulo Instruções ExplicaçãoORG $0060 ;direciona o montador para as variáveis

VAR: DS.B 1 ;cria a variável VAR

ORG $E000 ;direciona o montador para o endereço on deo programa será criado

TRATA_IRQ: BSET 2, IRQSC ;apaga o flag de interrupção IRQFINC VAR ;incrementa variável VARRTI ;sai da rotina de tratamento da IRQ

INICIO: CLR VAR ;inicializa VAR com zeroLDA SOPT1 ; Desativação do COP

AND #127

STA SOPT1

MOV #$12, IRQSC ;habilita a interrupção externa ( bit 1) e opino do IRQ (PTB5 – bit 4)

LOOP: BRA LOOP ;entra num loop infinito aguardando a IRQocorrer

ORG $FFFA ;área de vetor: IRQIRQ: DC.W TRATA_IRQ ;executa a rotina de tratamento d a IRQ em

TRATA_IRQORG $FFFE ;área de vetor reset

RESET: DC.W INICIO ;execução inicial do programa a pa rtir deINICIO

Exemplo 2 – RTI-Faça um programa em Assembly que a cada segundo, inverta o valor do bit 3 da posição $70 damemória.Solução:

Rótulo Instruções ExplicaçãoORG $E000 ;direciona o montador para o endereço

onde o programa será criadoTRATA_RTI:

LDA SRTISC ;apaga o flag de interrupção RTIF,escrevendo 1 em RTIACK

ORA #$40STA SRTISCBRCLR 3, $70, SETA ;logica para inverter o bit 3 da posição

$70LIMPA: BCLR 3, $70 ;limpa o bit 3 de $70

RTI ;sai da rotina de tratamento da RTISETA: BSET 3, $70 ;seta o bit 3 de $70

RTI ;sai da rotina de tratamento da RTI

INICIO: LDA SOPT1 ; Desativação do COP

Page 118: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

118

Rótulo Instruções ExplicaçãoAND #127

STA SOPT1

BCLR 3, $70 ;inicializa bit 3 de $70LDA #$17 ;inicia lógica de configuração do

Registrador SRTISCSTA SRTISC ;habilita a interrupção RTI ( bit 4),

perído de 1024 ms e fonte interna de 1kHz ( bits 0, 1 e 2)

LOOP: BRA LOOP ;inicia um loop infinito aguardando ainterrupção

ORG $FFD0 ;área de vetor: RTITRT1: DC.W TRATA_RTI ;executa a rotina de tratament o da RTI em

TRATA_RTIORG $FFFE ;área de vetor reset

RESET: DC.W INICIO ;execução inicial do programa a partir deINICIO

6.7 Resumo do Capítulo

Uma interrupção é um sinal enviado ao processador que muda o “contexto” do

programa, ou seja, o mesmo saí de sua posição atual e segue a direção de um “vetor”, da qual seinicia uma rotina de tratamento.

Há duas condições para que uma interrupção aconteça:→ Bit I do CCR em nível 0 (através da instrução CLI)→ Interrupção habilitada em seu Registrador

A Rotina de Tratamento é uma estrutura à parte do programa, e é desenvolvida paratratar a interrupção.

O acontecimento de uma interrupção no programa segue o seguinte procedimento:1. Identificação do evento2. Salvamento das informações correntes na pilha3. Habilitação da máscara de interrupções (I = 1, impedindo outras interrupções)4. Mudança do fluxo do programa5. Execução da rotina de tratamento de interrupção6. Instrução RTI e retorno à sequência do programa

Existem 23 vetores de interrupção no HCS08QG8, ou seja, 23 tipos de interrupção.A Interrupção Externa (IRQ) acontece quando há mudança na borda ou no nível lógico

de seu pino associado (PTA5). O Registrador que controla a mesma é o IRQSC.A Interrupção em Tempo Real (RTI) é um mecanismo que interrompe o programa em

um intervalo de tempo determinado. É controlada pelo Registrador SRTISC.Há outros tipos de interrupção, cada uma associada ao seu respectivo periféricos, e

mesmo, mais de um tipo de interrupção por periférico. Há ainda a Interrupção por software (SWI),que permite interromper o programa através de uma instrução.

Page 119: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

119

6.8 Exercícios

1- Faça um programa que utilize a RTI para pisca um LED conectado à PTB6 a 512ms.

2- Faça um programa em Assembly que a cada segundo, inverta o valor do bit 3 da posição $70 damemória.

3- Faça um programa que utilize a RTI para que a cada segundo se acenda um LED conectado àsportas PTA0 (LSB), PTA1, PTA2 e PTA3 (MSB) nessa mesma sequência. Cada vez que o próximoLED é aceso o anterior deve ser apagado.

4- Faça um programa que a realize a mesma tarefa do exercício anterior, entretanto, a IRQ deveestar ativada. Enquanto o pino da IRQ estiver em nível lógico 1, todos os LEDs devem permaneceracesos.

5- Faça um programa em Assembly que ao sofrer uma Interrupção Externa, inverta o último bit deuma variável VAR0 e decremente uma variável VAR1 (inicializada em #$20). Quando VAR1 forigual a #0, o programa deve incrementá-la a cada IRQ.

6- Um microcontrolador é utilizado para programar um Semáforo. Observe a tabela:

PTA0 Verde 50s

PTA1 Amarelo 5s

PTA2 Vermelho 35s

Em casos emergenciais, é criada uma Interrupção Externa no Semáforo (Pino IRQ em 0) que fazcom que a luz amarela pisque a cada segundo e as demais luzes não sejam acesas.Escreva esse programa!

7- O microcontrolador está sendo utilizado para controlar uma panela (resolução = 1°C/mV e100°C equivalem a 2,2 V). Utilize a interrupção no modo de comparação do conversor AD paramanter um LED aceso cada vez que a temperatura estiver em 100°C ou mais. A panela possui umdispositivo de interrupção do sistema, que funciona via interrupção externa do microcontrolador,para ser desligada.

8- Elaborar um programa em Assembly para controlar a abertura e fechamento de uma janela,com base na informação enviada por um sensor de umidade acoplado a mesma. Para valores deumidade relativa maiores que 80% (condição de chuva) a janela deverá ser fechada e para valoresmenores ou iguais a 80% a janela deverá permanecer aberta. Considere como resolução que100% de umidade atinge a tensão de 3,3V. Os sensores localizados nas laterais da janeladeterminam o fim de curso da mesma (nível lógico 0), fazendo com que o motor pare ao acionaralgum dos sensores. O controle de direção do motor segue a tabela abaixo. Utilize a interrupçãodo Conversor AD.

PTB0 PTB1 MOTOR

0 0 Parado

0 1 Gira Esquerda

1 0 Gira Direita

1 1 Parado

Page 120: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

120

9- Elaborar um programa em Assembly para indicar a temperatura de uma piscina. A resolução do sensor de temperatura (ligado em PTA0) é de 0,06V para cada °C. Há um conjuntode 3 LEDs que indicam a temperatura da piscina: quente (uso ofurô), morna (hidroginástica) e fria

(desligada). Se a temperatura da água da piscina for maior que 23o C deve ser indicado

temperatura quente. Se for abaixo, porém acima de 18oC deve ser indicado temperatura morna, e

abaixo de 18oC temperatura fria. O valor máximo de temperatura que a piscina pode atingir é de

35oC. Programar o conversor analógico digital para 10 bits.

Page 121: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

121

Capítulo 7: Sistemas de Relógio,Temporizadores e PWM

Neste capítulo é apresentado o sistema de clock e o estudo do funcionamento dos

temporizadores de 8 bits Módulo Timer (MTIM) e de 16 bits Timer/Pulse-width Modulator (TPM).

7.1 Sistema de Relógio ..........................................1227.2 Sistema ICS (Internal clock Source).... .............1227.2.1 Distribuição dos Sinais de clock....................1237.3 Modos de operação do ICS............................. 1257.4 Registradores do modo ICS..............................1267.4.1 Registrador ICS1 ...........................................1267.4.2 Registrador ICS2............................................1277.4.3 Registrador ICSSC .........................................1287.4.4 Registrador ICSTRM - ICS TriM......................1287.5 Temporizador de 8 bits Módulo Timer (MTIM)...................................................................1297.5.1 Registrador MTIMSC.....................................1297.5.2 Registrador MTIMCLK...................................1307.5.3 Registrador MTIMCNT..................................1317.5.4 Registrador MTIMMOD............................... 131

7.6 Temporizador de 16 bits (TPM).......................1327.6.1 Registrador TPMCNTH e TPMCNTL...............1337.6.2 Registrador TPMMODH e TPMMODL ..........1337.6.3 Registradores TPMC0VH, TPMC0VL, TPMC1VHe TPMC1VL.............................................................1337.6.4 Modo de captura do TPM............................1347.6.5 Modo de Comparação..................................1347.6.6 Modo Modulação por Largura de Pulso(PWM)....................................................................1357.6.7 Registrador TPMC0SC e TPMC1SC ...............1377.6.8 Registrador TPMSC...................................... 1387.7 Exemplos......................................................... 1397.8 Resumo do Capítulo.........................................1457.8 Exercícios.........................................................146

”Porque melhor é a sabedoria do que joias, e de tudo o que se deseja nada se

pode comparar com ela.” Provérbios 8:11

Page 122: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

122

7.1 Sistema de Relógio

O sistema de relógio (clocking system) de um microcontrolador é responsável porgerar o pulsos de clock para as instruções, a CPU e os periféricos funcionarem corretamente, emsincronia. O sistema de relógio do HCS08QG8 é o ICS (Internal clock Source).

7.2 Sistema ICS (Internal Clock Source)

A fonte do sinal de clock do sistema ICS pode ser de uma referência interna ouexterna. O ICS contém um circuito FLL (Frequency-Locked Loop) que compara a frequência geradapor um oscilador digital (DCO) com a frequência de sinal de referência RDIV_CLK, multiplicando afrequência em 512 vezes o sinal de referência, conforme a figura 7.1.

Figura 7.1 – Diagrama de blocos do ICS (Fonte: Datasheet HCS08QG8)

Page 123: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

123

O módulo ICS gera 5 saídas de clocks:

1) ICSERCLK: Referência externa de clock;

2) ICSIRCLK: Referência interna de clock;

3) ICSOUT: sinal de saída do ICS (default);

4) ICSLCLK: clock alternativo para o módulo de depuração;

5) ICSFFCLK: clock de frequência fixa baseado em uma das referências (interna ou externa).

O sinal ICSOUT (default) pode ser selecionado entre três opções, dependendo dos bits

CLKS (Registrador ICSC1), conforme Tabela 7.1.

Tabela 7.1 Fontes do ICSOUT

CLKS Sinal de saída

00 DCO

01 Referência interna

10 Referência externa

11 reservado

O valor default do CLKS é 00, sendo portanto, a saída do ICSOUT a do oscilador digitalDCO que é aproximadamente igual a 16MHZ. Este valor é dividido por BDIV(Registrador ICSC2).Como o valor default de BDIV é 01, ou seja, divide o sinal por 2, teremos ICSOUT = 8MHz.

7.2.1 Distribuição dos Sinais de Clock

Os sinais de clock internos são distribuídos no microcontrolador HCS08QG8 conforme

Figura 7.2.

Os periféricos temporizador de 8 bits Módulo Timer (MTIM) e temporizador de 16 bits

Timer/Pulse-width Modulator (TPM) que veremos nos itens a seguir, podem operar a a partir doBusclk, do XCLK ou do clock externo TCLK como fonte externa. Nas aplicações dessa disciplina, afrequência de fonte que será utilizada é a do barramento Busclk.

Page 124: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

124

Figura 7.2 - Distribuição dos sinais de clock (Fonte: Datasheet HCS08QG8Adaptado)

Page 125: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

125

7.3 Modos de operação do ICS

O sistema de clock ICS possui sete modos de operações possíveis. Isso é devido asdiferentes possibilidades de escolha da saída de clock pelos bits CLKS (Registrador ICSC1), daentrada de referência de clock do FLL pelo bit IREFS (Registrador ICSC1) e do controle de ativaçãodo DCO pelo bit LP (Registrador ICSC2). A tabela a seguir resume essas possibilidades de maneirasimplificada, observe posteriormente os Registradores desse sistema, para ter uma base maisaprofundada dessas combinações.

Tabela 7.2 – Modos de Operação do ICS -- Fonte: Datasheet HCS08QG8

Modo IREFS CLKS LP ICSOUT Descrição

FEI 1 00 0 f interna

RDIV× FLL

BDIVFLL Engaged Internal - FEI

Modo padrão após um reset. A frequência é geradapela fonte interna. O fator de divisão RDIV deve ser000 (divisão por 1). O sinal da saída do ICSOUT éigual a 16MHz dividido pelo fator BDIV (divisão por2). Portanto, após reset, ICSOUT é 8MHz e o BUSCLKé 4MHz.

FEE 0 00 0 f externa

RDIV× FLL

BDIVFLL Engaged IExernal - FEE

O FLL está ativo por uma referência extena. O RDIVdeve ser usado para deixar a referência do clock emuma faixa de 31,25kHZ e 39,0625 kHz.

FBI 1 01 0 f interna

BDIVFLL Bypassed Internal - FBI

O ICSOUT é igual ao sinal da referência interna(31,125kHz), dividido pelo fator BDIV. O FLL operaatravés da referência interna.

FBILP 1 01 1 f interna

BDIVFLL Bypassed Internal Low Power - FBILP

Modo para baixo consumo, em que o FLL édesativado.Quando o debug BDM estiver ativo, essemodo será redirecionado para o anterior.

FBE 0 10 0 f externa

BDIVFLL Bypassed External - FBE

O FLL opera através da referência externa. O RDIVdeve ser usado para deixar a referência do clock emuma faixa de 31,25kHZ e 39,0625kHz. A saída do DCOnão é utilizada.

FBELP 0 10 1 f externa

BDIVFLL Bypassed External Low Power - FBELP

Modo para baixo consumo, em que o FLL édesativado.Quando o debug BDM estiver ativo, essemodo será redirecionado para o anterior.

STOP X X X -- Todos os sinais de clock são cancelados em qualquermodo STOP do microcontrolador, à exceção deICSIRCLK e ICSERCLK, se estiver habilitados.

Page 126: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

126

Para mudar de um modo para o outro, basta alterar os bits dos Registradores ICS1 eICS2. Apenas enfatiza-se que é preciso ter cuidado com a mudança de referência e com os fatoresde divisão, para garantir a faixa correta de entrada suportada pelo microcontrolador.

7.4 Registradores do modo ICS------------------------------------------7.4.1 Registrador ICS1 - Internal Clock Source 1

------------------------------------------

Endereço: 0x0038 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: CLKS RDIV IREFS IRCLKEN IREFSTEN

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 1 0 0

BIT0 - IREFSTEN - Internal Reference STop ENableControla se haverá ou não referência interna no modo STOP0 - Referência desabilitada.1 - Referência habilitada.

BIT1 - IRCLKEN - Internal Reference Clock ENableControla se haverá ou não referência interna de clock para o ICSIRCLK0 - ICSIRCLK desativado.1 - ICSIRCLK ativado.

BIT2 - IREFS - Internal REFerence SelectBit responsável pela seleção da referência do FLL.0 - Referência externa selecionada.1 - Referência interna selecionada.

BIT5, BIT4 e BIT3 - RDIV - Reference DIVider

Seleciona o fator de divisão (FD) do clock da referência para encaixá-la na faixa de

31,25kHz a 39,0625kHz. A tabela abaixo indica os valores dos bits e os FD associados.

000 Divide por 1 100 Divide por 16

001 Divide por 2 101 Divide por 32

010 Divide por 4 110 Divide por 64

011 Divide por 8 111 Divide por 128

BIT7, BIT6 - CLKS - clock Source selectResponsável por escolher a fonte do sinal de saída do ICS00 - Saída do FLL.01 - Referência interna.10 - Referência externa.11 - Reservado.

Page 127: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

127

------------------------------------------7.4.2 Registrador ICS2 - Internal Clock Source 2

------------------------------------------

Endereço: 0x0039 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: BDIV RANGE HGO LP EREFS ERCLKEN EREFSTEN

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 1 0 0 0 0 0 0

BIT0 - EREFSTEN - EXternal Reference STop ENableControla se haverá ou não referência externa no modo STOP.0 - Referência desabilitada.1 - Referência habilitada.

BIT1 - ERCLKEN - External Reference clock ENableControla se haverá ou não referência externa de clock para o ICSIRCLK.0 - ICSIRCLK desativado.1 - ICSIRCLK ativado.

BIT2 - EREFS - External REFerence SelectSeleção do oscilador da referência externa.0 - Oscilador externo, com sinal na entrada EXTAL.1 - Oscilador interno, com cristal nas entradas XTAL e EXTAL.

BIT3 - LP - Low Power selectControla se haverá FLL nos modos bypassed.

0 - FLL ativo.1 - FLL inativo.

BIT4 - HGO - High Gain Oscilator selectSeleção do ganho do oscilador.0 - Consumo reduzido e baixo ganho.1 - Consumo elevado e alto ganho.

BIT5 - RANGE - frequency RANGE selectSeleção da frequência do oscilador externo.0 - Baixa frequência (até 40kHz).1 - Alta frequência (De 1 a 16MHz).

BIT6, BIT7 - BDIV - Bus frequency DIViderSeleciona o quanto será dividido o sinal escolhido em CLKS.00 - Dividido por 1.01 - Dividido por 2.10 - Dividido por 4.11 - Dividido por 8.

Page 128: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

128

------------------------------------------7.4.3 Registrador ICSSC – Internal Clock Source Status and Control

------------------------------------------

Endereço: 0x003B - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: 0 0 0 0 CLKST OSCINIT FTRIM

Leitura(R)/Escrita(W): R R R R R R R/W

Após o reset: 0 0 0 0 0 0 0 0

BIT0 - FTRIM - ICS Fine TRIMAjuste fino de frequência0 - A frequência da referência interna não é modificada.1 - A frequência da referência interna é incrementada em 0,2%.

BIT1 - OSCINIT - OCS INITializationIndicador da operacionalidade do oscilador.0 - Oscilador sem operação.1 - Oscilador em operação.

BIT2, BIT3 - CLKST - Bus frequency DIViderIndicador da fonte atual de clock

00 - Saída do FLL.01 - Referência interna.10 - Referência externa.11 - Reservado.

------------------------------------------7.4.4 Registrador ICSTRM - ICS TRiM

------------------------------------------

Registrador responsável por ajustar a frequência de operação da referência interna.Esse Registrador não é alterado ao ter-se qualquer reset, exceto em caso de POR.

Endereço: 0x003A - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: +25,6% +12,8% +6,4% +3,2% +1,6% +0,8% +0,4% +0,2%

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 1 0 0 0 0 0 0 0

Page 129: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

129

7.5 Temporizador de 8 bits Módulo Timer (MTIM)

O MTIM é um contador de 8 bits. Ele inicia sua contagem em 0 e incrementa umaunidade por pulso de clock até atingir o valor indicado no Registrador MTIMMOD. Quando eleatinge esse valor, o MTIM é zerado novamente e reinicia a contagem. Caso a interrupção doMTIM esteja habilitada, ele irá ativá-la.

O MTIM pode ser ativado por três fontes de clock, o Busclk (clock do barramento),XCLK (sinal de clock fixo) e a referência externa TCLK.

Esse módulo conta também com um prescaler (pré-divisor) que é capaz de dividir afrequência de entrada por um fator pré-programável entre 1 e 256.

O controle desse módulo ainda disponibiliza um bit para parar e outro para reiniciar acontagem.

A frequência das interrupções TOF pode ser calculada da seguinte fórmula: FTOF = FMTIMCLK

_________________________________________

prescaler * (MTIMMOD +1)

Figura 7.3 – Diagrama de Blocos TPM (Fonte: Datasheet HCS08QG8)

------------------------------------------7.5.1 Registrador MTIMSC- MTIM Status and Control

------------------------------------------

Endereço: 0x003C - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: TOF TOIE TRST TSTP 0 0 0 0

Leitura(R)/Escrita(W): R R/W W R/W R R R R

Após o reset: 0 0 0 1 0 0 0 0

BIT4 - TSTP - mTim counter SToPPara a contagem do MTIM0 - Libera a contagem1 - Impede a continuidade da contagem

Page 130: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

130

BIT5 - TRST - mTim counter resetQuando setado, esse bit reinicia a contagem do microcontrolador. Sempre quando

esse bit é lido, ele apresenta o valor lógico 0.

BIT6 - TOIE - mTim Overflow Interrupt EnableResponsável por ativar a função de interrupção do MTIM.0 - Função desabilitada.1 - Função habilitada.(Vetor 12 - $FFE6)

BIT7 - TOF - mTim Overflow flag

Sinalizador que indica o evento de interrupção. Para reconhecer a interrupção é

necessário escrever 0 nesse bit, na rotina de tratamento de interrupção.0 - Não aconteceu interrupção.1 - Aconteceu interrupção.

------------------------------------------7.5.2 Registrador MTIMCLK- MTIM CLocK configuration register

------------------------------------------

Endereço: 0x003D - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: 0 0 CLKS PS

Leitura(R)/Escrita(W): R R R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BIT3, BIT2, BIT1 e BIT0 - PS – prescalerSeleciona o fator de divisão do prescaler.

0000 Divide por 1 0101 Divide por 32

0001 Divide por 2 0110 Divide por 64

0010 Divide por 4 0111 Divide por 128

0011 Divide por 8 1XXX Divide por 256

0100 Divide por 16

BIT5, BIT4 - CLKS - Clock Source selectResponsável por escolher a fonte do sinal de saída do MTIM00 - Busclk

01 - XCLK10 - TCLK, com incremento do MTIM na borda de descida11 - TCLK, com incremento do MTIM na borda de subida

Page 131: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

131

------------------------------------------7.5.3 Registrador MTIMCNT- MTIM CouNTer

------------------------------------------Registrador responsável por armazenar a contagem atual do MTIM.

Endereço: 0x003E - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: Contagem do MTIM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

------------------------------------------7.5.4 Registrador MTIMMOD - MTIM MODulo

------------------------------------------Registrador responsável por armazenar o valor a ser atingido pela contagem do

MTIM.

Endereço: 0x003F - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: Módulo da Contagem do MTIM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

Page 132: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

132

7.6 Temporizador de 16 bits Timer/Pulse-width Modulator (TPM)

O TPM é um contador binário de 16 bits capaz de executar diversas funções, além dacontagem propriamente dita. O microcontrolador HCS08QG8 possui um módulo TPM, com doiscanais, capaz de executar um modo de captura, um modo de comparação e dois modos de PWM.

Observe a figura a seguir que contém o diagrama de blocos do módulo TPM.

Figura 7.4 - Diagrama de Blocos do TPM (Fonte: Datasheet HCS08QG8)

Os pinos que servem de canais para o módulo TPM são os correspondentes às portasPTA0 e PTB5. Os canais são independentes, de modo que, é possível trabalhar com duas funçõesdo TPM ao mesmo tempo (desde que ambas se utilizem do mesmo valor para o módulo decontagem).

Assim como o MTIM, o TPM também possui um Registrador que armazena acontagem (TPMCNT) e um Registrador que armazena o módulo de contagem (TPMMOD).Contudo, esses Registradores possuem 16 bits, assim possuem uma parte alta H e uma partebaixa L. Para acessar esses Registradores, é necessário utilizar as instruções que envolvem oRegistrador indexado HX.

Observação Importante

Não esqueça que os canais do TPM quando utilizados, a porta PTA0 é para o canal 0 do TPM e a porta PTB5 é para o canal 1 do TPM!

PTA0 ----- Canal 0PTB5 ----- Canal 1

Page 133: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

133

------------------------------------------7.6.1 Registrador TPMCNTH e TPMCNTL - TPM CouNTer High and Low

------------------------------------------Registrador responsável por armazenar a contagem atual do TPM. Quando o valor

atingir o armazenado em TPMMOD (H ou L), a contagem é zerada.

Endereço: 0x0041 - Página Baixa (TPMCNTH)

BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0042 - Página Baixa (TPMCNTL)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

------------------------------------------7.6.2 Registrador TPMMODH e TPMMODL - TPM MODulo High and Low

------------------------------------------Registrador responsável por armazenar o valor a ser atingido pela contagem do TPM.

O Registrador TPMMODL armazena o valor de contagem em 8 bits, o TPMMODH armazena em 16bits. Esse é o valor de referência para a frequência dos modos de operação do contador TPM.

Endereço: 0x0043 - Página Baixa (TPMMODH)

BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0044 - Página Baixa (TPMMODL)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

Page 134: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

134

------------------------------------------7.6.3 Registradores TPMC0VH, TPMC0VL, TPMC1VH e TPMC1VL - TPMChannel 0 (1) Value High and Low

------------------------------------------Registrador responsável por armazenar o valor de captura ou comparação de sinal

nesses respectivos modos. No modo PWM, serve para armazenar o valor de estouro do ciclo ativodo PWM.

Endereço: 0x0046 - Página Baixa (TPMC0VH)

BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0047- Página Baixa (TPMC0VL)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0049 - Página Baixa (TPMC1VH)

BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x004A - Página Baixa (TPMC1VL)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

7.6.4 Modo de captura do TPM

Esse modo tem por objetivo determinar o período do sinal, através da captura natransição do sinal do canal (TPMCHx). No momento da captura o valor da contagem atual doTPMCNT é copiado para o canal do Registrador de captura do canal (TPMCxV). Os sinais podemser capturadas pelos sinais pela borda de descida, subida ou por ambas. O sinal deve ser aplicado

Page 135: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

135

em um dos pinos equivalentes a um canal do TPM. Quando ocorrer uma captura, o flag do canalChxF (Registrador TPMCxSC) é setado, e pode gerar uma interrupção se a interrupção estiverhabilitada ChxIE (Registrador TPMCxSC) setada, e todas as interrupções habilitadas pelo flag I(Registrador CCR). A diferença entre duas capturas consecutivas é o período do sinal externo(exceto quando estamos trabalhando com as duas bordas ao mesmo tempo).

7.6.5 Modo de Comparação

O modo de comparação pode ser considerado o oposto do modo de captura. Porque,agora, o TPMCNT fará sua contagem até o valor indicado no TPMCxV e, quando atingi-lo, omicrocontrolador irá setar, apagar ou inverter o estado do pino do canal do TPM associado.

Também é possível fazer uma interrupção com o modo de comparação do TPM, pois oflag ChxF (Registrador TPMCxSC) é setado cada vez que o TPMCNT atinge o valor do TPMCxV.Também é possível gerar a interrupção períodica, sem alterar o nível lógico do pino associado aocanal do TPM. Para isto, o flag de interrupção ChxIE (Registrador TPMCxSC) deve estar setada, etodas as interrupções habilitadas pelo flag I (Registrador CCR).

Assim, o modo de comparação do TPM pode fazer do microcontrolador, entre outrascoisas, um gerador de sinal.

7.6.6 Modo Modulação por Largura de Pulso (Pulse-Width Modulation-

PWM)

Modulação é todo e qualquer processo de variação de algum elemento de um sinal(amplitude, frequência, intensidade, comprimento, entre outros) deformando o mesmo. Isso éfeito, entre outras finalidades, para facilitar a transmissão do mesmo.

Um tipo de modulação chamado PWM, derivado de Pulse Width Modulation ouModulação por Largura de Pulso, é um sinal muito utilizado para aplicações industriais,principalmente no controle de motores e fontes chaveadas.

Ela tem como uma grande característica variar a razão cíclica da onda. A razão cíclicaseria justamente a largura da onda quadrada, fazendo com que uma onda tenha uma diminuiçãode um nível lógico em detrimento do outro. Esta razão cíclica ou ciclo de trabalho é o mesmo queduty cycle, que é utilizado para descrever a fração de tempo em que um sistema está em umestado "ativo" ou em trabalho.

Portanto, existem dois ciclos em cada pulso, o ciclo ativo e o ciclo inativo. Cada ciclocom um nível lógico diferente. O ciclo ativo é o responsável por efetivar o sinal, assim, existe oPWM ativo em 1 e PWM ativo em 0, de modo que a frequência do sinal será em relação cicloativo. Para exemplificar, pense em um LED que acende com nível lógico 0. Então, esse LED deveráser conectado em um sinal PWM com ciclo ativo em 0, ou seja, ele terá sua luminosidadeproporcionalmente à porcentagem do ciclo ativo em zero.

Figura 7.5 – Ciclo de Atividade do PWM

Ciclo inativo

Período do sinal

Ciclo ativo

Page 136: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

136

PWM Modo Normal ou Alinhamento pela Borda

O alinhamento pela borda é feito quando a referência para a porcentagem de cicloativo é a borda da onda.

Considerando que o PWM é ativo em 0, vejamos o funcionamento do PWM ModoAlinhamento pela borda: a saída é colocada inicialmente em ciclo ativo, o TPMCNT inicia acontagem. Quando essa contagem chega ao valor de comparação TPMCxV, a saída muda para ociclo inativo. A saída permanece nesse estado até que a contagem do TPMCNT atinja o valor domódulo TPMMOD, mudando a saída do ciclo inativo para ativo, reiniciando o processo. Assim, é possível deduzir algumas fórmulas relacionadas ao PWM, valendo-se tambémdaquilo que é conhecido para o TPM. O quadro abaixo contém essas fórmulas:

Objetivo da fórmula Fórmula

Período de incremento do Registrador TPMCNT TTPMCNT=Prescaler

f FONTE

Frequência de interrupção do TPMCNTf TOF =

f FONTE

Prescaler×TPMMOD1

Período do sinal PWM T PWM = TTPMCNT×TPMMOD1

Período do ciclo ativo do PWM TCICLO ATIVO= TTPMCNT×TPMCxV

É fácil perceber que para termos um ciclo ativo de 0%, basta programar o Registrador deperíodo (TPMCxV) com o valor 0. Para termos um ciclo ativo de 100%, basta programar o mesmoRegistrador com um valor acima daquele descrito no TPMMOD (normalmente, usa-se umaunidade a mais, para facilitar cálculos posteriores). Portanto, para calcular os valores dos ciclosativos, deve-se utilizar regra de 3 simples (lembre-se que o valor de TPMMOD+1 = 100%).

PWM Modo Central Nesse modo, a referência do ciclo ativo é o centro do pulso e não a borda. Considerandoque o PWM é ativo em 0, vejamos o funcionamento do PWM Modo Alinhamento Central: a saídaé colocada inicialmente em ciclo ativo, o TPMCNT inicia a contagem. Quando essa contagematingir o valor de comparação (Registrador TPMCxV), a saída é colocada no estado inativo. Acontagem do TPMCNT segue até atingir o valor programado no módulo de contagem, RegistradorTPMMOD, quando então a direção de contagem do TPMCNT é invertida e passa a contarregressivamente. Ao atingir novamente o valor de comparação (Registrador TPMCxV), a saída écolocada no seu estado ativo e o contador segue a contagem decrescente até zero, quando o ciclorecomeça. Este modo é utilizado em aplicações de acionamentos de motores, onde apresentamenos ruído. Nessa disciplina, não nos preocuparemos com esse modo de alinhamento do PWM.

Page 137: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

137

------------------------------------------7.6.7 Registrador TPMC0SC e TPMC1SC - TPM Channel 0 (or 1) Status

and Control

------------------------------------------Registrador responsável pela seleção do canal e do modo de operação do TPM.

Endereço: 0x0045 - Página Baixa (TPMC0SC)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: CH0F CH0IE MS0B MS0A ELS0B ELS0A 0 0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R R

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0048 - Página Baixa (TPMC1SC)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: CH1F CH1IE MS1B MS1A ELS1B ELS1A 0 0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R R

Após o reset: 0 0 0 0 0 0 0 0

BIT5, BIT4, BIT3 e BIT2 - ELSxy e MSxy - Edge/Level Select x y e Mode Select x y (y=A

ou B)Responsáveis pela seleção do modo de operação do canal, conforme a tabela abaixo:

MSxB MSxA ELSxB ELSxA Modo Selecionadox x 0 0 Canal desativado (o pino não está sendo usado para o

TPM, podendo ser usado, por exemplo, para E/S)0 0 0 1 Modo de Captura (sinal na borda de subida)0 0 1 0 Modo de Captura (sinal na borda de descida)0 0 1 1 Modo de Captura (sinal em ambas as bordas)0 1 0 0 Modo de comparação (apenas seta o flag CHxF)0 1 0 1 Modo de comparação (inverte o estado do pino associado

ao canal do TPM)0 1 1 0 Modo de comparação (limpa o estado do pino associado

ao canal do TPM)0 1 1 1 Modo de comparação (acende o estado do pino associado

ao canal do TPM)1 x 1 0 Modo PWM (nível ativo alto)1 x x 1 Modo PWM (nível ativo baixo)

BIT6 - CHxIE - CHannel x Interrupt EnableResponsável por ativar a função de interrupção do canal x do TPM.0 - Função desabilitada.1 - Função habilitada. (Canal 0: Vetor 5 - $FFF4; Canal 1: Vetor 6 - $FFF2)

BIT7 - CHxF - CHannel x flag

Sinalizador que indica o evento de captura ou comparação acontecido no canal

0 - Não aconteceu captura ou comparação.1 - Aconteceu captura ou comparação. Observe no datasheet a maneira correta para

reconhecer cada tipo de interrupção relacionado a cada modo de operação dos canais do TPM.

Page 138: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

138

------------------------------------------7.6.8 Registrador TPMSC - TPM Status and Control

------------------------------------------

Endereço: 0x0040 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: TOF TOIE CPWMS CLKSB CLKSA PS2 PS1 PS0

Leitura(R)/Escrita(W): R R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 0 0 0 0 1 -- -- --

BIT0, BIT1 e BIT2 - PSn - prescaler Select n

Seleciona o valor de divisão do prescaler. A tabela abaixo indica os valores dos bits e

os fatores de divisão associados.

Bit 2 Bit 1 Bit 0 Fator de Divisão Bit 2 Bit 1 Bit 0 Fator de Divisão

000 Divide por 1 100 Divide por 16

001 Divide por 2 101 Divide por 32

010 Divide por 4 110 Divide por 64

011 Divide por 8 111 Divide por 128

BIT3 e BIT4 - CLKSy - clock Source select yResponsável por escolher a fonte do sinal de clock do TPM.

Bit 4 Bit 3 Função Bit 4 Bit 3 Função

00 TPM paralisado 10 XCLK

01 Busclk 11 clock externo (TPMCLK)

BIT5 - CPWMS - Center-aligned PWM SelectControla modo do PWM.0 - Modo normal.1 - Modo central.

BIT6 - TOIE - Timer Overflow Interrupt Enable Responsável por ativar a função de interrupção do TPM.0 - Função desabilitada.1 - Função habilitada (Vetor 7 - $FFF0).

BIT7 - TOF - Timer Overflow flagSinalizador de estouro de contagem do TPM.0 - Não houve estouro de contagem.

1 - Houve estouro de contagem.

Page 139: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

139

7.7 Exemplos

7.7.1 Exemplo 1 MTIM - Use a interrupção do MTIM para criar um programa que faça um LED, conectado a PTB7, piscara cada 40 microssegundos. Use o Busclk do microcontrolador como fonte. (Observe que esseperíodo é indistinguível ao olho humano, assim, caso você implemente esse programa, nãopoderá observar o LED piscar)Solução:

Lembre-se que o Busclk possui uma frequência de 4MHz. O MTIM faz sua contagemcom apenas 8 bits, ou seja, vai de 0 a 255. E, também, que o mesmo possui um prescaler quedivide a frequência de entrada em até 256 vezes.

Deseja-se que o LED pisque a cada 40μs, ou seja, T = 40μs, logo, f = 25kHz. Ora:

Dessa forma, pode-se utilizar qualquer combinação de prescaler e MTIMMOD+1 cujo produtoseja 160. Escolhe-se, arbitrariamente, prescaler = 4 e MTIMMOD = 39, assim, 4x(39+1) = 160.

Essa escolha implica valores a serem atribuídos aos Registradores do MTIM, observe:MTIMCLK = #$02 (A fonte de frequência é o Busclk e o prescaler é igual a 4)MTIMMOD = #39 (A contagem vai até o decimal 39 ou ao hexadecimal 27)MTIMSC = #$70 ( A interrupção é habilitada e a contagem paralisada ao se programar

o Registrador).

Rótulo Instruções ExplicaçãoINCLUDE 'MC9S08QG8.inc' ;inclui a biblioteca que con tém as

definições do microcontrolador

ORG $E000 ;direciona o montador para o endereçoonde o programa será criado

TRATA_MTIM: ;rotina de tratamento da interrupçãogerada pela contagem do MTIM

BCLR 7, MTIMSC ;apaga o flag TOF, habilitando novasinterrupções

BCLR 7, PTBD ;acende o LED conectado à porta PTB7

RTI ;retorna ao ponto de parada do programa

INICIO: ;após desativar o COP, faz-se aconfiguração das portas digitais. Aúltima configuração será sempre a do AD

LDA SOPT1 ;lógica para desativar o COP

AND #127

STA SOPT1

MOV #$00, PTBD ;limpa as saídas

MOV #$80, PTBDD ;PTB7 configurada como saída digitai

;não há entrada digital, por isso, não énecessário configurar o pull-up

f TOF =f FONTE

Prescaler×MTIMMOD1⇒Prescaler×TIMMOD1 = 160

Page 140: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

140

Rótulo Instruções ExplicaçãoMOV #39, MTIMMOD ;carrega o MTIMMOD com o decimal 39 , ou

seja, a contagem será até esse valor

MOV #02, MTIMCLK ;usa o prescaler = 4, além disso, escolheo Busclk como fonte de frequência para oMTIM

MOV #$70, MTIMSC ;habilita a interrupção do MTIM e i mpedeo início da contagem

CLI ;habilita todas as interrupções

MAIN: ;a lógica do programa efetivamente começaagora

BCLR 4,MTIMSC ;inicia a contagem do MTIM

LOOP: ;inicia ciclo de contagem e interrupção

BSET 7, PTBD ;apaga LED conectado a PTB7

BRA LOOP

ORG $FFE6 ;área do vetor de interrupção do MTIM

MTIM: DC.W TRATA_MTIM ;localiza a rotina de tratament o do vetor

ORG $FFFE ;área do vetor reset

RESET: DC.W INICIO ;inicia o programa em INICIO

7.7.2 Exemplo 2 TPM - Use a interrupção de um contador do HCS08QG8 para criar um programa que faça um LED,conectado a PTB7, piscar a cada 2 segundos. Use o Busclk do microcontrolador como fonte.Solução:

Lembre-se que o Busclk possui uma frequência de 4MHz. O MTIM faz sua contagemcom apenas 8 bits, ou seja, vai de 0 a 255. E, também, que o mesmo possui um prescaler quedivide a frequência de entrada em até 256 vezes. A frequência mínima de operação do mesmo,dessa forma, é de 61Hz, se utilizarmos o Busclk como fonte de frequência.

Mas, deseja-se que o LED pisque a cada 2s, ou seja, T = 2s, logo, f = 0,5Hz. Assim, énecessário que utilizemos o contador TPM. Ora:

O TPM disponibiliza um prescaler de até 128. Observa-se que o Valor máximo deTPMMOD é 65535 (#$FFFF, em hexadecimal). O produto desses valores é igual a 8388480,próximo ao valor do produto desejado. Assim, deve-se escolher o prescaler como 128, com isso:

A partir desses pré-requisitos, seleciona-se o valor adequado para cada Registrador doTPM:

TPMSC = #$4F (Interrupção habilitada, a fonte de clock é o Busclk e prescaler = 128)TPMMODH = #62499

Prescaler×TPMMOD1 = 8×106⇒TPMMOD1=8×106

128⇒TPMMOD=62499

f TOF =f FONTE

Prescaler×TPMMOD1⇒ Prescaler×TPMMOD1 = 8×106

Page 141: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

141

Veja que não utilizaremos o TPM em nenhum modo especial (Captura, Comparação ouPWM) nesse momento, dessa forma, logicamente, não é necessário configurar os Registradoresassociados a estes.

Observe que o programa desse exemplo é muito similar ao programa do exemploanterior.

Rótulo Instruções ExplicaçãoINCLUDE 'MC9S08QG8.inc' ;inclui a biblioteca que con tém as

definições do microcontrolador

ORG $E000 ;direciona o montador para o endereçoonde o programa será criado

TRATA_TPM: ;rotina de tratamento da interrupçãogerada pela contagem do MTIM

BCLR 7, TPMSC ;apaga o flag TOF, habilitando novasinterrupções

BCLR 7, PTBD ;acende o LED conectado à porta PTB7

RTI ;retorna ao ponto de parada do programa

INICIO: ;após desativar o COP, faz-se aconfiguração das portas digitais.

LDA SOPT1 ;lógica para desativar o COP

AND #127

STA SOPT1

MOV #$00, PTBD ;limpa as saídas

MOV #$80, PTBDD ;PTB7 configurada como saída digitai

;não há entrada digital, por isso, não énecessário configurar o pull-up

;lógica para inserção de valores de 16bits, utilizando o registrador H:X

LDHX #62499 ;carrega o decimal 62499 em H:X

STHX TPMMOD ;carrega o decimal 62499 em TPMMOD

MOV #$4F, TPMSC ;habilita interrupção, escolhe o Busclkcomo fonte de clock e ativa o prescalercom o valor de 128

CLI ;habilita todas as interrupções

LOOP: ;inicia ciclo de contagem e interrupção

BSET 7, PTBD ;apaga LED conectado a PTB7

BRA LOOP

ORG $FFF0 ;área do vetor de interrupção do TPM

TPM: DC.W TRATA_TPM ;localiza a rotina de tratamento do vetor

ORG $FFFE ;área do vetor reset

RESET: DC.W INICIO ;inicia o programa em INICIO

Page 142: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

142

7.7.3 Exemplo 3 PWM-1 - - Faça um programa que utilize o canal 1 do PWM - Modo normal do microcontrolador, comciclo ativo de 40%, para fazer um LED ligado na porta PTB5 ter sua luminosidade cair para 40%,caso use a chave em PTA2. (Utilize ftof = 50 Hz e o Busclk como fonte de clock).

Solução:Observe que a frequência é de 50Hz. Assim:

Utilizando o prescaler com o valor 8, deve ser atribuído o valor decimal 9999 aoTPMMOD.

Para configurar o ciclo ativo, temos que aplicar a seguinte relação:

Onde x representa o valor a ser armazenado em TPMC1VH. Dessa forma:

Dessa forma, deve-se atribuir o valor decimal 4000 a TPMC1VH, para ter-se 40% dociclo ativo, nesse caso. Assim, os seguintes Registradores serão configurados:

TPMSC = #$0B (Não há interrupção, o Busclk é a fonte do sinal e o fator de divisão é 8)TPMMODH = #9999TPMC1SC = #$24 (Configurado para o modo PWM em ciclo ativo baixo, para o LED)

TPMC1VH = #4000

Rótulo Instruções ExplicaçãoINCLUDE 'MC9S08QG8.inc' ;inclui a biblioteca que con tém as

definições do microcontrolador

ORG $E000 ;direciona o montador para o endereçoonde o programa será criado

INICIO: ;após desativar o COP, faz-se aconfiguração do PWM

LDA SOPT1 ;lógica para desativar o COP

AND #127

STA SOPT1

;configura entrada digital

BSET 2,PTADD ;PTA2 como entrada digital

;configura pull-up

LDA #$04

STA PTAPE ;pull-up em PTA2

;lógica para inserção de valores de 16bits, utilizando o registrador H:X

10000x

=10040

⇒ x=40×10000

100⇒ x=4000

TPMMOD1⇒ 100%x⇒ 40%

f TOF =f FONTE

Prescaler×TPMMOD1⇒Prescaler×TPMMOD1 =

4×106

50= 80 kHz

Page 143: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

143

Rótulo Instruções ExplicaçãoLDHX #9999 ;carrega o decimal 9999 em H:X

STHX TPMMODH ;carrega o decimal 9999 em TPMMODH

LDHX #10000 ;carrega o decimal 10000 em H:X

STHX TPMC1VH ;carrega o decimal TPMMODH+1 em TPMC1V H,impedindo o início imediato do PWM

MOV #$28, TPMC1SC ;habilita o PWM em ciclo ativo ba ixo, nocanal 1, equivalente a PTB5

MOV #$0B, TPMSC ;escolhe o Busclk como fonte de clock eativa o prescaler com o valor de 8

LOOP: LDA PTAD

AND #$04 ;verifica se a chave está ligada

BEQ DIMINUI ;caso esteja (PTB2 = 0) diminuiluminosidade

BNE AUMENTA ;caso não esteja (PTB2 = 1)

BRA LOOP

DIMINUI: LDHX #4000 ;carrega o decimal 4000 em H:X

STHX TPMC1VH ;carrega o decimal 4000 em TPMC1VH

BRA LOOP

AUMENTA: LDHX #10000 ;carrega o decimal 10000 em H:X

STHX TPMC1VH ;carrega o decimal TPMMODH+1 em TPMC1V H

BRA LOOP

ORG $FFFE ;área do vetor reset

RESET: DC.W INICIO ;inicia o programa em INICIO

7.7.4 Exemplo 4 – Modo de Comparação

Utilize os canais 0 e 1 do TPM operando no modo de comparação, para fazer um LEDconectado diretamente ao canal 0 (PTA0) para piscar a uma frequência de 10Hz e outro LED aocanal 1 conectado através da porta PTB7 para piscar a uma frequência de 5Hz.

Solução:

Rótulo Instruções ExplicaçãoORG $E000 ;direciona o montador para o endereço on de o

programa será criado. INICIO:

LDA SOPT1 ; Desativação do COPAND #127STA SOPT1

BSET 7, PTBDD ;configura PTB7 como saídaBSET 7, PTBD ;apaga o LED de PTB7

;configura TPMMOV #$54, TPMC0SC ;configura canal 0 do TPM como m odo de

comparação com inversão de saída e habilitaa interrupção do canal 0 do TPM

LDHX 3124 ;carrega LDHX com 3124STHX TPMC0VH ;configura a período de comparação com

31250Hz / 3125 = 10Hz

Page 144: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

144Rótulo Instruções Explicação

MOV #$50, TPMC1SC ;configura o canal 1 do TPM apena s para omodo de comparação e habilita suainterrupção

LDHX 6249 ;carrega LDHX com 6249STHX TPMC1VH ;configura a período de comparação com

31250Hz / 6250 = 5Hz MOV #$0F, TPMSC ; BusClk como fonte do TPM e prescaler de 128

;assim, a frequência de operação do TPM é4MHz/128 que é igual a 31250Hz

CLI ;habilita todas as interrupçõesLOOP: BRA LOOP ;aguarda interrupções

TRT_TPMC0: BCLR 7,TPMC0SC ;apaga o flag de interrupçãoLDHX TPMC0VH ;adiciona o próximo período de compara çãoAIX #3125STHX TPMC0VHRTI

TRT_TPMC1: BCLR 7,TPMC1SC ;apaga o flag de interrupçãoLDHX TPMC1VH ;adiciona o próximo período de compara çãoAIX #6250STHX TPMC1VHLDA PTBD ;lógica para inverter LED conectado a PTB 7AND #$80 ;após carregar PTBD no Acumulador, verifi ca

o nível lógico do bit 7, caso estejaapagado, o programa seta e vice-versa

BEQ INV ;observe que não é possível usar a instruç ãoCOM, pois a mesma inverte todos os bits

BCLR 7, PTBDRTI

INV: BSET 7, PTBDRTI

ORG $FFF4 ;área do vetor de interrupção do canal 0 doTPM

IN_TPM0: DC.W TRT_TPMC0 ;direciona o programa para a rotina detratamento TRT_TPMC0 quando uma interrupçãono TPMC0 é detectada

ORG $FFF2 ;área do vetor de interrupção do canal 1 doTPM

IN_TPM1: DC.W TRT_TPMC1 ;direciona o programa para a rotina detratamento TRT_TPMC1 quando uma interrupçãono TPMC1 é detectada

ORG $FFFE ;área do vetor resetRESET: DC.W INICIO ;inicia o programa em INICIO

Observação Importante

Tanto o modo de comparação quanto o modo de captura não utilizam o registrador TPMMOD. O modo de comparação, basicamente, gera uma frequência de saída, o que é útil na modulação de sinais. O modo de captura reconhece uma frequência de entrada, o que é muito útil quando se trabalha com reconhecimento de velocidade de motores, por exemplo. Ambos utilizam o TPMCxV para as informações de saída ou entrada de frequência, respectivamente.

Page 145: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

145

7.7.5 Exemplo 5 – Modo de Captura

Faça um programa que habilite o modo de captura de sinal na borda de descida docanal 0 do TPM e armazene a última frequência capturada em uma variável, a cada interrupção domodo de captura.

Solução:

Rótulo Instruções ExplicaçãoORG $0060 ;direciona o montador para a área de cri ação

de variáveisCAPTURA: DC.B 2 ;cria variável de 2 bytes

ORG $E000 ;direciona o montador para o endereço on de oprograma será criado.

INICIO:LDA SOPT1 ; Desativação do COPAND #127STA SOPT1

;configura TPMMOV #$48, TPMC0SC ;configura canal 0 do TPM como m odo de

captura de sinal em borda de descida ehabilita a interrupção do canal 0 do TPM

MOV #$0F, TPMSC ; BusClk como fonte do TPM e prescaler de 128;assim, a frequência de operação do TPM é4MHz/128 que é igual a 31250Hz

LDHX #0 ;limpa o Registrador HXSTHX CAPTURA ;inicializa a variável de dois bytes CAPTURACLI ;habilita todas as interrupções

LOOP: BRA LOOP ;aguarda interrupções

TRT_TPMC0: BCLR 7,TPMC0SC ;apaga o flag de interrupçãoLDHX TPMC0VH ;salva o valor do período do sinal cap turadoSTHX CAPTURA ;armazena o valor capturado na variáve l

CAPTURARTI ;retorna ao fluxo do programa

ORG $FFF4 ;área do vetor de interrupção do canal 0 doTPM

IN_TPM0: DC.W TRT_TPMC0 ;direciona o programa para a rotina detratamento TRT_TPMC0 quando uma interrupçãono TPMC0 é detectada

ORG $FFFE ;área do vetor resetRESET: DC.W INICIO ;inicia o programa em INICIO

7.8 Resumo do Capítulo

O Microcontrolador conta com dois contadores, o MTIM que possui 8 bits e o TPMque possui 16 bits. O TPM, além de funcionar como contador, pode operar em três modos:captura, comparação e PWM, relativos à frequência. O TPM possui dois canais para esses modos:canal 0 associado a PTA0 e canal 1 associado a PTB5.

Page 146: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

146

7.9 Exercícios

1- Faça um programa que utilize um contador do HCS08QG8. O programa deve fazer com que umLED conectado a PTB7 pisque 10 vezes por segundo enquanto PTA3 estiver no nível lógico 0 e queo LED fique apagado enquanto PTA3 estiver em nível lógico 1. Utilize o Busclk como fonte defrequência.

2- Faça dois programas para fazer um LED, conectado a PTB6, piscar a cada 100 micro-segundos.Use o Busclk do microcontrolador como fonte. O primeiro deve programa deve usar a interrupçãodo MTIM e o segundo deve utilizar a interrupção do TPM para cumprir essa tarefa.

3- Faça um programa que utilize o canal 1 do PWM do microcontrolador, com ciclo ativo de 30%,para fazer um LED com luminosidade de 30% quando a chave conectada a PTA2 é acionada.(Utilize ftof = 10 Hz e o Busclk como fonte de clock).

4- Há LED conectado ao canal 0 e outro ao canal 1 do PWM do microcontrolador. O canal 0 estácom ciclo ativo de 20% e o canal 1 está com ciclo ativo de 80%. O período do LED é de 150ms(Utilize um Cristal de 1 MHz externo, conectado a TCLK, como fonte de frequência). Faça umprograma para simular essa condição.

5- Faça um programa que controle o brilho de um LED, utilizando o canal 0 do PWM e as entradasdigitais do microcontrolador. Veja a tabela abaixo para o controle do brilho:

PTB2 PTB1 PTB0 Brilho

0 0 0 100%

0 0 1 75,00%

0 1 0 50%

0 1 1 25%

1 X X 0%

Utilize o Busclk como fonte e TPMMOD = #7999.

6- Faça um programa que meça a frequência de um sinal através do uso do TPM. Se a frequênciafor inferior a 1 kHz, o microcontrolador deverá acionar um LED vermelho, em PTB0. Se afrequência estiver entre 1 kHz e 50 kHz, deve ser acionado um LED verde, conectado a PTB1. Porfim, se a frequência for superior a 50 kHz, deve ser ativado um LED amarelo, ligado a PTB2.

7- Um elevador de um prédio de 7 andares (além do térreo) é movido por um motor de correntecontínua, que possui uma lógica de controle de rotação que funciona da forma descrita pelatabela abaixo. Faça um programa em Assembly para o microcontrolador que vai controlar essemotor. Não se esqueça de que é necessário programar botões (acionados em nível baixo, use opull-up) para os andares desejados e use a RTI para controlar o tempo de subida/decida (5segundos por andar).Além disso, a capacidade máxima do elevador é de 800kg, caso o medidor aponte uma massamaior, um LED de alerta conectado à PTA4 é acionado.

Page 147: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

147

Dados: a) A sensibilidade do sensor de massa é: S = 330kg/V.b) A frequência fTOF é igual a 60Hz e a fonte do temporizador é um clock externo ligado ao TPM, de1,0MHz.c) Os botões dos andares estão ligados às portas PTB.d) Desconsidere que novos passageiros entrem no elevador além dos iniciais, além disso, todos ospassageiros querem ir para o mesmo andar sempre.

Peso Percentual de rotação Peso Percentual de rotação

Até 50kg 10% De 300kg a 450kg 45%

De 50kg a 170kg 30% De 450kg a 550kg 30%

De 170kg a 300kg 60% Acima de 600kg 25%

8- Utilize o modo de comparação do TPM para criar um gerador de ondas quadradas comfrequência programável. O sistema funciona da seguinte forma: um potenciômetro envia um sinalde tensão entre 0,5 e 3,0V. Esse sinal deve ser interpretado como a frequência que o usuáriodeseja fazer seu gerador de sinais operar. A razão de conversão é 100kHz/V, sendo que em 0,5V,temos um frequência de 5kHz. Use o canal 2 do conversor AD para realizar a conversão.

9- Programe o TPM do controlador para atender (criar) às seguintes situações (dispositivos):a) Temporizador de 1 minuto. b) Temporizador com temporizações fixas de 2, 5 e 10 minutos, na qual o usuário seleciona adesejada através de botões conectados à PTA1, PTA2 e PTA3, respectivamente.d) Temporizador que acione uma campainha por 5 segundos, após terminar uma temporizaçãode 3 minutos. (use a RTI para tempo do acionamento e o TPM para a temporização, a campainhaestá conectada a PTB5).e) Mantenha um LED aceso por 2 segundos e apagado por 1 segundo.f) Mantenha um LED aceso por 1 segundo e apagado por 2 segundos.g) Mantenha um LED piscando numa frequência de 1Hz, com tempos aceso e apagado iguais.h) Mantenha dois LED piscando alternadamente em tempos iguais com uma frequência de 2Hz.i) Mantenha dois LEDs piscando numa frequência de 1Hz durante 30 segundos.j) Mantenha um lâmpada de alarme piscando a uma frequência de 1,5Hz quando atemperatura de um sistema ultrapassar seu valor máximo de 70°C (Dados: conversor operandono canal 8, com sensor de sensibilidade 25°C/V e 0°C = 0V, conversor em modo 10 bits).k) Faça um LED piscar a uma frequência de 5Hz por 3 segundos e reduza a uma frequência de 1 Hzpor 10 segundos e eleve a uma frequência de 10Hz por mais 2 segundos.

Page 148: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

148

Capítulo 8: Interface deComunicação Serial (SCI)

É possível comunicar o microcontrolador com um outro dispositivo, talvez ummicrocomputador ou uma impressora? Transmitir ou receber alguma informação e fazer essacomunicação ativar alguma coisa? Isso é possível através do Módulo que será visto nesse

capítulo, Comunicação Serial SCI.

8.1 Interface Serial Assíncrona..............................1498.2 Transmissor SCI................................................1498.3 Receptor SCI.....................................................1508.4 Gerador de Baud Rate.....................................1528.5 Interrupções da SCI..........................................1528.6 Registradores da SCI........................................1528.6.1 SCID...............................................................1538.6.2 SCIBDH e SCIBDL...........................................153

8.6.3 SCIC2 ...........................................................1548.6.4 SCIS1.............................................................1558.6.5 SCIC3.............................................................1568.6.7 SCIS2.............................................................1578.6.7 SCIC1.............................................................1588.7 Exemplos..........................................................1598.8 Resumo do Capítulo.........................................1618.8 Exercícios.........................................................162

”Sobre tudo o que se deve guardar, guarda o coração, porque dele procedem

as fontes da vida.” Provérbios 4:23

Page 149: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

149

8.1 Interface Serial Assíncrona

O microcontroladorHCS08QG8 possui três tipos de interfaces seriais a I²C, a SPI e aSCI. Essa última é a mais simples e ainda muito utilizada na indústria. Assim, nessa disciplina, noslimitaremos ao estudo dessa.

A sigla SCI significa Serial Comunications Interface, ou seja, Interface de ComunicaçãoSerial. Se distingue da SPI por essa ser síncrona enquanto a SCI é assíncrona.

O príncipio de funcionamento da SCI é bem simples, ele consiste em doisRegistradores de deslocamento. Um deles realiza a conversão série-paralelo (receptor) o outrofaz a conversão paralelo-série (transmissor). Eles possuem uma velocidade que pode serdeterminada por um circuito clock programável, conhecido por gerador de Baud Rate.

A SCI possui dois pinos, um para a transmissão e outro para a recepção. O pino derecepção é o RxD que está multiplexado com o pino da porta PTB0 enquanto o pino detransmissão é o TxD que está multiplexado com o pino da porta PTB1.

Pino da Porta Pino do SCI

PTB0 Recepção (RxD)

PTB1 Transmissão (TxD)

8.2 Transmissor SCI

O transmissor da SCI é constituído pelo Registrador de deslocamento TSR (Trasmit

Shift Register) e por um circuito de controle, que controla o pino de saída TxD (PTB1), conformeDiagrama de Blocos da Figura 8.1.

Para realizar uma transmissão, é preciso ativar o transmissor setando o bit TE(Transmitter Enable) no registrador SCIC2 e verificar se o buffer de transmissão está livre, atravésdo bit TDRE (Transmit Data Register Empty) do registrador SCIS1. Se este flag estiver setado, épossível escrever um novo caracter no registrador de buffer de transmissão (Registrador SCID).

A transmissão é automaticamente iniciada quando ocorre o processo de escrita noRegistrador de buffer de transmissão SCID. Primeiramente, o registrador de deslocamento (TSR) épreenchido com o conteúdo do SCID. Na sequência, a cada pulso de clock, a partir do bit LSB(Least Significant Bit – Bit menos Significativo) é deslocado do TSR ao pino de transmissão (TxD),gerando um fluxo serial de transmissão de dados.

Quando o SCID é carregado no TSR, o bit sinalizador TDRE de buffer livre éautomaticamente setado, indicando que mais bit podem ali ser escritos novamente. Além disso,quando o deslocamento é encerrado, o bit TC (Transmit Completed) do registrador SCIS1 ésetado, sinalizando término da transmissão.

O transmissor SCI é capaz de transmitir 8 ou 9 bits de dados (totalizando 10 ou 11 bits,considerando os bits de START(0) e STOP(1)).

Além disso, o transmissor possui algumas características especiais como: circuitointerno que gera a paridade do dado transmitido, transmissão e recepção half-duplex, ou seja, emum único fio, inversão de polaridade da saída TxD, envio do caractere BREAK e também épossível operar a SCI durante o modo WAIT.

Page 150: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

150

Figura 8.1 – Diagrama de Blocos do Transmissor SCI (Fonte: datasheet HCS08QG8)

8.3 Receptor SCI

O receptor SCI é constituído basicamente pelo registrador de deslocamento RSR(Reception Shift Register) e por um circuito de controle, conforme Figura 8.2.

Para realizar uma recepção, é preciso ativar o receptor setando o bit RE (Receiver

Enable) no registrador SCIC2. Então, os dados juntamente com os bits de START(0) e o STOP(1)poderão ser recebidos através do pino RxD (PTB0) . Quando o bit de STOP, que é o bit de parada,é recebido no RSR, os dados serão transferidos para o buffer SCID , desde que o bit RDRF(Receive Data Register Full) do registrador SCIS1 não esteja setado, ou seja, se o buffer derecepção estiver vazia. Mas, se o bit RDRF já estiver setado indicando que o buffer já está cheio,o bit OR (overrun) do registrador SCIS1 é setado e o dado é perdido. Portanto, para garantir queeste flag esteja apagado deve-se ler o registrador SCIS1 antes de ler o caractere no SCID, pois obuffer de recepção é formado por um buffer duplo.

Após o dado ser transferido para o SCID, então o bit RDRF será setado indicando quehá dado para ser lido pelo usuário.

O receptor possui alguns artifícios utilizados para dar maiores garantias a respeito docorreto recebimento do sinal, conhecidos por recursos de detecção de erros. São esses:

Page 151: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

151

• Sobrescrita de recepção: quando um novo caractere é recebido o bit OR (Receiver

Overrun) do registrador SCIS1 é setado. Contudo, se o buffer de recepção ainda nãofoi lido, esse caractere é descartado.

• Erro de quadro: Se o bit STOP não é detectado corretamente, o bit FE (Framing

Error) do Registrador SCIS1 é setado. O FE é setado no mesmo instante que ocaractere é armazenado no SCID.

• Erro de paridade: quando o circuito detector de paridade está ativo e detecta umadiferença entre a paridade calculada e a paridade recebida, o bit PF (Parity Error)do registrador SCIS1 é setado.

• Detecção de Ruído: Considera-se ruído quando em três amostras de um bit, aomenos uma delas é diferente das demais, quando o circuito de amostragem deentrada do receptor detecta uma discrepância nas amostras do sinal recebido, o bit

NF (Noise flag) do registrador SCIS1 é setado. Observe que a taxa de amostragemna recepção é feita a uma velocidade 16 vezes maior que a selecionada paradetectar a presença de ruído.

Os sinalizadores de erro são apagados com a leitura do Registrador SCIS1 seguida daleitura do caractere recebido no Registrador SCID.

Figura 8.2 – Diagrama de Blocos do Receptor SCI (Fonte: Datasheet HCS08QG8)

Page 152: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

152

8.4 Gerador de Bauld Rate

O gerador de Bauld Rate é o circuito responsável por gerar os pulsos de clock

necessários aos circuitos de transmissão e recepção da SCI.Esse circuito é um divisor de frequência de 13 bits, que divide o sinal do Busclk em um

fator programado nos Registradores SCIBDH e SCIBDL, chamado BR que é utilizado para calcular avelocidade de comunicação, conforme a fórmula:

Essa velocidade é dada em bits por segundo (bps). A seguir, encontra-se a Tabela 8.1com a configuração do BR para velocidades normalmente utilizadas para um Busclk de 4MHz.

Tabela 8.1 – Velocidade (bps) x BR (Fonte: PEREIRA, 2005)

Velocidade desejada (bps) Velocidade Real (bps) BR Erro

1200 1201,92 208 0,16%

2400 2403,85 104 0,16%

4800 4807,69 52 0,16%

9600 9615,38 26 0,16%

19200 19230,77 13 0,16%

38400 41666,67 6 8,51%

57600 62500,00 4 8,51%

115200 125000,00 2 8,51%

230400 250000,00 1 8,51%

mínima 30,52 8191

máxima 250000,00 1

8.5 Interrupções da SCI

A SCI possui três vetores de interrupção (vetores 14, 15 e 16). Um para erros, outropara recepção e outro para transmissão, respectivamente. Todos os flags para tais interrupçõesestão no Registrador de status SCIS1, assim, nas rotinas de tratamento dessas interrupções énecessário ler esse Registrador, para poder habilitar novas interrupções.

Os bits que habilitam essas interrupções estão nos registradores de controle SCIC2(interrupções de transmissão e de recepção) e SCIC3 (interrupção de erros). Observe que há maisde um bit que habilita interrupções para o mesmo vetor, assim, principalmente no caso de erros,é necessário detectar qual o bit que invocou a interrupção, reparar o erro e voltar para o fluxonormal do programa (ou, talvez, continuar a transmissão/recepção).

8.6 Registradores da SCI

De todos os periféricos estudados, a SCI é a que contém o maior número deRegistradores. Para facilitar seus estudos concentre-se, inicialmente, no Registrador de controleSCIC2 e no Registrador de status SCIS1, no que se referir a transmissão e recepção (quatro

Velocidade=BUSCLKBR×16

Page 153: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

153

primeiros bits), além claro, do Registrador da transmissão/recepção SCID e dos Registradores daBaud Rate SCIBDH e SCIBDL. Com a evolução de seus conhecimentos, explore o Registrador decontrole de erros SCIC3 e na parte de erros do Registrador de status SCIS1. Por fim, estude osRegistradores SCIC1 e SCIS2. A sequência a seguir apresentada vem justamente com esse intuitode facilitar a evolução de seus estudos.

------------------------------------------8.6.1 Registrador SCID - SCI Data register

------------------------------------------Registrador que possibilita ler ou escrever caracteres no buffer da SCI. A leitura do

SCID retorna o último caractere recebido e a escrito no SCID faz com que ele seja transmitido pelaSCI.

Endereço: 0x0027 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: Caractere a ser recebido (R)/transmitido (W) pela SCI

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

------------------------------------------8.6.2 Registradores SCIBDH e SCIBDL - SCI BauD Rate High and Low

------------------------------------------Registradores responsáveis pelo fator BR, que determina a divisão da frequência de

clock da SCI. Para mais informações retorne ao tópico Gerador de Bauld Rate. Normalmente, escreve-se o decimal 26 nesse Registrador.

Endereço: 0x0020 - Página Baixa (SCIBDH)

BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8

Nome do BIT: 0 0 0 SBR12 SBR11 SBR10 SBR9 SBR8

Leitura(R)/Escrita(W): R R R R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0021 - Página Baixa (SCIBDL)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: SBR7 SBR6 SBR5 SBR4 SBR3 SBR2 SBR1 SBR0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Page 154: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

154

------------------------------------------8.6.3 Registrador SCIC2 - SCI Control 2

------------------------------------------

Registrador que controla as ações da SCI relativas à transmissão e recepção de dados,bem como habilita/desabilita suas respectivas interrupções.

Endereço: 0x0023 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: TIE TCIE RIE ILIE TE RE RWU SBK

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 1 0 1 0 1 1 0 0

BIT0 - SBK - Send BreaKRealiza o envio do caractere BREAK.0 - Andamento normal da SCI.1 - O próximo caractere a ser enviado será BREAK. A SCI continuará enviando esse

caractere enquanto esse bit estiver setado.

BIT1 - RWU - Receiver WakeUp controlControla a operação do receptor da SCI para modos de baixo consumo.0 - Receptor operando normalmente.1 - Receptor em modo de baixa potência, no aguardo de um evento ativador

(selecionado pelo bit WAKE do Registrador SCIC1).

BIT2 - RE - Receiver EnableHabilita o receptor da SCI.0 - Receptor desabilitado.1 - Receptor habilitado.

BIT3 - TE- Transmitter EnableHabilita o transmissor da SCI0 - Transmissor desabilitado.1 - Transmissor habilitado.

BIT4 - ILIE - Idle Line Interrupt EnableHabilita a interrupção pela inatividade de linha de recepção (o par é o flag IDLE –

SCIS1).0 - Interrupção desabilitada.1 - Interrupção habilitada. (Vetor 15 - $FFE0)

Page 155: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

155

BIT5 - RIE - Receiver Interrupt EnableHabilita a interrupção do receptor, assim quando o flag RDRF for setado, gerará uma

interrupção.0 - Interrupção desabilitada.1 - Interrupção habilitada. (Vetor 15 - $FFE0)

BIT6 - TCIE - Transmission Complete Interruption EnableHabilita a interrupção do transmissor para transmissão completa (o par é o flag TC –

SCIS1).0 - Interrupção desabilitada.1 - Interrupção habilitada. (Vetor 16 - $FFDE)

BIT7 - TIE - Transmit Interruption EnableHabilita a interrupção do transmissor para buffer de transmissão vazio. (o par é o flag TDRE –

SCIS1).0 - Interrupção desabilitada.1 - Interrupção habilitada. (Vetor 16 - $FFDE)

------------------------------------------8.6.4 Registrador SCIS1 - SCI Status 1

------------------------------------------Registrador que verifica o status das ações da SCI relativas à transmissão e recepção

de dados e erros encontrados durante o processo de recepção. Contém todos os flags deinterrupção, para invertê-los, basta ler esse Registrador.

Endereço: 0x0024 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: TDRE TC RDRF IDLE OR NF FE PF

Leitura(R)/Escrita(W): R R R R R R R R

Após o reset: 1 1 0 0 0 0 0 0

BIT0 - PF - Parity-error flagIndicador de erro de paridade. 0 - Não foi detectado erro de paridade.1 - Foi detectado erro de paridade.

BIT1 - FE- Framing Error flagIndicador de erro de quadro.0 - Não foi detectado erro de quadro.1 - Foi detectado erro de quadro.

BIT2 - NF - Noise flagIndicador de ruído na recepção.0 - Não foi detectado ruído1 - Foi detectado ruído.

Page 156: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

156

BIT3 - OR- receiver OverRun flagIndicador de sobrescrita no buffer de recepção.0 - Não foi detectado sobrescrita.1 - Houve sobrescrita de dado.

BIT4 - IDLE - IDLE line flagIndicador de inatividade na linha de recepção.0 - Não foi detectada inatividade na linha.1 – Foi detectado que há inatividade na linha.

BIT5 - RDRF - Receiver Data Register FullIndicador de recepção de um novo caractere.0 - O buffer de recepção está vazio.1 - Há um novo caractere no buffer disponível no registrador SCID.

BIT6 - TC - Transmission Complete flagSinalizador de transmissão completada.0 - Transmissão em andamento.1 - Nenhuma transmissão em andamento.

BIT7 - TDRE - Transmit Data Register EmptySinalizador de buffer de transmissão vazio.0 - Há um caractere no buffer de transmissão.1 - O buffer de transmissão está vazio.

------------------------------------------8.6.5 Registrador SCIC3 - SCI Control 3

------------------------------------------

Registrador que controla as ações da SCI relativas aos erros de recepção, bem comoàquilo que é relativos aos pinos e aos bits extras.

Endereço: 0x0026 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: R8 T8 TXDIR TXINV ORIE NFIE FEIE PFIE

Leitura(R)/Escrita(W): R R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: - - - 0 1 1 1 1

BIT0 - PFIE - Parity-error Interrupt EnableHabilita a interrupção pela detecção de erro de paridade. 0 - Interrupção desabilitada.1 - Interrupção habilitada. (Vetor 14 - $FFE2)

Page 157: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

157

BIT1 - FEIE - Framing Error Interrupt EnableHabilita a interrupção pela detecção de erro de quadro.0 - Interrupção desabilitada.1 - Interrupção habilitada. (Vetor 14 - $FFE2)

BIT2 - NFIE - Noise Interrupt EnableHabilita a interrupção pela detecção de recepção.0 - Interrupção desabilitada.1 - Interrupção habilitada. (Vetor 14 - $FFE2)

BIT3 - ORIE - receiver OverRun Interrupt EnableHabilita a interrupção pela detecção de sobrescrita no buffer de recepção.0 - Interrupção desabilitada.1 - Interrupção habilitada. (Vetor 14 - $FFE2)

BIT4 - TXINV - Transmit data INVersionHabilita a inversão da polaridade do pino TxD.0 - Saída não invertida.1 - Saída invertida.

BIT5 - TXDIR - TX DIRection (in a single-wire mode)Seleciona a direção do pino TxD quando a SCI está a um fio.0 - Pino de recepção (entrada).1 - Pino de transmissão (saída).

BIT6 - T8 - ninth data bit for TransmitterNono bit a ser transmitido. Esse bit deve ser alterado antes da escrita no Registrador

SCID. Esse bit só é utilizado quando o modo de 9 bits está ativo (bit M = 1).

BIT7 - R8 - ninth data bit for ReceiverNono bit a ser recebido. Esse bit deve ser lido antes da leitura do Registrador SCID.

Esse bit só é utilizado quando o modo de 9 bits está ativo (bit M = 1).

------------------------------------------8.6.7 Registrador SCIS2 - SCI Status 2------------------------------------------

Registrador que monitora outras ações da SCI.

Endereço: 0x0025 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: 0 0 0 0 0 BRK13 0 RAF

Leitura(R)/Escrita(W): R R R R R R/W R R

Após o reset: 0 0 0 0 0 0 0 0

Page 158: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

158

BIT0 - RAF - Receiver Active flagSinalizador de atividade do receptor da SCI.0 - O receptor não está recebendo nenhum caractere.1 - A recepção do caractere está em andamento.

BIT1 - BRK13 - BReaK character lenghtSeleção do tamanho do caractere BREAK.0 - caractere BREAK com 10 bits (11 se M=1).1 - caractere BREAK com 11 bits (12 se M=1).

------------------------------------------8.6.7 Registrador SCIC1 - SCI Control 1------------------------------------------

Registrador que controla as ações da SCI relativas às capacidades dessa função dentrodo microcontrolador.

Endereço: 0x0022 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: LOOPS SCISWAI RSRC M WAKE ILT PE PT

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BIT0 - PT - Parity TypeSeleção da paridade.0 - Paridade par.1 - Paridade ímpar.

BIT1 - PE - Parity EnableHabilita o gerador de paridade.0 - Paridade desabilitada.1 - Paridade habilitada. (Vetor 14 - $FFE2)

BIT2 - ILT - Idle Line Type selectSeleciona a forma da medição do tempo de inatividade da linha.0 - A contagem inicia-se após o bit START.1 - A contagem inicia-se após o bit STOP.

BIT3 - WAKE - receiver WAKEup mode selectSeleção do modo de ativação do receptor da SCI.0 - Receptor é ativado quando a linha está inativa.1 - Receptor é ativado quando recebe um caractere de endereçamento.

BIT4 - M - 9-bit or 8-bit Mode selectSeleção do tamanho da palavra (8 ou 9 bits).0 - 8 bits de dados (mais o START e o STOP totalizando 10 bits).1 - 9 bits de dados (mais o START e o STOP totalizando 11 bits).

Page 159: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

159

BIT5 - RSRC - Receiver SouRCe select Seleciona a operação a apenas um fio. Esse bit somente tem efeito se o modo LOOP

estiver ativo.0 - Modo LOOP normal, os bits RxD e TxD não são utilizados pela SCI.1 - Modo "A um Fio": a saída da SCI está conectada a sua entrada e ao pino TxD.

BIT6 - SCISWAI - SCI Stops in WAIt modeOperação da SCI no modo WAIT.0 - A SCI opera durante o modo WAIT.1 - A SCI não opera durante o modo WAIT.

BIT7 - LOOPS - LOOP mode SelectAtivação do modo de LOOP.0 - Modo LOOP desativado.1 - Modo LOOP ativado: o pino de saída TxD é conectado à entrada RxD.

8.7 Exemplos

Exemplo 1 SCI Recepção e Transmissão - Considere que há uma conexão serial SCI entre o microcontrolador e um computador. Faça umprograma que ao receber um caractere 'a' do computador, acenda um LED (nível lógico 0),conectado em PTB7 e , ao mesmo tempo, transmita um caractere 'c'. A velocidade de transmissãodeve ser de 9600bps.

Solução:Segundo a tabela ASCII, o caractere 'a' equivale ao valor hexadecimal 61 e o caractere

'c' equivale ao hexadecimal 63, com isso, podemos partir para a construção do programa. Vamos, primeiro, supor uma transmissão ideal. Assim, não iremos configurar os bits de

paridade, nem utilizar os detectores de erros. Além disso, como não há necessidade, nãoutilizaremos o bit extra de comunicação.

Para esse exemplo, configuramos os Registradores que controlam a transmissão e arecepção de dados. Nesse caso, é necessária apenas a configuração do Registrador SCIC2. Alémdisso, as interrupções geradas pela comunicação serão sinalizadas pelo Registrador de flagsSCIC1.

Para o controle da recepção e transmissão, primeiramente, no Registrador SCIC2,precisamos habilitar a recepção e a transmissão, assim, os bits 2 e 3 devem ser setados. Alémdisso, seria interessante uma interrupção alertando o término da recepção e da transmissão, porisso, os bit 5 e 7 também devem ser setados. Para as nossas necessidades, os demais bits podemficar desativados. O Registrador de status SCIS1 precisa apenas ser lido para tratar as interrupçõesgeradas.

A velocidade de transmissão é controlada pelo Gerador de Baud Rate, um divisor dafrequência de fonte. Assim, o valor decimal 26 deve ser escrito no Registrador SCIBD(L), paratermos a velocidade de transmissão desejada de 9600bps(mais uma vez considerando um caso decomunicação ideal).

Com isso, podemos partir para a elaboração do código.

Page 160: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

160

Rótulo Instruções ExplicaçãoINCLUDE'MC9S08QG8.inc'

;inclui a biblioteca que contém as;definições do microcontrolador

ORG $0060 ;direciona o montador para o endereço dememória para área de variáveis

ORG $E000 ;direciona o montador para o endereçode ;memória onde o programa será criado.

TRATA_RDRF: ;rotina de tratamento da interrupção derecepção

LDA SCIS1 ;apaga o flag RDRF ao ler o registrador

LDA SCID ;leitura do caractere recebido

CMP #$61 ;compara o caractere recebido com 'a'

BNEQ SAI1 ;se não igual, não faz nada

LOOP_TDRE: BRCLR 7,SCIS1,LOOP_TDRE ;se é igual, aguar da o buffer de;transmissão vazio

LDA #$63 ;carrega A com valor 'c' (#$63)

STA SCIDL ;escreve o caractere no buffer detransmissão

BCLR 7, PTBD ;ACENDE LED EM PTB7

SAI: RTI ;sai da rotina de tratamento de;Interrupção recepção

SAI1: BSET 7, PTBD ;APAGA LED EM PTB7

RTI ;sai da rotina de tratamento de;Interrupção recepção

INICIO: ;Inicio da lógica do programa principal

LDA SOPT1 ;desativa o COP

AND #127

STA SOPT1

MOV #$FF, PTBD ;desliga o LED

MOV #$80, PTBDD ;PTB7 configurada como saída digit al

MOV #26, SCIBDL ;gera uma velocidade de comunicaçã o de9600 bps

MOV #$2C, SCIC2 ;habilita o receptor, o transmiss or einterrupção de recepção.

CLI ;habilita todas as interrupções

LOOP: BRA LOOP ;aguarda uma interrupção

ORG $FFE0 ;área do vetor de interrupção do RDRF

RDRF: DC.W TRATA_RDRF ;endereço da rotina de tratamen to derecepção

ORG $FFFE ;área do vetor reset

RESET: DC.W INICIO ;endereço do inicio do programa em INICIO

Page 161: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

161

8.8 Resumo do Capítulo

A Conexão SCI é uma forma de comunicação entre o microcontrolador e umcomputador. Ela se dá através de um buffer de transmissão e recepção, enviando sinais bit a bit.

Os seguintes Registradores são utilizados para o bom funcionamento da comunicaçãoserial assíncrona (SCI):

• SCID – buffer de transmissão e recepção;

• SCIBDH e SCIBDL – responsável pela velocidade de transmissão (Baud Rate – BR);

• SCIC2 – controla o transmissor e o receptor e suas respectivas interrupções;

• SCIS1 – verifica o status da comunicação, ele atende à interrupção quando lido;

• SCIC3, SCIS2 e SCIC1 – Registradores pouco usados em um nível mais básico.

Observação Importante

Não esqueça que enquanto está sendo utilizada a SCI, a porta PTB0 é utilizada para o receptor e a porta PTB1 é utilizada para o transmissor!

PTB0 ----- RxDPTB1------TxD

Page 162: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

162

8.9 Exercícios

1- Faça um programa que utilize a conexão SCI do HCS08QG8 para transmitir o caractere 'T' a umsistema conectado ao microcontrolador a velocidade de: 9600bps.

2- Faça um programa que acenda um LED conectado à PTA4 quando receber o caractere 'A' eacenda um LED conectado à PTB4 quando receber o caractere 'B', através da conexão SCI.Velocidade de: 4800bps.

3- Faça um programa que transmita o caractere que esteja recebendo através de uma conexãoSCI. Velocidade de: 9600bps.

4- Faça um programa que ao receber o caractere 'Enter' (Pulo de linha), envie a palavra "TesteIniciado", através da conexão SCI e acenda um LED conectado a PTB4 com a conclusão do envio.Velocidade de: 4800bps.

5- Faça um programa que recebe um caractere equivalente aos algarismos bases do sistemahexadecimal (de 0 a F) e acione LEDs conectados a PTB4 (LSB), PTB5, PTB6 e PTB7 (MSB) paraexibi-los em forma binária. velocidade de: 19200bps.Por exemplo, envia-se o caractere 'A', assim, os LEDs conectados a PTB7 e a PTB5 são acesosformando 1010, equivalente binário ao hexadecimal A.

6- Uma máquina é acionada por um computador ao se apertar a tecla 'enter', caractere recebidovia transmissão SCI. Ao ser ligada, a máquina realiza envia um sinal de resposta (caractere 'a'),informando que foi ligada. Essa máquina, em seguida, começa a processar informações sobre acor dos tecidos que por ela passam, através de um sensor luminoso recebendo tensões de acordocom a tabela a seguir. A tabela também possui o código de caracteres das cores que é enviadoatravés da comunicação SCI ao mesmo computador de ativação. Faça um programa em Assembly

para um microcontrolador que controle o funcionamento dessa máquina.Dado: o canal 0 do microcontrolador deve ser utilizado para a conversão.

Cor Faixa de Tensão (V) Código de Envio

Rosa 0,000 – 0,170 'VE0'

Vermelho 0,171 – 0,250 'VE1'

Laranja 0,251 – 0,305 'VE3'

Amarelo 0,306 – 0,499 'AA0'

Branco 0,500 – 0,700 'AA3'

Verde 0,701 – 1,800 'AA2'

Azul 1,801 – 2,300 'VV0'

Violeta 2,301 – 2,400 'VV1'

Preto 2,401 – 3,300 'VV2'

Page 163: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

163

PARTE B

ATIVIDADES DE LABORATÓRIO,EXERCÍCIOS AVANÇADOS

E PROJETOS DESENVOLVIDOS

Page 164: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

164

Capítulo 9: Atividades deLaboratório

Neste capítulo, estão apresentadas as atividades de laboratório a serem desenvolvidano decorrer da disciplina.

9.1 Experiência 01 – Entradas e Saídas Digitais............................................................................................ 1659.2 Experiência 02 – Conversor AD.............................................................................................................. 1669.3 Experiência 03 – Interrupção Externa e Interrupção de Tempo Real..................................................... 1679.4 Experiência 04 – PWM........................................................................................................................... 168asa

”Vai ter com a formiga, ó preguiçoso, considera os seus caminhos e sê sábio.”

Provérbios 6:6

Page 165: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

165

9.1 Experiência 01 – Entradas e Saídas Digitais

Elaborar um programa em Assembly para monitorar a saída de automóveis de umestacionamento, onde teremos dois sensores (S1 e S2) e duas sinalizações. As sinalizaçõesdeverão ser acionadas de acordo com as combinações abaixo:

Se S1 está ativa, só o LED1 deve ser aceso;Se S2 está ativa, só o LED2 deve ser aceso;Se S1 e S2 estiverem ativas, os dois LEDs LED1 e LED2 devem ser acesos;Se S1 e S2 estiverem inativas, nenhum LED deve ser aceso.

Page 166: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

166

9.2 Experiência 02 – Conversor AD

Elaborar um programa em Assembly para ler um sinal de tensão analógico (0 a 3.3V)proveniente de um potenciômetro na placa de testes. O valor lido de tensão deverá servisualizado através da indicação de dois LEDs da seguinte maneira: Tensão até 0,8V acende o LED1.Tensão entre 0,8V e 1,65V acende o LED2.Tensão maior que 1,65V acende(pisca) os dois LEDS.

Page 167: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

167

9.3 Experiência 03 – Interrupção Externa e Interrupção de Tempo Real

Elaborar um programa em Assembly que simule um cronômetro. Através de umarotina de timer (executada a cada interrupção de tempo real) o LED LED1 da placa dedemonstração deverá alternar o seu estado a cada 1 segundo (tempo entre cada interrupção dotimer). O botão reset na placa de demonstração simulará o botão de “start” e “stop” docronômetro. Quando o botão reset é pressionado (interrupção externa) pela primeira vez ocronômetro é acionado e o LED começa a piscar. Ao pressionar S1 novamente o LED pára depiscar e assim sucessivamente.

Page 168: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

168

9.4 Experiência 04 – PWM

Elaborar um programa em Assembly para modificar o brilho de um LED ligado ao pinoPTB5. O brilho do LED será controlado pelo acionamento de uma chave (push-button SW1)localizada na própria placa de desenvolvimento da Motorola. Enquanto a chave não estiverpressionada a saída PWM em PTB5 deverá operar com ciclo de 100%, ou seja, o LED ficará acesocom seu brilho máximo. Quando a chave for pressionada a saída PWM em PTB5 deverá operarcom ciclo de 25%, fazendo com que o LED acenda com pouco brilho (1/4 do brilho máximo).

Page 169: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

169

Capítulo 10: ExercíciosAvançados

Neste capítulo, você encontra uma série de exemplos e exercícios, envolvendo os maisdiversos periféricos do microcontrolador para resolução de problemas.

10.1 Sistema de Irrigação.......................................17010.2 CONTROLE DE UMA JANELA...........................17110.3 Elevador..........................................................17210.4 Fabrica De Peças............................................173

10.5 Empilhadeira...................................................17410.6 Comunicador Hospitalar.................................17610.7 MÁQUINA DE LAVAR-ROUPAS........................17710.8 Máquina Computadorizada............................179

”Não te furtes a fazer o bem a quem de direito, estando na tua mão o poder

de fazê-lo.” Provérbios 3:27

Page 170: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

170

10.1 Sistema de Irrigação

Elaborar um programa em Assembly para automatizar um sistema de irrigação, deacordo com as características definidas abaixo:

• A bomba B1 ficará ligada enquanto o nível de água do reservatório for maior que o nível baixodo mesmo (nível lógico 0 em PTB0).

• Se o nível de água do reservatório for menor que o nível baixo, a bomba B1 deverá serdesligada e a bomba B2 deverá ser ligada, ficando neste estado até que o nível de água doreservatório seja igual ao nível alto do mesmo (nível lógico 0 em PTB1) ou o nível de água dopoço seja menor que o seu nível mínimo (nível lógico 0 em PTA1).

• As bombas são acionadas com nível lógico 1.

• O programa fica num loop verificando nível de água do reservatório e do poço.

Page 171: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

171

10.2 Controle De Uma Janela

Elaborar um programa em Assembly para controlar a abertura e fechamento de umajanela, com base na informação enviada por um sensor de umidade acoplado a mesma. Paravalores de umidade relativa maiores que 80% (condição de chuva) a janela deverá ser fechada epara valores menores ou iguais a 80% a janela deverá permanecer aberta. Considere comoresolução que 100% de umidade atinge a tensão de 3,3V. Os sensores localizados nas laterais dajanela determinam o fim de curso da mesma (nível lógico 0), fazendo com que o motor pare aoacionar algum dos sensores. O controle de direção do motor segue a tabela abaixo.

Page 172: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

172

10.3 Elevador

Um elevador inteligente (2 pisos) possui um equipamento de segurança para indicarsituações de perigo como muitas pessoas em seu interior ou peso em excesso.

Uma condição de perigo ocorre sempre que a quantidade de pessoas é maior que 10pessoas ou o peso total das pessoas é maior ou igual a 1000kg, e nestes casos uma luz vermelha éacesa.

Um circuito microcontrolador tem uma das entradas digitais (PTA2) ligada num sensorde luz. Quando uma pessoa passa pelo sensor de luz PTA2=0, caso contrário, PTA2=1. Um sensorde carga (PTA1) fornece um valor analógico baseado no peso total no interior do elevador.Quando o peso total atingir um valor maior ou igual a 1000kg ou a quantidade de pessoas formaior que 10, uma luz vermelha deve ser ligada (indicando condição perigosa do equipamento)onde PTB4 = 1 luz acesa, PTB4 =0 luz apagada. O equipamento tem um botão ATIVAR (PTA3) queindica o momento do elevador partir (ativo em nível baixo). O elevador somente funciona se ascondições de segurança acima estiverem atendidas.

Quando o botão ATIVAR for pressionado, o circuito deve acionar um ou dois motores(M1 e M2) para mover o elevador em função do peso em seu interior. Se o peso for maior ou iguala 500kg então deve acionar os dois motores (ativos em nível alto), caso contrário apenas M1. Osmotores devem ficar acionados por aproximadamente 10s (tempo de um piso a outro). Deve-seutilizar o RTI com clock interno para o intervalo do tempo de motor em funcionamento.

O sensor que mede o peso fornece um valor de saída de 3,3V quando o peso doelevador for de 2000kg e 0V quando o peso for 0kg.Utilizar resolução de 10 bits. Não utilizarinterrupção de ADC.

Quando a chave de emergência for ativada (ativo em nível baixo em PTA5) deve-separar imediatamente os motores e a luz vermelha deve ficar acesa (PTB4 =1). O equipamentosomente volta a condição normal quando a chave de emergência estiver em não ativada (nívelalto).

Page 173: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

173

10.4 Fábrica De Peças

Elabore um programa em Assembly para automatizar o processo de fabricação depeças de alumínio, utilizando microcontrolador HCS08. O processo consiste nas seguintes fases:a) Mover a lâmina para área de corte no sentido longitudinal;b) Cortar a Lâmina no sentido longitudinal;c) Mover a Lâmina para a área de corte no sentido transversal;d) Cortar a Lâmina no sentido transversal;d) Checar as dimensões: Comprimento e largura;e) Pintar a peça, caso as medidas sejam aprovadas;f) Rejeitar a peça, caso tenha as dimensões fora do padrão;g) Retorna ao inicio do processo.

Alguns dados complementares:

• As peças devem ter 25cm de comprimento e 5 cm de largura;

• As quatro primeiras fases duram cerca de 6 segundos cada, ativadas em nível alto pelos bits

0,1,2 e 3 do PTBD;

• A checagem das dimensões se faz pelos canais AD0 (comprimento) e AD3 (largura) através dostransdutores de medida de resolução de 0,1V/cm e modo de 10bits;

• Caso a lata seja rejeitada, é emitida um sinal sonoro de 4kHz durante 2 segundos através dopino PTB5 com ciclo ativo em 1 de 75%;

• Na fase de pintura o bit PTB4 deve ficar em nível alto, com duração de 7 segundos;

• A qualquer momento pode haver intervenção do operador por uma chave em PTA5 (pulso naborda de descida), fazendo com que a peça em produção seja rejeitada e o processoreiniciado;

• Não poderá haver mais de uma fase sendo executada ao mesmo tempo e o todo processodeverá funcionar continuamente;

• Usar interrupção de timer (RTI) com clock externo de cristal de 32.768Hz, interrupção externae para o PWM, usar prescaler igual a 1, e o Busclk = 4MHz.

Page 174: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

174

10.5 Empilhadeira

Elaborar um programa em Assembly, com base no microcontrolador HCS-08, paraefetuar o controle de uma empilhadeira elétrica.

Dados gerais:

• Os push buttons ligados em PTB4 e PTB7, definem o peso máximo suportado pelaempilhadeira.

• A chave ligada em PTB2 define sentido de giro das rodas da empilhadeira (0 = para frente e 1 =para trás).,

• A chave ligada em PTB3 define o momento da partida (0 = partida e 1 = desliga motor eaguarda partida).

• A chave ligada em PTA5 (interrupção externa) quando ativada, deverá acionar um avisosonoro por 3 segundos , através de um dispositivo ligado em PTA3.

• O potenciômetro, ligado ao canal AD do pino PTA0, está conectado a um acelerador e faz oajuste de velocidade da empilhadeira.

• Para nível de tensão igual a 0V, o motor ligado em PTB5 (modo PWM) deverá ser desligado(nível lógico 0), e para tensão igual a 3.3V, o mesmo deverá operar em velocidade máxima(ciclo ativo em 100%).

• A saída PTB6 igual a 0 faz o motor ir para frente e 1 para trás.

• O sensor de velocidade ligado ao canal AD do pino PTA2, gera um sinal de tensão de 100mVpara cada km/h.

• O sensor de peso ligado ao canal AD do pino PTA1, gera um sinal de tensão de 3,22mV paracada kg de carga.

Itens de segurança:

• Para dar partida, a tensão em PTA0 deverá ser igual a 0V.

• O motor só poderá mudar de sentido de giro com a empilhadeira parada.

• A definição de carga máxima só poderá ser alterada se a empilhadeira estiver sem carga.

• Se a velocidade da empilhadeira ultrapassar os 33 km/h o motor deverá ser desligado.

• Se o peso da carga exceder o valor definido pelo usuário, a luz ligada em PTA4 deverá seracionada (nível lógico 1).

Dados para configuração: Fpwm = 3,91kHz | Oscilador Interno | prescaler = 1

Page 175: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

175

Page 176: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

176

10.6 Comunicador Hospitalar

Deseja-se implementar um comunicador hospitalar para ajudar os pacientes comdeficiência motora. Para isso, devem-se ligar oito LEDs (ativos em 1) na porta B de um HCS08 eassociar cada LED a um AVISO que o paciente deseja expressar, conforme a tabela abaixo:

LEDs AVISO

0 Ir ao banheiro

1 Beber água

2 Fazer refeição

3 Ligar/desligar a TV

4 Ajudar a se sentar

5 Estar com dor

6 Abrir/fechar a janela

7 Ligar/desligar a lâmpada

O equipamento deve funcionar de forma que quando o paciente acionar um push-

button (ligado ao PTA5 como interrupção externa), os LEDs fiquem acendendo (um por vez)durante um tempo determinado pelo nível lógico de uma chave ligada em PTA2 (nível 0 = 1 seg enível 1 = 3 seg), até que push-button seja novamente acionado. Nesse momento, o LED queestiver aceso deve permanecer nesse estado e um buzzer ligado em PTA3 (ativo em 1) deve seracionado de forma intermitente (512ms ligado e 512ms desligado) até que o paciente decidarealizar um novo processo. Além disso, um aviso sonoro deve ser gerado por um buzzer ligado emPTA0 acionado por um trem de pulsos de 5kHz de freqüência, com razão cíclica de 70%, sempreque a temperatura do paciente ultrapassar 38°C, e com razão cíclica de 30% quando atemperatura for inferior 35°C. A temperatura é medida por um termômetro com resolução de0,0825V para cada °C (10 bits).

Dados gerais: fosc = 5kHz (oscilador do PWM), prescaler = 1 e ciclo ativo em nível alto.

Page 177: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

177

10.7 Máquina De Lavar-Roupas

1- Elaborar um programa para controlar uma máquina de lavar roupas, com as seguintes funções:lavar pesado (acionar o motor durante 15 minutos com potência máxima), lavar leve (acionar omotor durante 10 minutos com potência média) e aquecimento (só acionar o motor depois que atemperatura da água atinge 50°C). Para tanto, existem duas bombas para a entrada e saída deágua; um sensor de nível de água; duas teclas de seleção do tipo de lavação; um sensor paraindicar tampa aberta; e um termômetro. Por questões de segurança, caso a tampa da lava-roupasseja aberta, o processo deve ser interrompido e só retomado após a tampa ser fechada.

O termômetro é linear e considerar 3,3V à 100°C com conversão de 10bits.

Funcionamento da Máquina:

• Selecionar o tipo de lavagem.

• Selecionar com ou sem aquecimento.

• Iniciar o processo.

• Ligar entrada de água e quando nível OK ligar o motor (se aquecimento não ativo).

• Após o tempo de lavagem desligar o motor e ligar a saída de água.

• A temporização deverá ser feita pela interrupção de tempo real (RTI).

Page 178: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

178

2. Elaborar um programa para controlar uma máquina de lavar roupas, utilizando o PWM (comfrequência de 1kHz), com as seguintes funções: a) Lavar pesado (acionar o motor durante 15 minutos com ciclo ativo nível baixo igual a 100%) b) Lavar leve (acionar o motor durante 10 minutos com ciclo ativo nível baixo igual a 40%)

Além disso há um modo de aquecimento (só há o acionamento do motor depois que atemperatura da água atinge 45oC).

Para tanto, existem:

• Duas bombas para a entrada e saída de água; um sensor de nível de água;

• Duas teclas de seleção do tipo de lavação; um sensor para indicar tampa aberta;

• Um termômetro e a uma saída PWM para controlar um motor. Por questões de segurança, caso a tampa da lava-roupas seja aberta, o processo deve serinterrompido e só retomado após a tampa ser fechada.

Funcionamento:

• Selecionar o tipo de lavagem.

• Selecionar com ou sem aquecimento.

• Iniciar o processo.

• Ligar entrada de água e quando nível OK ligar o motor (se aquecimento não ativo).

• Após o tempo de lavagem desligar o motor e ligar a saída de água.A temporização pode ser feita por interrupção RTI.

Page 179: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

179

10.8 Máquina Computadorizada

Uma máquina é controlada por um microcontrolador HCS08 e ativada por um

computador, conectado ao microcontrolador através de SCI. A ativação é feita após o envio docaractere 'ENTER' (Hexadecimal 0A na tabela ASCII) ao microcontrolador.

Após a máquina ser ativada, ela inicia seu processo verificando o comprimento e amassa do bloco a ser perfurado, nessa ordem. Ela utiliza um Transdutor de resolução 11cm/V e0,1kg/V para esse processo. Caso a massa do bloco seja inferior à 250g, a maquina ativa suafuradeira com ciclo ativo de 40% para não danificar a peça. Caso contrário, é utilizado o motor em100%.

O tempo de perfuração é proporcional ao comprimento do bloco, para cadacentímetro, ela demora 0,5 segundo perfurando o material. (Utilizando a RTI)

Quando a máquina termina o seu processo, ela desliga o motor e envia aocomputador um caractere 'C' (Hexadecimal 43 na tabela ASCII) indicando a conclusão doprocesso.

Em caso de emergência, existe um botão que faz a máquina parar imediatamente seufuncionamento.

Dados complementares: Frequência de operação: 4,5kHz, prescaler = 1

Page 180: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

180

Capítulo 11: Projetos

Neste capítulo, encontra-se a documentação da placa de projeto, além de dicas paraum bom projeto, tanto na parte de hardware quanto de software e um projeto modelo paraexemplo. Além disso, há um guia sobre aquilo que é exigido para o texto do projeto.

11.1 Documentação da placa de projeto................18111.1.1 instalação do driver......................................18111.1.1.1 WINDOWS 7..............................................18111.1.2 Utilização do kit...........................................18311.1.2.1 preparação do código...............................183

11.1.2.2 Gravando o código no microcontrolador..18311.2 Auxilio para o hardware do projeto................18511.3 Formatação do projeto escrito.......................18711.4 Projeto exemplo.............................................188

”Tudo tem o seu tempo determinado, e há tempo para todo propósito debaixo

do céu.” Eclesiastes 3:1

Page 181: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

181

11.1 Documentação da placa de projeto

Os projetos da disciplina podem ser realizados com o auxilio de uma placa desenvolvidapelo Grupo de Ensino em Robótica Móvel (GERM) da UDESC. Um guia de instalação da placa e douso do software com a mesma é apresentado a seguir.

11.1.1 INSTALAÇÃO DO DRIVER

Segue a instalação do driver USB para os sistemas operacionais.

11.1.1.1 WINDOWS 7

• Instale primeiro o driver “USB Driver Installer.exe”.

• Depois, instale o driver “Win Vista Driver Installer.exe”.

Conecte o cabo USB em um porta USB disponível em seu computador

• O Windows 7 irá detectar o novo dispositivo e procurará o driver que você acabou deinstalar.

• Aguarde até que o driver seja encontrado. Após instalado corretamente, clique em fechar. Seuprogramador de microcontrolador MC9S08QG8 está pronto para o uso.

• Caso a instalação não seja completa com êxito

Siga os Passos a seguir:INICIAR> PAINEL DE CONTROLE>HARDWARE E SONS>GERENCIADOR DE DISPOSITIVOS.

Page 182: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

182

O ícone do USB-Serial Controller deve aparecer da seguinte forma

Clique com o botão direito nele, Atualizar Driver.

Procurar Software no computador

Permitir que eu escolha em uma lista de drives de dispositivos no computador

Selecione a o arquivo Win Vista Driver Installer.exe que foi extraindo em uma pasta de seu computador.

E aperte Avançar. O driver deve ter sido instalado corretamente. Para checar vá no Gerenciador deDispositivos, Ação, Verificar se há alterações de hardware.

Page 183: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

183O dispositivo foi instalado com sucesso caso não haja exclamação de aviso no seu ícone, como a seguir:

Seu programador de microcontrolador MC9S08QG8 está pronto para o uso.

11.1.2 UTILIZAÇÃO DO KIT

11.1.2.1 PREPARAÇÃO DO CÓDIGO

• Escreva o seu código normalmente no CodeWarrior.

• Quando for gravar no microcontrolador, ao invés de utilizar o ‘Debug (F5)’, utilize o ‘Make

(F7)’ para apenas compilar o código.

• Este código compilado fica armazenado na pasta do projeto, dento da pasta bin. O arquivoé o ‘Project.abs.s19’, é este arquivo que interessa para este kit de programação. Ele só écriado depois da primeira vez que você compilar o código.

Ex: “C:\blink_led\bin\Project.abs.s19”

11.1.2.2 GRAVANDO O CÓDIGO NO MICROCONTROLADOR

• Você precisa do programa para carregar o código no microcontrolador. Para fazer odownload entre na página do deste tutorial no site do GERM(http://www2.joinville.udesc.br/~germ/?page_id=473) e baixe o ‘HCS08_GUI.zip’. Esteprograma você também pode encontrar no ‘AN2295SW’ que é o application note paragravação de código através do bootloader do HCS08.

• Abra o ‘BootLoader Control.exe’, ele tem algumas opções: seleção do código compilado,seleção da porta de comunicação serial e velocidade de transmissão.

• Clique em ‘Open S19 file’ para selecionar o arquivo ‘Project.abs.s19’ da pasta bin do seuprojeto.

• Selecione a porta de comunicação serial do seu gravador, no meu caso é a COM4. Se elanão estiver na lista, tente apertar o botão na direita ‘Rescan’ para atualizar a lista. Semesmo assim ela não aparecer, provavelmente não foi instalada corretamente.

• Seleciona a velocidade de transmissão, COM Speed, para 9600.

Page 184: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

184

• Aperte em ‘Bootload’ e seu código a será gravado no microcontolador em instantes.

• Quando a janela fechar sozinha, o seu código estará gravado no microcontrolador e entrará emexecução.

• Você pode deixar a o programa pra gravar, e continuar modificando o código noCodeWarrior. Quando quiser testar novamente, compile o código e grave novamente nomicrocontrolador, com apenas um clique em ‘Bootload’.

Page 185: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

185

11.2 Auxilio para o hardware do projeto

A Placa apresentada funciona como uma protoboard, na qual é possível inserircomponentes sem soldá-los, assim é possível reutilizá-los. Contudo, a placa não possui “poderesespeciais”, ou seja, não é capaz de solucionar todos os tipos de problemas de hardware,possuindo também limitações.

Muitos tipos de carga, em especial motores, exigem uma corrente alta para seufuncionamento. O microcontrolador não é capaz de fornecer essa corrente, para isso é necessárioo uso de um reforçador de corrente (associação buffer e transistor TIP). Além disso, parapossibilitar a inversão de sentido e melhorar o controle de velocidade é possível utilizar umaponte H.

A Figura 11.1 mostra um circuito de uma Ponte H, enquanto a Figura 11.2 mostra umcircuito reforçador de corrente.

Figura 11.1 – Ponte H

Page 186: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

186

Figura 11.2 – Reforçador de Corrente (Fonte: Clube da Eletrônica)

Observe que a alimentação dos dois circuitos deve ser superior a 3,3 V (use 12 V depreferência). Além disso, talvez seja necessário dar um ganho de tensão à tensão proveniente domicrocontrolador, para o reforçador de corrente. Assim, ao invés de se utilizar um buffer, pode seutilizar um amplificador inversor (ou não-inversor), aproveitando-se do ganho do AMPOP. Umasugestão de AMPOP para uma aplicação que necessite de alta slew-rate e bom desempenho emaltas frequências é o LVH870, de alimentação simples. Contudo, o AMPOP de uso geral L741resolve grande parte dos problemas possíveis de se encontrar nessa disciplina.

Há circuitos integrados comerciais da Ponte H, caso opte-se por utilizar uma, o maiscomum é o L293. Caso seja necessária uma potência maior, utilize o CI L297 ou o DRV8811.

Lembre sempre de utilizar o multímetro para verificar as tensões em cada componente,além de checar a continuidade (normalmente, esse teste é realizado com um sinal sonoro). Cuidecom a alimentação dos circuitos, verifique se é simples (Vcc e terra) ou simétrica (+Vcc e -Vcc).

Caso você utilize sensores, verifique a razão entre a grandeza medida e a tensão geradapelo sensor e verifique seu datasheet.

Use a menor quantidade possível de jumpers, pois eles funcionam como antenas epodem facilmente captar ruídos.

Utilize sempre filtros (um capacitor eletrolítico de 2,2μF em paralelo normalmente ésuficiente), um sistema de isolamento (optoacopladores – CC e CA – e capacitores – CC em série eCA em paralelo – podem ser utilizados) entre a parte de controle e potência (ou ainda, umpequeno transformador, caso seja necessário transferir potência de uma fonte para ummecanismo mecânico), diodos de proteção (normalmente um 4007 é suficiente) e reguladores detensão (há CI's comerciais, contudo, o uso de diodos zener é bem-vindo).

Para a alimentação, de corrente contínua, você pode associar pilhas de 1,5V em série,utilizar uma bateria de 9V, ou ainda, se o orçamento permitir e exigir, você pode construir umcircuito transformador retificador, para utilizar vários valores de tensão. Embora, umpotenciômetro associado a um buffer permite bastante flexibilidade para vários níveis de tensão.

Page 187: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

187

11.3 Formatação do projeto escrito

Um bom projeto escrito é necessita possuir uma formatação adequada. Os seguinteselementos são obrigatórios em projetos escritos:

• Capa e contracapa: não deve ser numerado nem paginado, devem conter o nome daequipe, o título do trabalho e a data. A capa contém ainda o nome da instituição e odepartamento enquanto a contracapa explica a finalidade do trabalho e apresenta o nomedo professor.

• Sumário: não deve ser numerado nem paginado e deve conter cada tópico e subtópico decada parte do projeto;

• Introdução: deve ser numerada e paginada. Deve ser a fundamentação teórica do projeto,onde, por exemplo, caso o projeto seja o controle de um alarme, nessa parte do projetodeve ser explicado o que é um alarme, como funciona, suas aplicações e a teoria de comoum alarme pode ser controlado.

• Materiais e dispositivos: numerado e paginado, breve seção na qual se apresentam oscomponentes utilizados para o projeto e sua finalidade.

• Projeto em si: numerado e paginado, contém o que foi projetado e como foi projetado.Aqui devem ser incluídas as definições para as portas do microcontrolador (de preferênciaem uma tabela), quais periféricos do mesmo foram utilizados. Deve-se apresentar atravésde um esquema as portas utilizadas do microcontrolador HCS08QG8, bem como oscircuitos utilizados identificando suas funções. Onde houver a necessidade de utilização defórmulas demonstrá-las também. Se for desejado e possível, não há problemas em inserirfotos do projeto pronto.

• Programação: numerado e paginado, contém o software implementado nomicrocontrolador, comentado e, preferencialmente, em fonte Courier New , própria daprogramação, com os espaços bem definidos (essa fonte ocupa o mesmo espaço gráficopara todos os caracteres).

• Resultados e Análise: numerado e paginado, resultados obtidos com seu projeto e depoisde todos serem apresentados, deve-se fazer uma análise dos mesmos.

• Conclusão: numerado e paginado. Faz-se uma revisão da ideia do projeto, verifica-se seele atingiu seus objetos, com argumentação quantitativa preferencialmente, comoindicadores de erros. Propõe-se futuras melhorias no projeto e fala-se do conhecimentoobtido com o mesmo.

• Referências Bibliográficas: não deve ser numerado, apenas paginado (e consta nosumário). Apresenta-se as referências do projeto, em especial para a fundamentaçãoteórica e datasheets de componentes.

11.4 Projeto exemplo

Segue um exemplo de projeto já implementado. O projeto não apresenta aqui osumário ou a paginação para a mesma não se confundir com a do próprio livro, contudo, osmesmos itens devem estar contidos no projeto a ser entregue para a aprovação na disciplina.

Page 188: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

188UNIVERSIDADE DO ESTADO DE SANTA CATARINA – UDESC

CENTRO DE CIÊNCIAS TECNOLÓGICAS – CCT

DEPARTAMENTO DE ENGENHARIA ELÉTRICA – DEE

ARTHUR GARCIA BARTSCH

CHRISTIAN JOEZER MEIRINHO

AUTOMATIC GUIDED VEHICLE – AGV

Joinville

2011

Page 189: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

189ARTHUR GARCIA BARTSCH

CHRISTIAN JOEZER MEIRINHO

AUTOMATIC GUIDED VEHICLE – AGV

Projeto apresentado para a disciplina de

Sistemas Digitais Microprocessados, como

requisito parcial de aprovação.

Professora: Ana T. Y. Watanabe

Joinville

2011

Page 190: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

1901 INTRODUÇÃO

Cada vez mais, a indústria exige meios de automatização de sua produção, para

torná-la mais eficiente, dinâmica e, consequentemente, mais produtiva e lucrativa.

Uma das áreas de que mais se necessita é a de robótica móvel. A mesma contribui

para a movimentação de veículos no interior da planta industrial, permitindo a movimentação, por

exemplo, de objetos frágeis, cujo deslocamento humano, ou mesmo em uma esteira, incorreria

em maiores riscos de perda.

O AGV é um expoente da robótica móvel que merece atenção e será o desafio desse

projeto.

1.1 CONCEITO GERAL DO AGV E APLICAÇÕES

Um AGV (Automatic Guided Vehicle, sigla em inglês para Veículo Teleguiado) é um

elemento importante no setor industrial, naquilo que se refere a movimentação de materiais e

cargas.

Um AGV nada mais é do que um robô móvel, capaz de realizar serviços locomotivos

em indústrias e depósitos, principalmente. Tais serviços locomotivos referem-se a tanto transporte

de matérias-primas e/ou materiais no interior do local quanto à elevação desse materiais para seu

depósito em estantes, por exemplo.

Além dos modelos teleguiados, existem modalidades de AGV guiados à laser (LGV),

autoguiados (SGV) e modelos normais de baixo custo (AGC).

Os primeiros AGV comerciais foram introduzidos nos anos 50, e eram fabricados pela

Barrett Electronics of Northbrook, Illinois. E eram simples veículos de carga, semelhantes

a pequenos caminhões andando diretamente no chão ao envés de andar em um trilho.

Os AGVs são aplicados nos mais diversos ramos industriais, como nas indústrias

farmacêutica, química, automotiva, de papel e impressão, de alimentos e até mesmo hospitalar.

Isso pelo fato de poderem exercer um transporte seguro, limpo e ágil.

1.2 TÉCNICA DE CONTROLE DO AGV

Uma vez que o AGV é uma planta eletrônica, o controle digital sobre o mesmo é um

caminho eficiente e prático para o seu funcionamento correto. Um DLP (Dispositivo de Lógica

Programável) ou um microcontrolador são comumente utilizados, sendo aplicados de acordo com

a potência do AGV. Naturalmente, há uma estrutura de controle, que desenvolve a lógica por trás

de seu funcionamento, e outra de potência, que permite a execução dessa lógica para a

Page 191: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

191movimentação de objetos e da planta (AGV) como um todo.

O controle on-off, apesar de não-linear, é uma alternativa simples para aplicações

simples do mesmo e será utilizado nesse projeto.

Um controle PI (Proporcional-Integrativo), ou mesmo um PID (Proporcional-

Integrativo-Derivativo), são utilizados quando o AGV necessita de precisão em seu funcionamento

(normalmente com uma trajetória bem definida, como um Robô Seguidor-de-linha).

Page 192: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

1922 MATERIAIS E DISPOSITIVOS

O projeto consistirá na simulação do controle de velocidade e direção do AGV. Para o

mesmo, então, serão utilizados os seguintes componentes:

• Um Microcontrolador HCS08QG8, para controle (implementação da programação);

• Dois Motores CC de 12 V/400Hz, para simulação da direção e velocidade do AGV;

• Quatro Capacitores, para filtragem de sinal;

• Resistores, para controle de corrente;

• Optoacopladores, para isolamento de sinal (controle) e potência;

• Push-botons, para reset, ativação e testes;

• Quatro Relés, para o controle do sentido dos motores;

• Protoboard, para testes;

Page 193: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

1933 PROJETO DO AGV

O nosso projeto visa ao desenvolvimento da lógica de movimentação do AGV. Para

isso, utilizamos os recursos disponíveis no microcontrolador HCS08QG8.

A ideia da lógica é basicamente é utilizar os dois canais de PWM (Modulação em

largura de pulso) para controlar a velocidade, e também a direção, de dois motores, cada qual

conectado a uma roda. Além disso, utilizamos duas saídas digitais (PTB6 e PTB7) para acionar o

sentido de giro do motor, através de um relé (e, assim, se o AGV vai para frente ou para trás, em

relação ao referencial adotado).

Os canais do PWM são equivalentes as portas PTA0 e PTB5. O PWM é um recurso

da eletrônica para reduzir o valor eficaz de uma tensão contínua, de uma forma facilmente

controlável. Isso permite, por exemplo, reduzir a velocidade para frenagem e aumento de

velocidade quando não há obstáculos no caminho do AGV. Optou-se por dois canais (um para

cada roda) para ser possível realizar curvas, uma vez que não utilizou-se servo-motores nesse

projeto. Assim, é possível variar a saída para o PWM de uma roda em detrimento da outra e,

consequentemente, fazer que um lado gire mais rápido e realize uma curva.

Para programar o PWM, foi necessário calcular o valor do TPMMOD. Partiu-se do

pressuposto que a frequência nominal de giro do Motor CC é de 400Hz e que essa seria a

frequência dos canais de PWM, a partir disso, impondo o prescaler igual a 1 e a fonte de

frequência sendo o BusClk, pode-se calcular o valor de TPMMOD, da seguinte maneira:

Há dois conjuntos de entradas digitais, sendo que o primeiro conjunto (PTB0 e PTB1),

altera a velocidade dos dois motores juntos, conforme a Tabela 1 (Veja que as entradas quando

são pressionadas enviam nível zero. Veja também que o último caso necessita que os dois

botões sejam apertados ao mesmo tempo, o que não é usual).

Tabela 1 – Velocidade dos Motores

PTB1(Entrada)

PTB0(Entrada)

PTB7(Saída para motor)

PTB6(Saída para motor)

Velocidade

1 1 0 0 Parado

1 0 0 1 Diminui se estiver indo parafrente e aumenta se estiver

indo para trás

0 1 1 0 Diminui se estiver indo paratrás e aumenta se estiver indo

para frente

0 0 1 1 Parado

f =f fonte

(TPMMOD+1)∗prescaler⇒400=

4000000TPMMOD+1

⇒TPMMOD=39999

Page 194: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

194Observe que quando TPMCxVH recebe valores negativos, ele inverte o sentido de

direção do motor. Os relés auxiliam nesse processo, visto que estão conectados em cada lado de

cada motor, conforme a Figura 1.

O segundo conjunto (PTA2 e PTA3) atua individualmente em cada motor, permitindo a

realização de curvas. A Tabela 2 mostra a lógica de funcionamento.

Tabela 2 – PWM individual de cada motor

PTA3(Entrada)

PTA2(Entrada)

PTB5(Saída para motor)

PTA0(Saída para motor)

Velocidade

1 1 0 0 Não há acréscimo develocidade

1 0 0 1 Aumento de velocidade noMotor 1 (direito),

consequentemente, gira paraa esquerda

0 1 1 0 Aumento de velocidade noMotor 2 (esquerdo),

consequentemente, gira paraa direita

0 0 1 1 Aumento de velocidade nosdois motores

A Figura 1 exibe as conexões do microcontrolador (As chaves e transistores são relés,

que funcionam como chave, apenas simbolizados dessa forma).

Figura 1 – Diagrama de conexões do projeto

Page 195: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

1954 PROGRAMAÇÃO

O programa em Assembly utilizado está na sequência.

INCLUDE 'MC9S08QG8.inc' ORG $0060 ORG $E000

INICIO: LDA SOPT1 ;desativa o COP AND #127 ORA #1 ;ativa pin o PTA5 para reset STA SOPT1

MOV #$00, PTADD ;define PTA2 e PTA3 como entradas MOV #$FF, PTBD ;apaga todas as saidas MOV #$C0, PTBDD ;define PTB0 e PTB1 como entradas

;define PTB6 e PTB7 como entradas LDA PTBPE ORA #3 STA PTBPE LDA PTAPE ORA #$0C STA PTAPE

;configuracao do PWM BSET 3, TPMSC ;ativa PWM MOV #$28, TPMC0SC ;canal 0 ativo e p wm em subida de nível MOV #$28, TPMC1SC ;canal 1 ativo e p wm em subida de nível LDHX #39999 ;f = 400Hz, presca ler 1, fonte busclk STHX TPMMODHSUPER_RET: LDHX #0000 ;valor inicialmente de frequencia 0 STHX TPMC0VH STHX TPMC1VH

BSET 7, PTBD ;valores para reinici o dos motores BSET 6, PTBD ;os motores ficam parados quando os niveis logicos são iguais

LOGICA: JSR CONDICAO ;verifica direc ao dos motores JSR VER_PWM ;verifica pwm p ara variar velocidade

JMP LOGICA ;reinicia ciclo de verificacao

VER_PWM: BRCLR 0, PTBD, MOT1 ;logica de desvio para aumentar PWMs BRCLR 1, PTBD, MOT2 ;e modificar a d ireção dos motoresSAI_PWM: RTS

Page 196: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

196

MOT1: LDHX TPMC1VH CPHX #0 BEQ SAI_MOT1 LDHX TPMC0VH CPHX TPMMOD+1 BEQ SAI_MOT1 AIX #5 ;aumenta o valor de pwm do motor 1 em 5 STHX TPMC0VH AIX #-10 ;diminui o valor de pwm do motor 2 em 10 STHX TPMC1VHSAI_MOT1: RTS

MOT2: LDHX TPMC0VH CPHX #0 BEQ SAI_MOT2 LDHX TPMC1VH CPHX TPMMOD+1 BEQ SAI_MOT2 LDHX TPMC1VH AIX #5 ;aumenta o valor de pwm do motor 2 em 5 STHX TPMC1VH AIX #-10 ;diminui o valor de pwm do motor 1 em 10 STHX TPMC0VHSAI_MOT2: RTSCONDICAO: LDHX TPMC0VH CPHX #0 BNE LA BSET 7, PTBD BSET 6, PTBDLA: BRCLR 2, PTAD, FRENTE BRCLR 3, PTAD, TRAZ RTS

TRAZ: LDHX TPMC0VH CPHX #0 BEQ INIT BRCLR 7, PTBD, AVANT BRCLR 6, PTBD, TRANT RTS INIT: BSET 6, PTBD BCLR 7, PTBD LDHX #8000 STHX TPMC0VH STHX TPMC1VH RTS

AVANT: JMP AUM_VELTRANT: JMP DIM_VELSAI_COND: RTS

FRENTE: LDHX TPMC0VH CPHX #0 BEQ INIF

Page 197: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

197 BRCLR 6, PTBD, AVANF BRCLR 7, PTBD, TRANF RTS

AVANF: JMP AUM_VELTRANF: JMP DIM_VEL

INIF: BSET 7, PTBD BCLR 6, PTBD LDHX #8000 STHX TPMC0VH STHX TPMC1VHSAI_FRENTE: RTS

AUM_VEL: LDHX TPMC0VH CPHX TPMMOD+1 BEQ SAI_DIM LDHX TPMC0VH AIX #5 STHX TPMC0VH LDHX TPMC1VH AIX #5 STHX TPMC1VH RTSDIM_VEL: LDHX TPMC0VH CPHX #0 BEQ SAI_DIM LDHX TPMC0VH CPHX #8000 BEQ ZERA LDHX TPMC0VH AIX #-5 STHX TPMC0VH LDHX TPMC1VH AIX #-5 STHX TPMC1VHSAI_DIM: RTSZERA: LDHX #0 STHX TPMC0VH STHX TPMC1VH BSET 6, PTBD BSET 7, PTBD RTS ;VETORES DE INTERRUPCAO

ORG $FFFE FDB INICIO

Page 198: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

1985 RESULTADOS E ANÁLISE

O circuito conseguiu controlar o giro do motor e seu sentido, conforme desejado.

Contudo, a parte de potência do circuito deixou a desejar e o mesmo não avançou além da fase

de testes na protoboard.

Os erros são atribuídos a necessidade de um amplificador de corrente para enviar a

corrente desejada ao motor em cada momento e a ruídos provenientes do meio externo (em

especial os de 60Hz), devido a excessivo número de jumpers utilizado na implementação do

projeto, os mesmos atrapalham o sinal PWM.

Page 199: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

1996 CONCLUSÃO

O projeto de um simulador de AVG foi bem sucedido no que se referiu ao

embasamento de uma implementação de um controlador on-off, via interação direta do usuário. O

mesmo cumpriu seu objetivo de demonstrar o controle de velocidade e sentido dos motores,

simulando um AVG real.

A parte de potência e funcionamento de movimentação de rodas em um carro, porém,

não foi executada, devido à baixa capacidade de correntes e ruídos externos.

De qualquer forma, esse trabalho possibilitou um contato direto com uso de

microcontrolador para aplicações reais, utilizadas na indústria, e a verificações de problemas

típicos da engenharia elétrica.

Page 200: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

200REFERÊNCIAS BIBLIOGRÁFICAS

PEREIRA, Fabio. Microcontroladores HC908Q: teoria e pratica. Sao Paulo: Livros Erica,2004.

PEREIRA, Fabio. Microcontroladores HCS08: teoria e pratica. Sao Paulo: Livros Erica,2005.

Automated Guided Vehicle. Disponível em<http://en.wikipedia.org/wiki/Automated_Guided_Vehicle> Acessado em 10 maio 2011.

TRANSROBOTICS. Automatic Guided Vehicles (AGV) Drive & Steering O ptions<http://www.transbotics.com/agvsteeringoptions.htm> Acessado em 20 maio 2011.

Page 201: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

201

Capítulo 12: Bibliotecas em Cpara projetos

O Assembly não é a única linguagem utilizada pelo HCS08. Esse capítulo se dedica aapresentar algumas bibliotecas prontas na linguagem de programação C.

12.1 Biblioteca para Entradas e Saídas Digitais.....20212.2 Biblioteca para Conversor AD........................ 207

12.3 Biblioteca para RTI..........................................20812.4 Biblioteca para LCD.........................................209

”Mais vale o pouco do justo que a abundância de muitos ímpios.” Salmos

37:16

Page 202: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

202

12.1 Biblioteca para Entradas e Saídas Digitais

Biblioteca para configuração inicial de Entradas e Saídas Digitais do microcontrolador.

/*Função para configuração inicial do Entradas e Sa idas Digitais.Digital_direcao: Define entrada(0) ou Sa ida(1) do pino da porta A ou B. Os parâmetros da função são: porta => 'A' ou 'B' pino => Se for porta A (0 à 5) ou se for B (0 à 7) direcao => 0 (entrada) 1 (saída)*/ void digital_direcao (char porta, char pino, char direcao) { if (porta =='A') { // porta A switch (pino){ case 0: // PTAD0 if (direcao == 0) // entrada { PTADD_PTADD0 = 0; PTAPE_PTAPE0 = 1; // pull-up ha bilitado } else // saida PTADD_PTADD0 = 1; break; case 1: // PTAD1 if (direcao == 0) // entrada { PTADD_PTADD1 = 0; PTAPE_PTAPE1 = 1; // pull-up ha bilitado } else // saida PTADD_PTADD1 = 1; break; case 2: // PTAD2 if (direcao == 0) // entrada { PTADD_PTADD2 = 0; PTAPE_PTAPE2 = 1; // pull-up ha bilitado } else // saida PTADD_PTADD2 = 1; break; case 3: // PTAD3 if (direcao == 0) // entrada { PTADD_PTADD3 = 0; PTAPE_PTAPE3 = 1; // pull-up ha bilitado } else // saida

Page 203: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

203 PTADD_PTADD3 = 1; break; case 4: // PTAD4 if (direcao == 0) // entrada { PTADD_PTADD4 = 0; PTAPE_PTAPE4 = 1; // pull-up ha bilitado } else // saida PTADD_PTADD4 = 1; break; case 5: // PTAD5 if (direcao == 0) // entrada { PTADD_PTADD5 = 0; PTAPE_PTAPE5 = 1; // pull-up ha bilitado } else // saida PTADD_PTADD5 = 1; break; } // fim do switch } // fim do if porta == 'A' if (porta =='B') { // porta B switch (pino){ case 0: // PTBD0 if (direcao == 0) // entrada { PTBDD_PTBDD0 = 0; PTBPE_PTBPE0 = 1; // pull-up ha bilitado } else // saida PTBDD_PTBDD0 = 1; break; case 1: // PTBD1 if (direcao == 0) // entrada { PTBDD_PTBDD1 = 0; PTBPE_PTBPE1 = 1; // pull-up ha bilitado } else // saida PTBDD_PTBDD1 = 1; break; case 2: // PTBD2 if (direcao == 0) // entrada { PTBDD_PTBDD2 = 0; PTBPE_PTBPE2 = 1; // pull-up ha bilitado } else // saida PTBDD_PTBDD2 = 1; break; case 3: // PTBD3

Page 204: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

204 if (direcao == 0) // entrada { PTBDD_PTBDD3 = 0; PTBPE_PTBPE3 = 1; // pull-up ha bilitado } else // saida PTBDD_PTBDD3 = 1; break; case 4: // PTBD4 if (direcao == 0) // entrada { PTBDD_PTBDD4 = 0; PTBPE_PTBPE4 = 1; // pull-up ha bilitado } else // saida PTBDD_PTBDD4 = 1; break; case 5: // PTBD5 if (direcao == 0) // entrada { PTBDD_PTBDD5 = 0; PTBPE_PTBPE5 = 1; // pull-up ha bilitado } else // saida PTBDD_PTBDD5 = 1; break; case 6: // PTBD6 if (direcao == 0) // entrada { PTBDD_PTBDD6 = 0; PTBPE_PTBPE6 = 1; // pull-up ha bilitado } else // saida PTBDD_PTBDD6 = 1; break; case 7: // PTBD7 if (direcao == 0) // entrada { PTBDD_PTBDD7 = 0; PTBPE_PTBPE7 = 1; // pull-up ha bilitado } else // saida PTBDD_PTBDD7 = 1; break; } // fim do switch } // fim do if porta == 'B' }

/* DIGITAL_WRITE: Escreve 0 ou 1 na porta digital Os parâmetros da função são: porta => 'A' ou 'B'

Page 205: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

205 pino => Se for porta A (0 à 5) ou se for B (0 à 7) valor => 0 (low) 1 (high)*/ void digital_write(char porta, char pino, char valor) { if (porta =='A') { // porta A switch (pino){ case 0: // PTAD0 PTAD_PTAD0 = valor; break; case 1: // PTAD1 PTAD_PTAD1 = valor; break; case 2: // PTAD2 PTAD_PTAD2 = valor; break; case 3: // PTAD3 PTAD_PTAD3 = valor; break; case 4: // PTAD4 PTAD_PTAD4 = valor; break; case 5: // PTAD5 PTAD_PTAD5 = valor; break; } // fim do switch } // fim do if porta == 'A' if (porta =='B') { // porta B switch (pino){ case 0: // PTBD0 PTBD_PTBD0 = valor; break; case 1: // PTBD1 PTBD_PTBD1 = valor; break; case 2: // PTBD2 PTBD_PTBD2 = valor; break; case 3: // PTBD3 PTBD_PTBD3 = valor; break; case 4: // PTBD4 PTBD_PTBD4 = valor; break; case 5: // PTBD5 PTBD_PTBD5 = valor; break; case 6: // PTBD6 PTBD_PTBD6 = valor; break; case 7: // PTBD7

Page 206: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

206 PTBD_PTBD7 = valor; break; } // fim do switch } // fim do if porta == 'B' } /* DIGITAL_READ: Lê 0 ou 1 da porta digital Os parâmetros da função são: porta => 'A' ou 'B' pino => Se for porta A (0 à 5) ou se for B (0 à 7)*/ char digital_read(char porta, char pino) { char leitura; // retorna valor da leitura if (porta =='A') { // porta A switch (pino){ case 0: // PTAD0 leitura = PTAD_PTAD0; break; case 1: // PTAD1 leitura = PTAD_PTAD1; break; case 2: // PTAD2 leitura = PTAD_PTAD0; break; case 3: // PTAD3 leitura = PTAD_PTAD3; break; case 4: // PTAD4 leitura = PTAD_PTAD4; break; case 5: // PTAD5 leitura = PTAD_PTAD5; break; } // fim do switch} // fim do if porta == 'A' if (porta =='B') { // porta B switch (pino){ case 0: // PTBD0 leitura = PTBD_PTBD0; break; case 1: // PTBD1 leitura = PTBD_PTBD1; break; case 2: // PTBD2 leitura = PTBD_PTBD0; break;

Page 207: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

207 case 3: // PTBD3 leitura = PTBD_PTBD3; break; case 4: //PTBD4 leitura = PTBD_PTBD4; break; case 5: // PTBD5 leitura = PTBD_PTBD5; break; case 6: // PTBD6 leitura = PTBD_PTBD6; break; case 7: //PTBD7 leitura = PTBD_PTBD7; break; } // fim do switch } // fim do if porta == 'B' return(leitura); }

12.2 Biblioteca para Conversor AD

Biblioteca para a configuração inicial do Conversor AD.

/*Função para configuração inicial do conversor AD. Os parâmetros da função são: a) bits_precisão => 8, 10 ou 12 bits b) interrupt_enable => 0 (disable) ou 1 (enable) c) canal => 0-27 => Seleciona o canal de entrada d) continuo => 0 - Única / 1 - Contínua */void setup_AD(int bits_precisao, int interrupt_enab le, int canal,int continuo){

ADCCFG = 0b00010000;switch (bits_precisao){

case 12:ADCCFG_MODE0 = 0;ADCCFG_MODE1 = 1;break;

case 10:ADCCFG_MODE0 = 1;ADCCFG_MODE1 = 0;break;

default:ADCCFG_MODE0 = 0;ADCCFG_MODE1 = 0;break;

}

Page 208: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

208

ADCSC2 = 0b00000000;ADCSC1 = 0b00111111;

//Seleciona o canal de entrada a partir do parâmetr ocanal.

//Caso o parâmetro ultrapasse os limites 0 ou 27, d esligao módulo.

if(canal<=27 && canal>=0) ADCSC1_ADCH = canal;

ADCSC1_AIEN = interrupt_enable;

ADCSC1_ADCO = continuo;}

12.3 Biblioteca para RTI

/*Função para configuração do RTI ( Real Time Interrupt) Os parâmetros da função são: a) clock => 0(RTI off),1(8ms ou /256, 2(32ms o u / 1024...7(1024ms ou /32768) b) en_int => 0 (disable) ou 1 (enable) c) sel_fonte => 0 – clock interno de 1kHz 1 – clo ck externo*/void setup_RTI(int clock, int en_int, int sel_fonte ) {

switch (clock){case 0:

SRTISC_RTIS0 = 0;SRTISC_RTIS1 = 0;SRTISC_RTIS2 = 0;break;

case 1:SRTISC_RTIS0 = 1;SRTISC_RTIS1 = 0;SRTISC_RTIS2 = 0;break;

case 2:SRTISC_RTIS0 = 0;SRTISC_RTIS1 = 1;SRTISC_RTIS2 = 0;break;

case 3:SRTISC_RTIS0 = 1;SRTISC_RTIS1 = 1;SRTISC_RTIS2 = 0;break;

Page 209: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

209case 4:

SRTISC_RTIS0 = 0;SRTISC_RTIS1 = 0;SRTISC_RTIS2 = 1;break;

case 5:SRTISC_RTIS0 = 1;SRTISC_RTIS1 = 0;SRTISC_RTIS2 = 1;break;

case 6:SRTISC_RTIS0 = 0;SRTISC_RTIS1 = 1;SRTISC_RTIS2 = 1;break;

default:SRTISC_RTIS0 = 1;SRTISC_RTIS1 = 1;SRTISC_RTIS2 = 1;break;

}SRTISC_RTIE = en_int; // int.habilita/des ab.SRTISC_RTICLKS = int sel_fonte; // seleção de fonte

}

12.4 Biblioteca para LCD

Procedimento para incluir arquivos em C nos arquivos em ASM:1) Ao criar o projeto novo devem escolher a opção: C e relocable assembly

2) Arquivos utilizados: main.c, LCD.c, LCD.h e main.asm: /***************************ARQUIVO MAIN.C ******* **************//*main.C => chamar o programa em assembly: asm_main() e incluir a biblioteca do LCD: lcd.h*/ #include <hidef.h> /* for EnableInterrupts mac ro */#include "derivative.h" /* include peripheral decla rations */#include "lcd.h"#include "main_asm.h" /* interface to the assembl y module */ void main(void) { // inicializa e configura o módu lo LCDlcd_ini(display_8x5|_2_linhas,display_ligado|cursor _desligado|cursor_fixo); lcd_pos_xy(1,1); //posiciona o cursor na 1a. coluna da 1a. linha while(1) // loop infinito { asm_main(); }

Page 210: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

210}/**********************************LCD.C*********** **************/#include "lcd.h"#include "derivative.h" // declaração das funçõesvoid lcd_ini(char modo1, char modo2); // function para inicializar //LCDvoid lcd_envia_nibble(char dado); // function para inicio do LCD a //8 bits (nibble)void lcd_envia_byte(char endereco, char dado);void lcd_pos_xy(char x, char y);void delay_ms (unsigned int tempo);void lcd_escreve_char(char c);void lcd_escreve_num(char n);void lcd_escreve_string (char *c);/************************************************** **************//* LCD.C - Biblioteca de manipulação de Módulo LCD/* Autor: Fábio Pereira *//************************************************** **************/// variável global que armazena o configuração do d isplay//static char modo_lcd2; //************************************************* ***********// Função de atraso em milisegundos//************************************************* ***********// Argumentos de chamada: tempo em ms//************************************************* ***********void delay_ms (unsigned int tempo){unsigned int temp;for(;tempo;tempo--) for(temp=(cpu_clock/72);temp;te mp--);}//************************************************* ***************// Função de envio de um nibble para o display//************************************************* ***************// Argumentos de chamada: char dado : dado a ser e nviado para // display (somente o nibble inferior)//************************************************* ***************

void lcd_envia_nibble(char dado){union ubyte teste;teste._byte = dado;// coloca os quatro bits nas saidaslcd_d4 = teste.bit.b0;lcd_d5 = teste.bit.b1;lcd_d6 = teste.bit.b2;lcd_d7 = teste.bit.b3;// pulsa a linha enablelcd_enable = 1;lcd_enable = 0;

Page 211: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

211}//************************************************* ***************// Função de escrita de 1 byte no display//************************************************* ***************// Argumentos de chamada:// char endereco : 0 se instrução, 1 se dado// char dado : dado ou comando a ser escrito//************************************************* ***************

void lcd_envia_byte(char endereco, char dado ){// coloca a linha rs em 0lcd_rs = 0;// configura a linha rs dependendo do modo selecion adolcd_rs = endereco;delay_ms(1);// desativa linha enablelcd_enable = 0;// envia a primeira parte do bytelcd_envia_nibble(dado >> 4);// envia a segunda parte do bytelcd_envia_nibble(dado & 0x0f);} //************************************************* ***************// Função de inicialização do display//************************************************* ***************// Argumentos de chamada:// char modo1 : modo do display (número de linhas e tamanho doscaracteres// char modo2 : modo do display (estado do cursor e do display)//************************************************* ***************// Retorno : nada//************************************************* ***************void lcd_ini(char modo1, char modo2 ) {char conta; // configura os pinos como saídaslcd_enable_dir = 1;lcd_rs_dir = 1;lcd_d4_dir = 1;lcd_d5_dir = 1;lcd_d6_dir = 1;lcd_d7_dir = 1;// coloca os pinos em nível lógico 0lcd_d4 = 0;lcd_d5 = 0;lcd_d6 = 0;lcd_d7 = 0;lcd_rs = 0;lcd_enable = 0;delay_ms(15); // envia uma seqüência de 3 vezes 0x03

Page 212: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

212 // e depois 0x02 para configurar o módulo // para modo de 4 bitsfor(conta=1;conta<=3;++conta) { lcd_envia_nibble(3); delay_ms(5);}lcd_envia_nibble(2);// envia códigos de inicialização do displaylcd_envia_byte(0,0x20 | modo1);lcd_envia_byte(0,0x08 | modo2);modo_lcd2 = 0x08 | modo2;lcd_envia_byte(0,1);lcd_envia_byte(0,6);} //************************************************* ***************// Função de posicionamento do cursor do display//************************************************* ***************// Argumentos de chamada:// char x : coluna a ser posicionado o cursor (i niciando de 1)// char y : linha a ser posicionado o cursor (1 ou 2)//************************************************* ***************// Retorno : nada//************************************************* ***************void lcd_pos_xy(char x, char y){char endereco;if(y!=1) endereco = lcd_seg_lin;else endereco = 0;endereco += x-1;lcd_envia_byte(0,0x80|endereco);} //************************************************* ***************// Função de escrita de um caractere no display//************************************************* ***************// Argumentos de chamada : char c : caractere a se r escrito//************************************************* ***************// Retorno : nada//************************************************* ***************// Observações :// \f apaga o conteúdo do display// \n e \r retornam o cursor para // a primeira coluna da segunda linha//************************************************* ***************void lcd_escreve_char(char c)// envia um caractere para o display{switch (c)

Page 213: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

213 { case '\f': lcd_envia_byte(0,1); delay_ms(5); break; case '\n': case '\r': lcd_pos_xy(1,2); break; default: lcd_envia_byte(1,c); }} //************************************************* ***************// Função de escrita de um numero no display//************************************************* ***************// Argumentos de chamada : char n : numero a ser e scrito//************************************************* ***************// Retorno : nada//************************************************* ***************// Observações :// \f apaga o conteúdo do display// \n e \r retornam o cursor para// a primeira coluna da segunda linha//************************************************* ***************void lcd_escreve_num(char n)// envia um numero para o display{n += 0x30;LCD_envia_byte(1,n );} //************************************************* ***************// Função de escrita de uma string no display//************************************************* ***************// Argumentos de chamada:// char *c : um ponteiro para um caractere//************************************************* ***************// Retorno : nada//************************************************* ***************void lcd_escreve_string (char *c){while (*c) { lcd_escreve_char(*c); c++; }}

Page 214: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

214

//************************************************* ***************// Função de limpa display//************************************************* ***************// //************************************************* ***************// Retorno : nada//************************************************* ***************void lcd_limpa_display (void){char i; /* linha*/ lcd_pos_xy(1,1);for(i =0; i<18; i++ ) lcd_escreve_char(0x20);lcd_pos_xy(1,2);for(i =0; i<18; i++ ) lcd_escreve_char(0x20);} /*****************************LCD.H**************** **************///declara função que inicializa LCD extern void lcd_ini(char modo1, char modo2); //funcion para inicilaizar LCDextern void lcd_envia_nibble(char dado); //funcion para inicio del LCD a 8 bits (nibble)extern void lcd_envia_byte(char endereco, char dado );extern void lcd_pos_xy(char x, char y);extern void delay_ms (unsigned int tempo);extern void lcd_escreve_char(char c);extern void lcd_escreve_string (char *c); // As definições a seguir são utilizadas para acess o aos pinos dodisplay#define lcd_enable PTBD_PTBD4 // pino ena ble do LCD#define lcd_enable_dir PTBDD_PTBDD4 // direção do pino enable#define lcd_rs PTBD_PTBD5 // pino rs do LCD#define lcd_rs_dir PTBDD_PTBDD5 // direção do pino rs#define lcd_d4 PTBD_PTBD0 // pino de dados d4 do LCD#define lcd_d4_dir PTBDD_PTBDD0 // direção do pino d4#define lcd_d5 PTBD_PTBD1 // pino de dados d5 do LCD#define lcd_d5_dir PTBDD_PTBDD1 // direção do pino d5#define lcd_d6 PTBD_PTBD2 // pino de dados d6 do LCD#define lcd_d6_dir PTBDD_PTBDD2 // direção do pino d6#define lcd_d7 PTBD_PTBD3 // pino de dados d7 do LCD#define lcd_d7_dir PTBDD_PTBDD3 // direção do pino d7 #define lcd_seg_lin 0x40 //Endereço da 2a.linha na RAM do LCD #define cpu_clock 20000

Page 215: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

215 // Definições utilizadas para configuração do displ ay#define cursor_ligado 2#define cursor_desligado 0#define cursor_piscante 1#define cursor_fixo 0#define display_ligado 4#define display_desligado 0#define display_8x5 0#define display_10x5 4#define _2_linhas 8#define _1_linha 0 union ubyte{ char _byte; struct { char b0 : 1; char b1 : 1; char b2 : 1; char b3 : 1; char b4 : 1; char b5 : 1; char b6 : 1; char b7 : 1; } bit;}; ;**********************************MAIN.ASM******** *************;* Este arquivo tem o programa em ASM com as chamad as da função em;C desejada. No exemplo abaixo tem a chamada da fun ção ;LCD_escreve_char que tem como parâmetro de entra da: ;1 dado do tipo char (8 bits) => carregado no regis trador A;;1 dado do tipo int (16 bits) => carregado no par HX; ;2 dados do tipo char(8 bits cada) => carregado em A e em X;;1 dado do tipo endereço(16 bits) => carregado no r egistrador HX o;valor do endereço, ; exemplo: LDHX #$0060;************************************************** **************

; export symbols ; XDEF é uma definição de símbolo externo para que outros módulospossam utilizar XDEF asm_main ; XREF informa ao montador que os símbolos são defi nidos em outrosmódulos externos. XREF lcd_envia_byteXREF lcd_escreve_charXREF lcd_escreve_stringXREF lcd_escreve_num

Page 216: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

216XREF lcd_pos_xyXREF delay_ms ; Include derivative-specific definitions INCLUDE 'derivative.inc' ; Àrea de dados variáveisData_Sect: SECTIONtemperatura_pot: DS.W 1temperatura_real: DS.W 1temporario: DS.W 1 ; Àrea de constantesConstSect: SECTION ; seções de constantesdefinida: DC.B "Definida:"definida_l: DC.B $00 ;NECESSARIO PARA FINALIZAR O S TRINGreal: DC.B "Real:"real_1: DC.B $00; variable/data sectionMY_ZEROPAGE: SECTION SHORT ;*****==== C Ó D I G O ===***** MyCode: SECTION asm_main:;=== CONFIGURACAO HCS ===config:LDA SOPT1 ;desabilita COPAND #127STA SOPT1...CLI ;habilita interrupções;=== PRINCIPAL ===principal:BSR lcd_mostra_valores ;chama label responsavel pel o controle do ;LCDLDHX temperatura_real ;aqui compara se a temperatur a ja está igualCPHX temperatura_potBEQ delay_4s ;label para esperar a temperatura esta bilizar um ;pouco util para o relé nao ficar chav eando, evitando ;uma possível queima da lampadaBRA principal ;=== SUB-ROTINAS ===delay_4s: ;label responsavel por fazer um delay de 4 segundos.LDHX #1000JSR delay_msLDHX #1000

Page 217: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

217JSR delay_msLDHX #1000JSR delay_msLDHX #1000JSR delay_msRTS lcd_mostra_valores:;///*** PARTE RESPONSAVEL PELA TEMPERATURA DO POTEN CIOMENTRO ;escreve 'Definida:' no LCDLDA #1 ;define posicao no LCDLDX #2JSR lcd_pos_xyLDHX #definidaJSR lcd_escreve_string;BIT --X da temperatura definida pelo usuarioLDA #1 ;define posicao no LCDLDX #15JSR lcd_pos_xyLDHX temperatura_pot ;carrega temperatura_pot em H: XSTX temporario ;joga valor de X para 'temporario'LDA temporario ;carrega valor de 'temporario' em AAND #%00001111 ;faz um AND bit a bit, para pegar so mente o valor; menos significativo do acumuladorJSR lcd_escreve_num ;chama funcao 'lcd_escreve_num' da biblioteca,; e escreve o valor de A no LCD;BIT -X- da temperatura definida pelo usuarioLDA #1 ;define posicao no LCDLDX #14JSR lcd_pos_xyLDHX temperatura_pot ;carrega temperatura_pot em H: XSTX temporario ;joga valor de X para 'temporario'LDA temporario ;carrega valor de 'temporario' em ALSRA ;desloca A 4 bits para direita, e coloca 0 nos bits ;deslocadosLSRA ; essa funcao se torna necessaria, para pegar a parte mais ; significativa do registrador A.STA temporario ;necessario, se não ocorre ERRO no L CDLDA temporarioLSRALSRAAND #%00001111 ;faz um AND bit a bit, para pegar so mente o valor; menos significativo do acumuladorJSR lcd_escreve_num ;chama funcao 'lcd_escreve_num' da biblioteca, ; e escreve o valor de A no LCD ;BIT X-- da temperatura definid a pelo usuarioLDA #1 ;define posicao no LCDLDX #13JSR lcd_pos_xyLDHX temperatura_pot ;carrega temperatura_pot em H: XPSHH ;armazena conteudo de H na pilhaPULA ;carrega conteudo da pilha (H) em A

Page 218: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

218AND #%00001111 ;filtra nibble menos significativoJSR lcd_escreve_num ;escreve valor no LDC;///*** PARTE RESPONSAVEL PELA TEMPERATURA DO LM35 ***///;escreve 'Real:' no LCDLDA #2 ;define posicao no LCDLDX #2JSR lcd_pos_xyLDHX #realJSR lcd_escreve_string;BIT --X da temperatura do LM35LDA #2 ;define posicao no LCDLDX #15JSR lcd_pos_xyLDHX temperatura_real ;carrega temperatura_real em H:XSTX temporario ;joga valor de X para 'temporario'LDA temporario ;carrega valor de 'temporario' em AAND #%00001111 ;faz um AND bit a bit, para pegar so mente o valor; menos significativo do acumuladorJSR lcd_escreve_num ;chama funcao 'lcd_escreve_num' da biblioteca, ; e escreve o valor de A no LCD ;BIT -X- da temperatura do LM35LDA #2 ;define posicao no LCDLDX #14JSR lcd_pos_xyLDHX temperatura_real ;carrega temperatura_real em H:XSTX temporario ;joga valor de X para 'temporario'LDA temporario ;carrega valor de 'temporario' em ALSRA ;desloca A 4 bits para direita, e coloca 0 nos bits ;deslocadosLSRA ; essa funcao se torna necessaria, para pegar a parte maisSTA temporarioLDA temporarioLSRA ; significativa do registrador A.LSRAAND #%00001111 ;faz um AND bit a bit, para pegar so mente o valor; menos significativo do acumuladorJSR lcd_escreve_num ;chama funcao 'lcd_escreve_num' da biblioteca,; e escreve o valor de A no LCD;BIT X-- da temperatura do LM35LDA #2 ;define posicao no LCDLDX #13JSR lcd_pos_xyLDHX temperatura_real ;carrega temperatura_real em H:XPSHH ;armazena conteudo de H na pilhaPULA ;carrega conteudo da pilha (H) em AAND #%00001111 ;filtra nibble menos significativoJSR lcd_escreve_num ;escreve valor no LDCRTS

Page 219: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

219

Capítulo 13: Materiais de apoio

Nessa seção, se encontram os resumos dos registradores e das instruçõesAssembly, além do índice de instruções do capítulo 3 deste livro.

13.1 Resumo das Instruções...................................22013.2 Tabela de Vetores...........................................23513.3 Resumo dos Registradores do HCS08QG8......23613.3.1 Registradores do Sistema............................23613.3.2 Entradas Digitais..........................................23713.3.3 Entradas Analógicas, Conversor e Comparador

AD...........................................................................23913.3.4 Interrupções................................................24313.3.5 Temporizador de 8 Bits – MTIM..................24413.3.6 Temporizador de 16 Bits – TPM...................24513.3.7 Conexão Serial Assíncrona – SCI..................248

”Não desampares a sabedoria, e ela te guardará; ama-a, e ela te protegerá.”

Provérbios 4:6

Page 220: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

220

13.1 Resumo das Instruções

LDA – LoaD AccumulatorInstrução responsável por carregar valores imediatos ou diretos no acumulador .

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2Opcode (fazer em todos!) A6 B6 C6 F6 E6 D6 9EE6 9ED6Operando ii dd hhll -- ff eeff ff eeffCiclos de BusClk(em todos!) 2 3 4 3 3 4 4 5Sinalizadores Alterados V, N e Z

STA – STore AccumulatorInstrução responsável por armazenar o conteúdo do acumulador em uma posição de memória.

Modo de Endereçamento DIR EXT IX IX1 IX2 SP1 SP2Opcode B7 C7 F7 E7 D7 9EE7 9ED7Operando dd hhll -- ff eeff ff eeffCiclos de BusClk 3 4 3 3 4 4 5Sinalizadores Alterados V, N e Z

LDX – LoaD XInstrução responsável por carregar imediatos ou diretos valores em X.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2Opcode AE BE CE FE EE DE 9EEE 9EDEOperando ii dd hhll -- ff eeff ff eeffCiclos de BusClk 2 3 4 3 3 4 4 5Sinalizadores Alterados V, N e Z

STX – STore XInstrução responsável por armazenar os valores de X em uma posição da memória.

Modo de Endereçamento DIR EXT IX IX1 IX2 SP1 SP2Opcode BF CF FF EF DF 9EEF 9EDFOperando dd hhll -- ff eeff ff eeffCiclos de BusClk 3 4 3 3 4 4 5Sinalizadores Alterados V, N e Z

LDHX – LoaD H:XInstrução responsável por carregar um valor em H:X.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1Opcode 45 55 32 9EAE 9ECE 9EBE 9EFEOperando ii dd hhll -- ff eeff ffCiclos de BusClk 3 4 5 5 5 6 5Sinalizadores Alterados V, N e Z

STHX – STore H:XInstrução responsável por armazenar o conteúdo de H:X em um espaço na memória.

Modo de Endereçamento DIR EXT SP1Opcode 35 96 9EFFOperando dd hhll ffCiclos de BusClk 4 5 5Sinalizadores Alterados V, N e Z

Page 221: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

221

MOV - MOVementCarrega valores em posições de memória ou faz uma cópia do conteudo de uma posição da memória em

outra.Modo de Endereçamento IMM/DIR DIR/DIR DIR/IX+ IX+/DIROpcode 6E 4E 5E 7EOperando ii, dd dd, dd , dd ddCiclos de BusClk 4 5 5 5Sinalizadores Alterados V, N e Z

CLR - CLeaRApaga todo o conteúdo de uma posição de memória ou de um componente da CPU.

Modo de Endereçamento INH(A) INH(X) INH(H) DIR IX IX1 SP1Opcode 4F 5F 8C 3F 6F 7F 9E6FOperando dd ff ffCiclos de BusClk 1 1 1 5 4 5 6Sinalizadores Alterados V, N e Z

BSET – Bit SetSeta o bit selecionado para uma determinada posição da memória.

Modo de Endereçamento DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7)Opcode 10 12 14 16 18 1A 1C 1EOperando ddrr ddrr ddrr ddrr ddrr ddrr ddrr ddrrCiclos de BusClk 5 5 5 5 5 5 5 5Sinalizadores Alterados Nenhum

BCLR – Bit CLeaRApaga o bit selecionado para uma determinada posição da memória.

Modo de Endereçamento DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7)Opcode 11 13 15 17 19 1B 1D 1FOperando ddrr ddrr ddrr ddrr ddrr ddrr ddrr ddrrCiclos de BusClk 5 5 5 5 5 5 5 5Sinalizadores Alterados Nenhum

TAP (84) – Tranference from Accumulator to Processor TPA (85) – Tranference from Processor to Accumulator

A instrução TAP copia o conteúdo do Acumulador e “cola” no CCR (registrador deestado do processador), alterando seus flags e a TPA faz o inverso, copia o conteúdo do CCR e“cola” no acumulador. Ambas possuem modo de endereçamento implícito (INH).

Outras instruções de Transferência:TAX (97) – Transfere o conteúdo de A para X, sem alterar o conteúdo de A.TXA (9F) – Transfere o conteúdo de X para A, sem alterar o conteúdo de X.TSX (95) – Transfere o conteúdo do SP + 1 para H:X, sem alterar o conteúdo de SP.TXS (94) – Transfere o conteúdo de H:X-1 para SP, sem alterar o conteúdo de H:X.

Page 222: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

222

Instruções de Armazenamento e Remoção na Pilha (Todas em modo de endereçamento INH):

PSHA (87) – Armazena o conteúdo de A na pilha e decrementa uma posição do SP.PSHH (8B) – Armazena o conteúdo de H na pilha e decrementa uma posição do SP.PSHX (89) – Armazena o conteúdo de X na pilha e decrementa uma posição do SP.PULA (86) – Incrementa uma posição SP, retira seu conteúdo e armazena em A.PULH (8A) – Incrementa uma posição SP, retira seu conteúdo e armazena em H.PULX (88) – Incrementa uma posição SP, retira seu conteúdo e armazena em X.

RSP (9C) - SP retorna ao valor inicial, ou seja, SP = $00FF. (INH)

ADC – ADdition with CarryRealiza a seguinte adição: A + Operando + C e armazena a resposta no acumulador.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2Opcode A9 B9 C9 F9 E9 D9 9EE9 9ED9Operando ii dd hhll -- ff eeff ff eeffCiclos de BusClk 2 3 4 3 3 4 4 5

Sinalizadores Alterados V, N, Z, H e C

ADD – ADDitionRealiza a seguinte adição: A + Operando e armazena a resposta no acumulador.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2Opcode AB BB CB FB EB DB 9EEB 9EDBOperando ii dd hhll -- ff eeff ff eeffCiclos de BusClk 2 3 4 3 3 4 4 5Sinalizadores Alterados V, N, Z, H e C

AIS – Addition Indexed to Stack-pointerSoma um operando sinalizado convertido a 16 bits ao conteúdo do valor do apontador da pilha, e

armazena o resultado na pilha.Modo de Endereçamento IMMOpcode A7Operando iiCiclos de BusClk 2Sinalizadores Alterados Nenhum

AIX – Addition Indexed to h:XSoma um operando sinalizado convertido a 16 bits ao conteúdo do valor de H:X, e armazena o resultado

em H:X. Modo de Endereçamento IMMOpcode AFOperando iiCiclos de BusClk 2Sinalizadores Alterados Nenhum

Page 223: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

223

SBC – SuBtraction with CarryRealiza a seguinte subtração: A - Operando – C e armazena a resposta no acumulador.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2Opcode A2 B2 C2 F2 E2 D2 9EE2 9ED2Operando ii dd hhll -- ff eeff ff eeffCiclos de BusClk 2 3 4 3 3 4 4 5Sinalizadores Alterados V, N, Z, e C

SUB – SUBtractionRealiza a seguinte subtração: A – Operando e armazena a resposta no acumulador.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2Opcode A0 B0 C0 F0 E0 D0 9EE0 9ED0Operando ii dd hhll -- ff eeff ff eeffCiclos de BusClk 2 3 4 3 3 4 4 5Sinalizadores Alterados V, N, Z, e C

MUL – MULtiplicationRealiza a seguinte multiplicação sem sinal: X * A. Armazena em X a MSB e em A o LSB.

Modo de Endereçamento INHOpcode 42Operando --Ciclos de BusClk 5Sinalizadores Alterados H e C

DIV – DIVisionRealiza a seguinte divisão sem sinal: conteúdo de H:A / conteúdo de X

O quociente da divisão é armazenado em A e o resto em H. O divisor X não é alteradoModo de Endereçamento INHOpcode 52Operando --Ciclos de BusClk 6Sinalizadores Alterados Z e C

INC – INCreaseIncrementa uma unidade no local indicado no operando.

Modo de Endereçamento DIR INH(A) INH(X) IX IX1 SP1Opcode 3C 4C 5C 7C 6C 9E6COperando dd -- -- -- ff ffCiclos de BusClk 5 1 1 4 5 6Sinalizadores Alterados V, N e Z

DEC – DECreaseDecrementa uma unidade no local indicado no operando.

Modo de Endereçamento DIR INH(A) INH(X) IX IX1 SP1Opcode 3A 4A 5A 7A 6A 9E6AOperando dd -- -- -- ff ffCiclos de BusClk 5 1 1 4 5 6Sinalizadores Alterados V, N e Z

Page 224: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

224

DAA – Decimal Accumulator AdjustEfetua o ajuste decimal do acumulador, para operações realizadas em BCD, após adições com ou sem

transporte. Modo de Endereçamento INHOpcode 72Operando --Ciclos de BusClk 1Sinalizadores Alterados V, N, Z e C

AND - ANDRealiza a operação booleana AND (E ou &) entre o A e o Operando.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2Opcode A4 B4 C4 F4 E4 D4 9EE4 9ED4Operando ii dd hhll -- ff eeff ff eeffCiclos de BusClk 2 3 4 3 3 4 4 5Sinalizadores Alterados V, N e Z

ORA – OR AccumulatorRealiza a operação booleana OR (OU ou |) entre o A e o Operando.

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2Opcode AA BA CA FA EA DA 9EEA 9EDAOperando ii dd hhll -- ff eeff ff eeffCiclos de BusClk 2 3 4 3 3 4 4 5Sinalizadores Alterados V, N e Z

COM – COMplement of 1Faz o complemento de 1 (troca zeros por uns e uns por zeros) no operando.

Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1Opcode 33 43 53 73 63 9E63Operando dd -- -- -- ff eeffCiclos de BusClk 5 1 1 4 5 6

Sinalizadores Alterados V, N, C e Z

NEG – NEGationFaz o complemento de 2 (troca zeros por uns e uns por zeros e soma 1) no operando.

Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1Opcode 30 40 50 70 60 9E60Operando dd -- -- -- ff EeffCiclos de BusClk 5 1 1 4 5 6Sinalizadores Alterados V, N, C e Z

NSA – Nibble Switch AccumulatorEfetua a troca dos nibbles (parte mais alta e parte mais baixa hexadecimal) do acumulador

Modo de Endereçamento INHOpcode 62Operando --Ciclos de BusClk 1Sinalizadores Alterados Nenhum

Page 225: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

225

ASL – Arithmetic Shift Left / LSL – Logical Shift LeftRealiza o deslocamento à esquerda dos bits do conteúdo do operando, é equivalente à multiplicação

inteira por dois. O MSB é deslocado para o flag C e o LSB é preenchido com 0.Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1Opcode 38 48 58 78 68 9E68Operando dd -- -- -- ff eeffCiclos de BusClk 5 1 1 4 5 6Sinalizadores Alterados V, N, C e Z

ASR – Arithmetic Shift RightRealiza o deslocamento à direita dos bits do conteúdo do operando, é equivalente à divisão inteira por dois

(sinalizada). O LSB flag C e o MSB é preenchido com o valor anterior de C.Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1Opcode 37 47 57 77 67 9E67Operando dd -- -- -- ff eeffCiclos de BusClk 5 1 1 4 5 6Sinalizadores Alterados V, N, C e Z

LSR – Logic Shift RightRealiza o deslocamento lógico à direita dos bits do conteúdo do operando, é equivalente à divisão natural

por dois (não-sinalizada). O LSB é deslocado para o flag C e o MSB recebe 0.Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1Opcode 34 44 54 74 64 9E64Operando dd -- -- -- ff EeffCiclos de BusClk 5 1 1 4 5 6Sinalizadores Alterados V, N, C e Z

ROL – ROtation LeftRealiza a rotação à esquerda dos bits do conteúdo do operando. Assim, os bits são deslocados à esquerda,

o LSB recebe o valor inicial do flag C e o flag C recebe o valor inicial do MSB.Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1Opcode 39 49 59 79 69 9E69Operando dd -- -- -- ff eeffCiclos de BusClk 5 1 1 4 5 6Sinalizadores Alterados V, N, C e Z

ROR – ROtation RightRealiza a rotação à direita dos bits do conteúdo do operando. Assim, os bits são deslocados à direita, o

MSB recebe o valor inicial do flag C e o flag C recebe o valor inicial do bit LSB.Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1Opcode 36 46 56 76 66 9E66Operando dd -- -- -- ff EeffCiclos de BusClk 5 1 1 4 5 6Sinalizadores Alterados V, N, C e Z

Page 226: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

226

CMP - CoMPareCompara os valores do acumulador com o operando, fazendo a operação = A - Operando

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2Opcode A1 B1 C1 F1 E1 D1 9EE1 9ED1Operando ii dd Hhll -- ff eeff ff eeffCiclos de BusClk 2 3 4 3 3 4 4 5Sinalizadores Alterados V, N, C e Z

CPX – ComPare XCompara os valores do acumulador com o operando, fazendo a operação = X - Operando

Modo de Endereçamento IMM DIR EXT IX IX1 IX2 SP1 SP2Opcode A3 B3 C3 F3 E3 D3 9EE3 9ED3Operando ii dd Hhll -- ff eeff ff eeffCiclos de BusClk 2 3 4 3 3 4 4 5Sinalizadores Alterados V, N, C e Z

CPHX - ComPare H:XCompara o conteúdo do registrador H:X com o conteúdo de 16 bits do operando.

Modo de Endereçamento IMM DIR EXT SP1Opcode 3E 75 65 9EF3Operando jjkk dd hhll ffCiclos de BusClk 4 5 5 5Sinalizadores Alterados V, N, C e Z

TST - TeSTTesta o conteúdo do operando, alterando os bits Z e N do CCR de acordo com o valor

comparado.Modo de Endereçamento DIR INH (A) INH (X) IX IX1 SP1Opcode 3D 4D 5D 7D 6D 9E6DOperando dd -- -- -- ff ffCiclos de BusClk 4 1 1 3 4 5Sinalizadores Alterados V, N e Z

BRA – BRanch AlwaysEfetua o desvio do fluxo do programa, até 127 posições adiante e 128 posições para trás.

Modo de Endereçamento REL

Opcode 20Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BRN – BRanch NeverNunca desvia (equivale à instrução NOP, com três ciclos)

Modo de Endereçamento REL

Opcode 21Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

Page 227: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

227

BEQ – Branch Equal Desvia se igual (se Z = 1).

Modo de Endereçamento REL

Opcode 27Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BNE – Branch Not EqualDesvia se o valor não for igual. (Se Z = 0)

Modo de Endereçamento RELOpcode 26Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BPL – Branch if PLusDesvia se positivo (Ou seja, se N = 0)

Modo de Endereçamento REL

Opcode 2AOperando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BMI – Branch if MInusDesvia se negativo (ou seja, se N = 1)

Modo de Endereçamento REL

Opcode 2BOperando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BCC – Branch Carry ClearDesvia se o Carry (flag C) é igual a zero.

Modo deEndereçamento

REL

Opcode 24Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BCS – Branch Carry SetDesvia se o Carry (flag C) é igual a um. (Idêntica a instrução BLO)

Modo de Endereçamento REL

Opcode 25Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

Page 228: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

228

BHCC – Branch Half-Carry ClearDesvia se o Half-Carry (flag H) é igual a zero.

Modo de Endereçamento REL

Opcode 28Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BHCS – Branch Half-Carry SetDesvia se o Half-Carry (flag H) é igual a um.

Modo deEndereçamento

REL

Opcode 29Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BMC – Branch Mask-interruption ClearDesvia se o bit de máscara de Interrupções (flag I) é igual a zero (estiver habilitado).

Modo de Endereçamento REL

Opcode 2COperando RrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BMS – Branch Mask-interruption SetDesvia se o bit de máscara de Interrupções (flag I) é igual a um (não estiver habilitado).

Modo de Endereçamento REL

Opcode 2DOperando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BHI – Branch HIghDesvia se maior que o valor da comparação.

Modo deEndereçamento

REL

Opcode 22Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

Page 229: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

229

BHS – Branch High or SameDesvia se maior ou igual que o valor da comparação.

Modo de Endereçamento REL

Opcode 24Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BLO – Branch LOwerDesvia se menor que o valor da comparação.

Modo de Endereçamento REL

Opcode 25Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BLS – Branch Lower or SameDesvia se menor que o valor da comparação.

Modo deEndereçamento

REL

Opcode 23Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BGT – Branch Greater ThanDesvia se maior. (se N = V)

Modo de Endereçamento REL

Opcode 92Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BGE – Branch Greater or EqualDesvia se maior ou igual. (se Z =1 ou N = V)

Modo de Endereçamento REL

Opcode 90Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

Page 230: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

230

BLT – Branch Less ThanDesvia se menor. (se N ≠ V)

Modo de Endereçamento REL

Opcode 91Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BLE – Branch Less or EqualDesvia se menor. (se Z = 1 ou N ≠ V)

Modo de Endereçamento REL

Opcode 93Operando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BIL – Branch Irq LowDesvia para a posição indicada se o pino IRQ estiver em nível 0.

Modo deEndereçamento

REL

Opcode 2EOperando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BIH – Branch Irq HighDesvia para a posição indicada se o pino IRQ estiver em nível 1.

Modo deEndereçamento

REL

Opcode 2FOperando rrCiclos de BusClk 3Sinalizadores Alterados Nenhum

BRSET – BRanch if bit SETDesvia se o bit indicado, da posição de memória descrita no operando, estiver setado.

Modo de Endereçamento DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7)

Opcode 00 02 04 06 08 0A 0C 0EOperando ddrr ddrr ddrr ddrr ddrr ddrr ddrr ddrrCiclos de BusClk 5 5 5 5 5 5 5 5Sinalizadores Alterados Nenhum

Page 231: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

231

BRCLR – BRanch if bit CLeaRDesvia se o bit indicado, da posição de memória descrita no operando, estiver apagado.

Modo de Endereçamento DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7)

Opcode 01 03 05 07 09 0B 0D 0FOperando ddrr ddrr ddrr ddrr ddrr ddrr ddrr ddrrCiclos de BusClk 5 5 5 5 5 5 5 5Sinalizadores Alterados Nenhum

BSR – Branch Sub-RoutineDesvia para a sub-rotina indicada.

Modo deEndereçamento

REL

Opcode ADOperando rrCiclos de BusClk 5Sinalizadores Alterados Nenhum

DBNZ – Decrease and Branch if Not ZeroDecrementa o conteúdo da posição indicada no operando e desvia para posição apontada no

operando, caso o valor seja diferente de zero.Modo de Endereçamento DIR IX IX1 SP1Opcode 3B 7B 6B 9E6BOperando ddrr rr ffrr ffrrCiclos de BusClk 7 6 7 8Sinalizadores Alterados Nenhum

DBNZA – Decrease and Branch if Not Zero in AccumulatorDecrementa A e desvia para posição apontada no operando, caso o valor seja diferente de zero.

Modo de Endereçamento IMM

Opcode 4BOperando rrCiclos de BusClk 4Sinalizadores Alterados Nenhum

DBNZX – Decrease and Branch if Not Zero in XDecrementa X e desvia para posição apontada no operando, caso o valor seja diferente de zero.

Modo de Endereçamento INH

Opcode 5BOperando rrCiclos de BusClk 4Sinalizadores Alterados Nenhum

Page 232: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

232

CBEQ – Compare and Branch if EQual Compara A com o conteúdo do operando e desvia para a posição indicada, se forem iguais.

Modo de Endereçamento DIR IX+ IX1+ SP1Opcode 31 71 61 9E61Operando ddrr ee ffrr ffrrCiclos de BusClk 5 5 5 6Sinalizadores Alterados Nenhum

CBEQA – Compare and Branch if EQual Accumulator Compara A com o valor imediato indicado e desvia se igual.

Modo de Endereçamento IMM

Opcode 41Operando iirrCiclos de BusClk 4Sinalizadores Alterados Nenhum

CBEQX – Compare and Branch if EQual X Compara X com o valor imediato indicado e desvia se igual.

Modo de Endereçamento IMM

Opcode 51Operando iirrCiclos de BusClk 4Sinalizadores Alterados Nenhum

JMP – JuMPFaz o salto do programa para determinada posição de memória. Ela faz um desvio absoluto para

a posição de memória indicada.Modo de Endereçamento DIR EXT IX IX1 IX2Opcode BC CC FC EC DCOperando dd eeff -- ff eeffCiclos de BusClk 3 4 3 3 4Sinalizadores Alterados Nenhum

JSR – Jump Sub-RoutineFaz o salto do programa para determinada sub-rotina.

Modo de Endereçamento DIR EXT IX IX1 IX2Opcode BD CD FD ED DDOperando dd eeff -- ff eeffCiclos de BusClk 5 6 5 5 6Sinalizadores Alterados Nenhum

RTS – ReTurn Sub-routineProvoca o retorno do fluxo do programa ao ponto seguinte à chamada de sub-rotina.

Modo de Endereçamento INH

Opcode 81Operando --Ciclos de BusClk 6Sinalizadores Alterados Nenhum

Page 233: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

233

RTI – ReTurn InterruptionProvoca o retorno do fluxo do programa ao ponto seguinte de onde ocorreu a interrupção.

Modo de Endereçamento INH

Opcode 80Operando --Ciclos de BusClk 9Sinalizadores Alterados Todos, que recuperam o seu estado antes da interrupção

SEC – SEt CarrySeta o sinalizador C do CCR.

Modo de Endereçamento INH

Opcode 99Operando --Ciclos de BusClk 1Sinalizadores Alterados C

CLC – CLear CarryApaga o sinalizador C do CCR.

Modo de Endereçamento INH

Opcode 98Operando --Ciclos de BusClk 1Sinalizadores Alterados C

SEI – SEt Interruption-maskSeta o sinalizador I do CCR. (Desabilita todas as interrupções)

Modo de Endereçamento INH

Opcode 9BOperando --Ciclos de BusClk 1Sinalizadores Alterados I

CLI – CLear Interruption-maskSeta o sinalizador I do CCR. (Habilita todas as interrupções)

Modo de Endereçamento INHOpcode 9AOperando --Ciclos de BusClk 1Sinalizadores Alterados I

NOP – No OPeration Não realiza nenhuma operação, apenas gasta um ciclo de relógio do programa.

Modo de Endereçamento INHOpcode 9DOperando --Ciclos de BusClk 1Sinalizadores Alterados Nenhum

Page 234: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

234

SWI – SoftWare InterruptionGera uma interrupção por software.

Modo de Endereçamento INH

Opcode 83Operando --Ciclos de BusClk 11Sinalizadores Alterados I

STOP – STOPColoca a CPU em algum dos modos de parada (STOP3, STOP2 ou STOP1) dependendo da

configuração dos registrador SPMSC2. Modo de Endereçamento INH

Opcode 8EOperando --Ciclos de BusClk >=2Sinalizadores Alterados I

WAIT – WAITColoca a CPU no modo de espera (WAIT mode).

Modo de Endereçamento INH

Opcode 8FOperando --Ciclos de BusClk >=2Sinalizadores Alterados I

Page 235: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

235

13.2 Tabela de Vetores

Valor Endereço Nome do Vetor Sinalizador Bit de Habilitação Módulo0 $FFFE Vreset - - reset

1 $FFFC Vswi - - SWI2 $FFFA Virq IRQSC: IRQF IRQSC: IRQIE IRQ3 $FFF8 Vlvd SPMSC1:LVDF SPMSC1: LVDIE LVD5 $FFF4 Vtpmch0 TPMC0SC: CH0F TPMC0SC: CH0IE TPM canal 06 $FFF2 Vtpmch1 TPMC1SC: CH1F TPMC1SC: CH1IE TPM canal 17 $FFF0 Vtpmovf TPMSC: TOF TPMSC: TOIE overflow TPM

12 $FFE6 Vmtim MTIMSC: TOF MTIMSC: TOIE overflow MTIM13 $FFE4 Vspi SPIS: SPRF

SPIS: MODFSPIS: SPTEF

SPIC1: SPIESPIC1: SPIE

SPIC1: SPTIE

SPI

14 $FFE2 Vscierr SCIS1: ORSCIS1: NFSCIS1: FESCIS1: PF

SCIC3: ORIESCIC3: NFIESCIC3: FEIESCIC3: PFIE

erro SCI

15 $FFE0 Vscirx SCISC1: IDLESCISC1: RDRF

SCIC2: ILIESCIC2: RIE

recepção SCI

16 $FFDE Vscitx SCIS1: TDRESCIS1: TC

SCIC2: TIESCIC2: TCIE

transmissão SCI

17 $FFDC Viic IICS:IICIF IICC:IICIE I²C18 $FFDA Vkeyboard KBISC: KBF KBISC: KBIE KBI19 $FFD8 Vadc ADSC1: COCO ADSC1: AIEN A/D20 $FFD6 Vacmp ACMPSC: ACF ACMPSC: ACIE ACMP23 $FFD0 Vrti SRTISC: RTIF SRTISC: RTIE RTI

Page 236: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

236

13.3 Resumo dos Registradores do HCS08QG8

13.3.1 Registradores do Sistema----------------------------------------------------------------------------------------------------------------------------------

Registrador de Sinalizadores CCR (Condition Code Register)----------------------------------------------------------------------------------------------------------------------------------

Tabela do Registrador CCR BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Bits de Leitura e Escrita V 1 1 H I N Z C

Valores Inicializados pelo Reset x 1 1 x 1 x x x

C – Sinalizador de transporte/empréstimo (carry/borrow)Z – Sinalizador de ZeroN – Sinalizador de negativoH – Indicador de Meio-transporte

V – Sinalizador de EstouroI – Sinalizador de Interrupção 0 – Interrupção habilitada 1 – Interrupção desabilitada

----------------------------------------------------------------------------------------------------------------------------------Registrador SOPT1 - System OPTions register 1

----------------------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x1802 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: COPE COPT STOPE ---- ---- ---- BKGPE RSTPE

Leitura(R)/Escrita(W): R/W R/W R/W ---- R R R/W R/W

Após o reset: 1 1 0 1 0 0 1 0

Configuração usual: 0 1 0 1 0 0 1 0

BIT0 - RSTEPE - ReSeT Enable Pin Enable.

0 - pino na função de Entrada/Saída ou outra

1 - pino operando na função de reset externo do programa

BIT1 - BKGPE - BacKGroud Pin Enable

0 - função de depuração do pino desabilitada

1 - função de depuração do pino habilitadaBIT5 - STOPE - STOP Enable

0 - modo STOP desabilitado, a instrução STOP não será reconhecida pelo compilador

1 - modo STOP habilitado

BIT6 - COPT - COP Timeout

0 - Acontecerá um reset após 8 192 clocks

de barramento1 - Acontecerá um reset após 262 144 clocks

de barramentoBIT7 - COPE - COP Enable

0 - COP desativado1 - COP ativado

Page 237: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

237

13.3.2 Entradas Digitais----------------------------------------------------------------------------------------------------------------------------------

Registradores PTAD e PTBD - PorT A (B) Data ----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0000 - Página Direta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ---- ---- PTAD5 PTAD4 PTAD3 PTAD2 PTAD1 PTAD0

Leitura(R)/Escrita(W): R R R W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0002 - Página Direta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: PTBD7 PTBD6 PTBD5 PTBD4 PTBD3 PTBD2 PTBD1 PTBD0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - PTXDn - PorT X Data n0 - Porta está recebendo ou enviando nível lógico 0.1 - Porta está recebendo ou enviando nível lógico 1.

----------------------------------------------------------------------------------------------------------------------------------Registradores PTADD e PTBDD - PorT A (B) Data Direction

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0001 - Página Direta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ---- ---- PTADD5 PTADD4 PTADD3 PTADD2 PTADD1 PTADD0

Leitura(R)/Escrita(W) R R R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0003 - Página Direta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: PTBDD7 PTBDD6 PTBDD5 PTBDD4 PTBDD3 PTBDD2 PTBDD1 PTBDD0

Lei.(R)/Esc.(W) R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - PTXDDn - PorT X Data Direction n0 - Porta configurada como entrada.1 - Porta configurada como saída.

Page 238: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

238

----------------------------------------------------------------------------------------------------------------------------------Registradores PTAPE e PTBPE - PorT A (B) Pull-up Enable

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x1840 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: -- -- PTAPE5 PTAPE4 PTAPE3 PTAPE2 PTAPE1 PTAPE0

Lei.(R)/Esc.(W): R R R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x1844 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: PTBPE7 PTBPE6 PTBPE5 PTBPE4 PTBPE3 PTBPE2 PTBPE1 PTBPE0

Lei.(R)/Esc.(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - PTXDDn - PorT X D Pull-up Enable n

0 - pull-up desabilitado.1 - pull-up habilitado.

.

Page 239: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

239

13.3.3 Entradas Analógicas, Conversor e Comparador AD----------------------------------------------------------------------------------------------------------------------------------

Registradores APCTL1 - Analogic Pin ConTroL register 1

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0017 - Página Direta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ADPC7 ADPC6 ADPC5 ADPC4 ADPC3 ADPC2 ADPC1 ADPC0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - ADPCn - AD Pin Control n0 - Porta configurada em algum modo digital.1 - Porta configurada como entrada analógica.

----------------------------------------------------------------------------------------------------------------------------------Registrador ADCCFG - ADC ConFiGuration

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0016 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ADLPC ADIV ADLSMP MODE ADICLK

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 1 0 0 1 1 0 0 0

BIT1 e BIT0- ADICLK- AD Input CLK select

00 - a fonte selecionada é BUSCLK/1 01 - a fonte selecionada é BUSCLK/2 11 - clock interno ADACKBIT3 e BIT2 - MODE

00 - resolução do resultado de conversão: 8 bits 10 - resolução do resultado de conversão: 10 bits

BIT4 - ADLSMP - AD Long SamPle time configuration

0 - tempo de amostragem normal (4 ciclos do clock

do ADC que foi selecionado) 1 - tempo de amostragem estendido (24 ciclos do

clock do ADC que foi selecionado)BIT6 e BIT5 - ADIV - Clock DIVide Select

00 - Divide a fonte de clock selecionada por 1 01 - Divide a fonte de clock selecionada por 2 10 - Divide a fonte de clock selecionada por 4 11 - Divide a fonte de clock selecionada por 8BIT7 - ADLPC - AD Low Power Configution

0 - alta velocidade de conversão (consumo elevado) 1 - baixa consumo de conversão (velocidade reduzida)

Page 240: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

240

----------------------------------------------------------------------------------------------------------------------------------Registrador ADCSC1 - ADC Status and Control 1

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0010 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: COCO AIEN ADCO ADCH

Leitura(R)/Escrita(W): R R/W R/W R/W

Após o reset: 0 0 0 1 1 1 1 1

Configuração usual: 0 0 1 0 0 0 0 0

BIT0, BIT1, BI2, BIT3 e BIT4- ADCH - AD CHannel select

Valor Significado Pino

00000 Canal AD0 PTA0

00001 Canal AD1 PTA1

00010 Canal AD2 PTA2

00011 Canal AD3 PTA3

00100 Canal AD4 PTB0

00101 Canal AD5 PTB1

00110 Canal AD6 PTB2

00111 Canal AD7 PTB3

11111 Modo de conversãodesativado

------

BIT5- ADCO - AD COntinuos conversion enable

0 - Conversão única. 1 - Conversão contínua.BIT6 - AIEN - Ad Interruption ENable

0 - Interrupção desabilitada. 1 - Interrupção habilitada. (Vetor 19 - $FFD8) BIT7- COCO - COnversion COmplete flag

0 - Realizando a Conversão (ou resultado decomparação não condizente).

1 - Conversão completa (ou resultado decomparação condizente).

----------------------------------------------------------------------------------------------------------------------------------Registrador ADCSC2 - ADC Status and Control 2

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0011 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ADACT ADTRG ACFE ACFGT 0 0 0 0

Leitura(R)/Escrita(W): R R/W R/W R/W W W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 0 0 0 0 0 0 0 0

BIT4 - ACFGT - Analogic Compare Function Greater Than enable

0 - O gatilho dispara com um valor menor que o da referência de comparação (o BIT7 COCO do ADSC1 ésetado, se assim for o resultado da comparação)

1 - O gatilho dispara com um valor igual ou maior que o da referência de comparação (o BIT7 COCO doADSC1 é setado, se assim for o resultado da comparação)BIT5 - ACFE - Analogic Compare Function Enable

0 - Comparação desabilitada.1 - Comparação habilitada.

BIT6 - ADTRG - AD conversion TRiGger Select

0 - Gatilho via software (escrita no registrador ADCSC1)1 - Gatilho via hardware (entrada em ADHWT).

Page 241: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

241BIT7- ADACT - AD conversion ACTive

0 - Sem conversão em andamento.1 - Conversão em andamento.

----------------------------------------------------------------------------------------------------------------------------------Registradores ADCRH e ADCRL - ADC Result High e ADC Result Low

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0012 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: 0 0 0 0 0 0 ADR9 ADR8

Leitura(R)/Escrita(W): R R R R R R R R

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0013 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ADR7 ADR6 ADR5 ADR4 ADR3 ADR2 ADR1 ADR0

Leitura(R)/Escrita(W): R R R R R R R R

Após o reset: 0 0 0 0 0 0 0 0

BITn - ADRn - AD Result n

0 - O nível lógico convertido da tensão nesse bit é 01 - O nível lógico convertido da tensão nesse bit é 1

----------------------------------------------------------------------------------------------------------------------------------Registradores ADCCVH e ADCCVL - ADC Compare Value High e Low

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0014 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: 0 0 0 0 0 0 ADCV9 ADCV8

Leitura(R)/Escrita(W): R R R R R R R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0015 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ADCV7 ADCV6 ADCV5 ADCV4 ADCV3 ADCV2 ADCV1 ADCV0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BITn - ADRn - AD Result n

0 - O nível lógico a ser comparado nesse bit é 01 - O nível lógico a ser comparado nesse bit é 1

Page 242: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

242

----------------------------------------------------------------------------------------------------------------------------------Registrador ACMPSC - Analog CoMParator Status and Control

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x001A - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: ACME ACBGS ACF ACIE ACO ACOPE ACMOD

Leitura(R)/Escrita(W): R/W R/W R/W R/W R R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 1 0 0 0 0 0 X 0

BIT1 e BIT0 - ACMOD - Analogic Comparator MODe

00 - O BIT5 será setado na borda de descida do BIT3 do comparador

01 - O BIT5 será setado na borda de subida do BIT3 do comparador

10 - O BIT5 será setado na borda de descida do BIT3 do comparador

11 - O BIT5 será setado na borda de subida ou descida do BIT3 do comparadorBIT2 - ACOPE - AC Output Pin Enable

0 - Saída externa desabilitada (assim, PTA4 pode ser utilizada para outras funções).

1 - Saída externa habilitada.BIT3 - ACO - AC Output

0 - Tensão na entrada inversora é maior que na entrada não-inversora

1 - Tensão na entrada inversora é menor que na entrada não-inversora

BIT4 - ACIE - AC Interrupt Enable

0 - Interrupção desabilitada1 - Interrupção habilitada (Vetor 20 -

$FFD6). A interrupção acontece quando o BIT5 é setado,indicando o término da comparação.BIT5 - ACF - AC Flag

0 - Nenhum evento de comparação ocorreu.1 - Ocorreu algum evento de comparação.

BIT6 - ACBGS - AC BandGap Select

0 - Tensão na entrada não-nversora éproveniente do pino associado a PTA1.

1 - Tensão na entrada não-inversora éproveniente da referência interna de aproximadamente1,2V BIT7 - ACME - AC Module Enable

0 - Módulo desabilitado1 - Módulo habilitado, assim as portas PTA0

e PTA1 não se comportam como entradas digitais, porexemplo.

Page 243: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

243

13.3.4 Interrupções----------------------------------------------------------------------------------------------------------------------------------

Registrador IRQSC - Interruption Pin ReQuest Status and Control

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x00F - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: 0 IRQDD 0 IRQPE IRQF IRQACK IRQIE IRQMOD

Leitura(R)/Escrita(W): R R/W R R/W R W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 0 0 0 1 0 0 1 0

BIT0 - IRQMOD - IRQ detection MODe

0 - O gatilho dispara com a transição do sinal de entrada.

1 - O gatilho dispara com a transição e no nível lógico da entrada.BIT1 - IRQIE - IRQ Interrupt Enable

0 - Função desabilitada.1 - Função habilitada. (Vetor $FFFA)

BIT2 - IRQACK - IRQ ACKnowlegde

1 - Apaga sinalizador de interrupção.

BIT3 - IRQF - IRQ Flag

0 - Não aconteceu interrupção.1 - Aconteceu interrupção.

BIT4 - IRQPE - IRQ Pin Enable

0 - Pino desabilitado.1 - Pino habilitado.

BIT6 - IRQDD - IRQ pull Device Disable

0 - Pull-up /pull-down continua habilitado.1 - Pull-up/pull-down desabilitado.

----------------------------------------------------------------------------------------------------------------------------------Registrador SRTISC – System Real Time Interruption Status and Control

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x1808 - Página Alta

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: RTIF RTIACK RTICLCKS RTIE --- RTIS2 RTIS1 RTIS0

Leitura(R)/Escrita(W): R W R/W R/W R R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 0 0 0 1 0 1 1 1

BIT2, BIT1 e BIT1 – RTISn – RIT Delay Select

RTIS2 RTIS1 RTIS0 Clock Interno(1kHz)

Clock externo

0 0 0 Não opera RTI Não opera RTI

0 0 1 8ms Freq / 256

0 1 0 32ms Freq / 1024

0 1 1 64ms Freq / 2048

1 0 0 128ms Freq / 4096

1 0 1 256ms Freq / 8192

1 1 0 512ms Freq / 16384

1 1 1 1024ms Freq / 32768

BIT4 - RTIE – RTI Enable

0 – Interrupção desabilitada.1 – Interrupção habilitada. (Vetor $FFD0)

BIT5 - RTICLCKS - RTI Clock Select

0 – Fonte interna de 1kHz.1 – Fonte externa.

BIT6 - RTIACK – RTI acknowlegdge

1 - Apaga sinalizador de interrupção.BIT7 - RTIF - RTI Flag

0 - Não aconteceu interrupção.1 - Aconteceu interrupção.

Page 244: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

244

13.3.5 Temporizador de 8 Bits – MTIM----------------------------------------------------------------------------------------------------------------------------------

Registrador MTIMSC- MTIM Status and Control

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x003C - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: TOF TOIE TRST TSTP 0 0 0 0

Leitura(R)/Escrita(W): R R/W W R/W R R R R

Após o reset: 0 0 0 1 0 0 0 0

BIT4 - TSTP - mTim counter SToP

0 - Libera a contagem1 - Impede a continuidade da contagem

BIT5 - TRST - mTim counter ReSeT

Quando setado, esse bit reinicia a contagem do microcontrolador.

BIT6 - TOIE - mTim Overflow Interrupt Enable

0 - Função desabilitada.1 - Função habilitada.(Vetor 12 - $FFE6)

BIT7 - TOF - mTim Overflow Flag

0 - Não aconteceu interrupção.1 - Aconteceu interrupção.

----------------------------------------------------------------------------------------------------------------------------------Registrador MTIMCLK- MTIM CLocK configuration register

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x003D - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: 0 0 CLKS PS

Leitura(R)/Escrita(W): R R R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BIT0, BIT1, BIT2 e BIT3 - PS - PreScaler

0 Divide por 1 0101 Divide por 32

0001 Divide por 2 0110 Divide por 64

10 Divide por 4 0111 Divide por 128

0011 Divide por 8 1XXX Divide por 256

0100 Divide por 16

BIT6, BIT7 - CLKS - CLocK Source select

00 - BUSCLK 01 - XCLK 10 - TCLK, incremento do MTIM na borda de descida 11 - TCLK, incremento do MTIM na borda de subida

Page 245: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

245

13.3.6 Temporizador de 16 Bits – TPM

OBS: Canal 0 = PTA0 e Canal 1 = PTB5

----------------------------------------------------------------------------------------------------------------------------------Registrador TPMMODH e TPMMODL - TPM MODulo High and Low

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0043 - Página Baixa (TPMMODH)

BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0044 - Página Baixa (TPMMODL)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

----------------------------------------------------------------------------------------------------------------------------------TPMC0VH, TPMC0VL, TPMC1VH e TPMC1VL - TPM Channel 0 (or 1) Value High Low

Endereço: 0x0046 - Página Baixa (TPMC0VH)

BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0047- Página Baixa (TPMC0VL)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0049 - Página Baixa (TPMC1VH)

BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

Page 246: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

246

Endereço: 0x004A - Página Baixa (TPMC1VL)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: Contagem do TPM

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

----------------------------------------------------------------------------------------------------------------------------------Registrador TPMSC - TPM Status and Control

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0040 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: TOF TOIE CPWMS CLKSB CLKSA PS2 PS1 PS0

Leitura(R)/Escrita(W): R R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 0 0 0 0 1 -- -- --

BIT2, BIT1 e BIT0 - PSn - Prescaler Select n

0 Divide por 1 001 Divide por 2 010 Divide por 4 011 Divide por 8

100 Divide por 16 101 Divide por 32 110 Divide por 64 111 Divide por 128

BIT4, BIT3 - CLKSy - CLocK Source select y

00 - TPM paralisado 01 – BUSCLK 10 – XCLK 11 - Clock externo.BIT5 - CPWMS - Center-alligned PWM Select

0 - Modo normal.1 - Modo central.

BIT6 - TOIE - Timer Overflow Interrupt Enable

0 - Função desabilitada.1 - Função habilitada (Vetor 7 - $FFF0)

BIT7 - TOF - Timer Overflow Flag

0 - Não houve estouro de contagem 1 - Houve estouro de contagem

Page 247: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

247

----------------------------------------------------------------------------------------------------------------------------------Registrador TPMC0SC e TPMC1SC - TPM Channel 0 (or 1) Status and Control

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0045 - Página Baixa (TPMC0SC)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: CH0F CH0IE MS0B MS0A ELS0B ELS0A 0 0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R R

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0048 - Página Baixa (TPMC1SC)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: CH1F CH1IE MS1B MS1A ELS1B ELS1A 0 0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R R

Após o reset: 0 0 0 0 0 0 0 0

BIT5, BIT4, BIT3 e BIT2 - ELSxy e MSxy - Edge/Level Select

x y e Mode Select x y (y=A ou B)

MSxB MSxA ELSxB ELSxA Modo Selecionado

x x 0 0 Canal desativado

0 0 0 1 Captura (borda de subida)

0 0 1 0 Captura (borda de descida)

0 0 1 1 Captura(ambas as bordas)

0 1 0 0 Comparação (seta o CHxF)

0 1 0 1 Comparação (inverte o canal)

0 1 1 0 Comparação (limpa o canal)

0 1 1 1 Comparação (seta o canal)

1 x 1 0 PWM (nível ativo alto)

1 x x 1 PWM (nível ativo baixo)

BIT6 - CHxIE - CHannel x Interrupt Enable

0 - Função desabilitada.1 - Função habilitada.

(Canal 0: Vetor 5 - $FFF4; Canal 1: Vetor 6 - $FFF2)BIT7 - CHxF - CHannel x Flag

0 - Não aconteceu captura ou comparação.1 - Aconteceu captura ou comparação.

Page 248: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

248

13.3.7 Conexão Serial Assíncrona – SCI----------------------------------------------------------------------------------------------------------------------------------

Registrador SCID - SCI Data register

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0027 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: Caractere a ser recebido (R)/transmitido (W) pela SCI

Leitura(R)/Escrita(W): R/W

Após o reset: 0 0 0 0 0 0 0 0

----------------------------------------------------------------------------------------------------------------------------------Registradores SCIBDH e SCIBDL - SCI Baud Rate High and Low

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0020 - Página Baixa (SCIBDH)

BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8

Nome do BIT: 0 0 0 SBR12 SBR11 SBR10 SBR9 SBR8

Leitura(R)/Escrita(W): R R R R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Endereço: 0x0021 - Página Baixa (SCIBDL)

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: SBR7 SBR6 SBR5 SBR4 SBR3 SBR2 SBR1 SBR0

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Page 249: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

249

----------------------------------------------------------------------------------------------------------------------------------Registrador SCIC2 - SCI Control 2

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0023 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: TIE TCIE RIE ILIE TE RE RWU SBK

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

Configuração usual: 1 0 1 0 1 1 0 0

BIT0 - SBK - Send BreaK

0 - Andamento normal da SCI. 1- O próximo caractere a ser enviado será BREAK. A SCI continuará enviando esse caractere enquanto esse bit estiver setado.BIT1 - RWU - Receiver WakeUp control

0 - Receptor operando normalmente. 1 - Receptor em modo de baixa potência, no aguardo de um evento ativador (selecionado pelo bit WAKE do registrador SCIC1).BIT2 - RE - Receiver Enable

0 - Receptor desabilitado. 1 - Receptor habilitado.BIT3 - TE- Transmitter Enable

0 - transmissor desabilitado. 1 - transmissor habilitado.

BIT4 - ILIE - Idle Line Interrupt Enable

Habilita a interrupção pela inatividade de linha de recepção (o par é o flag IDLE – SCIS1). 0 - Interrupção desabilitada. 1- Interrupção habilitada. (Vetor 15 - $FFE0)BIT5 - RIE - Receiver Interrupt Enable

Habilita a interrupção do receptor, assim quando o flag

RDRF for setado, gerará uma interrupção. 0 - Interrupção desabilitada. 1- Interrupção habilitada. (Vetor 15 - $FFE0)BIT6 - TCIE - Transmission Complete Interruption Enable

Habilita a interrupção do transmissor para transmissãocompleta (o par é o flag TC – SCIS1). 0 - Interrupção desabilitada. 1- Interrupção habilitada. (Vetor 16 - $FFDE)BIT7 - TIE - Transmit Interruption Enable

Habilita a interrupção do transmissor para buffer detransmissão vazio. (o par é o flag TDRE – SCIS1).

0 - Interrupção desabilitada.1- Interrupção habilitada. (Vetor 16 - $FFDE)

Page 250: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

250

----------------------------------------------------------------------------------------------------------------------------------Registrador SCIS1 - SCI Status 1

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0024 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: TDRE TC RDRF IDLE OR NF FE PF

Leitura(R)/Escrita(W): R R R R R R R R

Após o reset: 1 1 0 0 0 0 0 0

BIT0 - PF - Parity-error Flag

0 - Não foi detectado erro de paridade.1 - Foi detectado erro de paridade.

BIT1 - FE- Framing Error flag

0 - Não foi detectado erro de quadro1 - Foi detectado erro de quadro

BIT2 - NF - Noise Flag

0 - Não foi detectado ruído1 - Foi detectado ruído.

BIT3 - OR- receiver OverRun flag

0 - Não foi detectado sobrescrita1 - Houve sobrescrita de dado.

BIT4 - IDLE - IDLE line flag

0 - Não foi detectada inatividade na linha1 - Houve detectação de inatividade na

linha.BIT5 - RDRF - Receiver Data Register Full

0 - O buffer de recepção está vazio.1- Há um novo caractere disponível no

registrador SCID.BIT6 - TC - Transmission Complete flag

0 - Trasmissão em andamento.1 - Nenhuma transmissão em andamento.

BIT7 - TDRE - Transmit Data Register Empty

0 - Há um caractere no buffer de trasmissão.1 - O buffer de trasmissão está vazio.

----------------------------------------------------------------------------------------------------------------------------------Registrador SCIS2 - SCI Status 2

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0025 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: 0 0 0 0 0 BRK13 0 RAF

Leitura(R)/Escrita(W): R R R R R R/W R R

Após o reset: 0 0 0 0 0 0 0 0

BIT0 - RAF - Receiver Active Flag

0 - O receptor não recebe nenhum caractere. 1 - A recepção do caractere está em andamento.

BIT1 - BRK13 - BReaK character lenght

0 - caractere BREAK com 10 bits (11 se M=1). 1 - caractere BREAK com 11 bits (12 se M=1).

Page 251: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

251

----------------------------------------------------------------------------------------------------------------------------------Registrador SCIC1 - SCI Control 1

----------------------------------------------------------------------------------------------------------------------------------

Endereço: 0x0022 - Página Baixa

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

Nome do BIT: LOOPS SCISWAI RSRC M WAKE ILT PE PT

Leitura(R)/Escrita(W): R/W R/W R/W R/W R/W R/W R/W R/W

Após o reset: 0 0 0 0 0 0 0 0

BIT0 - PT - Parity Type

0 - Paridade par.1 - Paridade ímpar.

BIT1 - PE - Parity Enable

0 - Paridade desabilitada.1 - Paridade habilitada. (Vetor 14 - $FFE2).

BIT2 - ILT - Idle Line Type select

0 - A contagem inicia-se após o bit START.1 - A contagem inicia-se após o bit STOP.

BIT3 - WAKE- receiver WAKEup mode select

0 - Receptor é ativado quando a linha está inativa.1 - Receptor é ativado quando recebe um caractere de endereçamento.

BIT4 - M - 9-bit or 8-bit Mode select

0 - 8 bits de dados (mais o START e o STOP totalizando 10 bits).1 - 9 bits de dados (mais o START e o STOP totalizando 11 bits).

BIT5 - RSRC - Receiver SouRCe select

0 - Modo LOOP normal, os bits RxD e TxD não são utilizados pela SCI.1 - Modo "A Um Fio": a saída da SCI está conectada a sua entrada e ao pino TxD.

BIT6 - SCISWAI - SCI Stops in WAIt mode

0 - A SCI opera durante o modo WAIT.1 - A SCI não opera durante o modo WAIT.

BIT7 - LOOPS - LOOP mode Select

0 - Modo LOOP desativado.1 - Modo LOOP ativado: o pino de saída TxD é conectado à entrada RxD.

Page 252: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

252

Índice das Instruções do Capítulo 3

-Armazenamento de dadosLDA 32STA 33LDX 33STX 34LDHX 35STHX 35MOV 36CLR 37BSET 37BCLR 38TAP 38TPA 38PSHA 38PSHH 38PSHX 38PULA 38PULH 38PULX 38RSP 38

Operações lógicas e aritméticasADC 39ADD 40AIS 41AIX 41SBC 43SUB 43MUL 44DIV 44INC 45DEC 46DAA 47AND 47ORA 48COM 48NEG 49NSA 50ASL 50LSL 50ASR 51LSR 51ROL 52ROR 53

Teste e DesvioCMP 54CPX 55

CPHX 56TST 57BRA 57BRN 58BEQ 58BNE 58BPL 59BMI 59BCC 59BCS 59BHCC 60BHCS 60BMC 60BMS 60BHI 61BHS 61BLO 61BLS 61BGT 62BGE 62BLT 62BLE 62BIL 63BIH 63BRSET 63BRCLR 64BSR 64DBNZ 64DBNZA 65DBNZX 65CBEQ 65CBEQA 66CBEQX 66

Endereço AbsolutoJMP 67JSR 67RTS 68RTI 68

ProcessadorSEC 69CLC 69SEI 69CLI 70NOP 70SWI 70STOP 71WAIT 71

Page 253: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

253

Tabela ASCII

Page 254: O UNIVERSO HCS08QG8 - joinville.udesc.br · Na primeira, há o estudo do microcontrolador e ... digitais programáveis compostos de um microprocessador, memórias e periféricos de

254

REFERÊNCIAS BIBLIOGRÁFICAS

FREESCALE. MC9S08QG8 Data Sheet Rev. 4. United States: Freescale, 2008.

MONTEIRO, Mário A. Introdução a organização de computadores. 4 .ed. Rio de Janeiro: LivrosTécnicos e Científicos, 2002.

PEREIRA, Fábio. HCS08 unleashed: Designer's guide to the HCS08 microcontrollers. 2nd ed. UnitedStates: Book Surge, 2009.

PEREIRA, Fábio. Microcontroladores HC908Q: teoria e pratica. São Paulo: Livros Erica, 2004.

PEREIRA, Fábio. Microcontroladores HCS08: teoria e pratica. São Paulo: Livros Erica, 2005.

SEDRA, Adel S; SMITH, Kenneth Carless. Microeletrônica. 5. ed. São Paulo: Prentice Hall, 2007.