Giter Site home page Giter Site logo

danielsrs / timer_assembly Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 45 KB

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

Makefile 0.65% Assembly 99.35%
arm assembly gpio lcd-driver lcd16x2 raspberry-pi-zero-w timer-application

timer_assembly's Introduction

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

timer_assembly's People

Contributors

alexandrecaribe avatar danielsrs avatar joanderson90 avatar

Stargazers

 avatar

Watchers

 avatar

timer_assembly's Issues

Roadmap

  • Makefile
  • Readme
  • Contador
  • Biblioteca
    • Setup
    • Limpar display
    • Escrever caractere
    • Posicionar cursor (linha e coluna)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.