TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: mbtrx en 04 de Marzo de 2009, 20:22:44

Título: No puedo mostrar mas de una variable en el LCD - Ayuda
Publicado por: mbtrx en 04 de Marzo de 2009, 20:22:44
Bueno como dice en el titulo no puedo mostrar mas de una variable en un renglon del LCD , estoy programando con el Pic Simulator Ide y puse la rutina "TAL CUAL ESTA EN LA AYUDA" del Pic Simulator y nada................. bueno quería ver si alguno me da una manito. Quiero mostrar H-Min y seg
La forma de mostrarlo en el LCD es la sig: ------>  Lcdout "H:", #h, " M:", #m,"S:", #s
Pero solo veo la H: y su valo y la M: y nada mas , probé de 100 maneras y nada ............ Esto está dentro de una interrupción que aquí dejo para que quede completo. Saludos y espero su ayuda. Muchas gracias !!

On Interrupt
      INTCON.T0IF = 0
      INTCON.GIE = 1  'Habilito interrupciones en gral
      TMR0 = 0x6
      INTCON.T0IE = 1  'permiso para interrupción por desborde
      a = a + 1
         If a = 129 Then
      a = 0
      s = s + 1
Endif
If s = 60 Then
      s = 0
      m = m + 1
Endif
If m = 60 Then
      m = 0
      h = h + 1
Endif
Lcdcmdout LcdLine2Home  'paso al segundo renglón
Lcdout "H:", #h, " M:", #m,"S:", #s
Resume                           
Título: Re: No puedo mostrar mas de una variable en el LCD - Ayuda
Publicado por: dogflu66 en 07 de Marzo de 2009, 16:27:39
Prueba con este:

Código: QBasic/QuickBASIC
  1. '******** EJEMPLO DE INTERRUPCIONES Y LCD *********
  2. '******** PROBADO EN LA PLACA PIC EBASIC **********
  3. '******** PIC16F88 ********************************
  4. 'CONFIGURACION DE BIT Y FRECUENCIA RELOJ-----------
  5. Define CONF_WORD = 0x2f10
  6. Define CONF_WORD_2 = 0x3ffc
  7. Define CLOCK_FREQUENCY = 8
  8. 'COMFIGURACIN LCD----------------------------------
  9. Define LCD_BITS = 4  'indicamos que el bus de datos del lcd sera de 4bit
  10. Define LCD_DREG = PORTA  'el bus de datos sera el puerto A
  11. Define LCD_DBIT = 0  'el bus de datos seran los 4 bit menos significativos del puerto A
  12. Define LCD_RSREG = PORTB  'el bit de control RS sera del puerto B
  13. Define LCD_RSBIT = 7  'se usara el RB7 como RS
  14. Define LCD_EREG = PORTB  'el bit de control E sera del puerto B
  15. Define LCD_EBIT = 6  'se usara el RB6 como E
  16. Define LCD_COMMANDUS = 2000  'Tiempo de espera despues de ejecutar un comand del lcd en uSeg.
  17. Define LCD_DATAUS = 50  'Tiempo de espera despues de enviar un dato al LCD en uSeg.
  18. Define LCD_INITMS = 50  'Tiempo de espera despues de inicializar el Display, solo se ejecuta una vez en mSeg., trucado para simulacion
  19. '---------------------------------------------------
  20. 'Define SIMULATION_WAITMS_VALUE = 1  'suprime los tiempos de espera Waitms, solo activar esta linea en simulacion
  21. 'VARIABLES------------------------------------------
  22. DIM a AS Byte
  23. DIM ss AS Byte
  24. DIM m AS Byte
  25. DIM h AS Byte
  26. 'INICIO VARIABLES-----------------------------------
  27. a = 0
  28. ss = 0
  29. m = 0
  30. h = 0
  31. 'CONFIGURACION PIN----------------------------------
  32. ANSEL = 0x00  'los pin I/O digitales (no analogicos)
  33. OSCCON = 0x7e  'set intrc To 8mhz, se usara reloj interno a 8Mhz
  34. CMCON = 0x07  'comparador a off
  35. TRISA = 0x00  'Puerto A como salidas
  36. TRISB = 0x00  'puerto B como salidas
  37. 'CONFIGURACION TMR0---------------------------------
  38. OPTION_REG.T0CS = 0  'selecciona reloj interno
  39. OPTION_REG.PSA = 0  'asigna el prescales al timer0
  40. OPTION_REG.PS0 = 1  'bits de la seleccion del factor de division,prescaler 16
  41. OPTION_REG.PS1 = 1  'bits de la seleccion del factor de division,prescaler 16
  42. OPTION_REG.PS2 = 0  'bits de la seleccion del factor de division,prescaler 16
  43. TMR0 = 130  'cargo el registro del tmr0 para que desborde cada 1mS
  44. 'PERMITE INTERRUPCIONES------------------------------
  45. INTCON.PEIE = 1  'bit de habilitacion de interrupciones de perifericos
  46. Enable  'INTCON.GIE habilita todas las interrupciones globales
  47. 'INICIO PROGRAMA-------------------------------------
  48. Lcdinit  'inicializa el lcd sin cursor
  49. WaitMs 100  'pausa de 100mSeg.
  50. Lcdout "Pruebas LCD/INT."  'Escribe literal en lcd
  51. WaitMs 3000  'pausa 3Seg.
  52. Lcdcmdout LcdClear  'Borra LCD
  53. INTCON.TMR0IE = 1  'habilita las interrupciones del timer0
  54. 'PROGRAMA--------------------------------------------
  55. main:
  56. 'Cuerpo del programa vacío
  57. GOTO main
  58. END  'NO OLVIDAR NUNCA PONERLO                    
  59. ON Interrupt  'desactiva las interrupciones
  60. 'Save System  'Guarda los valores del sistema
  61.         a = a + 1
  62.         IF a = 20 THEN  '129
  63.                 a = 0
  64.                 ss = ss + 1
  65.         Endif
  66.         IF ss = 10 THEN  '60
  67.                 ss = 0
  68.                 m = m + 1
  69.         Endif
  70.         IF m = 5 THEN  '60
  71.                 m = 0
  72.                 h = h + 1
  73.         Endif
  74.         Lcdcmdout LcdLine1Home  'paso a inicio primera linea del lcd
  75.         Lcdout "A:", #a, "         "  'Escribe literal y varibles
  76.         Lcdcmdout LcdLine2Home  'paso a la segunda linea
  77.         Lcdout "H:", #h, " M:", #m, " S:", #ss, "         "  'Escribe literal y variables
  78.         TMR0 = 130  'cargo el registro del tmr0 para que desborde cada 1mS
  79.         INTCON.TMR0IF = 0  'borra el flag de desbordamiento del timer0
  80. RESUME