Skip to content

Aplicativo de temporização para um processador ARMV6L que exibe a contagem num display LCD 16x2 com timer e drive do display escritos em assembly

Notifications You must be signed in to change notification settings

DanielSRS/Timer_Assembly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 

Repository files navigation

Aplicativo de Temporização

GitHub Org's stars

O problema propõe desenvolver um aplicativo de temporização para um processador ARMV6L que apresente a contagem num display LCD 16x2, esse display exibirá o tempo em segundos que é pré-definido no código, além disso o app deve ser capaz de aceitar a entrada de 2 botões que tem como papel Start/Pause e Restart que reseta a contagem para o tempo pré-definido. Também é pedido que o código seja modelado pensando em funcionar como uma biblioteca para os problemas futuros, tendo como principais funçoes: 1- Escrever Carácter, 2- Limpar Display e 3- Posicionar cursor linha e coluna.

🔨 Compilar e executar

Assemblar um arquivo

  as -o lcd_main.o lcd_main.s

Linkar um objeto compilado ou arquivo compactado

  ld -o lcd_main lcd_main.o

Executar código

  ./lcd_main

Buildar Makefile

  cd src/
  make all

Executar Makefile

  cd src/
  make run

✔️ Softwares Utilizados

  • Linux

  • Nano

  • Visual Studio Code

  • GCC (GNU Compiler Collection)

  • Git

💻 Arquitetura do Computador

Sistema Operacional: Raspbian

Arquitetura: ARMV6L

Ordem de armazenamento de byte: Little Endian (menor para o MSB)

CPU: 1

VID: ARM

Modelo: 7

Nome do Modelo: ARM1176

📝 Instruções utilizadas

CMP reg,#val - compara o valor em reg com o número val

LDR reg,=val - coloca o número val no registrador chamado reg.

MOV reg,#val - coloca o número val no registrador chamado reg.

SVC cond - instrução causa uma exceção. Isso significa que o modo do processador muda para Supervisor, o CPSR é salvo no modo Supervisor SPSR e a execução ramifica para o vetor SVC.

ADDEQ reg, #val - Faz a adição somente se for igual

ADD reg,#val - adiciona o número val ao conteúdo do registro reg.

STR reg,[dest,#val] - armazena o número em reg no endereço dado por dest + val.

BIC reg1, reg - executa uma operação AND nos bits com os complementos dos bits correspondentes no valor de reg

ORR reg1, reg - executa operações OR bit a bit nos valores em reg

PUSH {reg1,reg2,...} - copia os registradores da lista reg1,reg2,... no topo da pilha. Apenas registradores de uso geral e lr podem ser enviados.

LSR dst,src,#val - desloca a representação binária do número em src para a direita por val, mas armazena o resultado em dst.

AND reg,#val - calcula o booleano e a função do número em reg com val.

POP {reg1,reg2,...} - copia os valores do topo da pilha para a lista de registradores reg1,reg2,.... Somente registradores de uso geral e pc podem ser exibidos.

LSL reg,#val - desloca a representação binária do número em reg por val lugares para a esquerda.

BNE cond - muda o ramo quando resultado da comparação é não igual

B cond - muda o ramo para cond

SUB reg,#val - subtrai o número val do valor em reg.

BEQ cond - muda o ramo quando resultado da comparação é igual

BLT cond - muda o ramo quando resultado da comparação é menor que

BGT cond - muda o ramo quando resultado da comparação é maior que

Testes

1- Contagem do valor pré-definido até 0 Resultado: O Aplicativo funciona perfeitamente e ao chegar ao 0 reseta para o estado de espera do botão Start/Pause

2- Usando Reset Resultado: O Aplicativo inicia a contagem e ao pressionar o botão Reset age como o esperado chegando no estado de espera do botão Start/Pause

3- Usando Pause/Start Resultado: O Aplicativo inicia a contagem e ao pressionar o botão Pause/Start ele pausa a contagem e ao clicar novamente retorna a contagem, no entanto, em alguns momentos a depender da velocidade do clique a função pode não funcionar perfeitamente.

4- Usando Reset enquanto pausado Resultado: O Aplicativo faz a contagem, pausa e ao tentar resetar funciona exatamente como o programado, permanecendo no estado de pause.

5- Usando Start/Pause e Reset ao mesmo tempo Resultado: Ao pressionar os 2 botões ao mesmo tempo ele reseta como esperado pelo programa, pois o reset tem prioridade.

Autores


Alexandre Silva Caribé

Daniel Santa Rosa Santos

Joanderson Santos

About

Aplicativo de temporização para um processador ARMV6L que exibe a contagem num display LCD 16x2 com timer e drive do display escritos em assembly

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy