SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: MiSiTo en Viernes 19 de Mayo de 2006, 13:08
-
Hola, quisiera saber algun metodo de, a través de software poder introducir digitos por un teclado y visualizarlos en los displays como si fuese una calculadora, el primer digito introducido en el display mas a la derecha, el segundo numero se ha de guardar en el 1º display, rotandose el que ta estaba una posicion a la izquierda y asi hasta introducir 4 numeros, son 4 displays.... la rutina del teclado y de sacar cualquier numero del teclado hacia un display me funciona, pero no se hacer tal rotacion...
les adjunto la parte del codigo k tengo ...
Muchas gracias y saludos...
-
Creo que una forma de hacerlo seria consultando los valores actuales del display, mientras tenga menos de 4 valores, obtenes el valor de cada uno y lo escribis en el anterior.
-
le entiendo, pero es que por mas que intento no consigo dar con la solucion, se que solo tengo q escribir en unos de los displays y a medida que vaya pulsando otro numero desplazar ese ultimo numero introducido hacia la izquierda hasta un maximo de 4 digitos, si pulso un quinto digito se sobreesquibiria sobre el primer display y asi sucesivamente, pongo una imagen de una placa que es donde pruebo mis codigos...
Gracias y saludos
-
Una cosa que se me ocurre es que intentes crear un par de funciones (get y set) que mediante el parametro que reciban (0-3) te devuelvan o establezcan el valor correspondiente.
De esta manera podria inicializar el display a un valor predeterminado al empezar y mediante un bucle cada vez que se inserte un valor:
A. Comprobar que sea menor al cuarto
B. Comprobar los tres primeros y mover los que sean necesarios
C. Insertar en el primer lugar el valor insertado
PD. ¿Eso es para poner una clave? Interesante cuanto menos ...
-
no, no es para una clave, en verda soy estudiande de ingenieria en telecomunicaciones, y este codigo me tiene trabado, forma parte de una practica que trata de hacer una especie de calculadora y vamos poco a poco implementando cada rutina, me falta esta, una que cada vez que pulse una tecla emita un sonido y otra que imprima la operacion... las funciones que mencionas no las conozco, yo pensaba en hacer una especie de contador y cada vez que pulse una tecla se decrementa y segun el valor d éste contado llamar a un display u a otro ... pero no se aun ... se que hacer rotar los numeros tiene que ser facil pero no cojo la idea ..
Gracias :)
-
las funciones que mencionas no las conozco, yo pensaba en hacer una especie de contador y cada vez que pulse una tecla se decrementa y segun el valor d éste contado llamar a un display u a otro ... pero no se aun ... se que hacer rotar los numeros tiene que ser facil pero no cojo la idea ..
Efectivamente no la conoces, las tenes que inventar :whistling: El planteamiento es ese y con la ayuda de estas funciones que tenes que escribir te tendria que resultar muy facil.
-
ok... yo ya lo terminé, pero al probarlo me sale el mismo numero que introduzco en los 4 displays y creo que el codigo está bien implementado .... lo dejo a continuacion..
saludos
-
ok... yo ya lo terminé, pero al probarlo me sale el mismo numero que introduzco en los 4 displays y creo que el codigo está bien implementado .... lo dejo a continuacion..
¿usas el mismo puerto para los 4 displays?
si usas un mismo puerto de salida para los 4 displays debes hacer una correcta conmutacion.
Si usas un banco de memoria para cada displays cada ves que se pulse una tecla rotas los contenidos de los bancos de memoria, asi tambien se rotaran los numeros en los displays.
-
si, utilizo el mismo puerto para los displays .. y la rotacion de memoria la hago asi:
ROTAR:
LDA CEN
STA MIL ;Centenas --> Millares
LDA DECE
STA CEN ;Decenas --> Centenas
LDA UND
STA DECE ;Unidades --> Decenas
RET
pero aun asi no me funciona ... y no veo el fallo pq si te fijas en el codigo, nada mas arrancar el programa y pulso una tecla, ésta llama a la rutina rotar que inicialmente tiene todos los valores a FF, aunque en el codigo no lo tengo, esto es:
MVI A,FFh
STA UND
STA DECE
STA CEN
STA MIL
pero al pulsar la primera tecla me saca por los 4 displays ese mismo numero... y si añades el juego de instrucciones anterior no deberia de pasar eso ... o eso creo si se analiza el codigo bien o yo no veo donde esta el fallo ... el caso es que no se que hacer ya...
saludos
-
segun este codigo:
DISPLAY:
LDA UND
ORI 00110000b
OUT PA
CALL RETARDO
LDA DECE
ORI 00100000b
OUT PA
CALL RETARDO
LDA CEN
ORI 00010000b
OUT PA
CALL RETARDO
LDA MIL
ORI 00000000b
OUT PA
RET
¿el ultimo digito el de las 'MIL' es el que se ve en los 4 displays?
Eso se puede deber a que la multiplexacion del puerto se hace solo cuando llamas a ''DISPLAY" pero esto deberias hacerlo el mayor tiempo posible o todo el tiempo para que tengas el efecto de ver 4 digitos en 4 displays con un solo puerto. Una forma de ver si este es el problema es que antes de conmutar el retardo que usas es notorio (de alrededor de un segundo) asi por lo menos deberias ver un digico en cada displays cada cierto tiempo pero no los 4 a las ves. Tambien se usa esta tecnica con microcontroladores como el pic16f84 para manejar varios displays, un ejemplo de esto lo tienes en:
http://www.pablin.com.ar/electron/circuito...tador/index.htm (http://www.pablin.com.ar/electron/circuito/mc/contador/index.htm)
-
el digito k se me ve en los cuarto displays es el primero que introduzco, es decir, como si sakara el dato de UND y lo mostrara por los displays .... cada vez k pulso un numero éste se ven en los 4 displays a la vez, en ningun momento hay distintos numeros en los displays ...:S
saludos.
-
otra pregunta.. que mas o menos tengo la idea de como realizarlo, me falta confirmacion por algun entendido ya que yo en esto soy bastante novato, como puedo hacer para que a través de un puerto de un 8255 lograr sacar un pitido por un altavoz cada vez que pulso una tecla, es decir, cada vez que pulse una tecla lograr un tono de un cuarto de segundo, cada tecla un tono distinto... no se si me he explicado ..
Gracias y saludos ;)