Escolar Documentos
Profissional Documentos
Cultura Documentos
o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados
Laboratrio de
Sistemas
Microprocessados
Parte I
AUTORES:
1 verso
Prof. Hrcules M. Carvalho
Prof. Joel Augusto dos Santos
Prof. Jos Jonas da Silva Maia
Prof. Marcos Antnio da Silva Pinto
2 verso 2001
Prof. John Kennedy Schettino de Souza
Prof. Marcos Antnio da Silva Pinto
Prof. Paulo Srgio Roque
3 verso 2003/ 4 verso 2004
Prof. John Kennedy Schettino de Souza
Prof. Marcos Antnio da Silva Pinto
Profa. Rosngela Ftima da Silva
5verso 2010
Profa. Rosngela Ftima da Silva
6 verso 2012
Prof. Marcos Antonio da Silva Pinto
Profa. Rosngela Ftima da Silva
7 verso 2013
Prof. John Kennedy Schettino de Souza
Prof. Marcos Antonio da Silva Pinto
Profa. Rosngela Ftima da Silva
NDICE
Introduo
02
Aula Prtica 01
Ambiente de programao da IAR Systems
04
Aula Prtica 02
Instrues de carga e transferncia de 8 bits
18
Aula Prtica 03
Instrues de carga e transferncia de 16 bits
22
Aula Prtica 04
Operaes lgicas e aritmticas
26
Aula Prtica 05
Codificao de programa a partir de um fluxograma
30
Aula Prtica 06
Instrues de desvio
34
Aula Prtica 07
Subrotinas
38
Aula Prtica 08
Programas
43
Aula Prtica 09
Dispositivo de sada
45
50
52
Referncias Bibliogrficas
78
CEFET-MG
INTRODUO
Carssimos alunos,
Como se pode observar na capa desta apostila,
apostila existem
em vrias verses
verses. Isto
significa que estamos, cada vez mais, tentando melhorar o material que voc utiliza.
Parte destas verses devido a mudanas da tecnologia. Mas o que nos move o
desejo de que
ue esta apostila seja a melhor possvel,, portanto gostaramos que vo
voc
prestasse muita ateno em tudo que a partir
partir deste momento vamos oferecer e nos
ajude nesta misso. Talvez assim consigamos atingir nossos objetivos.
Esta apostila tem como p
pblico alvo estudantes da rea de sistemas digitais de
cursos tcnicos (2 grau) e de cursos
rsos superiores. Esta se destina a disciplinas com
durao de dois semestress (60 horas aula) com vistas a fornecer roteiros de aulas
prticas para o aprendizado das estruturas internas da famlia de microcontroladores
MSP 430 fabricado pela Texas Instruments.
Ins
A primeira aula (prtica 1) um tutorial
para a familiarizao com o ambiente de programao da IAR Systems (empresa
que desenvolveu o software).
software) As prticas dois at oito se destinam ao aprendizado
da programao Assembly,
ssembly, uso do conjunto de instrues
instrues do microcontrolador,
estruturas de repetio e sub
sub-rotina, sendo usado o ambiente de programao em
modo simulao. Da prtica nove em diante so utilizados as portas de entrada e
sada do microcontrolador e passa-se
passa
a usar o ambiente de programa
programao em modo
de emulao,, sendo ento necessrio o hardware do MSP430.
MSP430
Este material tem foco na linguagem Assembly, que adequada para o estudo
do hardware de sistemas digitais.
digitais Isto significa que necessrio que se conhea o
hardware do processador para program-lo. Desta forma o desenvolvimento deste
material pr supe o conhecimento concomitante do hardware utilizado.
No mais, desejo a todos um bom aproveitamento.
Atenciosamente,
Rosngela Ftima da Silva e Marcos A. S. Pinto
CEFET-MG
Prtica 1 - Ambiente
integrado
desenvolvimento da IAR Systems
de
OBJETIVO
Introduzir o ambiente integrado de desenvolvimento da IAR Systems
(IDE - Integrated Development Environment
Environment)
Construo de programas
1.1 - INTRODUO
O desenvolvimento de programas em linguagem Assembly
ssembly exige no apenas o
conhecimento de um ambiente de programao, mas tambm do processador em
questo. A Texas Instruments desenvolveu a famlia de microcontrolador
microcontroladores MSP430.
Cada membro desta famlia possui em seu chip alm de um microprocessador,
outros
utros dispositivos acoplados como memria de programa, memria de dados e
vrios dispositivos perifricos
perifricos, que o objeto do nosso estudo. A IAR System a
responsvel pelo desenvolvimento
desenvolviment do software que ser utilizado ao longo deste
curso.
O processo de criao de um programa em Assembly
ssembly muito parecido com o
processo de criao de programas em linguagem C, Observe a seqncia na Figura
1, apresentada a seguir:
Edio
Montagem
Linkedio
Depurao
ATIVIDADES
na rea de trabalho.
CEFET-MG
Caso
aso esteja iniciando a tarefa de desenvolvimento do programa
programa, naturalmente
deve-se escolher a opo File no menu principal (lado superior esquerdo da tela)
tela e
nesta aba escolher a opo New sub opo Worspace, conforme a Figura 4.
Esta
a opo abre uma nova janela, que permite criar uma nova
a rea de trabalh
trabalho
(Figura 5). Uma rea de trabalho uma regio lgica destinada insero de
diversos projetos que apresentam aplicaes correlatas. Em nossas aulas prticas
estaremos escrevendo um nico projeto para cada rea de trabalho.
CEFET-MG
Ser ento 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 opo asm e selecionar o item asm (Figura 7
7).
CEFET-MG
Uma vez determinado o tipo de projeto a ser criado, o prximo passo salva
salvalo. Quando se salva um arquivo, naturalmente deve-se que escolher uma pasta. V
a Documentos, l existe uma pasta para a sua turma. Caso no exista, faa a
gentileza de cri-la.
la. Dentro desta pasta crie a sua pasta, de preferncia
preferncia com o seu
nome. Assim voc saber
r onde esto os seus arquivos. Agora crie uma nova
pasta, ela pode se chamar,
chamar por exemplo, AULA_01. Cada projeto que
criarmos, ter uma pasta exclusiva para ele.
Ateno:
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,
como, que surgiu na tela, lhe d a opo de escolher o nome
do projeto. Observe, neste caso, foi salvo na pasta AULA_01 o projeto com o nome
PRJ_01, Figura 8.
CEFET-MG
CEFET-MG
Agora digite
igite o seguinte cdigo a partir da linha onde est escrito ;Insira o seu
programa aqui (Figura 9).
MOV.B
#0xAA,R4
MOV.B
R4,R5
MOV.B
R5,&0x200
MOV.B
&0x200, &0x201
MOV.B
&0x201
&0x201,R6
Escolha um nome para o workspace e salve. Neste caso foi escolhido o nome
no
AREA_01.
Agora hora de verificar se o cdigo digitado est correto e tra
transform-lo em
cdigo de mquina utilizando os processos de montagem e linkedio.
linkedio Entretanto,
para que tenhamos sucesso necessrio selecionar para qual componente da
famlia MSP430 estamos escrevendo o programa. Marque na janela Workspace o
nome do projeto que est sendo construdo (Aula_01 Debug). Selecione no menu
principal a opo Project>Options (Alt F7).
Na Figura 12 selecione a aba General Options e verifique se o MSP
selecionado o 430F149 na caixa de opo Device. Caso contrrio clique no cone
a direita do MSP selecionado, para que sejam listados todos os MSPs suportados
pela verso atual do ambiente IAR instalado. Em seguida seleciona o MSP430F149.
Com o modelo de MSP selecionado clique na aba Debugger ((Figura 13) e
confira se na caixa de dilogo Driver est selecionado o modo simulao.
CEFET-MG
10
CEFET-MG
11
12
CEFET-MG
13
CEFET-MG
14
Reset - Reinicia
einicia o programa.
programa
Break - Pra
ra a execuo do programa
programa.
xecuta a prxima instruo, se for uma chamada de
Step Over - Execut
sub-rotina,, ela inteiramente executada em nico passo e o ccursor
retorna para a instruo aps a chamada.
chamada
Step Into - Executa
xecuta a prxima instruo. Se for uma chamada de
sub-rotina,
rotina, entra na sub-rotina.
su
Step Out - Executa o programa at o trmino da sub-rotina
rotina atual
Next Statement - Pula para o prximo comando, o atual
executado sem a visualizao do depurador
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
trmino do programa
Toggle Breakpoint - Cria/apaga um ponto de parada (breakpoint)
Stop Debugging - Sada do modo de depurao
Figura 17 - Botes da barra de ferramentas de depurao.
CEFET-MG
15
Ateno:
As opes de execuo de programas presentes na barra de
ferramentas de depurao,
depurao mostradas na Figura 17,, podem ser acessadas
atravs da seleo do boto Debug no menu principal.
Dica:
Dica:
Se voc no observar diferenas
diferena entre alguns deles, fique ligado,
pois apenas uma questo de tempo.
NO se esquea de salvar os seus arquivos no seu pen drive, ao
final de todas as aulas.
aulas
CEFET-MG
16
Pontos de checagem
Criar projeto.
No possvel carregar um
programa no MSP sem que se tenha
criado um arquivo projeto.. Os passos
para criao do projeto esto
descritos na prtica01.
Passos
Abrir um Workspace.
Criar uma nova pasta para cada novo
projeto.
Salvar arquivo.
Definir modelo do MSP.
Definir para modo simulao.
Editar o programa.
Montar o programa.
Identificar erros de sintaxe indicados pela
montagem.
Corrigir erros.
Carregar programa no simulador e em caso
de falhas:
Verificar de modelo do MSP foi selecionado
corretamente.
Verificar se o IAR est em modo simulao.
Executar o programa com a opo Go ( ).
Verificar se a lgica programada foi
realizada corretamente.
Ateno:
O seu desenvolvimento no processo de depurao de programa to
importante quanto o prprio processo de construo de um novo
programa.
Desta forma fundamental conhecer os recursos de depurao de
programa que a ferramenta de desenvolvimento lhe oferece.
CEFET-MG
17
Prtica 2 - Instrues
transferncia de 8 bits
de
carga
OBJETIVO
Estudar as instrues
nstrues de carga e transferncia de 8 bits
Familiarizao
zao com os registros de uso geral do MSP430
2.1 -
INTRODUO
CEFET-MG
18
(PC)
(SP)
(SR)
(CG1)
(CG2)
R0
R1
R2
R2
R3
R4
.
.
R15
Ateno:
O MSP possui
ossui 12 registros de uso geral: R4 a R15. Eles podem ser
usados em suas aplicaes habituais: transferncia de dados, operaes
lgicas, aritmticas, jumps e etc. Eles armazenam dados ou endereos
endereos.
As operaes de 8 bits com destino em registro so executadas
apenas com a parte menos significativa dos registros,, sendo a parte mais
significativa zerada.
Operaes de 8 bits com destino em memria altera apenas o
endereo especificado. Porm operaes de 16 bits em memria deve
devem ter
endereo par, sendo o byte menos significativo enviado para o endere
endereo
especificado (par) e o byte mais significativo ocupa o endereo seguinte.
CEFET-MG
19
2.2 -
ATIVIDADE
ATIVIDADES
MOV.B 0AAH,R4
MOV.B R4,R5
MOV.B R5,&200H
MOV.B &200H,&201H
MOV.B &201H, R6
Reg/Mem
R4
R5
R6
(200H)
(201H)
Dica:
Dica:
Para executar o programa passo a passo, entre no
o modo
m
simulao
( ) e pressione a tecla F10 ou o cone
para executar cada linha do
programa.. Consulte a Figura 17.
Para ver os registros, vv
ao menu principal, clique sobre o boto
View e selecione a opo Register.
Para ver a memria, clique sobre boto View no menu principal e
selecione a opo Memory.
Memory Na janela da memria, na aba Go to digite o
endereo desejado: 0x200 e tecle enter.
2.2.2. Abra uma nova pasta (Aula_02) e construa um novo projeto para testar as
seguintes instrues:
MOV.B
#0AAH,R4
MOV.B
#0BBH,R5
MOV.B
R4,R6
MOV.B
R5,R4
MOV.B
R6,R5
CEFET-MG
20
2.2.3. Construa
onstrua um novo projeto para testar as seguintes instrues:
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
b) MOV.B 0(R4
R4), R6
MOV.B 0(R5),0(R4)
e
MOV.B @R4, R6
CEFET-MG
21
Prtica 3 - Instrues
transferncia de 16 bits
de
carga
OBJETIVO
Estudar as instrues
nstrues de carga e transferncia de 16 bits
Aplicao de registros especiais de 16 bits
3.1.
INTRODUO
0FFFEh
DC16
init
Elas inicializam o Program Counter (PC) para voc. Observe que ao carregar o
programa no ambiente de simulao o PC sempre est com o valor de 0x1100
0x1100.
Observe tambm que aps a execuo de cada instruo, ele automaticamente
incrementado.
O Stack Pointer (SP) inicializado pela seguinte linha de cdigo:
init:
MOV
Agora est um pouquinho mais claro, pois a instruo MOV voc conhece e SP
representa o registro Ponteiro da P
Pilha. Esse registro automaticamente
incrementado
crementado ou decrementado, em situaes bem determinadas
rminadas que sero vistas
no decorrer deste curso.
CEFET-MG
22
3.2.
ATIVIDADE
ATIVIDADES
3.2.1. Abra uma nova pasta (Aula_03) e construa um novo projeto para testar as
seguintes instrues:
;Nmero da instruo
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
REG. e PILHA
PC
SP
R7
R8
R9
(09FFH)
(09FEH)
(09FDH)
(09FCH)
CEFET-MG
23
3.2.2. Construa
onstrua um novo projeto para testar as seguintes instrues:
; Nmero da instruo
MOV.W
#0
#0AAAAH,R10
;1
MOV.W
#0
#0BBBBH,R11
;2
PUSH
R10
;3
PUSH
R11
;4
POP
R10
;5
POP
R11
;6
REG. e PILHA
PC
SP
R10
R11
(09FFH)
(09FEH)
(09FDH)
(09FCH)
CEFET-MG
24
3.2.3. Construa
onstrua um novo projeto para testar as seguintes instrues:
; Nmero da instruo
MOV
#0xBBBB,R4
MOV
R4,R5
MOV
R5,&0x200
,&0x200
MOV
&0x200, &0x202
MOV
&0x202
&0x202,R6
MOV
#0x202
202,R7
MOV
0(R7),R8
REG. e PILHA
PC
R4
R5
R6
R7
R8
(0200H)
(0202H)
CEFET-MG
MOV
&0x202,R6
MOV
#0x202,R6
25
Prtica 4 -
OBJETIVO
Estudar as instrues lgicas e aritmticas
Anlise do registro de status do MSP
Manipulao de nmeros binrios e hexadecimal
4.1.
INTRODUO
Dica:
Dica:
necessrio consultar o conjunto de instrues do MSP para verificar
quais os flags que atuam aps a execuo de cada instruo e como
eles so afetados.
CEFET-MG
26
4.2.
ATIVIDADES
Operao
Resultado
79 -79
57H + 4B H
45H 56H
8FH + 64H
Tabela 6 - Operaes lgicas e aritmticas.
&0x200,R4
MOV.B
&0x201,R5
ADD.B
R4,R5
MOV.B
&0x200,R6
MOV.B
&0x201,R7
CLRC
DADD.B
CEFET-MG
R7,R6
27
Dica:
Para inserir um contedo em um espao de memria RAM, siga os
seguintes passos:
a.
V ao ambiente de depurao.
b.
c.
Clique com o boto esquerdo do mouse sobre a seta da
caixa de texto onde est escrito Memory e selecione RAM
RAM.
d.
Marque com o boto esquerdo do mouse a posio de
memria que voc deseja modificar e escreva o valor desejado por
cima.
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)
CEFET-MG
28
Armazene nas posies de memria 202H, 203H e 204H os valores CCH, BBH
e AAH respectivamente.
R15
Anlise do resultado
AND.B R6,R15
INV.B
R15
XOR.B R7,R15
Tabela 7 - Operaes lgicas.
CEFET-MG
29
Prtica 5 - Codificao de
partir de um fluxograma
programa
OBJETIVO
Verificar a implementao de um programa em Assembly a partir de
um fluxograma;
5.1.
INTRODUO
Um programa nada mais do que uma lista de instrues que a CPU deve
executar na sequncia
ncia em que ela foi escrita. Porm a capacidade de tomada de
deciso oferecida
ecida pela CPU uma poderosa ferramenta que proporciona a escrita
de programas mais inteligentes. A tomada de deciso permite a realizao de
estruturas de repetio (loop), que reduz drasticamente as dimenses do programa.
Uma tomada de deciso obtida atravs da consulta de um dos flags
flags, pois eles so
os indicadores do estado corrente do programa. Dependendo do estado deste flag o
programa
a segue um caminho ou outro. Ela representada em um fluxograma por
um losango que permite que o programa siga por um de dois caminhos possveis
possveis,
como pode ser observado na Figura 20.
O fluxograma de uma rotina que faz a transferncia (cpia) de dados de um
bloco de memria para outro apresentada pela Figura 20, a seguir:
INCIO
TRANSFERIR UM BYTE
ATUALIZAR O ENDEREO DO BLOCO DE ORIGEM
ATUALIZAR O ENDEREO DO BLOCO DE DESTINO
ATUALIZAR O NMERO DE BYTES RESTANTES
TODOS OS
BYTES FORAM
TRANSFERIDOS?
V
FIM
30
NAME
main
; module name
PUBLIC
main
init:
ORG
0FFFEh
DC16
init
RSEG
CSTACK
; pre-declaration
declaration of segment
RSEG
CODE
MOV
#SFE(CSTACK), SP
; set up stack
main: NOP
; main program
MOV.W
#WDTPW+WDTHOLD,&WDTCTL
MOV.W
#200H,R4
; Apontador do bloco 1
MOV.W
#220H,R5
; Apontador do bloco 2
MOV.B
#10H,R6
; Tamanho do bloco
0(R4),0(R5)
; Transferir o dado
INC.W
R4
; Atualizar apontadores
INC.W
R5
DEC.B
R6
JNZ
volta
JMP
volta MOV.B
; Atualizar tamanho
; jump to current location '$'
; (endless loop)
END
CEFET-MG
31
5.2.
ATIVIDADES
Execute o programa
prog
e observe atravs do espao de memria
compreendido entre 220
2 H 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
Saia novamente
ovamente do modo de depurao e desfaa a troca, substituindo
MOV.B #01H,R6
#01
por
MOV.B #10H,R6.
#10
Troque a instruo
JNZ volta por
JZ volta
Armazene
rmazene o valor AA nos endereos 200H
200 a 20FH e execute o programa.
CEFET-MG
32
Dica:
Se voc quiser inserir o mesmo valor em um bloco de memria
RAM, siga os seguintes passos:
1.
V ao ambiente de depurao.
2.
3.
Clique com o boto esquerdo do mouse sobre a seta da caixa
de texto onde est escrito Memory e selecione RAM.
4.
Clique com o boto direito do mouse sobre uma posio de
memria qualquer e selecione Memory Fill... Aparecer a Janela Fill.
5.
Preencha os seguintes campos: Start address,
address Length e
Value.. No nosso caso use respectivamente os seguintes valores 0x200,
0x10 e 0xAA.
CEFET-MG
33
Prtica 6 -
OBJETIVO
Estudar as instrues de tomadas de deciso (jump
(
condicional) e
Estudar os jumps relativo e absoluto.
6.1.
INTRODUO
As instrues lgicas e aritmticas afetam os flags.. Isto significa que logo aps
a execuo de qualquer uma delas possvel tomar
tom decises. As instrues que
usamos, neste caso so os jumps condicionais: JZ, JNZ, JC, JNC, JN, JGE e JL
JL.
Jumps relativos so
o aqueles que desviam o programa para um endere
endereo
calculado
culado a partir da posio atual do PC (Program Counter). Alm
m da instruo
JMP, todos os jumps condicionais do saltos relativos ao apontador de programa.
Estes saltos relativos so ditos curtos, pois a extenso do salto est limitada a faixa
de -511 a +512 words.
A instruo BR (Branch
Branch) desvia o programa
ma para qualquer uma das 64k
posies de memria endereveis e por isto dito salto incondicional longo
longo. Ela
salta para o destino, portanto um jump absoluto.
O fluxograma de uma rotina que faz a transferncia (cpia) de dados de um
bloco de memria para
ra outro apresentada pela Figura 21, a seguir:
CEFET-MG
34
COMPARA
APT_1 BLOCO1
APT_2 BLOCO2
APT_RESULT BLOCO3
CONT 10
(APT_1) =
(APT_2)
(APT_2) <
(APT_1)
V
(APT_RESULT)
0
(APT_RESULT)
1
(APT_RESULT)
2
APT_1 ++
APT_2 ++
APT_RESULT ++
CONT --
CONT = 0
CEFET-MG
35
;*********************************************************************************************************
; Descrio:
;*********************************************************************************************************
#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
DC16
0FFFEh
init
RSEG
RSEG
CSTACK
CODE
; pre-declaration
declaration of segment
; place program in 'CODE' segment
#SFE(CSTACK), SP
; set up stack
; main program
; Stop watchdog timer
init: MOV
main: NOP
MOV.W
MOV.W
MOV.W
MOV.W
MOV.B
volta CMP.B
JZ
JNC
MOV.B
cont INC.W
INC.W
INC.W
DEC.B
JNZ
JMP
igual
MOV.B
BR
menor
MOV.B
JMP
END
CEFET-MG
#WDTPW+WDTHOLD,&WDTCTL
#APT1,R4
#APT2,R5
#APT3,R6
#10,R7
0(R4),0(R5)
igual
menor
#02,0(R6)
R4
R5
R6
R7
volta
$
; (endless loop)
#00,0(R6)
#cont
#01,0(R6)
cont
36
6.2.
ATIVIDADES
Troque a instruo
JMP cont por
BR #cont
e execute o programa.
6.2.2. Altere o programa proposto de tal forma que seja armazenado em cada
posio do bloco apontado por APT_RESULT o maior valor entre os dois
dados comparados.
CEFET-MG
37
Prtica 7 -
Estudo de subrotina
OBJETIVO
Utilizao e chamada de sub-rotina;
Aplicao da pilha e
Passagem de parmetros.
7.1.
INTRODUO
Figura 22 Subrotina.
38
ATIVIDADES
-1
1 se divisor = 0 ou se o divisor > dividendo
PRINCIPAL
DIVIDENDO
DIVISOR
DIVISO
15
SALVAR CONTEXTO
DIVISO
QUOC
DIVIDENDO = 0?
DIVISOR = 0?
N
DIVISOR >
DIVIDENDO
N
DIVIDENDO
DIVIDENDO - DIVISOR
DIVIDENDO < 0?
QUOC
-1
N
QUOC
QUOC + 1
RESTAURAR CONTEXTO
RETORNA
39
40
Modifique
odifique o programa anterior de forma que a sub-rotina
sub rotina alm de devolver o
resultado em R6, devolva o resto da diviso em R7. Teste o programa.
CEFET-MG
41
Prtica 8 -
Ex ccios de programao
Exerccios
OBJETIVO
Elaborar fluxogramas e os respectivos programas em assembly
8.1.
INTRODUO
ATIVIDADES
0200
200 0201 0202 0203 0204 0205 0206
06 0207
Posio
Posio
Posio
.
.
.
Posio
42
03
301
H
0302
0303
0304
0305
03
306
S
0307
S
Dicas:
Cada posio de memria deve conter o cdigo ASCII do digito
corrente.
A base de tempo, que nos relgios so de 1 segundo, dever ser
acelerada para possibilitar o acompanhamento e execuo do programa.
CEFET-MG
43
Prtica 9 -
Dispositivo de sada
OBJETIVO
Acionar LEDs com temporizao de software
9.1.
INTRODUO
CEFET-MG
44
2. Registro de Direo
4. Registro de Entrada
45
HARDWARE ACIONADO
Os leds presentes no kit didtico apresentam a configurao
configurao apresentada na Figura
26. Para que o led seja ligado ou desligado basta colocar o nvel lgico 0 ou 1
1,
respectivamente, no terminal L0.
FLUXOGRAMAS
CEFET-MG
46
ACIONA_LED
CONFIGURAR I/O
PISCA_LED
CEFET-MG
47
PROGRAMA EM ASSEMBLY
;*********************************************************************************************************
;*********************************************************************************************************
; Descrio: Este programa aciona
ciona LED
;*********************************************************************************************************
#include "msp430.h"
init:
NAME
main
; module name
PUBLIC
main
ORG
DC16
0FFFEh
init
RSEG
RSEG
CSTACK
CODE
; pre-declaration
declaration of segment
; place program in 'CODE' segment
MOV
#SFE(CSTACK),
(CSTACK), SP
; set up stack
#WDTPW+WDTHOLD,&WDTCTL
#0xFF,P1DIR
; main program
; Stop watchdog timer
; programar todos os bits da porta 1
; como sada
main: NOP
MOV.W
BIS.B
repete
CALL
JMP
#PISCA_LED
repete
;*********************************************************************************************************
;Subrotina: PISCA_LED
;Descrio: Faz o led presente no BIT 0 da porta P1 piscar 3 vezes, em
;
um intervalo de tempo definido pela rotina TEMPO_PISCA
;Entrada:
;Sada:
;*********************************************************************************************************
;*********************************************************************************************************
PISCA_LED
pisca
PUSH
MOV.B
R4
#3,R4
; salvar contexto
; definir o nmero de piscadas do led
BIS.B
CALL
BIC.B
CALL
DEC.B
JNZ
POP
RET
#1,P1OUT
#TEMPO_PISCA
#1,P1OUT
#TEMPO_PISCA
R4
pisca
R4
; ligar o led
CEFET-MG
; desligar o led
; atualizar o contador
48
;*********************************************************************************************************
;Subrotina: TEMPO_PISCA
;Descrio:: Intervalo de tempo gasto pela CPU, para acionamento do led
;Entrada: ;Sada: 3+3+1+K1(1+K2
;Clculo de tempo:: 3+3+1+K1(1+K2(1+2)+1+2)+2+2+3
;*********************************************************************************************************
K1
K2
EQU
EQU
1
1
TEMPO_PISCA
; ciclos de instruo
PUSH
R5
;3
PUSH
R6
;3
MOV
#K1,R6
;1
cont_ext
MOV
#K2,R5
;1
cont_int
;1
DEC
R5
JNZ
cont_int
;2
DEC
R6
;1
JNZ
cont_ext
;2
POP
R6
;2
POP
R5
;2
RET
;3
;*********************************************************************************************************
;*********************************************************************************************************
END
9.2.
ATIVIDADES
Faa o fluxograma
ma da subrotina de tempo e calcule as constants K1 e K2
para que o led permanea aceso e apagado cerca de 1 segundo
segundo,
considerando a freqncia do oscilador 750KHz.
750KHz
CEFET-MG
49
CEFET-MG
50
CEFET-MG
51
Introduo
B.2
1) *ADC[.W]
*ADC.B
Sintaxe
ADC
ADC.B
Operao
dst + C dst
Emulao
ADDC
ADDC.B
dst
dst
ou ADC.W dst
#0,dst
#0,dst
Descrio
Bits de status
N:
Z:
C:
V:
Exemplo 1
Exemplo 2
CEFET-MG
52
Sintaxe
ADD
src, dst
ADD.B src, dst
Operao
Descrio
Bits de status
N:
Z:
C:
V:
Exemplo
3) ADDC[.W]
ADDC.B
Sintaxe
ADDC
ADDC.B
Operao
src, dst
ser,dst
Descrio
Bits de status
N:
Z:
C:
V:
Exemplo
CEFET-MG
53
4) AND[.W]
AND.B
Sintaxe
AND
AND.B
Operao
src, dst
src, dst
Descrio
Bits de status
N:
Z:
C:
V:
Exemplo
BIC
BIC.B
Operao
Descrio
Bits de status
No afetados
Exemplo1
Exemplo2
Zera os bits
P0OUT .equ
P0_0
P0_1
BIC.B
CEFET-MG
src, dst
src,dst
0 e 1 da porta P0.
011h ;definio do endereo da porta.
.equ 01h
.equ 02h
#P0_0+P0_1, &P0OUT ;zera os 2 LSBs de P0
54
BIS
BIS.B
src,dst
src,dst
Operao
Descrio
Bits de status
No afetados
Exemplo1
Exemplo2
BIT
Operao
Descrio
Bits de status
N:
Setado se o MSB do resultado estiver setado,
setado, resetado em
caso contrrio.
Z:
Setado se resultado zero, resetado caso contrrio.
C:
Setado se resultado no zero, resetado caso contrrio
V:
Resetado.
Exemplo1
Exemplo2
CEFET-MG
src, dst
55
BR
Operao
dst PC
Emulao
MOV
Descrio
Bits de status
No so afetados.
Exemplos
BR
BR
BR
BR
BR
BR
BR
dst
dst, PC
#EXEC
EXEC
&EXEC
9) CALL
Chamada de sub
sub-rotina
Sintaxe
CALL
Operao
SP - 2 SP
PC
@SP
dst
PC
dst
Descrio
Bits de status
No so afetados.
Exemplos
CALL
CALL
em
CALL
CALL
CALL
CALL
CALL
CEFET-MG
#EXEC
EXEC
;EXEC.
&EXEC
;chama o endereo contido no
;endereo absoluto EXEC.
R5
;chama o endereo contido em R5.
@R5
;chama o endereo contido na word
;apontada por R5.
@R5+
;idem anterior com ps incremento.
X(R5)
;chama o endereo contido no
;endereo apontado por R5 + X.
56
10) *CLR[.W]
CLR.B
Zera destino
Sintaxe
CLR
CLR.B
dst
dst
Operao
0 dst
Emulao
MOV
#0, dst
MOV.B #0, dst
Descrio
Bits de status
No so afetados.
Exemplos
CLR
CLR
CLR.B
CLRC
Operao
0 C
Emulao
BIC
Descrio
Bits de status
N:
Z:
C:
V:
Exemplo
#1,SR
No afetado
No afetado
Zerado
No afetado
CLRN
0 N
Emulao
BIC
Descrio
Bits de status
Exemplo
CEFET-MG
#4, SR
57
CLRZ
Operao
0 Z
Emulao
BIC
Descrio
Bits de status
N:
Z:
C:
V:
Exemplo
CLRZ
14) CMP[.W]
CMP.B
#2, SR
No afetado
Zerado
No afetado
No afetado
Sintaxe
CMP
src, dst
CMP.B src, dst
Operao
dst - src
Descrio
Bits de status
N:
Setado se resultado
resultado negativo, resetado se positivo.
Z:
Setado se resultado zero, resetado em caso contrrio.
C:
Setado se no houver vem um para o MSB, resetado
caso contrrio.
V:
Setado se houver um overflow aritmtico, resetado caso
contrrio.
Exemplo1
CEFET-MG
58
Exemplo2
L$1
MOV
comp.
CMP.B
JNZ
DEC
JNZ
#3, R5
BLOCO1-1(R5), BLOCO2-1(R5)
;so iguais?
ERRO
;se no v para ERRO
R5
;todas
s as palavras foram comp.
L$1
;se no volte para nova comp.
ERRO
15) *DADC[.W]
*DADC.B
Sintaxe
DADC
DADC.B
Operao
Emulao
DADD
DADD.B
Descrio
Bits de status
Setado se o MSB 1.
N:
Z:
Setado se o destino for 0, resetado em caso contrrio.
C:
Setado se o destino incrementa de 9999 para 0000,
Resetado em caso contrr
contrrio.
Setado se o destino incrementa de 99 para 00, resetado
em caso contrrio.
V:
Indefinido.
Exemplo1
Exemplo2
CEFET-MG
dst
dst
#0, dst
#0, dst
59
16) DADD[.W]
DADD.B
Sintaxe
DADD
DADD.B
Operao
Descrio
Bits de status
N:
Setado se o MSB 1, resetado se 0.
Z:
Setado se resultado zero, resetado em caso contrrio.
C:
Setado se resultado maior
ma
que 9999
Setado se resultado maior que 99
V:
Indefinido
Exemplo1
Exemplo2
17) *DEC[.W]
*DEC.B
src, dst
src, dst
Decrementa o destino
Sintaxe
DEC
DEC.B dst
Operao
dst - 1 dst
Emulao
SUB
#1, dst
SUB.B #1, dst
Descrio
Bits de status
N:
Setado se resultado negativo, resetado caso contrrio
Z:
Setado se resultado zero, resetado
resetado em caso contrrio
C:
Resetado se destino vai de 0000h para FFFFh, setado
caso contrrio.
V:
Setado se ocorrer um overflow aritmtico, resetado em
caso contrrio.
Seta se o valor inicial do destino for 8000h (word) ou
80h (byte), reseta
re
em caso contrrio.
CEFET-MG
dst
60
Exemplo
L$1
18) *DECD[.W]
*DECD.B
Sintaxe
DECD
DECD.B
dst
dst
Operao
dst - 2
Emulao
#2, dst
SUB
SUB.B #2, dst
Descrio
Bits de status
N:
Setado se resultado negativo, resetado se positivo
Z:
Setado se resultado zero, resetado caso contrrio
C:
Resetado se destino vai de 0000h para FFFFh, setado
em caso contrrio.
V:
Setado se ocorrer um overflow aritmtico, resetado caso
contrrio.
ntrrio.
Seta se o valor inicial do destino for 8001h ou 8000h em
operaes de word, e 80h ou 81h em operaes de byte, reseta
caso contrrio.
dst
Exemplo
DECD
19) *DINT
Sintaxe
DINT
Operao
0 GIE
Emulao
BIC
#8, SR
Descrio
Bits de status
Bits de modo
CEFET-MG
61
Exemplo
EINT
Operao
1 GIE
Emulao
BIS
Descrio
Bits de status
No afetados
Bits de modo
Exemplo
Idem anterior.
21) *INC[.W]
*INC.B
#8, SR
Incrementa destino
Sintaxe
INC
INC.B
Operao
dst + 1 dst
Emulao
ADD
Descrio
Bits de status
N:
Setado se resultado negativo, resetado se positivo
Z:
Setado se resultado zero, resetado em caso contrrio
C:
Setado se destino vai de FFFFh para 0000h (word), ou
FFh para 00h (byte), resetado em caso contrrio.
V:
Setado se ocorrer um overflow aritmtico, resetado
caso contrrio. Seta se o valor inicial do destino for
7FFFh (Word), e 7Fh (byte), reseta em caso contrrio.
Exemplo
CEFET-MG
dst
dst
#1, dst
62
22) *INCD[.W]
*INCD.B
Sintaxe
INCD
INCD.B
dst
dst
Operao
dst + 2 dst
Emulao
#2, dst
ADD
ADD.B #2, dst
Descrio
Bits de status
N:
Z:
C:
FFh
V:
Exemplo1
Exemplo2
Inverte o destino
23) *INV[.W]
*INV.B
Sintaxe
INV
INV.B
dst
dst
Operao
Emulao
XOR
XOR.B
Descrio
Bits de status
N:
Z:
C:
V:
Exemplo
CEFET-MG
#0FFFFh, dst
#0FFh, dst
63
24) JC ou JHS
Sintaxe
JC
Operao
Se C = 1: PC + 2 x offset PC
Se C = 0: executa a instruo seguinte
Descrio
Bits de status
No afetados.
Exemplo
rtulo ou JHS
rtulo
JEQ rtulo ou JZ
rtulo
Operao
Se Z = 1: PC + 2 x offset PC
Se Z = 0: executa a instruo seguinte
Descrio
Bits de status
No afetados.
Exemplo
26) JGE
Sintaxe
JGE
Operao
rtulo
Descrio
Bits de status
No afetados.
CEFET-MG
64
Exemplo
27) JL
Sintaxe
JL
Operao
Descrio
Bits de status
No afetados.
Exemplo
Quando o contedo
contedo de R6 menor que o contedo da memria
apontada por R7, o programa salta para EDE.
CMP
@R7, R6
;R6 < (R7) ?, nmeros sinalizados.
JL
EDE
;se sim, v p/ EDE
.....
;se no, continue.
28) JMP
rtulo
Jump incondicional
rtulo
Sintaxe
JMP
Operao
PC + 2 x offset PC
Descrio
Bits de status
No afetados.
Sugesto
CEFET-MG
65
29) JN
Jump se negativo
Sintaxe
JN
Operao
Descrio
Bits de status
No afetados.
Exemplo
L$1
rtulo
Jump se no carry
ca
ou jump se menor (lower)
rtulo ou JLO
rtulo
Sintaxe
JNC
Operao
Descrio
Bits de status
No afetados
Exemplo
ERRO
CONT
CEFET-MG
66
Sintaxe
JNE
Operao
Descrio
Bits de status
No afetados.
Exemplo
32) MOV[.W]
MOV.B
rtulo ou JNZ
rtulo
Sintaxe
MOV
src, dst
MOV.B src, dst
Operao
src dst
Descrio
Bits de status
No afetado
Exemplo
CEFET-MG
67
33) *NOP
No operao
Sintaxe
NOP
Operao
Nenhuma
Emulao
MOV
Descrio
Bits de status
Nota
No afetados
Outras instrues podem emular a no operao usando
diferentes nmeros de ciclos de clock e tamanhos de cdigos:
MOV
0(R4), 0(R4)
;6 ciclos, 3 words
MOV
@R4, 0(R4) ;5 ciclos, 2 words
BIC
#0, EDE(R4)
;4 ciclos, 2 words
JMP
$+2
;2 ciclos, 1 word
BIC
#0, R5
;1 ciclo , 1 word
34) *POP[.W]
*POP.B
#0, #0
Sintaxe
POP
Operao
@SP dst
SP + 2 SP
Emulao
MOV
@SP+, dst
MOV.B @SP+, dst
Descrio
Bits de status
No afetados.
Exemplo
POP
POP
Nota
CEFET-MG
dst ou POP.B
R7
SR
dst
;restaura R7
;restaura o registro de status
68
35) PUSH[.W]
PUSH.B
Sintaxe
PUSH
Operao
SP 2 SP
Src @SP
Descrio
Bits de status
No afetados
Exemplo
PUSH
PUSH
Nota
36) *RET
src ou PUSH.B
SR
R7
src
;salva SR na pilha
;salva R7 na pilha
Retorno de sub-rotina
rotina
Sintaxe
RET
Operao
@SP PC
SP + 2 PC
Emulao
MOV
Descrio
Bits de status
No afetado.
37) RETI
@SP+, PC
Retorno de interrupo
Sintaxe
RETI
Operao
@SP
SP +
@SP
SP +
Descrio
Bits de status
Bits de modo
CEFET-MG
SR
2 SP
PC
2 SP
69
38) *RLA[.W]
*RLA.B
Sintaxe
RLA
dst ou RLA.B
dst
Operao
Emulao
ADD
Descrio
dst, dst
Bits de status
N:
Z:
C:
V:
Exemplo
Multiplica R7 por 4
RLA
R7
RLA
R7
Nota
39) *RLC[.W]
*RLC.B
Sintaxe
Operao
Emulao
RLC
dst ou RLC.B
dst
C MSB MSB-1 .... LSB+1 LSB C
ADDC
dst, dst
Descrio
Bits de status
N:
Z:
C:
V:
CEFET-MG
70
Exemplo
Nota
40) RRA[.W]
RRA.B
Sintaxe
RRA
dst ou RRA.B
dst
Operao
Bits de status
N:
Z:
C:
V:
Exemplo
O contedo
PUSH
RRA
ADD
RRA
41) RRC[.W]
RRC.B
Sintaxe
RRC
dst ou RRC.B
dst
Operao
Descrio
Bits de status
N:
Z:
C:
V:
CEFET-MG
Exemplo
42) *SBC[.W]
*SBC.B
Sintaxe
SBC
Operao
Emulao
SUBC
SUBC.B
dst ou SBC.B
dst
#0, dst
#0, dst
Descrio
Bits de status
N:
Setado se resultado negativo, resetado se positivo
Z:
Setado se resultado zero, resetado em caso contrrio
C:
Resetado se dst
dst foi decrementado de 0000h p/ 0FFFFh
ou de 00h para 0FFh, setado em caso contrrio
V:
Setado se inicialmente C = 0 e dst = 08000h
Setado se inicialmente C = 0 e dst = 080h
Um contador de 16 bits apontado por R13 subtrado de outro
contador de 32 bits apontado por R12.
SUB
@R13, 0(R12)
;subtrai os LSDs
SBC
2(R12)
;subtrai o carry do MSD
Exemplo
Nota
SETC
Operao
1 C
Emulao
BIS
Descrio
Bits de status
N:
Z:
C:
V:
CEFET-MG
#1, SR
No afetado
No afetado
Setado
No afetado
72
Exemplo
SETN
Operao
1 N
Emulao
BIS
Descrio
Bits de status
N:
Z:
C:
V:
#4, SR
Setado
No afetado
No afetado
No afetad
afetado
SETZ
Operao
1 Z
Emulao
Descrio
BIS
#2, SR
O bit de zero do registro de status setado
Bits de status
N:
Z:
C:
V:
CEFET-MG
No afetado
Setado
No afetado
No afetado
73
46) SUB[.W]
SUB.B
Sintaxe
SUB
src, dst
Operao
Descrio
Bits de status
N:
Setado se resultado negativo, resetado se positivo
Z:
Setado se resultado zero, resetado em caso contrrio
C:
Setado se h um carry do MSB do resultado,
resultado, resetado
caso contrrio.
Setado se no borrow, resetado se borrow
V:
Setado se ocorrer um overflow aritmtico, resetado em
caso contrrio.
Exemplo
Nota
Carry
0
1
SUBC
SUBC.B
Operao
Descrio
Bits de status
Exemplo
Nota
CEFET-MG
Carry
0
1
74
48) SWPB
Sintaxe
SWPB
Operao
Bits 15 a 8 bits 7 a 0
dst
Descrio
Bits de status
N:
Z:
C:
V:
Exemplo
MOV
R7
SWPB
49) SXT
No
No
No
No
afetado
afetado
afetado
afetado
#040BFh, R7
R7
Estende sinal
Sintaxe
SXT
dst
Operao
Bit 7 bit 8 a 15
Descrio
Bits de status
CEFET-MG
N:
Z:
C:
V:
75
Exemplo
MOV.B
SXT
ADD
&TCDAT, R7
;TCDAT = 085h: ...... 1000 0101
R
R7
;R7 = 0FF85h:1111 1111 1000 0101
R7, R6
;soma numero de 16 bits.
Testa destino
50) *TST[.W]
*TST.B
Sintaxe
TST
dst ou TST.B
dst
Operao
Emulao
CMP
#0,dst ou CMP.B
#0,dst
Descrio
Bits de status
N:
Z:
C:
V:
Exemplo
R7POS
R7NEG
R7ZERO
51) XOR[.W]
XOR.B
Sintaxe
XOR
src,dst ou XOR.B
Operao
Descrio
Bits de status
N:
Z:
C:
V:
Exemplo
CEFET-MG
76
Setado
Setado
Setado
Setado
src,dst
REFERNCIAS BIBLIOGRFICAS
1
Texas Instrumentos.
os. MSP430x1xx Family: Users Guide 2003 424p.
CEFET-MG
77