Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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
CEFET-MG 1
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
ificação de programa a partir de um fluxograma
Prática 06 34
Instruções de desvio
Prática 07 37
Estudo de Sub-rotinas
rotinas
Prática 08 41
Exercícios de programa
rogramação
Prática 09 43
Dispositivo de saída
Prática 10 48
Dispositivo de entrada
Prática 11 52
Interrupção
Prática 12 56
Teclado
Prática 13 60
Display de LCD
Prática 14 65
Integração de programas
Prática 15 73
Semáforo
CEFET-MG 2
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Prática 16 77
Motor de passo
Prática 17 84
Controle digital de velocidade de motor cc
Prática 18 90
Controle de portão de garagem
Prática 19 93
Dimmer digital
Prática 20 98
Voltímetro dc
Apêndice B – O conjunto
onjunto de Instruções 103
CEFET-MG 3
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Introdução
Caros alunos,
Atenciosamente,
Ro
Rosângela Fátima da Silva e Marcos Antonio
ntonio da Silva Pinto
CEFET-MG 4
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
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
microcontrolador 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.
estudo A IAR Systems é a
responsável pelo desenvolvimento
desenvolviment do IDE 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:
CEFET-MG 5
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
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,
programas IAR
Systems,, IAR Embedded Workbench kickstart, IAR Embedded Workbench, Workbench
conforme se pode observar na Figura 2,, apresentada a seguir, ou clique
cli no ícone
correspondente na área de trabalho.
CEFET-MG 6
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Caso
aso esteja iniciando a tarefa de desenvolvimento do programa,
programa naturalmente
deve-se escolher a opção File no menu principal (lado superior esquerdo da tela)
tel e
nesta aba escolher a opção New sub opção Workspace, conforme a Figura 4.
Estaa opção abre uma nova janela, que permite criar uma nova
nov á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 utilizaremos
um único projeto para cada área de trabalho.
CEFET-MG 7
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Será então apresentada uma nova janela que permite escolher o tipo de projeto.
proj
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).
CEFET-MG 8
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
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.
CEFET-MG 9
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Enfim, surgiu na tela o editor de texto, Figura 9, onde se pode digitar o programa.
CEFET-MG 10
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Agora digite
igite 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
&0x201,R6 ;MEMÓRIA −> REGISTRO
Escolha um nome para o workspace e salve. Neste caso foi escolhido o nome
AREA_01.
Agora
a é hora de verificar se o código digitado está correto e transformá-lo
tra em
código de máquina utilizando os processos de montagem e linkedição
edição. Entretanto, para
que tenhamos sucesso é necessário selecionar para qual componente da família
MSP430 estamos escrevendo
evendo o programa. Selecione no menu principal a opção
Project>Options (Alt F7) (Figura
Figura 11).
Na caixa category (Figura
Figura 12) selecione a aba General Options e verifique se o
MSP selecionado é o 430F1611 na caixa de opção Device. Caso aso 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
entã click na apção MSP430F1611.
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.
CEFET-MG 11
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Figura 11 - Preparação
eparação para seleção do tipo de MSP430.
CEFET-MG 12
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 13
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
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
código original.
Uma nova barra de ferramentas,
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 nua e passo a passo
com possibilidade de reiní
início, parada e etc. Os botões
otões da barra de ferramenta de
depuração estão
tão apresentados na Figura 17.
CEFET-MG 14
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 15
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
einicia o programa.
Reset - Reinicia programa
ra a execução do programa.
Break - Pára programa
Atenção:
As opções de execução de programas presentes na barra de
ferramentas de depuração,
depuração mostradas na Figura 17,, podem ser acessadas
através da seleção do botão Debug no menu principal.
Dica:
Se você não observar diferenças
diferença 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
CEFET-MG 16
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
Atenção:
O seu desenvolvimento no processo de depuração de programa é tão
importante quanto o próprio processo de construção
construção de um novo programa.
Desta forma é fundamental conhecer os recursos de depuração de programa
que a ferramenta de desenvolvimento lhe oferece.
CEFET-MG 17
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Estudar as instruções
nstruçõ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 algumas das instruções de transferência de oito
bits existentes no conjunto de instruções do MSP430.
MSP . E também aprendeu a elaborar
seus programas usando o o ambiente de programação IAR EW.. Vamos agora
ago aproveitar
o projeto elaborado na aula anterior e estudar mais atentamente as instruções de carga
carg
e transferência de oito bits.
CEFET-MG 18
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Atenção:
O MSP possui
ossui 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
do 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 deve 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 (impar).
2.2 - ATIVIDADE
ATIVIDADES
R5
R6
(200H)
(201H)
Tabela 2 - Conteúdo corrente de registros e posições de memória.
CEFET-MG 19
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Dica:
Para executar o programa passo a passo, entre no
n ambiente de
simulação ( ) e pressione a tecla F10 ou o ícone para executar cada linha
do programa.. Consulte a Figura 17.
Para ver os registros, vá
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. Crie uma nova pasta (Aula_02) e construa um novo projeto para testar as
seguintes instruções:
MOV.B #0AAH
H,R4 ;IMEDIATO −> REGISTRO
MOV.B #0BBH
H,R5 ;IMEDIATO −> REGISTRO
MOV.B R4,R6 ;REGISTRO −> REGISTRO
MOV.B R5,R4 ;REGISTRO −> REGISTRO
MOV.B R6,R5 ;REGISTRO −> REGISTRO
2.2.3. Construa
onstrua 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
CEFET-MG 20
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 21
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
Instruções de carga e
transferência de 16 bits
OBJETIVO
Estudar as instruções
nstruçõ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
ência de 8 bits. Isto
significa que você já conhece as instruções de carga
ga e transferência de 16 bits, uma
u
vez que a única diferença é o número de bits transferidos. Agora, temos
t 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
ES DE CARGA E TRANSFERÊNCIA DE 16 BITS
3.2. ATIVIDADE
ATIVIDADES
3.2.1. Abra uma nova pasta (Aula_03) e construa um novo projeto para testar as
seguintes instruções:
CEFET-MG 22
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
;Número da instrução
MOV.W #0x1234
1234,R7 ;1
MOV.W #0x5678
5678,R8 ;2
PUSH R7 ;3
PUSH R8 ;4
MOV.W #0x00,R7 ;5
MOV.W #0x00,R8 ;6
POP R8 ;7
POP R7 ;8
INSTRUÇÕES/ 1 2 3 4 5 6 7 8
REG. e PILHA
PC
SP
R7
R8
(38FF H)
(38FE H)
(38FD H)
(38FC H)
Tabela 3 - Conteúdo corrente de registros e memória.
memória
CEFET-MG 23
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
3.2.2. Construa
onstrua um novo projeto para testar as seguintes instruções:
; Número da instrução
MOV.W #0xAAAA
AAAA, R10 ;1
MOV.W #0xBBBB
BBBB, R11 ;2
PUSH R10 ;3
PUSH R11 ;4
POP R10 ;5
POP R11 ;6
INSTRUÇÕES/ 1 2 3 4 5 6
REG. e PILHA
PC
SP
R10
R11
(38FF H)
(38FE H)
(38FD H)
(38FC H)
Tabela 4 - Conteúdo corrente de registros e memória.
CEFET-MG 24
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
onstrua 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
&0x202, ;5 - MEMÓRIA −> REGISTRO
MOV #0x202
202, R7 ;6 - IMEDIATO −> REGISTRO
MOV 0(R7), R8 ;7 - MEMÓRIA −> REGISTRO
INSTRUÇÕES/ 1 2 3 4 5 6 7
REG. E MEM.
PC
R4
R5
R6
R7
R8
(0200H)
(0202H)
Tabela 5 - Conteúdo corrente de registros e memória.
CEFET-MG 25
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
OBJETIVO
4.1. INTRODUÇÃO
A CPU contém a Unidade Lógica e Aritmética (ULA). Essa,, como o próprio
própr 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/ou posições de memória como operandos das
d
operações aritméticas (soma e subtração) e lógicas (and, or, xor, etc).
etc
A maioria das operações lógicas e aritméticas afetam
afeta os flags. Por isto é
importante consultar o conjunto de instruções para saber como e quando
qu os flags são
afetados. Os flags são bits que sinalizam o resultado das d 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 se localizados no Registro de
Status (SR - Figura 19) ocupando os seguintes bits:
Dica:
É necessário consultar o conjunto de instruções do MSP para verificar
veri
quais os flags que atuam após a execução de cada instrução e como eles
são afetados.
CEFET-MG 26
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:
CEFET-MG 27
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
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
tex 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.
CEFET-MG 28
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
A
B S
CEFET-MG 29
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
5.1. INTRODUÇÃO
Um programa nada mais é do que uma lista de instruções que a CPU deve
executar na sequência
ncia em que ela foi escrita. Porém a capacidade de tomada de
decisão oferecida
ecida 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,
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
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
F TODOS OS
BYTES FORAM
TRANSFERIDOS?
V
FIM
PROGRAMA EM ASSEMBLY
;*********************************************************************************************************
;*********************************************************************************************************
; Descrição:: Este programa transfere dados de um bloco de memória para outro.
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
CEFET-MG 31
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
• Execute o programa
rama 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,
programa totalmente, acione a tecla F5 ou o ícone
e em seguida clique sobre o ícone para parar. Consulte a Figura 17.
• Reinicie
e 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 novamente
ovamente do modo de depuração e desfaça a troca, substituindo
MOV.B #01H,R6
#01 por
MOV.B #10H,R6.
#10
• Troque a instrução
JNZ volta por
JZ volta
Armazene
rmazene o valor AA nos endereços 200H
200 a 20FH e execute o programa.
CEFET-MG 32
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Dica:
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
botã 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... Aparecerá a Janela Fill.
5. Preencha os seguintes campos: Start address
ddress, Length e Value.
No nosso caso use respectivamente os seguintes valores 0x200, 0x10 e
0xAA.
CEFET-MG 33
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
S
(APT_1) = (APT_2) (APT3) = 0
S
(APT1) > (APT2) (APT3) = 1
(APT3) = 2
APT1 ++
APT2 ++
APT3 ++
CONT --
N CONT = 0
S
FIM
CEFET-MG 34
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 thisth 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
CEFET-MG 35
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.
• Troque a instrução
JMP cont por
BR #cont
e execute o programa.
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 bytes comparados.
comparado
CEFET-MG 36
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
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 capazz de executá-la.
executá Torna-sese necessário implementar um grupo de
instruções, que denominamos rotina, para realizá-la.
realizá 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 divis
diversas vezes. O que nos obriga a copiar a rotina de divisão diversas vezes dentro
dent 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
chamá todas as
vezess que for necessário, observe a Figura 23.
Figura 23 – Sub-rotina.
7.2. ATIVIDADES
PRINCIPAL DIVISÃO
DIVISÃO QUOC = 0
FIM
DIVIDENDO = 0 S
DIVISOR = 0 S QUOC = -1
DIVIDENDO < 0 S
N
RESTAURA CONTEXTO
QUOC = QUOC + 1
FIM
CEFET-MG 38
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 39
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
ORG 200H
string1 DB 'CEFET
CEFET-MG/$'
ORG 210H
string2 DB 'LAB. ELT.$'
ORG 220H
stringc DS 18
CEFET-MG 40
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
OBJETIVO
8.1. INTRODUÇÃO
8.2. ATIVIDADES
Posição B I M E S T R E
Figura 25 – Deslocamento da string.
Dica:
CEFET-MG 41
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Endereço(h) 0300 0
0301 0302 0303 0304 0305 0306 0307
Posição H H : M M : S S
Figura 26 – Formatação do relógio.
Dicas:
CEFET-MG 42
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
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
vê 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.
controlador. Relembre como configurar as portas, para que possamos usá-las
para acionar os leds.
PROGRAMAÇÃO DE PORTAS
1. Registro de Seleção
2. Registro de Direção
CEFET-MG 43
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
4. Registro de Entrada
CEFET-MG 44
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
HARDWARE
A Figura 29 mostra o diagrama dos led'ss presentes no kit didático.
didático Para que o led
seja ligado ou desligado basta colocar o nível lógico 1 ou 0,, respectivamente, no
terminal L0.
+5V
L0
330R
74HC04
100
100k
FLUXOGRAMAS
A Figura 30 apresenta os
o fluxogramas do programa principal e da sub-rotina
sub
PISCA_LED no qual um led pisca na frequência estabelecida pela rotina de
temporização.
principal pisca_led
tempo pisca
pisca_led
desliga led
tempo pisca
fim
CEFET-MG 45
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
PROGRAMA EM ASSEMBLY
;*********************************************************************************************************
;****************************************************************************** ***************************
; Descrição: Este programa aciona ciona LED
;*********************************************************************************************************
#include "msp430.h" ; #define controlled include file
NAME main ; module name
PUBLIC main ; make the main label visible outside
ou 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
DTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer
BIS.B #0xFF,P1DIR ; programa todos os bits da porta 1 como saída
BIC.B #0xFF, P1OUT ;Desliga todas as saídas
repeteCALL #PISCA_LED
JMP repete
;*********************************************************************************************************
;*********************************************************************************************************
;Sub-rotina: PISCA_LED
;Descrição: Faz o led presente no bit 0 da porta P1 piscar com a frequência
;definida por um intervalo de tempo da rotina TEMPO_PISCA
;Entrada: -
;Saída: -
******************************************************************************
;*********************************************************************************************************
PISCA_LED
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
fine o tempo de atraso em 100 ms
CALL #TEMPO_PISCA
RET
;*********************************************************************************************************
;Subrotina: TEMPO_PISCA
;Descrição: Intervalo
ervalo 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
CEFET-MG 46
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”
//Programa pisca led na frequência de 5Hz. A função delay tem tempo base de 1ms e parâmetro de
entrada (x) que define o tempo de atraso da função.
função
#include "msp430.h"
//função delay com tempo base de 1ms. O parâmetro de entrada é um multiplicador deste tempo.
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Desliga o watchdog timer
P1DIR |= 0x01; // bit 0 =1 para configurar saída
P1OUT=0; //desliga todas as saídas
for (;;) //Loop infinito
{
P1OUT ^= 0x01; // inverte P1.0 com exclusive-OR
delay (100); //define o atraso de 100 ms para piscar em 5Hz
}
}
9.2. ATIVIDADES
• Execute
xecute o programa e verifique se o led piscou.
piscou
• Ajuste
juste o parâmetro de entrada para que o led pisque na frequência de 1Hz,
1Hz
considerando a frequência do oscilador de 750 kHz.
CEFET-MG 47
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
10.1. INTRODUÇÃO
Na aula anterior acionamos um led, em outras palavras, a CPU enviou sinais para o
led. Para executar essa operação, primeiro tivemos que programar um bit de uma porta
como
omo saída. Naturalmente, o bit no qual estava ligado o led. A programação foi
efetuada através do registro de direção, P1DIR.
P DIR. Em seguida, foi possível enviar o sinal
para o led através do registro de saída P1OUT.
P
Imagine que você queira ler o sinal de uma chave. Naturalmente o bit no qual está
ligada a chave será programado como entrada no registro de direção P1DIR. O sinal da
chave também será obtido pelo registro P1OUT?
P
Além da preocupação
eocupação com os registros envolvidos
envolvidos nas leitura de chaves também
trataremos
os do problema do repique de chaves. Quando ligamos ou desligamos uma
chave eletromecância
mecância ocorre uma trepidação que acarreta a geração de mais um
pulso. Como os sistemas microprocessados são extremamente rápidos esses pulsos
são percebidos pelo sistema podendo
podendo provocar alteração no seu comportamento.
HARDWARE ACIONADO
+3,3V
CH0
P1.0
10k
MSP430F
F1611
+5V
L0
P1.4
330R
74HC04
100k
O diagrama dee cada chave presente no kit é apresentado na figura 31. Observe
que no terminal CH0 sempre existe um
um sinal bem definido, terra ou +3,3V.
+3,3V
CEFET-MG 48
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
FLUXOGRAMAS
configura io
chave = 1 N
S
monitora chave
liga led
fim
Figura 32 – Fluxogramas para leitura
leit de chave utilizando a técnica espera ocupada.
o
PROGRAMA EM ASSEMBLY
;*********************************************************************************************************
; Descrição: Este programa monitora uma chave através da técnica de espera ocupada ocupada
;*********************************************************************************************************
#include "msp430.h" ; #define controlled include file
NAME main ; module name
PUBLIC main ; make the main label visible outside thist 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:
MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer
MOV.B #0xF0,P1DIR ; programar os quatro bits + signif. da porta 1 como
; saída e os quatro bits menos signif.
sig como entrada
BIC.B #0XFF,, P1OUT ;Zera as saídas
repete
CALL #MONITORA_CHAVE
JMP repete
;*********************************************************************************************************
*****************************************************************************
;Subrotina: MONITORA_CHAVE
;Descrição: Monitora o estado de uma chave
;Entrada: -
;Saída: -
;*********************************************************************************************************
;*********************************************************************************************************
MONITORA_CHAVE
BIT.B #1,P1IN ; monitorar chave
JZ MONITORA_CHAVE
BIS.B #0X10,P1OUT
RET
END
CEFET-MG 49
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”
//Programa monitora chave com espera ocupada
#include "msp430.h"
//função monitora chave
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR = 0xF0;; // Os 4 bits mais significativos
significati de P1 como
//saída e os 4 menos sign. Entrada.
P1OUT = 0; //Zera as saídas
for (;;) //Loop infinito
{
monitora_chave( ); //chama a função monitora chave
}
}
configura io
contador = 0 chave = 1 N
S
contador ++
espera chave
chave = 0 N
fim
CEFET-MG 50
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
10.2. ATIVIDADES
10.2.2. Com o programa criado, carregue no MSP.MSP Coloque a chave em nível lógico
baixo antes de executar o programa. Rode o programa, faça apenas uma ÚNICA
transição na chave (posicione a chave para nível
ní lógico alto).
CEFET-MG 51
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Prática 11 - Interrupção
I
OBJETIVO
11.1. INTRODUÇÃO
Quando fazemos leitura de chave através da técnica de Espera Ocupada,
observamos que a CPU permanece por um tempo indetermidado lendo a chave. Este
fato justifica o nome da técnica, pois ela está ocupada lendo a chave e está esperando
a chavee ser ligada para processar a atividade para a qual foi destinada.
Você acha que esta técnica é utilizada no seu PC? Imagine então que a CPU lesse
o seu teclado atravéss dessa técnica. Seria possível você escutar música, baixar um
texto pela internet e visualizar
alizar a tecla digitada no monitor de vídeo, “simultaneamente”?
“
Não se esqueça que a CPU executa uma atividade de cada vez.
Nesta aula utilizaremos a técnica de interrupção para a leitura da chave. Nesta
técnica a CPU permanece livre para executar uma atividade atividade qualquer e quando a
chave é acionada a CPU é interrompida e depois de processar a rotina de tratamento
de interrupção ela retorna as sua atividade anterior.
PROGRAMAÇÃO DE PORTAS
BIT = 0 o flag de interrupção é setado com uma transição de baixo para alta
BIT = 1 o flag de interrupção é setado com uma transição de alto para baixo
tempo
fim
3
P2.0
P3.0
47k
+5V
MSP
MSP430F1611 330R
P1.4
Led pisca
74HC04
100k
330R
P1.5
Led togle
100k 74HC04
CEFET-MG 53
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
PROGRAMA EM ASSEMBLY
;*********************************************************************************************************
; Descrição: Este programa monitora uma chave através da técnica de interrupção enquanto um led
;pisca(P1.4).
pisca(P1.4). Caso a chave seja acionada um segundo led deverá mudar de estado (P1.5).
;*********************************************************************************************************
#include "msp430.h" ; define a biblioteca
NAME main ; Nome do modulo
PUBLIC main ; torna o rótulo main visível fora do módulo
ORG 0FFFEh
DC16 init ; insere o vetor de reset - rótulo init
ORG 0FFE2h
DC16 TRATA_INTERRUPCAO ; insere o vetor de interrupção da porta 2
RSEG CSTACK ; Declaração do segmento de pilha
RSEG CODE ; Declaração do segmento de código
init: MOV #SFE(CSTACK), SP ; Escreve no registrador de pilha o endereço
main:
MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Desliga watchdog timer
BIS.B #0xF0,P1DIR ; os quatro bits mais significativos da porta 1 e
BIS.B #0x01,P3DIR ; P3.0 como saída
BIC.B #0xFF, P1OUT ;Desliga todas as saídas
BIS.B #1, P3OUT ; Porta P3.0 =1
;*********************************************************************************************************
;**************************************************************** *****************************************
;Subrotina: PISCA_LED
;Descrição: Faz um led conectado na porta P1.4 piscar na frequência de 5 Hz
;Entrada: -
;Saída: -
;*********************************************************************************************************
;*********************************************************************************************************
PISCA_LED
RET
;*********************************************************************************************************
;Subrotina: TRATA_INTERRUPCAO
;Descrição: Inverte o estado do led ligado na porta P1.5
;Entrada: -
;Saída: -
;*********************************************************************************************************
********************************************************************************************************
TRATA_INTERRUPCAO
XOR.B #0x20,0, P1OUT ; inverte o estado do led
BIC.B #0x01,P
#0x01,P2IFG ; desliga o flag de interrupção
RETI
END
CEFET-MG 54
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”
#include "io430.h"
//Função de tratamento
amento de interrupção da porta P2.0
P
#pragma vector = PORT2_VECTOR
_VECTOR //Define o endereço da RTI da porta 2
__interrupt void PORT2 (void)
{
P1OUT ^= 0X20; //
//Inverte o estado de P1.5
P2IFG &= ~0x01; //desliga o flag de interrupção
}
3
P2.0
P3.0
47k
MSP430F1611
P1.4
P1.5
P1.6
P1.7
Dicas:
Todo contador deve ser inicializado, caso contrário
contrário você poderá obter uma
contagem incorreta.
O contador deve ser uma variável global, pois, será acessado em funções
distintas (RTI, main e envia).
Não se esqueça de tratar o repique da chave.
A chave gerará interrupção quando for apertada e quando for
f solta.
CEFET-MG 55
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Prática 12 - Teclado
OBJETIVO
Implementação
ção de uma função básica de tratamento de um teclado.
teclado
12.1. INTRODUÇÃO
Alguns sistemas dedicados utilizam
u chaves push-bottom ou on--off como entrada de
dados. Entretanto, a medida que o grau de complexidade do sistema aumenta
aume é
necessário o uso de interfaces mais amigáveis. Uma das principais interfaces de
entrada de dados em sistemas microprocessados é o teclado.
HARDWARE DO TECLADO
O teclado presente
ente no kit didático é constituído por
por uma matriz de 4 linhas por 3
colunas (4x3) que possibilita a identificação de até doze teclas como mostrado na
Figura 37.
P2.0
P2.1
1
P2.2
2
C2 C1 C0
MSP430F1611
L0
1 2 3
P3.0
0
1k2
L1
4 5 6
P3.1
1
1k2
L2
7 8 9
P3.2
2
1k2
L3
A 0 E
P3.3
3
1k2
CEFET-MG 56
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
configura teclado
configura io
fim
TODAS COLUNAS = 0 N S
LINHAS = 16 Índice ← 0
&S
LINHAS < 16
N
S
S
COLUNAS = 1 Índice + 1
Índice + 3
LINHAS ← LINHAS*2 N
S
COLUNAS = 2 Índice + 2 Retorna ← tabela [indice]
N
FIM
S
COLUNAS = 4 Índice + 3
Índice ← 0
12.2. ATIVIDADES
12.2.1. Monte um novo projeto que monitore o teclado presente no kit didático
codificando-o na linguagem
guagem C. C. Este projeto deve ser constituído de um programa
principal que será responsável por chamar a função teclado cujo comportamento
encontra-se descrito no
o fluxograma da Figura 39 e as funções teclado e tempo repique.
Vamos montar as estruturas
estrutura básicas das funções do teclado. A função de
configuração do teclado não retorna parâmetro apenas faz a configuração dos io's.
}
Já a função teclado irá retornar o código ASCII da tecla
cla ou 0 (zero) se não houver
tecla pressionada. Desta forma definimos como tipo de retorno o unsigned char.
CEFET-MG 58
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
main
configura teclado
teclado
N
tem tecla?
P5OUT ← tecla
CEFET-MG 59
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
13.1. INTRODUÇÃO
HARDWARE DO DISPLAY
CEFET-MG 60
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Posição do display 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Linha 1 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
Endereço de
DDRAM Linha 2 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
Figura 42 – Endereçamento do LCD para o display de duas linhas.
FLUXOGRAMA
Utilizamos três funções básicas para acionamento
aci do
o LCD. A primeira refere-se
refere à
programação do mesmo (Figura
Figura 43).
Programa LCD
envia comando
envia comando
envia comando
envia comando
fim
CEFET-MG 61
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
RS
D0 ~ D7 Comando Dado
Envia Envia
preparação comando preparação dado
2 ms 2 ms 2 ms 2 ms tempo
Figura 44 – Temporização do módulo LCD
CEFET-MG 62
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
configura IO
fim
13.2. ATIVIDADES
13.2.1. Implemente
mplemente as funções de programação e controle do LCD. LCD Observe o
diagrama de conexão (Figura
Figura 41) do LCM e MSP430 para utilizar corretamente os io's
que já estão definidos no kit didático.
didático Resumindo, o arquivo de software
ftware LCD deverá ter
quatro funções:
1. void configura_LCD
LCD (void)
2. void programa_LCDLCD (void)
3. void env_comando (char)
4. void env_dado (char
char)
5. void main (void)
Observe que as funções env_comando
env_ e env_dado recebem um parametro de entrada
tipo char (8 bits) e escrevee este parametro no barramento de dados do LCM (porta 5),
como descrito no fluxograma da Figura 45 e da Figura 46.
CEFET-MG 63
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 64
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
14.1. INTRODUÇÃO
A linguagem de programação C é extremante interessante para construção de
programas aplicados a sistemas eletrônicos, pois nos permite acessar os recursos de
hardware assim como nos fornece funcionalidades de programação como as estruturas
de dados e controle não disponíveis na linguagem Assembly. Também permite inserir
módulos de programas escritos em Assembly assim como apenas instruções Assembly
dentro de um código em C.
A modularização proporciona uma maior clareza do código e facilidade no
desenvolvimento e manutenção do sistema. Modularizar arizar significa utilizar vários
módulos (códigos fonte) para a construção do software.
software Até então o utilizamos apenas
um módulo para ra escrever todo o código devido à simplicidade dos problemas. Porém a
medida que e o sistema vai crescendo em complexidade é necessário dividir o software
em módulos. Nesta prática utilizaremos o teclado e o display. Observe que temos duas
funcionalidades distintas, assim devemos criar um modulo para as rotinas do teclado,
um módulo para ra as rotinas do display e um modulo para o main. Na maioria dos
sistemas microprocessados temos a coexistência destas destas funcionalidades (teclado e
display).. Nosso desafio nessa prática é fazer a ligação lógica
l desta
estas funcionalidades
que estão descritas na Figura 48.
main
Teclado_LCD
configura LCD
programa LCD
configura teclado
teclado
N
tem tecla
S
envia dado
(tecla)
ocorre a integração
ntegração de módulos.
módulos. Não estamos preocupados nesta etapa de
desenvolvimento como será realizada cada uma das funções, pois elase já foram
escritas nas aulas anteriores.
anteriores. Nossa preocupação se restringe na utilização das
funcionalidades providas pelas funções.
14.2. ATIVIDADES
14.2.1 Monte um novo projeto. O ambiente de programação IAR cria
automaticamente um arquivo cujo nome é main.c. Ele é constituído de um conjunto de
instruções que enviará para o display o código ASCII da tecla apertada,
apertada conforme
algoritmo da Figura 48.
Na janela Workspace (à esquerda na Figura 49)) é apresentada uma estrutura
hierárquica cujo nome do projeto vem destacado no nível mais alto. Dentro desta
estrutura também são encontrados o código fonte main.c e uma pasta denominada
Output. Esta janela é extremamente importante para construção de projetos que são
constituídos de mais de um código fonte, recurso que utilizaremos nesta prática.
Vamos utilizar este recurso separando o programa principal que irá chamar a
funções do modulo teclado e do módulo display em três arquivos distintos. Uma vez
que o próprio ambiente já cria o arquivo principal (main.c), vamos criar um segundo
arquivo que irá conter as funções
funç do teclado e um terceiro módulo que irá conter as
funções do display.. Clique no ícone New document ou selecione no menu principal a
opção File>New>File (atalho ctrl N). Será aberto um segundo arquivo denominado
Untitled1 (Figura 50),, selecione a opção
opção Save e nomeie o arquivo como
co teclado.c.
Salve na mesma pasta onde está o arquivo main.c. Repita este procedimento para criar
o módulo LCD e nomeie LCD.c.
LCD
CEFET-MG 66
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 67
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
O procedimento de integração
integração programas também pode ser realizado com
módulos de programa escrito exclusivamente em Assembly.. A seguir é apresentado tal
procedimento.
Quando criarmos um novo projeto automaticamente surgirá na tela uma janela
contendo
endo o projeto recém criado e a janela de edição, identificada pela aba asm.43*,
com a estrutura básica de um programa. A janela asm.43* é usada para digitar o
programa principal (Figura
Figura 52) que neste caso é o algoritmo TecladoLCD. Além da
janela asm.43*, outras janelas de texto devem ser criadas, uma para cada módulo.
CEFET-MG 68
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 69
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Para escrever o código fonte do programa principal vamos nos orientar pelo
fluxograma da Figura 48,, já mencionado.
mencionado. O algoritmo configura IOs do MSP e testa se
uma teclala foi pressionada. Quando ocorre tal evento a tecla é apresentada no display.
Observe bem o algoritmo, parte dele já foi refinado e implementado por você,
você tais
como: as subrotinas do LCD e do TECLADO. Como aproveitar esses códigos já
escritos? O procedimento nto é bem simples e envolve o conceito de localidade de
funções.
Uma função é denominada global quando a mesma pode ser acessada por
outros módulos do programa e é local quando só pode ser acessada dentro do próprio
módulo.
Vamos pegar como exemplo o módulomódu do TECLADO que é constituído por uma
função global e uma local.
A função TECLADO foi declarada como pública, observe a diretiva PUBLIC antes
do nome da função. Ela poderá ser chamada por qualquer outro módulo do projeto. A
função TEMPO_REPIQUE é uma função ção local, portanto só poderá ser chamada dentro
do módulo corrente, que neste caso é o módulo teclado.s43.
Observe que a variável TECLA e o label TAB_TEC foram declarados como
externos. Isso significa que as definições dos referidos termos estão em outro módulo,
mas a diretiva EXTERN permite que eles sejam acessados no módulo corrente,
teclado.s43.
Módulo teclado.s43:
#include “msp430x14x.h”
;Função global
PUBLIC TECLADO
;Variável externa
EXTERN TECLA
;Label externo
EXTERN TAB_TECLA
RSEG CODE
;**************************
;SUBROTINA: TECLADO
;DESCRIÇÃO: verifica se alguma tecla foi pressionada
;ENTRADA: -
;SAÍDA: TECLA – retorna o valor da tecla pressionada
pre
;**************************
TECLADO
.
MOV.W #TAB_TEC,R4
.
CALL #TEMPO_REPIQUE ;função local
.
MOV.B 0(R4),TECLA
.
RET
;**************************
END
;Função externa
EXTERN TECLAD0
;Variável global
PUBLIC TECLA
;Label global
PUBLIC TAB_TECLA
ler_tecla
CALL #TECLADO
CMP.B #0,TECLA
JZ ler_tecla
.
;**************************
END
CEFET-MG 72
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 - Semáforo
OBJETIVO
Aplicação dos
os conceitos de IO
I e
Codificação em C a partir de uma
um FSM.
15.1. INTRODUÇÃO
CEFET-MG 73
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Pb
b b
a c
Pa
Pc
a c
d d Sentido de
Rotação
Pd
Figura 57 – Lay-out do cruzamento com sinais
sinais luminosos para carro e pedestre.
15.2. ATIVIDADES
A estrutura do seu programa pode ser baseada no código a seguir, embora esta
solução não seja a única.
Dicas:
Não se esqueça que para utilização
utilização dos dispositivos de IO
I é necessário
realizar
izar sua configuração (entrada/saída).
Lembre-sese também ded filtrar a trepidação presente nas chaves.
enum estados {LIVRE,ATENCAO,ESPERA};
enum estados estado;
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
while(1)
CEFET-MG 74
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
{
switch (estado)
{
case LIVRE:
break;
case ATENCAO:
break;
case ESPERA:
break;
}
}
}
15.2.2 Com base na Figura 58 implemente o código para esta FSM que faz f o
controle de um sinal de duas fases (ex: rua A e B), com pedidos de passagem distintos.
CEFET-MG 75
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 76
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Aplicar
plicar os conceitos de IO
I para controle de motor de passo.
passo
16.1. INTRODUÇÃO
Princípio de funcionamento
No que se refere ao funcionamento, o motor de passo pode ser comparado ao
motor síncrono. Um campo rotativo (nesse caso gerado
gerado pela eletrônica de controle) faz
girar um rotor magnético a ele acoplado. Tais motores foram subdivididos de acordo
com a forma em que é gerado o campo rotativo: enrolamento unipolar ou bipolar e com
o material empregado na confecção do rotor: ferro doce ou material permanentemente
magnetizado.
a b
c d
Figura 60 - Acionamento a passo inteiro
Também é possível cortar a corrente de um dos enrolamentos, antes de inverter a
polaridade na fase correspondente (acionamento
( a meio passo). Nesse caso
ca a
sequência será: AB B AB A AB B AB A AB, conforme mostra a Figura
61a,b,c,d
a,b,c,d onde a cada passo o rotor gira 45° no sentido anti horário.
horário Nessa operação a
meio passo,
sso, o ângulo de passo é a metade do passo,
passo mas o torque é irregular
irr e menor
em média já que durante a metade do tempo apenas uma fase está sendo utilizada
(Força = N° espiras x corrente).
CEFET-MG 78
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
a b
c d
Figura 62 - Rotor.
Os motores de passo unipolares assemelham-se
assemelham se aos bipolares, mas são
enrolados de modo diferente. Neles, cada fase consiste de um enrolamento com
derivação central ou mesmo de dois enrolamentos separados, de forma que o campo
magnético
gnético possa ser invertido sem a necessidade de inverter o sentido da corrente
(Figura 63).
CEFET-MG 79
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 80
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Figura 66 – Driver
river para o motor de passo: a) unipolar e b) bipolar.
CEFET-MG 81
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Tensão 12V
Resistência 75Ω
Corrente 160 mA
Passos por rotação 100
Ângulo de passo 3,6°
a b
iagrama elétrico do motor de passo e b) driver do kit didático.
Figura 67 – a) Diagrama didático
A
Tabela 13 mostra a sequência
sequência de estados para acionamento do motor no sentido
horário e anti-horário,
horário, passo inteiro torque pleno (a), meio passo (b) e passo inteiro
meio torque (c).
FASES 1 2 3 4 FASES 1 2 3 4
1 1 0 0 1 1 0 0
sentido 0 1 1 0 0 1 0 0
anti-horário 0 0 1 1 0 1 1 0
1 0 0 1 sentido 0 0 1 0
1 1 0 0 Anti-horário 0 0 1 1
sentido 1 0 0 1 0 0 0 1
horário 0 0 1 1 1 0 0 1
0 1 1 0 1 0 0 0
a- passo inteiro torque pleno b-meio
meio passo
FASES 1 2 3 4
1 0 0 0
sentido 0 1 0 0
anti-horá
horário 0 0 1 0
0 0 0 1
c- passo inteiro meio torque
Tabela 13 – Sequência para acionamento das fases do motor de passo: a) passo inteiro
torque pleno, b) meio passo e c) passo inteiro meio torque.
CEFET-MG 82
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
16.2. ATIVIDADES
16.2.1 Conecte o MSP430 ao motor de passo conforme o diagrama da Figura 68.
Figura 68 - Diagrama
iagrama de conexão do motor de passo e o kit didático.
16.2.2 Escreva um programa conforme os fluxogramas da Figura 69 para acionar o
motor de passo com as seguintes características:
• Velocidade constante de 5 passos por segundo (pps)
• Sentido de rotação anti-horário
• Girando
irando ininterruptamente;
• Acionamento to a passo inteiro torque pleno (Tabela
( 13a).
Dicas:
A velocidade dee rotação do motor é definida pela função de tempo.
Crie um vetor de constantes global contendo os 4 estados do motor (tabela).
Crie uma variável global para armazenar o índice do vetor (i).
(i)
main configura io passo
motor = tabela[ i ] S
I=4
passo
fim N I=0
tempo (x)
motor = tabela[ i ]
fim
17.1. INTRODUÇÃO
Ic
Rc
Vc Lc E
Va
CL N
CEFET-MG 85
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 86
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Va
(V)
+ 9,9
0 1,65 3,3 Vf
(V)
- 9,9
a b
17.2. ATIVIDADES
17.2.1 Conecte a saída de PWM P1.2/TA1 do kit microcontrolador MSP430
MSP à entrada
Vf do kit do motor cc conforme diagrama
diagram da Figura 74.
MSP
MSP430F1611 Motor cc
14
53 P1.2/TA1 Vf
XT2IN
4 MHz
52
XT2OUT
GND GND
configura io
configura clock
configura timer A
defina a velocidade
fim
Figura 75 - Fluxograma
luxograma para gerar PWM com velocidade constante
CEFET-MG 87
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Orientações:
Orientações:
1. Habilite a interrupção produzida pelo bloco 0 (CCIFG0).. Esta interrupção é
produzida no modo compare quando o valor do timer A (TAR) for igual ao valor
do registro TACCR0. Esta interrupção tem um vetor exclusivo.
excl Desta forma
ocorrerá uma interrupção a cada 1 ms (Figura
( 76). Utilize a função de tratamento
da interrupção como um contador de interrupção para a marcação de tempo.
CEFET-MG 88
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Aplicar
plicar os conceitos de IO
I
Codificação em C a partir de uma máquina de
de estados finitos (FSM)
Implementação de Timeout com dispositivos de hardware.
18.1. INTRODUÇÃO
O kit portão de garagem simula uma situação real de controle, onde um sistema
digital pode controlar os estados do portão. O kit consiste de um mecanismo contendo
um motor cc acoplado ao portão por meio de caixa de redução, pinhão e cremalheira.
O motor cc é acionado pelo circuito driver TA8409F (Ponte H), que contém duas
entradas (IN1 e IN2) que definem a ação do motor (figuras 79 e 80)
80 conforme a Tabela
14.
IN2 IN1 MOTOR
0 0 Desligado
0 1 Abre
1 0 Fecha
1 1 Parado
Tabela 14 – Condições de funcionamento do motor.
O portão por sua vez contém duas chaves fim de curso (FC) para sinalização de
portão fechado e portão aberto, cuja denominação no kit é F para fechado e A para
aberto. Estas duas saídas são ativas em nível lógico baixo, conforme Tabela 15.
F A PORTÃO
1 1 Meio do curso
1 0 Aberto
0 1 Fechado
Tabela 15 – Posicionamento do portão.
OUT
200 ms 200 ms
Figura 78 – Sinal de saída do módulo receptor do controle
controle remoto.
remoto
CEFET-MG 90
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Figura 79 – Lay-Out
Out da placa de circuito impresso.
impresso
+5V
+5V F
C1
100nF R11
D1 D2 47k +5V
1N4148 1N4148 20
20cm
2 7
1 Vs OUT1 3 R11 10
IN1 IN1 Vcc RX3302R GND
47k
R17 + 9
1k ANT
Fechado Aberto
M1 A
8
Receptor de D1 R15
TA8409F Controle 3k74
Chave fim 7
de curso Remoto LA
10 IN2 6 L2
IN2 8
- D0
R10 CH
CH1/Prog
R16 GND Vref OUT2 100R 5
1k VT OUT
5 9
4 L1
ADJ
R9 R8
1k5 47k 3 +5V
VCC
2 R14 C5 C4
R4 OUT
+5V 3k74 100uF 100nF
10k
1
2 GND
- 8
R5
R1 R2 R3 CI_2:A 1
110k
3 LMV358
C3
3 x 1R65 C2 + 4 100nF
10uF R6
110k
GND +5V
TP1 R7
7
500R 16k2 Driver para motor cc
Marcos P.
18.2. ATIVIDADES
18.2.1 Conecte o kit do MSP ao kit do portão conforme diagrama de ligações da d
Figura 81. Caso não tenha o controle remoto, utilize a tecla 3 do teclado e P2.0 no
lugar de P1.0. Neste caso deve-se
deve se configurar P3.0 como saída e colocar nível lógico
'1' nesta porta.
+5V +5V
GND GND
Saídas
IN1 P1.4
IN2 P1.3
Kit Kit
Portão MSP430
F P1.2
A P1.1
Entradas
OUT P1.0
GND GND
0 Travado/F OU
T=
F= 11 1 A=1
F=1
Fecha Abre
10 01
0
OUT
=1 Travado/A A=
11
inicio
OUT – saída do controle remoto
F - saída do sensor FC fechado
OUT=0 A - saída so sensor FC aberto
Figura 82 – Diagrama de estados 1 para controle do portão.
portão
18.2.3 Rode o programa e teste seu funcionamento.
18.2.4 Modifique o programa para controle do portão conforme diagrama de
estados 2 mostrado na Figura 83. Agora o controle remoto (CR) poderá parar o
portão no meio do curso,
curso ou seja, se o portão estiver fechando e receber o comando
do CR ele pára.ra. Se depois de parado no meio do curso receber novamente o
comando do CR ele fará o movimento inverso. O mesmo ocorrerá se o portão
estiver abrindo.
OUT=0
T=
1 Travado/F OU
T=
OU 0 1 OUT=0
OUT=0 = 11
F
Fecha Abre
10 01
0
A= =1
OUT T
=1 Travado/A OU
11
inicio
OUT – saída do controle remoto
F - saída do sensor FC fechado
OUT=0 A - saída so sensor FC aberto
CEFET-MG 93
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Rede
127V
60Hz
0 t (ms)
5V
DCZ
0
t (ms)
8,33 ms 8,33 ms
Interrupção
captura
0
t (ms)
4,167 4,167
ms ms
IN
0
t (ms)
90° 90°
Tensão
na
carga
0
t (ms)
19.2. ATIVIDADES
19.2.1 Conecte o kit microcontrolador MSP430 ao dimmer conforme diagrama da
Figura 86
• Conecte a entrada de captura do bloco CCR0, CCI0A (P1.1/TA0)
(P1.1/TA0 do kit
microcontrolador à saída DCZ do kit dimmer.
• Conecte a saída do bloco CCR1, OUT1 (P1.2/TA1)
(P1.2/TA1) do kit microcontrolador à
entrada IN do dimmer.
dimmer
• Conecte a alimentação
entação do dimmer: +5V e GND.
CEFET-MG 95
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
13
8
XIN P1.1/TA0 DCZ
CCI0A
X1 14
P1.2/TA1 IN
32768 Hz 9
XOUT OUT1
Microcontrolador MSP 430F1611 Dimmer
52
XT 2OUT
OUT
+5V +5V
X2
4 MHz 53
XT2OUT
OUT GND GND
19.2.2 Desenvolva um programa para acionar o dimmer com ângulo de disparo fixo de
90°, conforme fluxograma da Figura 87.
Orientações:
1. Configure io:: Porta P1.1/TA0
P1. como entrada, função especial e P1.2/TA1
P1. como
saída, função especial. Defina os registros:
o Registro P1DIR =
o Registro P1SEL =
2. Configure o módulo de clock para gerar 4 MHz na saída SMCLK (Figura 86). O
oscilador XT2CLK do módulo de clock tem um cristal de 4 MHz.
MHz
o Ligue o oscilador XT2CLK (bit XT2Off do registro BCSCTL1)
o Selecione o oscilador XT2CLK como fonte para SMCLK (bit SELS do
registro BCSCTL2)
3. Configure o timer A. Defina o conteúdo de cada registro.
o Registro TACCTL0
TACCTL =
Modo captura
Síncrona
Captura pela borda de subida
Interrupção habilitada
o Registro TACCTL1
TACCTL =
Modo compara
Modo de saída 3
o Registro TACTL =
Defina SMCLK como fonte de clock do timer A (4 MHz).
Defina o modo de contagem do Timer A em modo contínuo.
o Registro TACCR1 e TACCR0
Defina o valor referente ao angulo de 90°.
Defina o valor referente à duração do pulso de disparo (10µs).
4. Utilize os fluxogramas
fluxograma da
5. Figura 87 para a elaboração do software.
main configura Trata
Trata_int
TACC1=TACCR
TACCR0
configura IO
configura +angulo
angulo
configura TACCR0=
=TACCR1
habilita clock +duração
duração
interrupção
configura fim
timer A
define ângulo
define duração
fim
CEFET-MG 96
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 97
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Prática 20 - Voltímetro dc
OBJETIVO
Aplicação do conversor analógico/digital (A/D)
Implementação de um voltímetro
voltímetro dc com a utilização do conversor A/D.
20.1 INTRODUÇÃO
CEFET-MG 98
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
20.2 ATIVIDADES
470Ω
Ω
+5V
AD0 MSP430F1611
470Ω
Ω
V LFXT1
GND
32.768Hz
CEFET-MG 99
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Orientações:
1. Configure io:: Porta P6.0
P como entrada e função especial.. Defina os registros:
o Registro P6DIR DIR =
o Registro P6SEL SEL =
2. Configure o ADC12.
ADC12 Defina o conteúdo de cada registro.
o Registro ADC12CTL0
ADC12 =
Calcule o tempo de amostragem (Ta) mínimo 9ζ
Calcule o Ta necessário para
para garantir a taxa de 30 aps
ap
Define os bits SHT
Conversões múltiplas, REF+ = 2,5V, REF on e ADC12 on
Interrupções de overflow e timer overflow desligadas
Enquanto configura os bits ENC e ADC12SC = 0.
o Registro ADC12CTL1
ADC12 =
Defina a memória
mem para receber o resultado.
Disparo do ADC12 por po software
Temporizador da amostragem utilizado
Sinal de clock dividido por 8
Fonte de clock ACLK
Modo de conversão:
conversão: canal único conversões repetidas
o Registro ADC12IE =
Interrupção pela escrita na memória habilitada
o Registro ADC12MCTLx =
EOS = 0
VR+ = VREF+ e VR- = AVss
Defina o canal 0 (A0)
configura io lê resultado
hab interrupção
hab.
hab e dispara AD
hab.
fim
Figura 90 – Fluxogramas do CAD.
20.2.3 Insira mais uma funcionalidade no código para que seja mostrado no display a
tensão de entrada em volts, com duas casas decimais.
CEFET-MG 100
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Dicas:
Para enviar a tensão medida ao display, o dado antes deve ser convertido para
BCD (decimal codificado em binário) e posteriormente para ASCII.
./0 1%2340 1356
Faça o equacionamento matemático da tensão de entrada:
entrada +,- =
357 1356
Faca o cálculo de Vin com inteiros. A primeira divisão fornecerá a parte inteira do
resultado. Para obter a parte fracionária do resultado, multiplique o resto da
primeira divisão por 10 (0xA) e faça
faça a segunda divisão que fornecerá como
resultado a primeira
a casa decimal. Se quiser mais casas decimais repita o
procedimento.
A taxa de atualização do display não deve ser muito elevada, pois isto dificulta
sua visualização. Utilize uma taxa de atualização
atualização de aproximadamente 0,5 Hz.
CEFET-MG 101
CENTRO
TRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 102
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Apêndice B – O conjunto
onjunto de Instruções
B.1 Introdução
• A CPU do microcontrolador MSP430 tem um reduzido conjunto de instruções
(RISC). São apenas 27 instruções executadas pelo hardware, contudo o gerador de
constante auxilia ao programa montador (Assembly)
( ) do MSP emular mais 24
instruções. A seção seguinte descreve
descreve todas as instruções do núcleo do MSP e
instruções emuladas de forma detalhada.
• As instruções aparecerão em ordem alfabética.
• O sufixo .W ou a ausência de sufixo no mnemônico da instrução indica operação
de 16 bits ou operação de word e o sufixo .B indica
ndica operação de 8 bits ou operação
de byte.
• As letras src e dst significam operando fonte e operando destino respectivamente.
• O asterisco (*) na frente da instrução indica que a mesma é emulada.
• Nas instruções emuladas, os bits de status são afetados conforme a instrução
original.
CEFET-MG 103
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Descrição O operando
operando fonte e adicionado ao operando destino. O operando
fonte não é afetado. O operando destino perde o conteúdo prévio
para armazenar o resultado da operação.
CEFET-MG 104
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 105
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Exemplo2 Se o bit 3 de R8
R8 estiver setado, salta para o label TOM.
BIT.B #8, R8
JC TOM
CEFET-MG 106
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Sintaxe BR dst
Operação dst PC
Exemplos BR #EXEC
EXEC ;salta para o label exec.
BR EXEC ;salta para o endereço contido em EXEC
BR &EXEC ;salta p/ o endereço contido no endereço
ndereço absoluto
;EXEC
BR R5 ;salta para o endereço contido em R5.
BR @R5 ;salta p/ o endereço contido na word
;apontada por R5.
BR @R5+ ;Idem anterior e incrementa R5 após.
BR X(R5) ;salta p/ o endereço contido no endereço
;apontado por R5 + X.
Operação SP - 2 SP
PC @SP
dst PC
CEFET-MG 107
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Operação 0 dst
Sintaxe CLRC
Operação 0 C
Sintaxe CLRN
Operação 0 N
CEFET-MG 108
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Sintaxe CLRZ
Operação 0 Z
Exemplo CLRZ
Exemplo2 Dois blocos de RAM são comparados. Se não são iguais, vai para
pa o
rotulo ERRO.
ORG 0200h
BLOCO1 DB 00,01,02
ORG 0210h
BLOCO2 DB 00,01,02
CEFET-MG 109
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 110
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Exemplo Move um bloco de 255 bytes de memória com endereço inicial EDE,
para
a outro bloco de memória com endereço inicial TONI.
MOV #EDE, R6
MOV #TONI, R5
MOV #255, R4
L$1 MOV.B @R6+, 0(R5)
INC R5
DEC R4
JNZ L$1
CEFET-MG 111
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Sintaxe DINT
Operação 0 GIE
Sintaxe EINT
Operação 1 GIE
CEFET-MG 112
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Exemplo O byte STATUS é incrementado. Quando ele for igual a 11, vai para
OVFL.
INC.B STATUS
CMP.B #11, STATUS
JEQ OVFL
CEFET-MG 113
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
24) JC ou JHS Jump se o bit carry estiver setado ou Jump se maior ou igual
Operação Se C = 1: PC + 2 x offset PC
Se C = 0: executa a instrução seguinte
Operação Se Z = 1: PC + 2 x offset PC
Se Z = 0: executa a instrução seguinte
CEFET-MG 114
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Sintaxe JL rótulo
Operação PC + 2 x offset PC
CEFET-MG 115
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Sintaxe JN rótulo
CEFET-MG 116
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Sintaxe NOP
Operação Nenhuma
CEFET-MG 117
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Operação SP – 2 SP
src @SP
Sintaxe RET
Operação @SP PC
SP + 2 PC
CEFET-MG 118
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Sintaxe RETI
Operação @SP SR
SP + 2 SP
@SP PC
SP + 2 SP
CEFET-MG 119
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Exemplo Multiplica
plica R7 por 4
RLA R7
RLA R7
Nota O assembler não reconhece a instrução RLA @R5+, que deve ser
substituída por ADD @R5+, -2(R5).
Nota O assembler não reconhece a instrução RLC @R5+, que deve ser
substituída por ADDC @R5+, -2(R5)
CEFET-MG 120
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 121
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Sintaxe SETC
Operação 1 C
Sintaxe SETN
Operação 1 N
CEFET-MG 122
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Sintaxe SETZ
Operação 1 Z
CEFET-MG 123
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Descrição Os bytes alto e baixo do operando destino são trocados como mostra
a Figura B.5.
B.
CEFET-MG 124
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
Exemplo R7 é testado. Se
Se ele é negativo, continua em R7NEG; se é positivo
mas não zero continua em R7POS e se zero continua em R7ZERO.
TST R7 ;testa R7
JN R7NEG ;salta se negativo
JZ R7ZERO ;salta se zero
R7POS ..... ;R7 é positivo mas não zero
R7NEG ..... ;R7 é negativo
R7ZERO ..... ;R7 é zero
CEFET-MG 125
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
CEFET-MG 126
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
DEEB - Coordenação de Eletrônica
Disciplina: Laboratório de Sistemas Microprocessados
REFERÊNCIAS BIBLIOGRÁFICAS
2 s. MSP430x1xx
Texas Instruments. MSP430x1xx Family: User´s Guide 2006 414p.
CEFET-MG 127