desktop

Botón de acceso difícil

Hola a todos,
Necesito su ayuda para encontrar mi problema, este código estaba funcionando, pero todavía estoy atascado en dónde colocar el botón Mmenu para volver a Mmenu:

Primero ejecute la lectura de código (Imprimir en 1,1, "Amplificador de audio" 'Escribir en LCD Línea 1, Amplificador
Imprima en 2,1, "Entrada de CD") y luego espere unos segundos para saltar a (LData "Amplificador STK082"
LData " Audio Stereo Sound " ), pero tengo un problema, cómo devolverlo a Mmenu ( Imprimir en 1,1, "Amplificador de audio" 'Escribir en LCD Line1, Amplificador
Imprimir en 2,1, "Entrada de CD") con presionar un botón (Si PORTB.6 = 1 Entonces Mmenu), probé con Proteus, este código funciona bien, pero en el hardware real no funciona.

Mi punto es que soy difícil colocar el botón o dónde colocarlo para la función, una vez que presione, vaya a Mmenu para leer (Mmenu:
Imprimir en 1,1, "Amplificador de audio" 'Escribir en LCD Línea 1, Amplificador
Imprimir en 2,1, "Entrada de CD")
A continuación se muestra un código :

Código:
'----------------------------------- Device and Configuration -----------------------------------------------
Device = 16F628A                                                                      'Microprocessor Use   
Config INTRC_OSC_CLKOUT, MCLRE_OFF, LVP_OFF, WDT_OFF, PWRTE_OFF, CP_OFF, BODEN_OFF    'Configuration of bits
Declare Bus_SCL On                                                                    'Prepare Bus On
'------------------------------------- End Configuration -----------------------------------------------------

'--------------------------- ----------LCD Configuration -----------------------------------------------------
  Declare LCD_DTPin = PORTB.0     'Connected data LCD D4 = B.0
  Declare LCD_RSPin = PORTB.4     'Connected LCD RS Pin = B.4 
  Declare LCD_ENPin = PORTA.3     'Connected LCD EN Pin = A.3
  Declare LCD_Interface = 4          '4-bit Interface
  Declare LCD_Lines = 2           'LCD Used 2*16 or 2 Line
  Declare LCD_Type = 0            'Used for 8-line interface.
                                  'This means you use all the 8 data line. (d0 to d7)
                                  'LCD_TYPE ALPHA ' Used alphanumeric LCD
                                
'------------------------------------- End LCD Configuration --------------------------------------------------

CMCON = 7                       


Dim FORTONEXT As Word
Dim ASCII  As Word
Dim CHAR1 As Word

      'If  PORTB.7=1   Then    Mytest                   'Button Down
Mmenu:

Print  At 1,1, "Audio Amplifier"                        'Write to LCD Line1, Amplifier
Print At 2,1,  "CD Input        "

GoTo Mytest                                             'Jump to Mytest
      'If  PORTB.6=1   Then    Mmenu                          'Button menu
 DelayMS 150
 
DelayMS 150
 
Label:
LData "Amplifier STK082"
LData " Audio Stereo Sound    "


GoTo PRINT_MESSAGE
 
DelayMS 5350
PRINT_MESSAGE:

For SCROL= 0 To 800 '17                                                                                                       
Cursor 1,1   

  If  PORTB.6=1   Then    Mmenu                  ' In Proteus working well, but in actual hardware doesn't working

DelayMS 550

Mytest:
For ASCII = 0 To 15 Step 1                        ' Character for 2x16 LCD
CHAR1 = LRead Label + (ASCII)                     ' Read memory location LABEL + LOOP
 
Print CHAR1
Next ASCII
 
DelayMS 500                                      'Delay for speed                                         
GoTo PRINT_MESSAGE


End
'------------------------------------------ END PROGRAM ---------------------------------------------------------------

Gracias por un poco de ayuda,
Lah
 
Reglas generales de uso del foro

02) Utiliza siempre títulos descriptivos. "Confundido con el botón de función (si PORTB.6 = 1 entonces Mmenu) no está colocado correctamente y no funciona'" NO es una descripción, es el relato de "TODO" el problema
 
Reglas generales de uso del foro

02) Utiliza siempre títulos descriptivos. "Confundido con el botón de función (si PORTB.6 = 1 entonces Mmenu) no está colocado correctamente y no funciona'" NO es una descripción, es el relato de "TODO" el problema
Hola Fogonazo,
Discúlpeme si me equivoqué al escribir el título del contenido en este foro, una vez que hago un envío en este foro no veo las reglas y tampoco las recuerdo.
Traté de editar y revisar el título, pero no sé cómo hacerlo y no busco más acceso para editar ese título.
Si es posible realizar cambios, deseo escribir al "Botón de acceso difícil", si puede hacerlo, ya que es un administrador, solo cámbielo, como se indicó anteriormente.


Scooter,
Hola,
Gracias por el apoyo, sí, lo hice con un traductor.
Una vez más, discúlpeme de acuerdo con esto, siga las reglas incorrectas.
Gracias,
Lah.
 
Hola Fogonazo,
Discúlpeme si me equivoqué al escribir el título del contenido en este foro, una vez que hago un envío en este foro no veo las reglas y tampoco las recuerdo.
Traté de editar y revisar el título, pero no sé cómo hacerlo y no busco más acceso para editar ese título.
Si es posible realizar cambios, deseo escribir al "Botón de acceso difícil", si puede hacerlo, ya que es un administrador, solo cámbielo, como se indicó anteriormente.


Scooter,
Hola,
Gracias por el apoyo, sí, lo hice con un traductor.
Una vez más, discúlpeme de acuerdo con esto, siga las reglas incorrectas.
Gracias,
Lah.
Miré un rato su programa y ví muchas inconsistencias, lamentablemente tenía ocupaciones y ahora tengo que dormir. :unsure: Disculpe
 
Muchas inconsistencias, sí.
En programación es bueno pensar "si yo fuera el ordenador y voy ejecutando instrucciones ¿qué me sucederá con cada una de ellas?"
En este código, vamos a ver qué pasa

CMCON = 7 Variable no definida con Dim, no especificado su tipo de variable y nunca usada = consumir memoria y tiempo de proceso
Dim FORTONEXT As Word Otra variable definida, pero nunca usada
Dim ASCII As Word Definimos las variables que vamos a usar en el procedimiento Mytest... fuera de dicho procedimiento
Dim CHAR1 As Word ASCII es una palabra que no se debería usar como variable, no porque sea palabra reservada, sino porque
es el nombre de un conjunto de caracteres y crea confusión

'If PORTB.7=1 Then Mytest Esta linea no se ejecutará jamás... porque está comentada


Mmenu:
Print At 1,1, "Audio Amplifier"
Print At 2,1, "CD Input "
GoTo Mytest Saltamos fuera de aquí a Mytest
'If PORTB.6=1 Then Mmenu Esta línea no se ejecuta, no sólo porque está comentada sino porque nunca se llega a ella al haber saltado a Mytest en la línea anterior
DelayMS 150 A esta tampoco se llega
DelayMS 150 Ni a ésta
Se pueden sustituir por DelayMS 300



Label: Nada llega aquí desde ningún sitio de este código
LData "Amplifier STK082"
LData " Audio Stereo Sound "
GoTo PRINT_MESSAGE Adios, nos vamos fuera de aquí
DelayMS 5350 Por eso nunca llegamos a esta línea (que estaría 5,35 segundos sin hacer nada)

PRINT_MESSAGE:
For SCROL= 0 To 800 La variable SCROL nunca se ha definido
Cursor 1,1 Ponemos el cursor en 1.1 ochocientas veces
If PORTB.6=1 Then Mmenu Comprobamos ochocientas veces que PORTB.6 es igual a 1... y cero veces otras condiciones de salida
Por aquí debería haber un NEXT SCROL... para cerrar el bucle (loop) que hemos abierto con el FOR
Como no lo hay, la CPU se pone a buscarlo y, como no lo encuentra, el bucle no sigue su ciclo y se ejecuta sólo una vez

DelayMS 550

Mytest:
For ASCII = 0 To 15 Step 1
CHAR1 = LRead Label + (ASCII)
Print CHAR1
Next ASCII
DelayMS 500
GoTo PRINT_MESSAGE Nos vamos directos a PRINT_MESSAGE
End
 
Última edición:
Muchas inconsistencias, sí.
En programación es bueno pensar "si yo fuera el ordenador y voy ejecutando instrucciones ¿qué me sucederá con cada una de ellas?"
En este código, vamos a ver qué pasa
Hola Nirvana,
Entendí tu punto sobre tu comando, que me equivoqué al no hacer un comando.
Ahora estoy feliz, ese código ahora funciona muy bien y como esperaba, una vez más, muchas gracias, también para todos aquí.
Gracias,
Lah.
 
Podrías subirlo como apòrte !
Hola Dosmetros,
Además de preguntar, todos están ahí, solo refiérase a un Nirvana dicho de acuerdo con un comando.

Vuelva a revisar mi primera publicación y luego, siga al igual que Nirvana, tengo éxito, porque también he echado un vistazo al comando de Nirvana.

Eche un vistazo y cambie un poco y mire el comando Nirvana, estoy seguro de que después de 1-2 horas arreglará ese código.

Creo y estoy seguro de que puedes hacerlo, como yo puedo hacerlo, simplemente siguiendo a Nirvana.


Gracias,
Lah
 
Solo para aclarar...

Código:
CMCON = 7 Variable no definida con Dim, no especificado su tipo de variable y nunca usada = consumir memoria y tiempo de proceso

CMCON es un registro del PIC en cuestión (y de otros) y al darle valor 7, se desactivan los comparadores internos del PIC ubicado en el puerto A para uso exclusivo como digital del mismo.
cmcon.jpg

No es necesario definirlo con el comando DIM ya que el interprete ya sabe de esto y actúa en consecuencia.

Reitero, solo para aclarar las cosas porque entre las recomendaciones de las modificaciones a hacer al programa esta en primer termino y esto esta bien como esta en el programa original.

Saludos.
 
Última edición:
Hola Dosmetros,
Además de preguntar, todos están ahí, solo refiérase a un Nirvana dicho de acuerdo con un comando.

Vuelva a revisar mi primera publicación y luego, siga al igual que Nirvana, tengo éxito, porque también he echado un vistazo al comando de Nirvana.

Eche un vistazo y cambie un poco y mire el comando Nirvana, estoy seguro de que después de 1-2 horas arreglará ese código.

Creo y estoy seguro de que puedes hacerlo, como yo puedo hacerlo, simplemente siguiendo a Nirvana.


Gracias,
Lah


O sea que usted viene a buscar ayuda al foro, y una vez resuelto , no es capaz de compartirlo ?

Lo veo muy egoista de su parte

Concepto y Espíritu de Foro:

Algunas reflexiones sobre la forma de trabajo en el Foro
 
OFF TOPIC
...mas de 12 pacientes horas después ...

.... Hablando de Roma :ROFLMAO: ( Aquí en Singapore somos así... Re amigazos ¿viste ? !! )
👇

zPajaroComio.jpg
 
Última edición:
Atrás
Arriba