Autor Tema: Simulación  (Leído 1175 veces)

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

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Simulación
« 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 :-)
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: Simulación
« Respuesta #1 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.  :-)

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 613
Re: Simulación
« Respuesta #2 en: 09 de Enero de 2008, 19:38:23 »
Yo tambien vi lo mismo con el teclado , lo demas no lo probe
La electronica es el arte de manipular señales electricas que transportan información
Jan Davidse

Visita mi blog

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Simulación
« Respuesta #3 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 :?
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3593
Re: Simulación
« Respuesta #4 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.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Simulación
« Respuesta #5 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
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!