É
fato que a grande maioria dos programadores não gosta de programar
microcontroladores em assembly. Contudo, o conhecimento de como as coisas
funcionam nesta linguagem torna possível a otimização de código, solução de
problemas e o desenvolvimento de programas que seriam muito difíceis, se não impossíveis,
de serem realizados com linguagens de alto nível.
Neste
artigo apresento um programa feito em assembly para fazer o led vermelho da
LaunchPad piscar. Apesar de ser bastante simples, este exemplo tem como
objetivo mostrar os conceitos básicos para a criação de projetos em assembly no
CCS v5.2 para os microcontroladores da linha MSP430.
Criando um projeto no
CCS
Para
criar um projeto basta ir ao menu File→New→CCS
Project. Feito isto, aparecera a janela New
CCS Project (Figura 1), onde deve-se colocar as informações básicas do
projeto.
Figura
1: Configuração de um projeto em assembly.
O
diretório onde o CCS criará os arquivos pode ser definido através da opção Location, porém, prefiro deixá-los no
diretório padrão, que é definido na primeira vez que o CCS é executado.
O
próximo passo é selecionar a família e o modelo do microcontrolador. Eu uso o
MSP430G2553, mas o código pode ser adaptado para qualquer outro da linha
MSP430G sem muitas modificações.
Para
utilizar a programação em assembly, é necessário selecionar o template Empty Assembly-only Project, pois os
outros templates são para programação em C ou utilizando o Grace.
Basta
então clicar em Finish e o projeto
será criado.
Código do Pisca-Led
Para
programar o microcontrolador e necessário digitar o código em um arquivo com a
extensão .asm, porém, o CCS não cria este arquivo automaticamente, sendo dever
do programador adicioná-lo ao projeto. Então, clique com o botão direito do
mouse em cima do projeto “PiscaLed”
no Poject Explorer e vá em New→File. Em seguida, de um nome ao
arquivo a ser criado, lembrando que este deve conter .asm no final do nome. No
meu caso, o nome utilizado foi main.asm.
Com
o arquivo aberto no editor, copie e cole o código abaixo.
*********************************************************************************
* Pisca-Led
Para a LaunchPad
*
* Descrição:
Faz com que o led vermelho da placa pisque.
*
* Compilado
com: Code Composer Studio v5.2;
* Microcontrolador:
MSP430G2553;
*
* David
Krepsky - 23/06/2012
*********************************************************************************
;--------------------------------------------------------------------------------
; Includes
;--------------------------------------------------------------------------------
.cdecls
C,"msp430.h"
;--------------------------------------------------------------------------------
; Definições
;--------------------------------------------------------------------------------
RLED .equ BIT0 ; Led vermelho
;--------------------------------------------------------------------------------
; Rotina
Principal
;--------------------------------------------------------------------------------
.text
Main:
mov.w #WDTPW + WDTHOLD,
&WDTCTL ; Para o watchdog timer.
bis.b #RLED,
&P1DIR ; Configura o pino do led vermelho para saída.
MAINLOOP:
mov #50000,
R15 ; Delay
D_1 dec.w R15
jnz D_1
xor.b #RLED,
&P1OUT ; Comuta o estado do led vermelho.
jmp MAINLOOP ; Volta ao laço principal.
;--------------------------------------------------------------------------------
; Vetores de
Interrupção
;--------------------------------------------------------------------------------
.sect ".reset" ; MSP430 RESET Vector
.retain
.short Main
;--------------------------------------------------------------------------------
; Fim
;--------------------------------------------------------------------------------
.end
Gravando e executando
o programa
Após
conectar a LaunchPad ao computador, clique no menu Run→Debug (ou pressione a tecla F11). Isto fará com que o código
seja compilado e o firmware gravado no microcontrolador. Caso o CCS não
reconheça a placa, desconecte e conecte novamente a LaunchPad ao computador e
clique na opção Debug novamente.
Se
tudo deu certo até aqui, o CCS entrará na perspectiva de debug. Para executar o
código na placa clique no botão Resume
(ou F8). O led vermelho da placa começará a piscar.
Referências
·
MSP430 Assembly Language Tools v4.1 (SLAU131G).
·
MSP430x2xx Family Users Guild (SLAU144I).
Olá como vc determinou a frequencia de oscilação do LED.
ResponderExcluirTem 50000. Como eu faço pra saber então quanto tempo fica ligado e quanto tempo fica desligado