Autor Tema: interesante (proyecto con pic y led)  (Leído 57721 veces)

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

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: interesante (proyecto con pic y led)
« Respuesta #120 en: 06 de Septiembre de 2008, 23:05:06 »
Qué tal!

No se lo que le haya pasado al mensaje de FirePic.

Pues yo tampoco, qué extraño que se voló..  :?  :shock:

Bueno pues repito que me alegra que Karina esté dando tantos progresos... y pues que no he podido dar muchos aportes al hilo, me disculpan, también he estado un poco de reposo...
Pero ya veo que con Navaismo, Sandrita y Dogflu, pues guao, ya este hilo tiene a los grandes! Mis respetos para ustedes tres.
Sigo el hilo de cerca, espero poder colaborar en cuanto pueda.
Animo Kari! Adelante todos!
Se les aprecia, saludos!  :mrgreen:

P.D. Acabo de recordar que otra cosa que escribía en el mensaje que se perdió era que ya es importante cambiar el tema del hilo, pues se ha vuelto mucho, pero mucho más que un "interesante proyecto con pic y led". :)
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: interesante (proyecto con pic y led)
« Respuesta #121 en: 07 de Septiembre de 2008, 08:08:26 »
Pues antes que nada señor don can  :D :D agradecerle que sé allá tomado la molestia de mirar este humilde hilo que asu altura asta le a de causar flojera.
Esta de mas felicitarle por el excelente desarrollo que nos a echa favor de aportar y si no le causa mucha molestia me aria un grandísimo favor si pudiera extendernos el consejo  de su
Ultima línea.

De todas formas como consejo en los lenguajes de altonivel no se suelen utilizar los saltos absolutos ni tampoco los pauses, delays, waits, etc.

Ase mucho tiempo que sé que esto debe ser así pero no se como manejarlo ni encuentro
Información al respecto por lo cual mis desarrollos son deficientes
Un abraso


La instrucción goto cuando se utiliza en un programa produce un código que es muy difícil de entender ya que rompe la estructura enfocada a una rutina principal o main.

Ejemplo de programa Basic organizado alrededor de una rutina principal:

‘***** NUESTRO PROGRAMA *****
Cabecera
‘------------------------------
Definiciones
‘------------------------------
Declaraciones
‘------------------------------
Configuración módulos
‘------------------------------
Código Inicio, si hay
‘------------------------------
Subrutina principal (Main)
Main:

    Código inicio, si hay

    If timer1 then
        Evento 1º -> Gosub Evento_1, Función Evento_1 (datos) o también Procedimiento Evento_1 (datos)
    Endif

    If timer2 then
        Código intermedio, si hay
    Endif

    Evento 2º -> Gosub Evento_2, Función Evento_2 (datos) o también Procedimiento Evento_2 (datos)

    Código intermedio, si hay

    If timer3 then
        Evento 3º -> Gosub Evento_3, Función Evento_3 (datos) o también Procedimiento Evento_3 (datos)
        (Por ejemplo controla la intermitencia de un led, y timer3 establece la cadencia de parpadeo)
    Endif

    Llamada a subrutina de control de las base de tiempos (timer), se puede condicionar al Flag de
    rebose de un modulo Timer, con Gosub, Función o Procedimiento

    Código de cierre, si hay

Goto main ‘la única vez que se utiliza el Goto, para generar un bucle infinito
End
‘-------------------------------
Subrutina, función o procedimiento delays evento_1
   Cuerpo
Retorno
‘-------------------------------
Subrutina, función o procedimiento delays evento_2
   Cuerpo
Retorno
‘-------------------------------
Subrutina, función o procedimiento delays evento_3
   Cuerpo
retorno
‘-------------------------------
Subrutina, función o procedimiento delays
   Timer1
   Timer2
   Timer3
   Timer4
   Etc.
Retorno
End
‘************** FIN *******************

En este prototipo de programa no se pueden utilizar paradas absolutos ya que afectaríamos a los de mas
procesos del main, siempre contemplándolos como procesos diferentes incluso puede que no relacionados entre si.

Y al usar saltos absolutos con el Goto, ya permita el compilador omitirlo o no. Tenemos que indicar al procesador
en cada salto donde tiene que retornar en cada momento ocasionando programas muy complicados.
Mientras que al realizar los con Gosub o Funciones el ordenador sabe en todo momento donde tiene que retornar,
que es la línea siguiente a la que provocó el salto. Incluso nosotros a simple vista sabremos donde continuara nuestro
programa una vez terminada la subrutina.

Lo ideal es que la subrutina de control de los timer este incorporada en el vector de interrupciones ya que se consigue
un rendimiento mucho mayor. En el caso de ser así ya no habría que llamarla desde el Main, esto se haría de forma automática.
O en el peor de los casos comprobar el flag de rebose de un timer físico para provocar el salto para la actualización de los timer
o contadores de nuestra rutina para medir tiempo.

PD: Creo que esta estructura básica es la más aceptada y espero que exprese el contenido de la frase... :mrgreen:
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: interesante (proyecto con pic y led)
« Respuesta #122 en: 07 de Septiembre de 2008, 08:16:23 »
Otro PD. Lo ideal es utilizar Funciones y Procedimientos (para sustituir a Gosub) ya que permiten definir dentro de ellos variables locales. Con lo que podemos crear rutinas y algoritmos que se pueden transportar a cualquier código sin preocuparnos de la coincidencia de nombres de las variables. Este tipo de código funcionará sin problemas en el principal. Ejemplo: Función que nos realiza división con decimales.
Saludos desde Granada, España.

Desconectado sandra

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 374
Re: interesante (proyecto con pic y led)
« Respuesta #123 en: 07 de Septiembre de 2008, 15:45:40 »
De una rápida leída me a parecido una excelente explicación  en un tiempo libre le boy a dedicar tiempo para terminar de comprender.
Desafortunada mente el pic basic y el protón es de donde cojean no cuantas con funciones o procedimientos  y tenemos que conformarnos con el gosub.
Creo que en  protón se puede ase algo parecido a funciones pero es muy complicado por que hay que simular una pila de memoria y luego meter a la pila el dato y sacarlo total que es un desastre de ahí mis coqueteos con c pero debo admitir que después de haberlo intentado por tres veces el c se me niega  para resolver algo siempre pienso en basic.
Un abraso y  gracias por la lección.

El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado KARINA83

  • PIC12
  • **
  • Mensajes: 50
Re: interesante (proyecto con pic y led)
« Respuesta #124 en: 08 de Septiembre de 2008, 17:55:29 »
maestros de maestros , gracias muchas gracias efectivamente el problema esta por demas resuelto (y de que forma)
gracias  dogflu66,sandrita,navaismo en fin a todos en este foro.
estoy en verdad muy agradecida,muy agradecida y muuuyyy agradecida con todos ustedes.
por que lo que  ustedes aportan no se puede pagar ni con todo el oro del mundo.
gracias.   :g)
Las mujeres podemos cambiar al mundo.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: interesante (proyecto con pic y led)
« Respuesta #125 en: 08 de Septiembre de 2008, 17:58:30 »
Pero si con un gracias o unos miles de pesos o mmmm..... :D De nada Kari con la tutora que tienes creo que te vamos a deber un psicologo jajaja.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: interesante (proyecto con pic y led)
« Respuesta #126 en: 08 de Septiembre de 2008, 18:46:38 »
Kari qué bien que ya lograste resolver el problema del proyectico, felicitaciones!!  :-/  :-/  :-/
Ves? Ya poco a poco te vas convirtiendo en una expertita.  :lol:
En un tiempo ya no necesitarás ayuda de nadie para realizar tus propios códigos. Eso sí, esperamos seguirte viendo por aquí en el foro, para que ayudes a otros más que están a penas empezando! O simplemente a ver qué proyectos estás haciendo!
Un cordial saludo a todos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado KARINA83

  • PIC12
  • **
  • Mensajes: 50
Re: interesante (proyecto con pic y led)
« Respuesta #127 en: 08 de Septiembre de 2008, 19:05:25 »
perdon pero por la emocion se me habia olvidado poner  el proyecto terminado
nuevamente gracias.
saludos  :g)
Las mujeres podemos cambiar al mundo.

Desconectado sandra

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 374
Re: interesante (proyecto con pic y led)
« Respuesta #128 en: 08 de Septiembre de 2008, 19:42:20 »
perdon pero por la emocion se me habia olvidado poner  el proyecto terminado
nuevamente gracias.
saludos  :g)

Estoy al borde de las lágrimas mi niña esta creciendo   :8} :8}
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado KARINA83

  • PIC12
  • **
  • Mensajes: 50
Re: interesante (proyecto con pic y led)
« Respuesta #129 en: 08 de Septiembre de 2008, 20:01:17 »
haaaaaa no  te burles madrina
que me vas a hacer llorar.
saludos madrina  :g)
Las mujeres podemos cambiar al mundo.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: interesante (proyecto con pic y led)
« Respuesta #130 en: 08 de Septiembre de 2008, 20:32:02 »
Case 9

PORTB.7 = 1

If alu1 = 1 Then GoTo eexit1
If alu2 = 1  Then GoTo eexit2
DelayMS 2000
 GoSub  blink '_________ NO PUEDE HABER GOSUB SIN RETURN, CAMBIAR EL GOSUB POR GOTO.
EndSelect

pausa = 2000  'carga el tiempo a contar en el timer

GoSub m_pause  'salto con retorno a mi rutina de pausa

Next i

'-----------------

eexit1:
PORTA.6=1


GoTo main
'-----------------

eexit2:
PORTA.7=1


GoTo main
'-----------------

blink:

For x=0 To 10     
           PORTB = 255
           PORTA = 9
           DelayMS 200
           PORTB = 0
           PORTA = 0
           DelayMS 200
           Next         
         
         GoTo main'_________ TARDE O TEMPRANO SE COLGARA EL MICRO,  POR NO CERRAR EL  GOSUB CON SU RETURN
« Última modificación: 08 de Septiembre de 2008, 20:38:53 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: interesante (proyecto con pic y led)
« Respuesta #131 en: 08 de Septiembre de 2008, 20:35:59 »
PD. Igual que cada While tiene su Wend, cada For tiene su Next, cada If tiene su Endif, pues cada Gosub tiene su Return.
Saludos desde Granada, España.

Desconectado KARINA83

  • PIC12
  • **
  • Mensajes: 50
Re: interesante (proyecto con pic y led)
« Respuesta #132 en: 08 de Septiembre de 2008, 20:43:28 »
entendido y anotado, dogflu gracias.
(ahora mismo lo corrijo)
saludos  :g)
Las mujeres podemos cambiar al mundo.

Desconectado KARINA83

  • PIC12
  • **
  • Mensajes: 50
Re: interesante (proyecto con pic y led)
« Respuesta #133 en: 08 de Septiembre de 2008, 20:51:06 »
listo ya esta correjido
nuevamente gracias  :g)
Las mujeres podemos cambiar al mundo.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: interesante (proyecto con pic y led)
« Respuesta #134 en: 08 de Septiembre de 2008, 21:17:36 »
m_pause:  'rutina de pausa especial, timer por soft

timer1 = 0  'inicializa contador

While timer1 < pausa  'mientras se de la comparacion

DelayMS 1  'pausa, base de tiempos de referencia 1mSeg.

timer1 = timer1 + 1  'incrementa contador, lleva el tiempo

If alu1 = 1 Or alu2 = 1 Then timer1 = pausa  'si es cierto termina while

Wend  'acota el while

If alu1 = 1 Then GoTo eexit1'_________ SI SE CUMPLE NO PERMITE QUE SE EJECUTE EL CIERRE DEL GOSUB -> RETURN
If alu2 = 1  Then GoTo eexit2_________ SI SE CUMPLE NO PERMITE QUE SE EJECUTE EL CIERRE DEL GOSUB -> RETURN

Return  'retorna al programa     


-----------------------------------------
Estas dos lineas:

If alu1 = 1 Then GoTo eexit1
If alu2 = 1  Then GoTo eexit2

No pueden ir en esta parte del programa ya que si se cumplen  no permiten que se ejecute el Return del Gosub.

PD. Creo que al principio las puse de esta manera por equivocacion. Lo mismo tomaste el programa antes que lo corrigiera.
Saludos desde Granada, España.