Autor Tema: (Ayuda) Lenguaje assembler  (Leído 358 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Niqo99

  • PIC10
  • *
  • Mensajes: 1
(Ayuda) Lenguaje assembler
« en: 09 de Noviembre de 2019, 19:15:15 »
Hola buenas tardes, con mi grupo de la facultad tenemos un trabajo en assembler y estamos un poco perdidos, con que alguien nos guie un poco nosotros ya vamos a poder arrancarlo. La consigna es la siguiente:

Realizar un programa que permita sumar dos números hexadecimales de tres dígitos en el tablero de acuerdo con la siguiente secuencia:
*Se escribe un número en los displays. Con el botón G1 se incrementa el número del tablero y con el botón G2 se resta. 
*Se presiona el botón M para permitir el ingreso del segundo número.
*Se escribe el segundo número. Con el botón G1 se incrementa el número del tablero y con el botón G2 se resta. 
Se presiona el botón M y se muestra el resultado.
Si se presiona el botón R se comienza con el programa nuevamente.
Si en alguna parte de la secuencia de corta la alimentación, se deberá partir desde ese lugar cuando se conecte nuevamente.


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7578
Re:(Ayuda) Lenguaje assembler
« Respuesta #1 en: 09 de Noviembre de 2019, 21:54:15 »
Separado lo que tenes que hacer y luego lo juntas a todo:

Citar
*Se escribe un número en los displays

Rutina que escriba en los displays, lo podes hacer con un Timer y su interrupcion asi no tenes problemas con los botones. Y facilita la programacion.

Citar
*Se presiona el botón M para permitir el ingreso del segundo número.

Un loop de 2 vueltas, que permita grabar los 2 valores..
Antes del loop borras todo (y/o recuperas de la EEPROM), estando en el loop M hace que avance a la segunda vuelta y R que salga, de esa forma borra todo (ya que al comienzo eso haciamos)

Citar
Si en alguna parte de la secuencia de corta la alimentación, se deberá partir desde ese lugar cuando se conecte nuevamente.
El mas complejo debido a que depende que es lo que quiera.

Si solo desea guardar el valor cuando presionaste la M, entonces apenas se presione la M, guarda en EEPROM (si es que posee)
Si se desea guardar el valor que vas cambiando, entonces es un poco mas complicado.. Debido a que grabar muchas veces la EEPROM es impractico (ya que tiene limite de grabacion) Asi que es necesario buscar otra alternativa, ya sea enviar el PIC a dormir al detectarse la falta de alimentacion + capacitor de 1F para el PIC, o al detectar el corte de alimentacion grabar en la EEPROM lo mas rapido posible, esto exige un tiempito con tension, por lo que vas a necesitar cambiar todas los pines a entrada + un capacitor y tal ves un diodo que haga que esa tension pueda ser mantenida hasta que grabe.

En caso de querer detectar la falta de alimentacion si tu PIC no posee un modulo para eso, podes usar el pin RB0 que tiene interrupcion por flanco.

Citar
Con el botón G1 se incrementa el número del tablero y con el botón G2 se resta.

Esto queda a criterio tuyo... Presionas 1 ves y aumenta, mantenes presionado y no pasa nada, o aumenta cada ves de a mas, etc.. Queda a tu decision.