Este tipo de IDE
possibilita que se direcione e gere arquivos com designações
especificadas pelo utilizador. É bom ter o domínio deste processo
para não se enganar e cometer erros fúteis.
Ao abrir a IDE Atmel
Studio 6.1 o texto inserido no campo denominado de “Name” será o
nome da aplicação, o texto inserido no campo denominado de
“Solution name” será o nome do projeto este gera um novo
diretório e no campo denominado “Location” será o caminho onde
o diretório será gerado e os arquivos serão gravados.
Name:
AplicacaoAssemblador
Location:
C:\Users\UTL\Documents\Atmel Studio\6.1
Solution name:
EstudoDoAssembly1
No caminho
“C:\Users\UTL\Documents\Atmel Studio\6.1\EstudoDoAssembly1” será
criado o arquivo do projeto nomeado de “EstudoDoAssembly1” com
extensão atsln.
No caminho
“C:\Users\UTL\Documents\Atmel
Studio\6.1\EstudoDoAssembly1\AplicacaoAssemblador” serão gerados
dois arquivos nomeados de “AplicacaoAssmeblador” com extensões
asm e asmproj.
Na versão 6.1 da IDE
padrão não é necessário inserir a diretriz: .INCLUDE "m32def.inc"
na linha de código, caso seja inserida este código o compilador
indicará erros.
Se necessário e com base
nestes procedimentos geraremos novas aplicações mantendo o mesmo
diretório.
Linguagem:
assembly
Tecnologia: 8
bits
uC: Atmega 32A
Placa desenvolvimento: raposa de fogo
IDE: Atmel Studio 6.1
S.O.: Windows
Gravador: AVRISP XPII
Pré requisitos
Computador pessoal
S.O.
IDE
Placa de desenvolvimento
Gravador
Objetivo
Apresentar o leitor com
as tecnologias no desenvolvimento de soluções em uC de 8 bits.
Justificativa
Neste tipo de
desenvolvimento de solução envolve inúmeras tecnologias e
conhecimento multidisciplinar.
Iniciando na IDE
Uma grande parte de nosso
tempo passaremos envolvidos com a IDE Atmel Studio 6.1 inserindo
códigos logicamente planejado para cumprir o que queremos.
Este tipo de IDE
possibilita que se direcione e gere arquivos com designações
especificadas pelo utilizador. É bom ter o domínio deste processo
para não se enganar e cometer erros fúteis.
Ao abrir a IDE Atmel
Studio 6.1 o texto inserido no campo denominado de “Name” será o
nome da aplicação, o texto inserido no campo denominado de
“Solution name” será o nome do projeto este gera um novo
diretório e no campo denominado “Location” será o caminho onde
o diretório será gerado e os arquivos serão gravados.
Name:
AplicacaoAssemblador
Location:
C:\Users\UTL\Documents\Atmel Studio\6.1
Solution name:
EstudoDoAssembly1
No caminho
“C:\Users\UTL\Documents\Atmel Studio\6.1\EstudoDoAssembly1” será
criado o arquivo do projeto nomeado de “EstudoDoAssembly1” com
extensão atsln.
No caminho
“C:\Users\UTL\Documents\Atmel
Studio\6.1\EstudoDoAssembly1\AplicacaoAssemblador” serão gerados
dois arquivos nomeados de “AplicacaoAssmeblador” com extensões
asm e asmproj.
Na versão 6.1 da IDE
padrão não é necessário inserir a diretriz: .INCLUDE "m32def.inc"
na linha de código, caso seja inserida este código o compilador
indicará erros.
Se necessário e com base
nestes procedimentos geraremos novas aplicações mantendo o mesmo
diretório.
Código básico
Em função da
complexidade da tecnologia do dispositivo e dos requisitos da IDE
somos obrigados a inserir algumas linhas de código de configuração
do ambiente. Temos dez campos fixos os quais usaremos códigos padrão
nestas áreas arbitrariamente definidos, são eles:
Datação
Versão
Valores fixos dos
endereços de inicialização
Segmento de dados
Dados variáveis
Segmento de código
Preparação da memória
de dados
Laço de infinito
Segmento de dados
persistentes
Dados persistentes
/*
* AplicacaoAssemblador.asm
*
* Created: 17/12/2014 12:52:11
* Author: Ubiratã Uaatsim Itzá I
*/
;****************************
***************************************************
.MESSAGE "*****************************************"
.MESSAGE "* Dato: " __DATE__ "/ Horo: " __TIME__".....*"
.MESSAGE "*****************************************"
.MESSAGE "* Versão: 1.0.0 *"
.MESSAGE "*****************************************"
;*******************************************************************************
;
;*******************************************************************************
.MESSAGE "valores fixos dos endereços de inicialização."
.EQU VETOR_INT = 0x0000 ; posição zero da flash *
.EQU APLICATIVO_INI = SPMRaddr + 4 ; último vetor mais quatro *
;*******************************************************************************
;
;*******************************************************************************
.MESSAGE "Variáveis alocadas."
;*******************************************************************************
;* RAM *
;* reg 0x00 - 0x1f *
;* e/s 0x20 - 0x5f *
;* sram 0x60 - 0xdf *
;*******************************************************************************
.DSEG ;de 0x60 a 0xDF (128 bytes) ; área de dados *
;*******************************************************************************
.ORG SRAM_START
;*******************************************************************************
; variáveis ligadas ao HW
v_PORTA_C: .BYTE 1
v_DDR_C: .BYTE 1
v_mcucr: .BYTE 1
v_wd: .BYTE 1
v_mcucsr: .BYTE 1
v_gicr: .BYTE 1
v_CURSOR: .BYTE 1
;*******************************************************************************
;
;*******************************************************************************
;* VETORES DE INTERRUPÇÕES *
;*******************************************************************************
.MESSAGE "VETOR da interrupção instalado."
.CSEG
.ORG VETOR_INT
.MESSAGE "Ativando o VETOR da interrupção de reinicio"
.ORG 0x0000
rjmp cefo ; reinicio
; aqui demais códigos de interrupção iniciam aqui.
;*******************************************************************************
;
;*******************************************************************************
.MESSAGE "Rotina principal ativada."
;*******************************************************************************
.ORG APLICATIVO_INI
;*******************************************************************************
cefo: cli ; pára as interrupções.
ldi r16,high(RAMEND)
out SPH,r16 ; posição inicial, final da SRAM.
ldi r16,low(RAMEND)
out SPL,r16 ; define o apontador de programa.
;------------------------------------------------------------------------------
; chamadas de rotinas
;------------------------------------------------------------------------------
ligilo_senfine: wdr ; limpa o cão de guarda.
nop
sleep ; dorme.
nop
nop
rjmp ligilo_senfine ; laço infinitamente.
;*******************************************************************************
;
;*******************************************************************************
.ESEG ;de 0x000 à 0x03ff ; área de dados *
;*******************************************************************************
.ORG 0x000
;*******************************************************************************
v_eeprom1: .BYTE 1
;*******************************************************************************
.