Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
PROJETO FINAL
VITRIA, ES
2016
ANDR PEREIRA ROZETTI
HENRIQUE HOLZ CASTRO
RENATO SANTOS PEREIRA
PROJETO FINAL
VITRIA, ES
18 DE FEVEREIRO DE 2016
SUMRIO
OBJETIVO...............................................................................................................2
METODOLOGIA.......................................................................................................3
CONSIDERAES FINAIS.....................................................................................4
ANEXOS...................................................................................................................5
1
OBJETIVO
Este trabalho tem por objetivo a implementao do controle de um porto eletrnico,
utilizando como ambientes de simulao e programao os softwares ARMSim# e
Notepad, respectivamente.
O cdigo gerado em linguagem Assembly referente ao programa est no anexo.
2
METODOLOGIA:
3
b. O boto direito simula uma chave fim-de-curso. Seu acionamento
obedece aos seguintes critrios:
i. Caso o porto esteja abrindo, exibida a letra O (open) no
display de 7 segmentos, e a mensagem Porto aberto
aparece no LCD.
ii. Caso o porto esteja fechando, exibida a letra C (closed) no
display de 7 segmentos, e a mensagem Porto fechado
aparece no LCD.
iii. Somente se o porto estiver abrindo ou fechando o fim de curso
ativado. Caso o porto esteja em algum outro estado, o
acionamento invlido.
3. Botes azuis:
a. O boto 6, simbolizado no plugin por 1.2, reseta o programa,
devolvendo o porto ao estado descrito no tpico 1.
b. O boto 7, simbolizado no plugin por 1.3, termina o programa (swi
0x11) e desliga a placa, apagando os displays LCD e de 7 segmentos,
e os LEDs, caso estejam acesos. Na prtica, esta funo til caso
haja alguma situao adversa na alimentao do motor ou da placa
controladora (alavanca de emergncia).
4
CONSIDERAES FINAIS
ANEXOS:
.global _start
.text
5
@Display 8 Segmentos
@LED's
.equ BOTH_LED, 0x03
.equ NO_LED, 0x00
.equ SWI_SETLED, 0x201 @LEDs ligado/desligado (on/off)
@Botes
.equ SWI_CheckBlack, 0x202 @verifica botao preto acionado
.equ SWI_CheckBlue, 0x203 @verifica se algum boto azul
foi pressionado
@LCD
.equ SWI_DisplayOnScreen, 0x204
.equ SWI_ClearScreen, 0x206
.equ SWI_ClearLine, 0x208
@Timer
.equ SWI_GetTicks, 0x6d
_start:
6
reset:
mov r0,#SEG_A|SEG_B|SEG_E|SEG_F|SEG_G @letra P
swi 0x200 @mostra no display de 8 segmentos a letra "P"
mov r0,#NO_LED
swi 0x201 @mostra os LEDS desligados(off)
swi SWI_ClearScreen
mov r0,#0
mov r1,#0
ldr r2,=Message4 @escreve no LCD
swi SWI_DisplayOnScreen
ldr r3,=5000; @Temporizacao
mov r4, #1;
mov r6, #0;
mov r7, #1;
mov r8, #0;
mov r9, #0;
mov r10, #1;
loopbuttonblue:
swi SWI_CheckBlue @ verifica se um dos botoes azuis foi
pressionado
cmp r0,#0x80 @botao (1.3)
beq fimdoprograma @ir para o label "fimdoprograma"
cmp r0,#0x40 @botao (1.2)
beq reset @reseta o porto
bal loopbuttonblack
7
beq botaoesquerdo
cmp r0,#0x01 @botao da direita acionado
beq botaodireito
bal loopbuttonblue @ir para o label "loopbottonblue" e nao
termina o programa
8
mov r6,#1
mov r9,#1
bal loopbuttonblue
9
mov r0,#0
mov r1,#0
mov r10,#1 @desabilita o fim de curso
ldr r2,=Message5 @escreve no LCD
swi SWI_DisplayOnScreen
mov r6,#2
bal WaitLoop
10
mov r1,#0
ldr r2,=Message3 @escreve no LCD
swi SWI_DisplayOnScreen
add r8,r8,r7
mov r6,#2
mov r10,#1 @desabilita o fim de curso
bal loopbuttonblue
WaitLoop:
ldr r4,=0x00007FFF @mask for 15-bit timer
SWI SWI_GetTicks @Get start time
and r1,r0,r4 @adjusted time to 15-bit
Wloop:
@Checagem dos botes (Botes interrompem a temporizao)
11
swi SWI_CheckBlue @ verifica se um dos botoes azuis foi
pressionado
cmp r0,#0x80 @botao (1.3)
beq fimdoprograma @ir para o label "fimdoprograma"
cmp r0,#0x40 @botao (1.2)
beq reset @reseta o porto
bal loopbuttonblack2
loopbuttonblack2: @aciona os leds e o leitor de 7
segmentos
swi SWI_CheckBlack;
cmp r0,#0x02 @botao da esquerda acionado
beq botaoesquerdo
@Temporizacao
SWI SWI_GetTicks @Get current time
and r2,r0,r4 @adjusted time to 15-bit
cmp r2,r1
blt Roll @rolled above 15 bits
sub r5,r2,r1 @compute easy elapsed time
bal CmpLoop
Roll: sub r5,r4,r1 @compute rolled elapsed time
add r5,r5,r2
CmpLoop: cmp r5,r3 @is elapsed time < delay?
blt Wloop @Continue with delay
bal ActOnLeftBlack2
fimdoprograma:
mov r0,#0
swi 0x200 @apaga o display de 7 segmentos
mov r0,#NO_LED
swi 0x201 @mostra os LEDS desligados (off)
12
swi SWI_ClearScreen
mov r4, #1;
mov r6, #0;
mov r7, #1;
mov r8, #0;
mov r9, #0;
swi 0x11
.data
.align
13