Você está na página 1de 133
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Laboratório de Sistemas Microprocessados

Práticas com o microcontrolador MSP430

AUTORES:

1ª versão Prof. Hércules M. Carvalho Prof. Joel Augusto dos Santos Prof. José Jonas da Silva Maia Prof. Marcos Antônio da Silva Pinto

2ª versão 2001 Prof. John Kennedy Schettino de Souza Prof. Marcos Antônio da Silva Pinto Prof. Paulo Sérgio Roque

3ª versão 2003/ 4ª versão 2004 Prof. John Kennedy Schettino de Souza Prof. Marcos Antônio da Silva Pinto Profa. Rosângela Fátima da Silva

5ªversão 2010 Profa. Rosângela Fátima da Silva

6ª versão 2012 Prof. Marcos Antonio da Silva Pinto Profa. Rosângela Fátima da Silva

7ª versão 2013 Revisão 2014 V2 Prof. John Kennedy Schettino de Souza Prof. Marcos Antonio da Silva Pinto

8ª versão 2015 Prof. John Kennedy Schettini de Souza Prof. Marcos Antonio da Silva Pinto

9ª versão - 2016 Prof. Marcos Antonio da Silva Pinto

10ª versão - 2017 Prof. Marcos Antonio da Silva Pinto

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Índice

 

Introdução

04

Prática 01

05

Ambiente de programação da IAR Systems

Prática 02

18

Instruções de carga e transferência de 8 bits

Prática 03

22

Instruções de carga e transferência de 16 bits

Prática 04

26

Operações lógicas e aritméticas

Prática 05

30

Codificação de programa a partir de um fluxograma

Prática 06

34

Instruções de desvio

Prática 07

38

Estudo de Sub-rotinas

Prática 08

42

Exercícios de programação

Prática 09

44

Dispositivo de saída

Prática 10

49

Dispositivo de entrada

Prática 11

53

Interrupção

Prática 12

56

Teclado

Prática 13

65

Display de LCD

Prática 14

70

Integração de programas

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

 

Prática 15

76

Semáforo

Prática 16

80

Motor de passo

Prática 17

87

Controle digital de velocidade de motor cc

Prática 18

93

Controle de portão de garagem

Prática 19

97

Dimmer digital

Prática 20

102

Voltímetro dc

Apêndice A Tabela ASCII

106

Apêndice B O conjunto de Instruções

108

Referências Bibliográficas

133

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Introdução

Caríssimos alunos,

Como se pode observar na capa desta apostila, existem várias versões. Isto significa que estamos, cada vez mais, tentando melhorar o material que você utiliza. Parte destas versões é devido a mudanças da tecnologia. Mas o que nos move é o desejo de que esta apostila seja a melhor possível, portanto gostaríamos que você prestasse muita atenção em tudo que a partir deste momento vamos oferecer e nos ajude nesta missão. Talvez assim consigamos atingir nossos objetivos.

Esta apostila tem como público alvo estudantes da área de sistemas digitais de cursos técnicos e superiores. Esta se destina a disciplinas com duração de dois semestres (80 horas aula) com vistas a fornecer roteiros de aulas práticas para o aprendizado das estruturas internas da família de microcontroladores MSP430 fabricado pela Texas Instruments. A primeira aula (prática 1) é um tutorial para a familiarização com o ambiente de programação da IAR Systems (empresa que desenvolveu o software). As práticas dois até oito se destinam ao aprendizado da programação Assembly, uso do conjunto de instruções do microcontrolador, estruturas de repetição e sub-rotina, sendo usado o ambiente de programação em modo simulação. Da prática nove em diante são utilizadas as portas de entrada e saída e outros módulos periféricos do microcontrolador e passa-se a usar o ambiente de programação em modo de emulação, sendo então necessário o hardware do MSP430, ou seja, o kit do microcontrolador. Ressalta-se também que a partir desta prática a codificação é realizada na linguagem C e da pratica doze em diante inicia-se o uso da técnica de modularização de códigos. Nesta segunda parte deste material (após prática 8) é imprescindível o conhecimento do hardware utilizado.

No mais, desejo a todos um bom aproveitamento.

Atenciosamente,

Rosângela Fátima da Silva e Marcos A. S. Pinto

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Prática 1 -

Ambiente

integrado

de

desenvolvimento (IDE) da IAR Systems

OBJETIVO

Introduzir o ambiente integrado de desenvolvimento (IDE) da IAR Systems (IAR Embedded Workbench IAR EW)

Construção de programas em linguagem Assembly

1.1 - INTRODUÇÃO

O desenvolvimento de programas em linguagem Assembly exige não apenas o

conhecimento de um ambiente de programação, mas também do processador em questão. A Texas Instruments desenvolveu a família de microcontroladores MSP430. Cada membro desta família possui em seu chip além de um microprocessador, outros dispositivos acoplados como memória de programa, memória de dados e vários dispositivos periféricos, que é o objeto do nosso estudo. A IAR Systems é a responsável pelo desenvolvimento do software que será utilizado ao longo deste curso.

O processo de criação de um programa em Assembly é muito parecido com o

processo de criação de programas em linguagem C, Observe a sequencia na Figura 1,

apresentada a seguir:

Edição Montagem Linkedição Depuração Figura 1 - Procedimento para criação de um programa.
Edição
Montagem
Linkedição
Depuração
Figura 1 - Procedimento para criação de um programa.

A edição consiste na digitação, de todos os mnemônicos pertencentes ao

programa, utilizando um editor de texto tipo ASCII. Neste estágio o programa está em

linguagem Assembly e é conhecido como código fonte.

A montagem é a tradução do texto digitado (mnemônicos) para o respectivo

código de máquina da CPU. Caso seja obtido sucesso nesta etapa será gerado o código objeto. Caso haja erros, eles serão relatados pelo programa montador. O usuário deverá então corrigi-los na edição e novamente fazer a montagem. Este procedimento deverá ser repetido até que não haja mais erros.

A linkedição faz a ligação das referências (sub-rotinas e variáveis) entre vários

códigos objetos. Isto ocorre quando construímos programas muito grandes que por questão de projeto é importante que o programa seja construído em partes separadas.

A depuração é a etapa final do desenvolvimento do programa, servindo para

reparar defeitos de lógica. Esta etapa pode ser realizada de duas formas diferentes:

simulação ou emulação. No modo simulação o programa desenvolvido é simulado,

bastando para isto apenas o computador. Porém no modo emulação, é necessário além do computador, o hardware do microcontrolador, pois neste caso o programa

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

realmente roda na máquina na qual ele foi projetado (no microcontrolador). Desta forma a depuração é muito mais precisa e efetiva, podendo ajudar a detectar inclusive defeitos de conexão entre terminais do microcontrolador e dispositivos externos.

Cada etapa acima mencionada é realizada por um software específico. Porém o ambiente de desenvolvimento oferecido pela IAR Systems proporciona um ambiente integrado para desenvolvimento de programas em linguagem Assembly, C e C++, contendo os quatro softwares na mesma ferramenta. Desta forma o usuário poderá editar, montar, link editar e depurar seu programa no mesmo ambiente, utilizando apenas um clique do mouse para trocar de tarefa. Mas é necessário criar um workspace e um projeto antes de executar os passos mencionados.

1.2 - ATIVIDADES

1.2.1. - Explorando o IDE - ambiente integrado de desenvolvimento da IAR Systems IAR Embedded Workbench ( IAR EW)

Para abrir o programa IAR Embedded Workbench (IAR EW), vá ao botão Iniciar e selecione as seguintes opções, sequencialmente: Todos os programas, IAR Systems, IAR Embedded Workbench kickstart, IAR Embedded Workbench, conforme se pode observar na Figura 2, apresentada a seguir, ou clique no ícone

na Figura 2, apresentada a seguir, ou clique no ícone correspondente na área de trabalho. Figura

correspondente na área de trabalho.

ou clique no ícone correspondente na área de trabalho. Figura 2 - Janela de trabalho do

Figura 2 - Janela de trabalho do Windows.

Quando clicar sobre a opção IAR Embedded Workbench, aparecerá a janela de abertura do Embedded Workbench (Figura 3).

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Disciplina: Laboratório de Sistemas Microprocessados Figura 3 - Janela de Início do IAR Embedded Workbench .

Figura 3 - Janela de Início do IAR Embedded Workbench.

Caso esteja iniciando a tarefa de desenvolvimento do programa, naturalmente deve-se escolher a opção File no menu principal (lado superior esquerdo da tela) e nesta aba escolher a opção New sub opção Workspace, conforme a Figura 4.

opção New sub opção Workspace , conforme a Figura 4. Figura 4 - Opções apresentadas pela

Figura 4 - Opções apresentadas pela janela Embedded Workbench Startup.

Esta opção abre uma nova janela, que permite criar uma nova área de trabalho (Figura 5). Uma área de trabalho é uma região lógica destinada à inserção de diversos projetos que apresentam aplicações correlatas. Em nossas aulas práticas estaremos escrevendo um único projeto para cada área de trabalho.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Disciplina: Laboratório de Sistemas Microprocessados Figura 5 – Janela do novo workspace . Um projeto reúne

Figura 5 Janela do novo workspace.

Um projeto reúne um ou mais códigos fontes do sistema que estamos desenvolvendo e também é importante para definições das características do processador utilização no projeto. Ao longo da montagem do projeto estes detalhes

ficarão mais claros. Para criar um novo projeto, selecione na barra do menu principal a

opção Project e em seguida a sub opção Creat New Project

(Figura 6).

e em seguida a sub opção Creat New Project (Figura 6). Figura 6 – Janela para

Figura 6 Janela para criar um novo projeto.

Será então apresentada uma nova janela que permite escolher o tipo de projeto. Como já foi dito, iniciaremos os nossos estudos pela linguagem Assembly. Portanto deve-se abrir a opção asm e selecionar o item asm (Figura 7).

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Disciplina: Laboratório de Sistemas Microprocessados Figura 7 - Janela para a escolha do tipo de projeto.
Disciplina: Laboratório de Sistemas Microprocessados Figura 7 - Janela para a escolha do tipo de projeto.

Figura 7 - Janela para a escolha do tipo de projeto.

Uma vez determinado o tipo de projeto a ser criado, o próximo passo é salvá-lo. Quando se salva um arquivo, naturalmente deve-se que escolher uma pasta. Vá a Documentos, lá existe uma pasta para a sua turma. Caso não exista, faça a gentileza de criá-la. Dentro desta pasta crie a sua pasta, de preferência com o seu nome. Assim você saberá onde estão os seus arquivos. Agora crie uma nova pasta, ela pode se chamar, por exemplo, AULA_01. Cada projeto que criarmos, terá uma pasta exclusiva para ele.

Atenção:

Todos os seus arquivos devem estar dentro de uma única pasta com o

seu nome.

Crie uma pasta exclusiva para cada projeto, ou seja, para cada novo

programa que você vai implementar.

A janela Salvar como, que surgiu na tela, lhe dá a opção de escolher o nome do projeto. Observe, neste caso, foi salvo na pasta AULA_01 o projeto com o nome PRJ_01, Figura 8.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Disciplina: Laboratório de Sistemas Microprocessados Figura 8 - Janela Salvar como. Enfim, surgiu na tela o

Figura 8 - Janela Salvar como.

Enfim, surgiu na tela o editor de texto, Figura 9, onde se pode digitar o programa.

editor de texto, Figura 9, onde se pode digitar o programa. Figura 9 - Janela com

Figura 9 - Janela com workspace e o editor de texto.

A janela apresentada anteriormente possui duas partes básicas: a janela Workspace, que contém o projeto recém-criado, bem como os arquivos pertencentes a ele e a janela asm.43*, que contém o código fonte.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Agora digite o seguinte código a partir da linha onde está escrito ;Insira o seu programa aqui (Figura 9).

MOV.B

#0xAA,R4

;IMEDIATO > REGISTRO

MOV.B

R4,R5

;REGISTRO −> REGISTRO

MOV.B

R5,&0x200

;REGISTRO −> MEMÓRIA

MOV.B

&0x200, &0x201

;MEMÓRIA −> MEMÓRIA

MOV.B

&0x201,R6

;MEMÓRIA −> REGISTRO

Uma vez digitado o programa é necessário salvá-lo. Vá ao menu principal e selecione a opção File e em seguida Save Workspace. Surgirá à janela Save Workspace As, Figura 10.

. Surgirá à janela Save Workspace As , Figura 10. Figura 10 - Janela para salvar

Figura 10 - Janela para salvar o Workspace.

Escolha um nome para o workspace e salve. Neste caso foi escolhido o nome

AREA_01.

Agora é hora de verificar se o código digitado está correto e transformá-lo em código de máquina utilizando os processos de montagem e linkedição. Entretanto, para que tenhamos sucesso é necessário selecionar para qual componente da família MSP430 estamos escrevendo o programa. Selecione no menu principal a opção Project>Options (Alt F7) (Figura 11).

Na caixa category (Figura 12) selecione a aba General Options e verifique se o MSP selecionado é o 430F1611 na caixa de opção Device. Caso contrário clique no ícone a direita do MSP selecionado, para que sejam listados todos os MSPs suportados pela versão atual do ambiente IAR instalado. Em seguida selecione MSP430x1xx Family e então click na apção MSP430F1611.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Com o modelo de MSP selecionado clique na aba Debugger (Figura 13) e confira se na caixa de diálogo Driver está selecionado o modo simulação.

de diálogo Driver está selecionado o modo simulação. Figura 11 - Preparação para seleção do tipo

Figura 11 - Preparação para seleção do tipo de MSP430.

Figura 11 - Preparação para seleção do tipo de MSP430. Figura 12 - Janela de configuração

Figura 12 - Janela de configuração do MSP.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Disciplina: Laboratório de Sistemas Microprocessados Figura 13 - Selecionado modo simulação. Com o MSP

Figura 13 - Selecionado modo simulação.

Com o MSP selecionado podemos executar os processos de montagem e linkedição. No menu principal selecione a opção Project e clique sobre Make ou

selecione a opção Project e clique sobre Make ou pressione a tecla F7, ou ainda pode-se

pressione a tecla F7, ou ainda pode-se clicar no ícone Make que aparece na linha logo abaixo do menu principal. Com os processos de montagem e linkedição concluídos, o seu ambiente de trabalho deve estar com a aparência da Figura 14.

de trabalho deve estar com a aparência da Figura 14. Figura 14 - Janela do Workspace

Figura 14 - Janela do Workspace, do editor de texto e mensagens do linkeditor.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Observe que na parte inferior da tela apareceram algumas informações referentes ao processo de montagem do programa, aba Messages. Neste caso não foram encontrados erros de sintaxe (Total number of errors: 0) e nem avisos de alerta (Total number of warnings: 0). As warnnigs ao contrário dos erros sintaxe não impedem a execução do programa, apenas indica a possibilidade da ocorrência de falha na execução do programa.

Se houver algum erro no seu programa, uma mensagem de erro aparecerá nesta aba, descrevendo resumidamente o erro. Se você der um duplo clique sobre a mensagem, o cursor será imediatamente movido para o ponto onde se encontra o erro.

imediatamente movido para o ponto onde se encontra o erro. Após corrigir o erro, basta clicar

Após corrigir o erro, basta clicar novamente sobre o ícone ou pressionar a tecla F7 para que o processo de montagem ocorra novamente. Quando não houver mais erros o programa poderá ser executado.

Agora resta simular a execução do programa. Em outras palavras, fazer de conta que o programa está sendo executado. Isso porque o simulador é um programa que nos permite rodar um código escrito para um processador, indicando o que aconteceria caso ele existisse de fato. Para carregar o programa no ambiente de simulação, vá ao menu principal, selecione a opção Project e clique sobre Download and Debug, ou pressione as teclas CTRL + D, ou então clique sobre o ícone , disponível na barra de ferramentas do Embedded Workbench. Um novo ambiente, o modo depuração, é disponibilizado, conforme a Figura 15.

modo depuração, é disponibilizado, conforme a Figura 15. Figura 15 - Ambiente de depuração. Observe a
modo depuração, é disponibilizado, conforme a Figura 15. Figura 15 - Ambiente de depuração. Observe a

Figura 15 - Ambiente de depuração.

Observe a janela adicional de Disassembly que foi aberta no lado direito da tela. Nela está exibido o conteúdo da memória de programa do processador, no formato hexadecimal intercalado com o código-fonte original.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Uma nova barra de ferramentas, a barra de depuração, também foi adicionada. Essa barra disponibiliza vários botões para o usuário interagir com o programa em simulação, permitindo a execução do programa de forma: contínua e passo a passo com possibilidade de reinício, parada e etc. Os botões da barra de ferramenta de depuração estão apresentados na Figura 17.

É possível acrescentar novas janelas neste ambiente. Vá ao menu principal, clique sobre o botão View e observe a lista de opções. Selecione a opção Register e repita este procedimento selecionando a opção Memory. Em seguida feche as janelas Dissambly e Messages. Após estas alterações a tela de depuração ficará como apresentado na Figura 16. As janelas Register e Memory, geralmente, são as mais utilizadas em nossas aplicações.

geralmente, são as mais utilizadas em nossas aplicações. Figura 16 - Ambiente para depuração com as

Figura 16 - Ambiente para depuração com as janelas Register e Memory.

Observe na Figura 16 que na janela de depuração (asm.s43) existe uma tarja verde sobre uma linha de código. É a indicação da próxima linha de programa a ser executada. Agora basta você escolher uma das opções de execução do programa na barra de ferramentas (Figura 17) e verificar a simulação do mesmo.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Reset - Reinicia o programa.

Reset - Reinicia o programa.

Break - Pára a execução do programa.

Break - Pára a execução do programa.

Step Over - Executa a próxima instrução, se for uma chamada de sub-rotina, ela é

Step Over - Executa a próxima instrução, se for uma chamada de sub-rotina, ela é inteiramente executada em único passo e o cursor retorna para a instrução após a chamada.

Step Into - Executa a próxima instrução. Se for uma chamada de sub-rotina, entra na

Step Into - Executa a próxima instrução. Se for uma chamada de sub-rotina, entra na sub-rotina.

Step Out - Executa o programa até o término da sub-rotina atual.

Step Out - Executa o programa até o término da sub-rotina atual.

Next Statement - Pula para o próximo comando, o atual é executado sem a visualização

Next Statement - Pula para o próximo comando, o atual é executado sem a visualização do depurador.

Run to Cursor - Executa o programa até o ponto em que encontra o cursor.

Run to Cursor - Executa o programa até o ponto em que encontra o cursor.

Go - Executa o programa até um ponto de parada (breakpoint) ou o término do

Go - Executa o programa até um ponto de parada (breakpoint) ou o término do programa.

Toggle Breakpoint - Cria/apaga um ponto de parada (breakpoint).

Toggle Breakpoint - Cria/apaga um ponto de parada (breakpoint).

Stop Debugging - Saída do modo de depuração.

Stop Debugging - Saída do modo de depuração.

Figura 17 - Botões da barra de ferramentas de depuração.

Atenção:

As opções de execução de programas presentes na barra de

ferramentas de depuração, mostradas na Figura 17, podem ser acessadas através da seleção do botão Debug no menu principal.

1.2.2. Teste todos os botões da barra de ferramentas de depuração.

Dica:

Se você não observar diferenças entre alguns deles, fique ligado, pois

é apenas uma questão de tempo.

Não se esqueça de salvar os seus arquivos no seu pen drive, ao final

de todas as aulas. Salve apenas o código fonte, com extensão .s43

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Pontos de checagem

Criar projeto.

Passos

Não é possível carregar um programa no MSP sem que se tenha criado um arquivo projeto. Os passos para criação do projeto estão descritos na prática01.

Abrir um Workspace.

Criar uma nova pasta para cada novo projeto.

Salvar arquivo.

Definir modelo do MSP.

Definir para modo simulação.

Editar e compilar programa.

Editar o programa.

Todo programa passa pelas fases de edição do código fonte e pela tradução no respectivo código de máquina.

Montar o programa.

Identificar erros de sintaxe indicados pela montagem.

 

Corrigir erros.

Carregar programa no simulador.

Carregar programa no simulador e em caso de falhas:

Para a execução do programa é necessário entrar no modo simulação do IAR.

Verificar de modelo do MSP foi selecionado corretamente.

Verificar se o IAR está em modo simulação.

Rodar programa no simulador.

Executar o programa com a opção Go (

Rodar programa no simulador. Executar o programa com a opção Go ( ).

).

Após a execução do programa deve- se verificar se o mesmo está realizando o que projetado.

Verificar se a lógica programada foi realizada corretamente.

Investigar erros de funcionamento do programa no simulador.

Rodar o programa passo a passo (Figura 17).

A realização das etapas anteriores não garante a inexistência de erros lógicos.

Inserir break points para avaliar se o programa está sendo executado corretamente até um determinado ponto.

 

Inserir janelas auxiliares para avaliação do conteúdo das variáveis utilizadas no programa (Figura 16).

 

Atenção:

O

seu

desenvolvimento

no

processo

de

depuração

de

programa

é

tão

importante quanto o próprio processo de construção de um novo programa.

Desta forma é fundamental conhecer os recursos de depuração de programa que a ferramenta de desenvolvimento lhe oferece.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Prática 2 -

Instruções

de

transferência de 8 bits

carga

OBJETIVO

e

Estudar as instruções de carga e transferência de 8 bits

Familiarização com os registros de uso geral do MSP430

2.1 -

INTRODUÇÃO

Na aula anterior, você executou a maioria das instruções de transferência de oito bits existentes no conjunto de instruções do MSP430. E também aprendeu a elaborar seus programas usando o ambiente de programação IAR EW. Vamos agora aproveitar

o

projeto elaborado na aula anterior e estudar mais atentamente as instruções de carga

e

transferência de oito bits.

COMO CARREGAR UM PROJETO JÁ EXISTENTE

Basta abrir o ambiente de programação da IAR Systems e clicar sobre o botão File no menu principal, opção Open, sub-opção Workspace. Aparecerá uma janela contendo a árvore de diretórios, onde se deve localizar a pasta que contém o Workspace desejado (Figura 18). Atenção o Workspace tem extensão .eww

Talvez, você não se lembre de como abrir o IAR Embedded Workbench . Então consulte o item 1.2 da apostila onde é descrito este procedimento.

o item 1.2 da apostila onde é descrito este procedimento. Figura 18 - Janela para abrir

Figura 18 - Janela para abrir o Workspace.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

INSTRUÇÕES DE CARGA E TRANSFERENCIA DE 8 BITS

Estas instruções movem o conteúdo do operando fonte para o operando destino. Sintaxe: instrução fonte, destino, exemplo: MOV R4, R15.

Todos os registros do MSP são de dezesseis bits (Tabela 1). Mas é possível carregar, transferir e executar operações lógicas e aritméticas com apenas oito bits. Neste caso, basta acrescentar o sufixo “.Bna instrução, exemplo: MOV.B. Se você omitir esse detalhe ou colocar o sufixo .W, a instrução realizada será de dezesseis bits: MOV.W ou apenas MOV.

Contador de programa

(PC)

R0

Apontador de Pilha

(SP)

R1

Registro de status

(SR)

R2

Gerador de constante

(CG2)

R3

Registro de uso geral

R4

.

.

.

.

.

.

Registro de uso geral

R15

Tabela 1 - Registros da CPU.

Atenção:

O MSP possui 12 registros de uso geral: R4 a R15. Eles podem ser

usados em suas aplicações habituais: transferência de dados, operações lógicas, aritméticas, desvios e etc. Eles armazenam dados ou endereços.

As operações de 8 bits com destino em registro são executadas

apenas com a parte menos significativa dos registros, sendo a parte mais significativa zerada.

Operações de 8 bits com destino em memória altera apenas o

endereço especificado. Porém operações de 16 bits em memória devem ter endereço par, sendo o byte menos significativo enviado para o endereço especificado (par) e o byte mais significativo ocupa o endereço seguinte.

2.2 - CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

2.2 -

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

ATIVIDADES

2.2.1. Execute passo a passo o programa da aula anterior e preencha a Tabela 2.

INSTRUÇÕES/ REG. e MEM.

MOV.B #0AAH,R4

MOV.B R4,R5

MOV.B R5,&200H

MOV.B &200H,&201H

MOV.B &201H, R6

R4

         

R5

         

R6

         

(200H)

         

(201H)

         

Tabela 2 - Conteúdo corrente de registros e posições de memória.

Dica:

Para executar o programa passo a passo, entre no modo simulação

para executar cada linha do

e

entre no modo simulação para executar cada linha do e pressione a tecla F10 ou o

pressione a tecla F10 ou o ícone programa. Consulte a Figura 17.

(

)
)

Para ver os registros, vá ao menu principal, clique sobre o botão View

e selecione a opção Register.

Para ver a memória, clique sobre botão View no menu principal e

selecione a opção Memory. Na janela da memória, na aba Go to digite o

endereço desejado: 0x200 e tecle enter.

2.2.2. Abra uma nova pasta (Aula_02) e construa um novo projeto para testar as seguintes instruções:

MOV.B

#0AAH,R4

;IMEDIATO −> REGISTRO

MOV.B

#0BBH,R5

;IMEDIATO −> REGISTRO

MOV.B

R4,R6

;REGISTRO −> REGISTRO

MOV.B

R5,R4

;REGISTRO −> REGISTRO

MOV.B

R6,R5

;REGISTRO −> REGISTRO

O que ocorreu com os valores carregados nos registros R4 e R5?

Porque foi usado o registro R6?

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

2.2.3. Construa um novo projeto para testar as seguintes instruções:

MOV.W

#0x200, R4

;Modo imediato

MOV.W

#0x201, R5

;Modo imediato

MOV.B

#0xCC, &0x200

;Modo imediato

MOV.B

#0xDD, &0x201

;Modo imediato

MOV.B

0(R4), R6

;Modo indexado

MOV.B

0(R5), 0(R4)

;Modo indexado

MOV.B

R6, 0(R5)

;Modo indexado

MOV.B

@R5, R10

;Modo indireto

Qual é a diferença entre as seguintes instruções:

a) MOV.B R5,R4

b) MOV.B 0(R4), R6

e

e

MOV.B 0(R5),0(R4)

MOV.B @R4, R6

O que foi armazenado nos registros R4 e R5, dados ou endereços?

O que ocorreu com o conteúdo das posições de memória 0x200 e 0x201?

Explique o funcionamento do programa.

2.2.4. Elabore um programa que troque entre si o conteúdo da posição de memórias 200H e do registrador R5. Teste o programa.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Prática 3 -

Instruções

de

carga

transferência de 16 bits

OBJETIVO

e

Estudar as instruções de carga e transferência de 16 bits

Aplicação de registros especiais de 16 bits

3.1.

INTRODUÇÃO

Você já estudou todas as instruções de carga e transferência de 8 bits. Isto significa que você já conhece as instruções de carga e transferência de 16 bits, uma vez que a única diferença é o número de bits transferidos. Agora, temos que prestar muita atenção em alguns registros que são utilizados apenas em operações de 16 bits:

o contador de programa (PC) e o ponteiro da pilha (SP).

INSTRUÇÕES DE CARGA E TRANSFERÊNCIA DE 16 BITS

O Contador de Programa (PC) e o Ponteiro da Pilha (SP) armazenam apenas endereços de posição de memória, portanto eles são utilizados em operações de 16 bits. Esses registros (Tabela 1) são controlados pela própria CPU durante a execução de programas. O máximo que podemos fazer é inicializá-los.

Na versão do IAR EW que estamos usando, quando criamos um novo projeto surge o editor de texto com algumas linhas de códigos. Observe as duas linhas seguintes:

ORG

0FFFEh

DC16

init

;set reset vector to 'init' label

Elas inicializam o Program Counter (PC) para você. Observe que ao carregar o programa no ambiente de simulação o PC sempre está com o valor de 0x1100. Observe também que após a execução de cada instrução, ele é automaticamente incrementado.

O Stack Pointer (SP) é inicializado pela seguinte linha de código:

init:

MOV

#SFE(CSTACK), SP ;set up stack

Agora está um pouquinho mais claro, pois a instrução MOV você conhece e SP representa o registro Ponteiro da Pilha. A instrução acima inicializa o SP com o endereço par após o final da memória RAM. Esse registro é automaticamente incrementado ou decrementado, em situações específicas que serão vistas no decorrer deste curso.

3.2. CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina:

3.2.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

ATIVIDADES

3.2.1. Abra uma nova pasta (Aula_03) e construa um novo projeto para testar as seguintes instruções:

;Número da instrução

MOV.W

#0x1234,R7

;1

MOV.W

#0x5678,R8

;2

PUSH

R7

;3

PUSH

R8

;4

MOV.W

#0x00,R7

;5

MOV.W

#0x00,R8

;6

POP

R8

;7

POP

R7

;8

Execute o programa e preencha as colunas da Tabela 3 após ter executado as referidas instruções:

INSTRUÇÕES/ 1 2 3 4 5 6 7 8 REG. e PILHA PC SP R7
INSTRUÇÕES/
1
2
3
4
5
6
7
8
REG. e PILHA
PC
SP
R7
R8
R9
(09FFH)
(09FEH)
(09FDH)
(09FCH)

Tabela 3 - Conteúdo corrente de registros.

Descreva o que ocorreu com PC após a execução de cada instrução.

O que ocorreu com o SP e com a pilha quando foram executadas as instruções PUSH?

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Descreva o que ocorreu quando foram executadas as instruções POP.

3.2.2. Construa um novo projeto para testar as seguintes instruções:

; Número da instrução

MOV.W

#0xAAAA, R10

;1

MOV.W

#0xBBBB, R11

;2

PUSH

R10

;3

PUSH

R11

;4

POP

R10

;5

POP

R11

;6

Execute o programa e preencha as colunas da Tabela 4 após ter executado as referidas instruções:

INSTRUÇÕES/

1

2

3

4

5

6

REG. e PILHA

PC

           

SP

           

R10

           

R11

           

(09FFH)

           

(09FEH)

           

(09FDH)

           

(09FCH)

           

Tabela 4 - Conteúdo corrente de registros e memória.

Explique o que o programa faz

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

3.2.3. Construa um novo projeto para testar as seguintes instruções:

; Número da instrução

MOV

#0xBBBB, R4

;1 - IMEDIATO −> REGISTRO

MOV

R4, R5

;2 - REGISTRO −> REGISTRO

MOV

R5, &0x200

;3 - REGISTRO −> MEMÓRIA

MOV

&0x200, &0x202

;4 - MEMÓRIA −> MEMÓRIA

MOV

&0x202, R6

;5 - MEMÓRIA −> REGISTRO

MOV

#0x202, R7

;6 - IMEDIATO −> REGISTRO

MOV

0(R7), R8

;7 - MEMÓRIA −> REGISTRO

Execute o programa e preencha as colunas da Tabela 5 após ter executado as referidas instruções:

INSTRUÇÕES/

1

2

3

4

5

6

7

REG. e PILHA

PC

             

R4

             

R5

             

R6

             

R7

             

R8

             

(0200H)

             

(0202H)

             

Tabela 5 - Conteúdo corrente de registros e memória.

Qual é a diferença entre as seguintes instruções:

MOV

&0x202, R6

MOV

#0x202, R6

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Prática 4 -

Operações lógicas e aritméticas

OBJETIVO

Estudar as instruções lógicas e aritméticas

Análise do registro de status do MSP

Manipulação de números binários e hexadecimal

4.1.

INTRODUÇÃO

A CPU contém a Unidade Lógica e Aritmética. Essa, como o próprio nome diz, é responsável pela realização das operações lógicas e aritméticas. Ela geralmente utiliza os registros de propósito gerais e posições de memória como operandos das operações aritméticas (soma e subtração) e lógicas (and, or, xor, etc).

A maioria das operações lógicas e aritméticas afetam os flags. Por isto é importante consultar o conjunto de instruções para saber como e quando os flags são afetados. Os flags são bits que sinalizam o resultado das operações lógicas ou aritméticas. Eles são usados pela CPU para tomada de decisão (operações de jump condicional). Os flags existentes no MSP encontram-se localizados no Registro de Status (SR - Figura 19) ocupando os seguintes bits:

de Status (SR - Figura 19) ocupando os seguintes bits: Figura 19 – Registro de status.

Figura 19 Registro de status.

C Carry (bit 0) sinaliza a ocorrência de vai um nas operações de soma ou um pedido de empréstimo nas operações de subtração e resetado em caso contrário. Para a operação de soma caso ocorra vai um

o

flag C é setado, já para operação de subtração caso haja vem um o flag

C

é resetado. Em operações lógicas (and, bit, inv e xor), será setado se o

resultado for diferente de zero e resetado em caso contrário.

Z

Zero (bit 1) será setado caso o resultado de uma operação seja

zero e resetado em caso contrário.

N

Negative (bit 2) será setado se o resultado de uma operação for

negativo e resetado se positivo.

V Overflow (bit 8) será setado se no resultado de uma operação aritmética houver um estouro de capacidade da variável sinalizada (erro de sinal) e resetado em caso contrário.

Dica:

É necessário consultar o conjunto de instruções do MSP para verificar quais os flags que atuam após a execução de cada instrução e como eles são afetados.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

4.2.

ATIVIDADES

4.2.1. Resolva manualmente as seguintes operações aritméticas anote o resultado da operação e os respectivos flags na Tabela 6:

Instrução

Operação

Resultado

V

N

Z

C

 

1 79 -79

         
 

2 57H + 4B H

         
 

3 160H AND 54F9H

         
 

4 45H 56H

         
 

5 8FH + 64H

         

Tabela 6 - Operações lógicas e aritméticas.

4.2.2. Escreva em Assembly o código para testar as instruções apresentadas no item anterior. Considere no código de seu programa que as instruções são operações de byte exceto a instrução 3 que deve ser tratada como word. Execute o programa e aproveite para verificar se os flags sinalizados por você estão corretos.

4.2.3. Analise o código apresentado a seguir:

MOV.B

&0x200,R4

MOV.B

&0x201,R5

ADD.B

R4,R5

MOV.B

&0x200,R6

MOV.B

&0x201,R7

DADD.B

R7,R6

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

1. Digite no editor de texto do IAR EW o programa.

2. Armazene nas posições de memória 200H e 201H os valores 35H e 47H respectivamente.

Dica:

Para inserir um conteúdo em um espaço de memória RAM, siga os

seguintes passos:

a. Vá ao ambiente de depuração.

b. Acrescente a janela Memory.

c. Clique com o botão esquerdo do mouse sobre a seta da

caixa de texto onde está escrito Memory e selecione RAM.

d. Marque com o botão esquerdo do mouse a posição de

memória que você deseja modificar e escreva o valor desejado por cima.

3. Execute o programa e explique os valores contidos nos registros R5 e R6.

4. Repita os itens 2 e 3 para os valores 49H e 67H.

4.2.4. Analise o código apresentado a seguir:

MOV.W

#202H, R4

MOV.B

0(R4), R5

INC.W

R4

MOV.B

0(R4), R6

INC.W

R4

MOV.B

0(R4), R7

MOV.B

R5, R15

AND.B

R6, R15

INV.B

R15

XOR.B

R7, R15

INC.W

R4

MOV.B

R15, 0(R4)

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Digite o programa no editor de texto do IAR EW.

Armazene nas posições de memória 202H, 203H e 204H os valores CCH, BBH e AAH respectivamente.

Execute o programa e anote os resultados na Tabela 7 obtidos após executar as seguintes instruções:

Instrução

R15

Análise do resultado

AND.B

R6,R15

   

INV.B

R15

   

XOR.B

R7,R15

   

Tabela 7 - Operações lógicas.

Represente através de um circuito lógico seu funcionamento.

4.2.5. Observe o circuito lógico da Figura 20.

A B S
A
B
S

Figura 20 Circuito lógico.

Faça um programa que simule o diagrama apresentado.

Teste o seu programa fazendo A = B1H e B = 83H.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Prática 5 -

Codificação de programa a partir

de um fluxograma

OBJETIVO

Verificar a implementação de um programa em Assembly a partir de

um fluxograma;

Estudar uma tomada de decisão em Assembly e

Desvio condicional e incondicional.

5.1.

INTRODUÇÃO

Um programa nada mais é do que uma lista de instruções que a CPU deve executar na sequência em que ela foi escrita. Porém a capacidade de tomada de decisão oferecida pela CPU é uma poderosa ferramenta que proporciona a escrita de programas mais inteligentes. A tomada de decisão permite a realização de estruturas de repetição (loop), que reduz drasticamente as dimensões do programa. Uma tomada de decisão é obtida através da consulta de um dos flags, pois eles são os indicadores do estado corrente do programa. Dependendo do estado deste flag o programa segue um caminho ou outro. Ela é representada em um fluxograma por um losango que permite que o programa siga por um de dois caminhos possíveis, como pode ser observado na Figura 21.

O fluxograma de uma rotina que faz a transferência (cópia) de dados de um bloco de memória para outro é apresentada pela Figura 21, a seguir:

INÍCIO
INÍCIO

DEFINA O ENDEREÇO DO BLOCO DE ORIGEM

DEFINA O ENDEREÇO DO BLOCO DE DESTINO

DEFINA O TAMANHO DO BLOCO

O ENDEREÇO DO BLOCO DE DESTINO DEFINA O TAMANHO DO BLOCO F TRANSFIRA UM BYTE ATUALIZE

F

TRANSFIRA UM BYTE

ATUALIZE O ENDEREÇO DO BLOCO DE ORIGEM

ATUALIZE O ENDEREÇO DO BLOCO DE DESTINO

ATUALIZE O NÚMERO DE BYTES RESTANTES

TODOS OS BYTES FORAM TRANSFERIDOS? V FIM
TODOS OS
BYTES FORAM
TRANSFERIDOS?
V
FIM

Figura 21 Fluxograma de transferência de dados.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Como se pode observar, o fluxograma independe da linguagem de programação

e também não apresenta nenhum vínculo com a CPU utilizada. O fluxograma revela

apenas o procedimento, ou seja, revela o que será feito e não como será feito.

O programa a seguir mostra a codificação do fluxograma da Figura 21, considerando o bloco de origem armazenado a partir do endereço 200H e o de destino

a partir do endereço 220H sendo o tamanho dos blocos de 16 bytes.

PROGRAMA EM ASSEMBLY

;*********************************************************************************************************

; Descrição: Este programa transfere dados de um bloco de memória para outro.

;*********************************************************************************************************

#include "msp430.h"

; #define controlled include file

NAME

main

; module name

PUBLIC

main

; make the main label visible

 

;

outside this module

ORG

0FFFEh

DC16

init

; set reset vector to 'init' label

RSEG

CSTACK

; pre-declaration of segment

RSEG

CODE

; place program in 'CODE' segment

init:

MOV

#SFE(CSTACK), SP

; set up stack

main: NOP

; main program

 

MOV.W

#WDTPW+WDTHOLD,&WDTCTL

; Stop watchdog timer

MOV.W

#200H, R4

; Apontador do bloco 1

MOV.W

#220H, R5

; Apontador do bloco 2

MOV.B

#10H, R6

; Tamanho do bloco

volta

MOV.B

0(R4), 0(R5)

; Transferir o dado

INC.W

R4

; Atualizar apontadores

INC.W

R5

DEC.B

R6

; Atualizar tamanho

JNZ

volta

JMP

$

; jump to current location '$'

 

;

(endless loop)

 

END

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

5.2.

ATIVIDADES

5.2.1. Teste do programa proposto.

Digite no editor de texto do IAR EW o programa apresentado anteriormente.

Armazene os valores 00, 01, 02,

, 0F nos endereços 200H a 20FH

Execute o programa e observe através do espaço de memória compreendido entre 220H a 22FH se o programa foi executado.

Dica:

Para executar o programa, totalmente, acione a tecla F5 ou o ícone

o programa, totalmente, acione a tecla F5 ou o ícone para parar. Consulte a Figura 17.

para parar. Consulte a Figura 17.

e em seguida clique sobre o ícone

Consulte a Figura 17. e em seguida clique sobre o ícone • Reinicie o programa clicando
Consulte a Figura 17. e em seguida clique sobre o ícone • Reinicie o programa clicando

Reinicie o programa clicando no ícone e o execute passo a passo até a instrução DEC.B R6 inclusive. Justifique os valores encontrados no registro R6 e no flag Z.

Saia do modo de depuração e troque no editor a instrução

MOV.B #10H,R6 por

MOV.B #01H,R6.

Faça a montagem e o carregamento do programa no ambiente de depuração e repita a atividade 5.2.1 item 3.

Saia novamente do modo de depuração e desfaça a troca, substituindo

MOV.B #01H,R6 por

MOV.B #10H,R6.

Troque a instrução

JNZ

JZ volta

volta por

Armazene o valor AA nos endereços 200H a 20FH e execute o programa.

Dica: CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina:

Dica:

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Se você quiser inserir o mesmo valor em um bloco de memória RAM,

siga os seguintes passos:

1. Vá ao ambiente de depuração.

2. Acrescente a janela Memory.

3. Clique com o botão esquerdo do mouse sobre a seta da caixa de

texto onde está escrito Memory e selecione RAM.

4. Clique com o botão direito do mouse sobre uma posição de

memória qualquer e selecione Memory Fill

5. Preencha os seguintes campos: Start address, Length e Value.

No nosso caso use respectivamente os seguintes valores 0x200, 0x10 e

0xAA.

Aparecerá a Janela Fill.

Observe os blocos de memória e verifique se o programa foi executado.

Justifique sua resposta.

5.2.2. Faça o fluxograma e o programa em Assembly que troque o conteúdo de dois blocos de memória. O endereço inicial do bloco 1 (200H), o endereço do bloco 2 (220H) e o tamanho do bloco (20H).

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Prática 6 -

Estudo de instruções de desvio

OBJETIVO

Estudar as instruções de tomadas de decisão (jump condicional) e

Estudar os jumps relativo e absoluto.

6.1.

INTRODUÇÃO

As instruções lógicas e aritméticas afetam os flags. Isto significa que logo após a execução de qualquer uma delas é possível tomar decisões. As instruções que usamos, neste caso são os jumps condicionais: JZ, JNZ, JC, JNC, JN, JGE e JL. Jumps relativos são aqueles que desviam o programa para um endereço calculado a partir da posição atual do PC (Program Counter). Além da instrução JMP, todos os jumps condicionais dão saltos relativos ao apontador de programa. Estes saltos relativos são ditos curtos, pois a extensão do salto está limitada a faixa de -511 a +512 words. A instrução BR (Branch) desvia o programa para qualquer uma das 64k posições de memória endereçáveis e por isto é dito salto incondicional longo. Ela salta para o destino, portanto é um jump absoluto. O fluxograma de uma rotina que faz a comparação byte a byte do conteúdo de dois blocos de memória e escreve como resposta em um terceiro bloco: 00 se iguais, 01 se menor e 02 se maior é apresentado na Figura 22.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Compara

Compara

Compara
Compara
Laboratório de Sistemas Microprocessados Compara APT1 = end. Inic. bloco 1 APT2 = end. Inic. bloco

APT1 = end. Inic. bloco 1

APT2 = end. Inic. bloco 2

APT3 = end. Inic. bloco 3

Cont = 10

N

Cont = 0
Cont = 0
S (APT1) = (APT2) (APT3) = 0 N S (APT1) > (APT2) (APT3) = 1
S
(APT1) = (APT2)
(APT3) = 0
N
S
(APT1) > (APT2)
(APT3) = 1
N
(APT3) = 2
= 0 N S (APT1) > (APT2) (APT3) = 1 N (APT3) = 2 APT1 ++

APT1 ++

APT2 ++

APT3 ++

Cont --

= 1 N (APT3) = 2 APT1 ++ APT2 ++ APT3 ++ Cont -- S Figura

S

Figura 22 Fluxograma de comparação de dados.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

;********************************************************************************************************* ; Descrição:

;*********************************************************************************************************

 

#include "msp430.h"

; #define controlled include file

NAME

main

; module name

PUBLIC

main

; make the main label visible outside this module

ORG

0200h

APT1 DB

0,1,2,3,4,5,6,7,8,9

 

ORG

0210h

APT2 DB

0,2,1,3,5,6,9,7,8,4

 

ORG

0220h

APT3 DB

30H,30H,30H,30H,30H,30H,30H,30H,30H,30H

 

ORG

0FFFEh

DC16

init

; set reset vector to 'init' label

RSEG

CSTACK

; pre-declaration of segment

RSEG

CODE

; place program in 'CODE' segment

init:

MOV

#SFE(CSTACK), SP

; set up stack

main:

NOP

MOV.W

#WDTPW+WDTHOLD,&WDTCTL

; main program ; Stop watchdog timer

MOV.W

#APT1,R4

MOV.W

#APT2,R5

MOV.W

#APT3,R6

MOV.B

#10,R7

volta

CMP.B

0(R4),0(R5)

JZ

igual

JNC

menor

MOV.B

#02,0(R6)

cont

INC.W

R4

INC.W

R5

INC.W

R6

DEC.B

R7

JNZ

volta

JMP

$

; (endless loop)

igual

 

MOV.B

#00,0(R6)

BR

#cont

menor

 

MOV.B

#01,0(R6)

JMP

cont

END

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

6.2. ATIVIDADES

6.2.1. Teste do programa proposto.

Abra um novo projeto no IAR EW, crie um arquivo e digite no editor de texto o programa de comparação de dados.

Execute o programa e verifique seu funcionamento.

Reinicie o programa e execute-o passo a passo até a instrução JZ iguale justifique os valores dos flags C, Z, N e V.

Troque a instrução

JMP cont por

BR #cont

e execute o programa.

Qual é a diferença observada entre as duas instruções apresentadas?

6.2.2. Altere o programa proposto de tal forma que seja armazenado em cada posição do bloco 3 o maior valor entre os dois dados comparado.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Prática 7 -

Estudo de sub-rotina

OBJETIVO

Utilização e chamada de sub-rotina;

Aplicação da pilha e

Passagem de parâmetros.

7.1.

INTRODUÇÃO

Considere uma operação como a divisão, para a qual o MSP não dispõe de uma única instrução capaz de executá-la. Torna-se necessário implementar um grupo de instruções, que denominamos rotina, para realizá-la. Portanto, para esse caso especificamente, teremos a rotina de divisão.

Dentro de um programa pode ser necessário executar a operação de divisão diversas vezes. O que nos obriga a copiar a rotina de divisão diversas vezes dentro do programa, provocando um gasto excessivo de memória. Uma forma mais eficiente de resolver esse problema é fazer uma única cópia desse programa e chamá-lo todas as vezes que for necessário, observe a Figura 23.

todas as vezes que for necessário, observe a Figura 23. Figura 23 – Sub-rotina. Um programa

Figura 23 Sub-rotina.

Um programa implementado desta forma é chamado de sub-rotina. O programa principal é responsável por chamar a sub-rotina através da instrução CALL. Essa instrução carrega no PC o endereço inicial da sub-rotina, fazendo mudar a sequencia de execução do programa. E guarda na pilha o endereço de volta, o que garante o

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

retorno à sequência interrompida. Essa operação é denominada chamada de sub- rotina.

A sub-rotina é executada até a sua última instrução, que é obrigatoriamente a instrução de retorno de sub-rotina - RET. Esta instrução retira da pilha o endereço de volta ao programa, armazenado-o no PC.

7.2.

ATIVIDADES

7.2.1. Analise e verifique se o fluxograma apresentado na Figura 24 e o programa em Assembly apresentando após ao fluxograma correspondem a um programa com um módulo principal que chama uma sub-rotina que recebe em R4 o valor do dividendo e em R5 o divisor e retorna em R6:

-1 se divisor = 0

Caso contrário o resultado da divisão (parte inteira)

PRINCIPAL DIVIDENDO 15 DIVISOR 3 DIVISÃO
PRINCIPAL
DIVIDENDO
15
DIVISOR
3
DIVISÃO
DIVISÃO SALVAR CONTEXTO QUOC 0 S DIVIDENDO = 0? N S DIVISOR = 0? N
DIVISÃO
SALVAR CONTEXTO
QUOC
0
S
DIVIDENDO = 0?
N
S
DIVISOR = 0?
N
S
DIVISOR >
DIVIDENDO
N
DIVIDENDO - DIVISOR
QUOC
-1
S
DIVIDENDO < 0?
N
QUOC
QUOC + 1
RESTAURAR CONTEXTO
RETORNA
< 0? N QUOC QUOC + 1 RESTAURAR CONTEXTO RETORNA DIVIDENDO Figura 24 – Fluxogramas: principal
< 0? N QUOC QUOC + 1 RESTAURAR CONTEXTO RETORNA DIVIDENDO Figura 24 – Fluxogramas: principal

DIVIDENDO

Figura 24 Fluxogramas: principal e sub-rotina de divisão.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Programa da divisão relativo ao fluxograma proposto na Figura 24.

 

#include "msp430.h"

; #define controlled include file

NAME

main

; module name

PUBLIC

main

; make the main label vissible outside this module

ORG

0FFFEh

DC16

init

; set reset vector to 'init' label

RSEG

CSTACK

; pre-declaration of segment

RSEG

CODE

; place program in 'CODE' segment

init:

MOV

#SFE(CSTACK), SP

; set up stack

main: NOP

; main program

 

MOV.W

#WDTPW+WDTHOLD,&WDTCTL

MOV.W

#15,R4

; Stop watchdog timer ; determinar o dividendo

MOV.W

#3,R5

; determinar o divisor

CALL

#DIVISAO

JMP

$

; endless loop

;*********************************************************************************************************

;Sub:rotina: DIVISAO ;Descrição: Executa da divisão entre dois números não sinalizados

;Entrada:

dividendo R4

;

divisor R5

;Saída:

R6 - quociente = -1 se divisor = 0 ou se divisor >dividendo ou

;

R6 = resultado da divisão

;*********************************************************************************************************

DIVISAO

 
 

PUSH

R4

; dividendo

PUSH

R5

; divisor

MOV.W

#00,R6

TST

R4

; verificar de dividendo =0

JZ

fim

TST

R5

; verificar de divisor =0

JZ

menos_1

CMP.W

R5,R4

; verificar se divisor > dividendo

JNC

fim

volta

SUB.W

R5,R4

; efetuar a divisão

JNC

fim

INC.W

R6

JMP

volta

menos_1

 

MOV.W

#0FFFFH,R6

fim

POP

R5

; restaurar contexto

POP

R4

RET

END

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Modifique o programa anterior de forma que a sub-rotina além de devolver o resultado em R6, devolva o resto da divisão em R7. Teste o programa.

7.2.2. Faça o fluxograma e o programa em Assembly que é constituído por um módulo principal e uma sub-rotina que receba duas strings apontadas por R4 e R5 e faça a concatenação das duas strings, sendo a string inicial apontada por R4. A string concatenada deverá ser retornada na posição de memória indicada por R6. O fim da string será indicado pelo delimitador $. Para criar as strings na memória RAM use as diretivas abaixo após a diretiva PUBLIC main:

 

ORG

200H

string1

DB

CEFET-MG/$

ORG

210H

string2

DB

“ELT$

ORG

220H

stringc

DS

16

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Prática 8 -

Exercícios de programação

OBJETIVO

Elaborar fluxogramas e os respectivos programas em Assembly.

8.1. INTRODUÇÃO

A única maneira de aprender é praticando. Naturalmente, cometeremos enganos, mas podemos minimizá-los nos habituando a resolver os problemas da maneira correta. O primeiro passo é elaborar o fluxograma e só depois elaboramos o programa em Assembly.

8.2. ATIVIDADES

8.2.1. Faça o fluxograma e o programa em Assembly que é constituído por um módulo principal e uma sub-rotina que recebe uma string através da posição de memória indicada por R4 e retorne a string escrita em ordem inversa na mesma posição de memória. O tamanho da string está definido em R5.

8.2.2. Faça o fluxograma e o programa que é constituído por um módulo principal e uma sub-rotina que desloque circularmente uma string. A sub-rotina recebe em R4 o endereço inicial, em R5 o tamanho da string e circula os seus caracteres de uma posição da direita para a esquerda, conforme Figura 25.

 

Endereço (h)

0200

0201

0202

0203

0204

0205

0206

0207

 

Posição

B

I

M

E

S

T

R

E

Posição

I

M

E

S

T

R

E

B

Posição

M

E

S

T

R

E

B

I

.

               

.

.

Posição

B

I

M

E

S

T

R

E

Figura 25 Deslocamento da string.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

8.2.3. Faça o fluxograma e o programa que é constituído por um módulo principal, uma sub-rotina que atualiza as horas de um relógio digital e uma sub-rotina de tempo. O relógio digital é representado na memória a partir do endereço 0300H, utilizando dois bytes para as horas, dois bytes para os minutos e dois bytes para os segundos. As horas, minutos e segundos serão separados por dois pontos, conforme Figura 26.

Endereço(h)

0300

0301

0302

0303

0304

0305

0306

0307

Posição

H

H

:

M

M

:

S

S

Figura 26 Formatação do relógio.

Dicas:

Cada posição de memória deve conter o código ASCII do digito corrente.

Para verificar os conteúdos de memória sendo alterados enquanto programa está executando, execute o programa selecionando no menu

principal a opção DEBUG>AUTOSTEP

opção de execução Step Over (Source level) e configure o Delay para 1 milisegundo.

. Na janela da Figura 27 selecione

para 1 milisegundo. . Na janela da Figura 27 selecione Figura 27 – Configuração de execução

Figura 27 Configuração de execução autostep.

8.2.4. Faça o fluxograma e o programa que é constituído por um módulo principal, uma sub-rotina. A sub-rotina deve receber através de R4 o endereço inicial de uma área de memória RAM contendo 4 bytes consecutivos de dados e então faça a média aritmética destes e a retorne em R5. A área de dados e os dados devem ser criadas em memória RAM por meio de diretivas.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Prática 9 -

OBJETIVO

Dispositivo de saída

Acionar LEDs com temporização de software

9.1.

INTRODUÇÃO

Até agora apenas simulamos os nossos programas. Isto foi conveniente porque os programas executados usavam apenas os dispositivos internos do microcontrolador, registros da CPU e espaço de memória. Agora imagine que você queira acionar um dispositivo externo, como um led, e não possa vê-lo piscando. Acionar leds, displays, chaves, teclados, motores e etc, requer que os programas sejam carregados na memória do próprio microcontrolador. Isto significa que serão executados, de fato. E poderemos acompanhar o andamento da execução através do IAR EW. Nesta aula veremos como configurar um projeto para que o código seja carregado no microcontrolador. Relembre como configurar as portas, para que possamos usá-las para acionar os leds.

PROGRAMAÇÃO DE PORTAS

Como vocês sabem existe um conjunto de registros para a configuração de cada bit das portas. Nesta prática necessitaremos apenas os seguintes registros:

1. Registro de Seleção

apenas os seguintes registros: 1. Registro de Seleção BIT = 0 ➔ pino é configurado como

BIT = 0 pino é configurado como porta de IO BIT = 1 pino é configurado como função especial

2. Registro de Direção

configurado como função especial 2. Registro de Direção BIT = 0 ➔ pino da porta é

BIT = 0 pino da porta é programado como entrada BIT = 1 pino da porta é programado como saída

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

3. Registro de Saída

de Sistemas Microprocessados 3. Registro de Saída BIT = 0 ➔ pino da porta sai 0V

BIT = 0 pino da porta sai 0V BIT = 1 pino da porta sai +Vdd

4. Registro de Entrada

BIT = 1 ➔ pino da porta sai +Vdd 4. Registro de Entrada BIT = 0

BIT = 0 pino da porta tem aproximadamente 0V BIT = 1 pino da porta tem aproximadamente +Vdd

CONFIGURANDO UM PROJETO PARA EMULAÇÃO

O primeiro passo é criar um novo projeto, fazendo tudo como antes. O segundo é configurá-lo: vá ao menu principal e selecione Project e em seguida clique em Options, aparecerá a janela Options for node “PROJ”, Figura 28. Na categoria (Category) General Options selecione o microcontrolador utilizado no kit didático utilizado (MSP430F1611).

utilizado no kit didático utilizado (MSP430F1611). Figura 28 – Janela de Opções de Projeto (Debugger).

Figura 28 Janela de Opções de Projeto (Debugger).

Observe na Figura 28 que foram selecionados a categoria (Category) Debugger e o driver (Driver) FET Debugger. Essas opções de projeto permitem a emulação do programa, ou seja, que você verifique na tela do seu computador o que está ocorrendo, de fato, no microcontrolador.

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

HARDWARE ACIONADO

A Figura 29 mostra o diagrama dos LEDs presentes no kit didático. Para que o

LED seja ligado ou desligado basta colocar o nível lógico 1 ou 0, respectivamente, no terminal L0.

L0

+5V 330R 74HC04 100k
+5V
330R
74HC04
100k

Figura 29 Esquema de ligação do led no kit didático.

FLUXOGRAMAS

A Figura 30 apresenta os fluxogramas do programa principal e da sub-rotina

PISCA_LED no qual um led pisca na frequência estabelecida pela rotina de temporização.

Main Configura IO Pisca LED
Main
Configura IO
Pisca LED
Pisca LED
Pisca LED

liga LEDde temporização. Main Configura IO Pisca LED Pisca LED Tempo pisca desliga LED Tempo pisca Retorna

Tempo pisca
Tempo pisca
desliga LED Tempo pisca Retorna
desliga LED
Tempo pisca
Retorna

Figura 30 Fluxogramas para o acionamento de led.

PROGRAMA EM ASSEMBLY

;********************************************************************************************************* ; Descrição: Este programa aciona LED ;*********************************************************************************************************

#include "msp430.h"

; #define controlled include file

NAME

main

; module name

PUBLIC

main

; make the main label visible ; outside this module

ORG

0FFFEh

DC16

init

; set reset vector to 'init' label

RSEG

CSTACK

; pre-declaration of segment

RSEG

CODE

; place program in 'CODE' segment

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

init:

MOV

#SFE(CSTACK), SP

; set up stack

main: NOP

; main program

 

MOV.W

#WDTPW+WDTHOLD,&WDTCTL

; Stop watchdog timer

BIS.B

#0xFF,P1DIR

; programa todos os bits da porta 1 como saída

repete

 

CALL

#PISCA_LED

JMP

repete

;********************************************************************************************************* ;Subrotina: PISCA_LED

;Descrição:

;definida por um intervalo de tempo da rotina TEMPO_PISCA -

;Saída:

;Entrada:

Faz o led presente no BIT 0 da porta P1 piscar com a frequência

-

;*********************************************************************************************************

PISCA_LED

pisca

BIS.B

#1,P1OUT

; ligar o led

MOV

#100, R5

; define o tempo de atraso em 100 ms

CALL

#TEMPO_PISCA

BIC.B

#1,P1OUT

; desligar o led

MOV

#100, R5

; define o tempo de atraso em 100 ms

CALL

#TEMPO_PISCA

RET

;*********************************************************************************************************

;Subrotina: TEMPO_PISCA ;Descrição: Intervalo de tempo gasto pela CPU com tempo base de 1ms ;Entrada: R5, define o tempo total de atraso em milissegundos

;

Tempo base = 3K/Fclk. Para T=1ms e Fclk=750kHz, k=250

;Saída: -

;*********************************************************************************************************

K

EQU

250

TEMPO_PISCA

; ciclos de instrução

 

PUSH

R5

; 3

PUSH

R6

; 3

cont_ext

 
 

MOV

#K,R6

; 2

cont_int

 
 

DEC

R6

; 1

JNZ

cont_int

; 2

DEC

R5

; 1

JNZ

cont_ext

; 2

POP

R6

; 2

POP

R5

; 2

RET

; 3

;*********************************************************************************************************

END

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica Disciplina: Laboratório

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DEEB - Coordenação de Eletrônica

Disciplina: Laboratório de Sistemas Microprocessados

Programa em “C”