TODOPIC

Misceláneas - Interés General => Off Topic => Mensaje iniciado por: Enigma en 09 de Enero de 2008, 15:38:42

Título: Simulación
Publicado por: Enigma en 09 de Enero de 2008, 15:38:42
Hola chamos, como están.... Espero que muy bien :-/.... Chamos necesito una segunda de ustedes...

Necesito que por favor, uno o varios de ustedes me simule este programa y me diga como se le comportan los displyas.... Presionen 4 teclas del teclado y diganme si se muestra en el displays esas cuatro letras!!!.... aquí les dejo el .C y el DSn!!!

Por fa haganme ese favor, gracias!!!

Atte: Enigma... La llanerita de Guayana :-)
Título: Re: Simulación
Publicado por: Rulo en 09 de Enero de 2008, 17:47:10


     La tecla precionada es mostrada en los 4 displays, La tecla No. 2 Nunca se mostro.

             Saludos.  :-)
Título: Re: Simulación
Publicado por: sander en 09 de Enero de 2008, 19:38:23
Yo tambien vi lo mismo con el teclado , lo demas no lo probe
Título: Re: Simulación
Publicado por: Enigma en 09 de Enero de 2008, 21:14:57
Rayos!!! :? Se ve sólo un número??? no se ven las 4 ultimas teclas presionadas???..., La idea era que se vieran las últimas 4 teclas a la vez :?!!! rayos...
Me temia que dijeran lo del dos!!! a mi tampco se me ve, y pense que era un error de mi proteus o el compilador, como últimamente ha presentado tantos errrores!!!  Pero veo que por está bien está actuando bien!!!

Rayos!!! que le pasa a ese 2... :?

Gracias por la segunda muchachos!!! Son los mejores!

Atte: Enigma... La llanerita de Guayana :?
Título: Re: Simulación
Publicado por: jfh900 en 09 de Enero de 2008, 21:58:46
Hola Enigma.

Si me permites te voy a hacer unos pequeños comentarios a tu código para que se entienda mejor ya que resulta excesivamente largo y alguno se cansará de leerlo, ademas yo soy un poco purista en esto del "C" y me gusta retocar los programas para que sean más claros (recuerda esto no es ASM  :D :D :D :D).

Vayamos al grano:

Vamos a modificar el siguiente código para que quede más claro y sea más eficiente:

Código: [Seleccionar]
         resul=0x3F;                               // Guardo la O
         mostrar();                                // Mando la O al display
         resul=0x7C;                               // Guardo la C
         mostrar();                                // Mando la C al display
         resul=0x40;                               // Guardo el guión (-)
         mostrar();                                // Mando el guión al display
         resul=0x4F;                               // Guardo el 3
         mostrar();

Lo primero que se observa es que no pasas el valor a mostrar a la función como un parámetro, si no mediante una variable global, esto es interesante si tienes que modificar el valor dentro de la función, pero claro esta en una función de visualización esto no es así. Como deberíamos declarar la función, así:

Código: [Seleccionar]
void mostrar(char _valor)

Dentro de la función ya no utilizaremos "resul", si no "_valor".

con esta modificación el código queda así:

Código: [Seleccionar]
         mostrar(0x3F);                                // Mando la O al display
         mostrar(0x7C);                                // Mando la C al display
         mostrar(0x40);                                // Mando el guión al display
         mostrar(0x4F);                                // Mando el 3 al display

Como puedes apreciar hemos reducido el número de líneas a la mitad.

Sigamos:

La función "printf" es una función muy poderosa que admite los siguientes parámetros:

printf(funcion(),"formato",cadena);

Lo que hace la función "printf" es tomar la "cadena", dividirla en caracteres, darlos formato y pasarselos como parámetros a "funcion()". Con todo esto nos quedaría el código así:

Código: [Seleccionar]
         printf(mostrar(),"%c","\0x3F\0x7C\0x40\0x4F");

Lo hemos reducido a una línea solo.

Y si lo queremos poner con mas claridad, hacemos un #define:

Código: [Seleccionar]
         #define OC3 "\0x3F\0x7C\0x40\0x4F"
         printf(mostrar(),"%c",OC3);

Si queremos reducirlo al máximo podríamos definir una seudofunción qque nos simplifique la cosa de tal forma que podemos poner:

Código: [Seleccionar]
         #define Salida_Display(_param_) printf(mostrar(),"%c",_param_)
         #define OC3 "\0x3F\0x7C\0x40\0x4F"


El código que nos queda es:

Código: [Seleccionar]
         Salida_Display(OC3);

Esto es es equivalente a todas tus instrucciones:

Código: [Seleccionar]
         resul=0x3F;                               // Guardo la O
         mostrar();                                // Mando la O al display
         resul=0x7C;                               // Guardo la C
         mostrar();                                // Mando la C al display
         resul=0x40;                               // Guardo el guión (-)
         mostrar();                                // Mando el guión al display
         resul=0x4F;                               // Guardo el 3
         mostrar();

Solo recordarte que los defines se ponen al principio del programa.

Un saludo.
Título: Re: Simulación
Publicado por: Enigma en 09 de Enero de 2008, 23:44:46
Rayos!!!! jajajaja me has dejado mareada... con todo eso.... No, pero está bien que me corrijas, así enriquezco más mis conocimientos en C.... Gracias por todo eso Jfh900.... Lo tomaré muy en cuenta, de verdad!!!

Jajaja creo que se me pasa, por ser la primera vez que uso C... jkejejeje :mrgreen:

Atte: Enigma... La llanerita de Guayana :D