Autor Tema: subo pequeña libreria para LCD en Hitech C  (Leído 19765 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #30 en: 01 de Abril de 2011, 12:08:36 »
  Mira vos, que cosa extraña. Yo me basé en un datasheet del Winstar WH1604A para sacar las direcciones de memoria. Adjunto una captura del datasheet donde se especifican las direcciones. ¿O tal vez serán diferentes entre un de 16x4 y uno de 20x4?

Sí, es curioso, quizás alguien nos resuelva la duda.

Otra cuestión, al final de todo lo escrito se queda el cursor visible ¿Como se puede eliminar?

Saludos.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #31 en: 01 de Abril de 2011, 12:14:10 »
  Mira vos, que cosa extraña. Yo me basé en un datasheet del Winstar WH1604A para sacar las direcciones de memoria. Adjunto una captura del datasheet donde se especifican las direcciones. ¿O tal vez serán diferentes entre un de 16x4 y uno de 20x4?

Sí, es curioso, quizás alguien nos resuelva la duda.

Otra cuestión, al final de todo lo escrito se queda el cursor visible ¿Como se puede eliminar?

Saludos.

Podes leer el datasheet del LCD, hay comandos para controlar el cursor, apagado, visible, parpadeando, ect...


Código: C
  1. WriteByteLcd(COMANDO,0);


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #32 en: 01 de Abril de 2011, 12:26:20 »
  No me acuerdo si en esa librería está la siguiente función que sí está en la que tengo en el rígido actualmente

Código: C
  1. void SetCursorLcd (unsigned char On, unsigned char Blink)
  2.   {
  3.     unsigned char salida;
  4.  
  5.     salida = 0b11<<1;
  6.     salida = (salida|(bit)On)<<1;
  7.     salida = salida|(bit)Blink;
  8.     WriteByteLcd (salida,0);
  9.   }

  Ahora estoy viendo que es muy mejorable dicha función...
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #33 en: 01 de Abril de 2011, 13:20:18 »

Otra cuestión, al final de todo lo escrito se queda el cursor visible ¿Como se puede eliminar?

Saludos.

Podes leer el datasheet del LCD, hay comandos para controlar el cursor, apagado, visible, parpadeando, ect...


Código: C
  1. WriteByteLcd(COMANDO,0);


Saludos!

[/quote]

Efectivamente con eso se borra el cursor, me imagino que en CCS lo hacia automaticamente. El comando es 0b00001100.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #34 en: 02 de Abril de 2011, 11:24:05 »
  Dejo la versión que recién terminé de cambiar de la librería

Código: C
  1. /**************************************************************************
  2. *    Libreria para manejo de LCD en 4 u 8 bits para compilador HiTech     *
  3. ***************************************************************************
  4.  
  5. ***************************************************************************
  6. * Basado en el mapa de memoria de los display WinStar y los comandos del  *
  7. * HD44780.                                                                *
  8. * Sirve para display 16x1, 16x2 y 16x4                                    *
  9. ***************************************************************************
  10.  
  11. ***************************************************************************
  12. *                                                                         *
  13. * Antes de incluir este archivo en nuestro programa hay que definir       *
  14. * algunos parametros. Estos son                                           *
  15. *                                                                         *
  16. * _XTAL_FREQ        (es necesario para los delay utilizados internamente) *
  17. * LcdDataPort       (el puerto que se utilizara para los datos)           *
  18. * LcdControlPort    (el puerto que se utilizara para los bits de control) *
  19. * LcdRWBit          (el numero de bit que se utilizara para RW)           *
  20. * LcdRSBit          (el numero de bit que se utilizara para RS)           *
  21. * LcdENBit          (el numero de bit que se utilizara para EN)           *
  22. *                                                                         *
  23. * En el caso de querer usar protocolo de 4 Bits tambien hay que definir   *
  24. *                                                                         *
  25. * LcdD4             (el numero de bit que sera D4 hacia el display)       *
  26. *                                                                         *
  27. *                                                                         *
  28. *   LcdD4 solo puede ser 0 o 4. Si es 0 se utiliza el nibble bajo de      *
  29. * LcdDataPort para enviar los datos al display. Si es 1 se utiliza        *
  30. * el nibble alto.                                                         *
  31. *   Si no esta definido LcdD4, se usa protocolo de 8 bits. En este caso   *
  32. * se usan los 8 bits de LcdDataPort para enviar los datos al display.     *
  33. *                                                                         *
  34. ***************************************************************************
  35.  
  36. ***************************************************************************
  37. *                                                                         *
  38. *  En esta libreria se encuentran las siguientes funciones                *
  39. *                                                                         *
  40. * InitLcd()                 (inicializa del display)                      *
  41. * ClearLcd()                (borra el display y se posiciona en el inicio)*
  42. * GotoxyLcd(char,char)      (posiciona el cursor en el lugar indicado)    *
  43. * LcdOn()                   (enciende el display)                         *
  44. * LcdOff()                  (apaga el display)                            *
  45. * SetCursorLcd(char,char)   (configura el cursor)                         *
  46. * WriteCharLcd(char)        (envia un caracter al display)                *
  47. * WriteStrLcd(char*)        (envia un String al display)                  *
  48. *                                                                         *
  49. *  El parametro de la funcion anterior puede ser un puntero a un String   *
  50. * o el propio String.                                                     *
  51. *                                                                         *
  52. * ReadBytLcd()              (devuelve el byte leido en la posicion actual)*
  53. * WriteByteLcd(char,char)   (envia un byte al display)                    *
  54. *                                                                         *
  55. *  El segundo parametro de la funcion anterior puede ser 0 o 1 y es el    *
  56. * valor que va a tomar el pin RS.                                         *
  57. *  Por eso, esta funcion puede ser utilizada para enviar una instruccion  *
  58. * o un caracter al display.                                               *
  59. *                                                                         *
  60. *  Tambien se encuentran definidos los parametros CursorOn, CursorOff,    *
  61. * CursorBlinkOn y CursorBlinkOff que son utilizados por la funcion        *
  62. * SetCursorLcd(char).                                                     *
  63. *  Tambien estan definidos los parametros ShiftDisplay, ShiftCursor,      *
  64. * ShiftRight y ShiftLeft que son utilizados por la funcion LcdShift(char) *    
  65. ***************************************************************************
  66.  
  67. ***************************************************************************
  68. *                                                                         *
  69. *  Luego de utilizar las funciones, el puerto utilizado para LcdDataPort  *
  70. * retorna a su estado original.                                           *
  71. *  Es decir que el registro TRIS vuelve a configurarse como estaba antes  *
  72. * de utilizar las funciones. Y sobre el puerto vuelve a aparecer el mismo *
  73. * dato que habia antes de utilizar las funciones para el display          *
  74. *                                                                         *
  75. ***************************************************************************
  76.  
  77. * Ejemplo de configuracion y utilizacion
  78.  
  79.   #define _XTAL_FREQ 10000000    // Cristal 10MHz
  80.   #define LcdControlPort PORTC   // Uso el puerto A para los bits de control
  81.   #define LcdRWBit 0             // El bit 0 del puerto A para RW
  82.   #define LcdRSBit 1             // El bit 0 del puerto A para RS
  83.   #define LcdENBit 1             // El bit 0 del puerto A para EN
  84.   #define LcdDataPort  PORTB     // Uso el puerto B para los datos
  85.   //#define LcdD4 4              // Solo utilizar para protocolo de 4 Bits
  86.  
  87. #include "SuperLcd.C"            // Incluimos nuestra libreria
  88.  
  89. void main(void)
  90. {
  91.   const char * pantalla = "Mundo";
  92.  
  93.   .....
  94.   .....
  95.   .....
  96.   InitLcd();
  97.   WriteStrLcd ("Hola");          // escribe en la primer linea la palabra Hola
  98.   GotoxyLcd (1,2);
  99.   WriteStrLcd (pantalla);        // escribe en la segunda linea la palabra apuntada por la variable pantalla
  100.   SetCursorLcd (CursorOff | CursorBlinkOn); // apaga el cursor, y lo hace parpadear
  101.   LcdShift (ShiftDisplay | ShiftRight); // dezplaza el display hacia la derecha (texto a la izquierda)
  102. }
  103.  
  104. */
  105.  
  106. #if defined (LcdControlPort) && defined (LcdRWBit) && defined (LcdRSBit) && defined (LcdENBit) &&\
  107.     defined (LcdDataPort)
  108.   #if defined (LcdD4)                   //Define el bit de menos peso del nibble (puede ser 0 o 4)
  109.     #define Protocolo4Bits
  110.     #if (LcdD4 != 0) && (LcdD4 != 4)
  111.       #error Mal definido D4 del LCD
  112.         #endif
  113.   #endif
  114.  
  115.   #define CursorOff        0b1100
  116.   #define CursorOn         0b1110
  117.   #define CursorBlinkOff   0b1100
  118.   #define CursorBlinkOn    0b1101
  119.  
  120.   #define ShiftDisplay     0b11000
  121.   #define ShiftCursor      0b10000
  122.   #define ShiftRight       0b10100
  123.   #define ShiftLeft        0b10000
  124.  
  125.   unsigned char Mascara;
  126.   volatile bit TRISLcdRW @ (unsigned)&LcdControlPort*8 +0x80*8 +LcdRWBit;
  127.   volatile bit TRISLcdRS @ (unsigned)&LcdControlPort*8 +0x80*8 +LcdRSBit;
  128.   volatile bit TRISLcdEN @ (unsigned)&LcdControlPort*8 +0x80*8 +LcdENBit;
  129.   volatile bit LcdRW @ (unsigned)&LcdControlPort*8 +LcdRWBit;
  130.   volatile bit LcdRS @ (unsigned)&LcdControlPort*8 +LcdRSBit;
  131.   volatile bit LcdEN @ (unsigned)&LcdControlPort*8 +LcdENBit;
  132.   volatile char TRISLcdData @ (unsigned)&LcdDataPort + 0x80;
  133.  
  134.  
  135.   unsigned char ReadByteLcd(void)
  136.   {
  137.     unsigned char high, low;
  138.     unsigned char TRISAnterior;
  139.     unsigned char DatoAnterior;
  140.     unsigned char DatoLeido;
  141.  
  142.     DatoAnterior = LcdDataPort;
  143.     TRISAnterior = TRISLcdData;
  144.     #ifdef Protocolo4Bits
  145.       #if (LcdD4 == 0)
  146.         TRISLcdData |= 0x0F;
  147.       #elif (LcdD4 == 4)
  148.         TRISLcdData |= 0xF0;
  149.       #endif
  150.     #else
  151.       TRISLcdData = 0xFF;
  152.     #endif
  153.     LcdRS = 0;
  154.     LcdRW = 1;
  155.     LcdEN = 1;
  156.     __delay_us (1);
  157.     #ifdef Protocolo4Bits
  158.       high = LcdDataPort;
  159.       LcdEN = 0;
  160.       __delay_us (1);
  161.       LcdEN = 1;
  162.       __delay_us (1);
  163.       low = LcdDataPort;
  164.       LcdEN = 0;
  165.       #if (LcdD4 == 0)
  166.         high = high<<4;
  167.         low = low & 0x0F;  
  168.       #elif (LcdD4 == 4)
  169.         high = high & 0xF0;
  170.         low = low>>4;  
  171.       #endif
  172.       DatoLeido = high + low;
  173.     #else
  174.       DatoLeido = LcdDataPort;
  175.       LcdEN = 0;
  176.     #endif
  177.     TRISLcdData = TRISAnterior;
  178.     LcdDataPort = DatoAnterior;
  179.     return DatoLeido;
  180.   }
  181.  
  182.   void WriteNibbleLcd (unsigned char Data)
  183.   {
  184.     #ifdef Protocolo4Bits
  185.       #if (LcdD4 == 0)
  186.         LcdDataPort = (LcdDataPort & 0xF0) + (Data>>4);
  187.       #elif (LcdD4 == 4)
  188.         LcdDataPort = (LcdDataPort & 0x0F) + (Data & 0xF0);
  189.       #endif
  190.     #else
  191.       LcdDataPort = Data;
  192.     #endif
  193.     LcdEN = 1;
  194.     __delay_us(2);
  195.     LcdEN = 0;
  196.   }
  197.  
  198.   void WriteByteLcd(unsigned char Data, unsigned char dir)
  199.   {
  200.     unsigned char TRISAnterior;
  201.     unsigned char DatoAnterior;
  202.  
  203.     DatoAnterior = LcdDataPort;
  204.     TRISAnterior = TRISLcdData;    
  205.     TRISLcdData &= Mascara;
  206.     while ((ReadByteLcd() & 128) == 128);
  207.     __delay_us(10);
  208.     LcdRS = (bit)dir;
  209.     LcdRW = 0;
  210.     #ifdef Protocolo4Bits                       //Si uso 4 bits separa el byte en 2
  211.       WriteNibbleLcd(Data);
  212.       WriteNibbleLcd(Data<<4);
  213.     #else
  214.       WriteNibbleLcd(Data);                     //Si uso 8 bits envio el byte entero
  215.     #endif
  216.     TRISLcdData = TRISAnterior;
  217.     LcdDataPort = DatoAnterior;
  218.   }
  219.  
  220.   void WriteStrLcd (const char *palabra)
  221.   {
  222.     while (*palabra)
  223.       WriteByteLcd ((*palabra++),1);
  224.   }
  225.  
  226.   void GotoxyLcd (unsigned char x, unsigned char y)
  227.   {
  228.     if (y == 1) y = 0;
  229.     else
  230.       if (y == 2) y = 0x40;
  231.       else
  232.         if (y == 3) y = 0x10;
  233.         else
  234.           if (y == 4) y = 0x50;
  235.     x--;
  236.     WriteByteLcd (((y+x)|0x80),0);
  237.   }
  238.  
  239.   #define LcdShift(Estado) WriteByteLcd (Estado,0)
  240.   #define SetCursorLcd(Estado) WriteByteLcd (Estado,0)
  241.   #define WriteCharLcd(letra) WriteByteLcd (letra,1)
  242.   #define LcdOn() WriteByteLcd(0x0C,0)
  243.   #define LcdOff() WriteByteLcd(0x08,0)
  244.   #define ClearLcd() WriteByteLcd(0x01,0)
  245.  
  246.   void InitLcd(void)
  247.   {
  248.     unsigned char TRISAnterior;
  249.     unsigned char DatoAnterior;
  250.     unsigned char Contador;
  251.  
  252.     #ifdef Protocolo4Bits
  253.       #if (LcdD4 == 0)
  254.         Mascara = 0xF0;
  255.       #elif (LcdD4 == 4)
  256.         Mascara = 0x0F;
  257.       #endif
  258.     #else
  259.       Mascara = 0;
  260.     #endif
  261.     TRISLcdRW = 0;
  262.     TRISLcdRS = 0;
  263.     TRISLcdEN = 0;
  264.     LcdEN = 0;
  265.     TRISAnterior = TRISLcdData;
  266.     DatoAnterior = LcdDataPort;
  267.     LcdRW = 0;
  268.     LcdRS = 0;
  269.     TRISLcdData &= Mascara;
  270.     __delay_ms (15);
  271.     for (Contador= 3; Contador > 0; Contador--)
  272.     {
  273.       WriteNibbleLcd (0x30);
  274.       __delay_ms (5);
  275.     }
  276.     #ifdef Protocolo4Bits
  277.       WriteNibbleLcd (0x20);                    //indica que se escribe en 2 nibbles de 4 bits
  278.       WriteByteLcd (0x28,0);
  279.       // 30 para el st7066
  280.       // 32 para el st7066
  281.     #else
  282.       WriteByteLcd (0x38,0);
  283.     #endif
  284.     LcdOff(); //08
  285.     // 38 para el st7066?
  286.     ClearLcd(); //01
  287.     WriteByteLcd (0x06,0);  //06
  288.     //WriteByteLcd (0x0E,0);
  289.     LcdOn(); //0C
  290.     TRISLcdData = TRISAnterior;
  291.     LcdDataPort = DatoAnterior;
  292.   }
  293.  
  294. #else
  295.   #error Faltan definir parametros
  296. #endif

  Había un error en la función LcdOn(), que se traducía en un error en la inicialización del display y era que justamente dejaba el cursor encendido. El error era que enviaba el dato 0x0E y corregido enviando el dato 0x0C
  Agregué la función SetCursorLcd() y la función LcdShift(). (En realidad usando #defines)
  Definí los parámetros CursorOn, CursorOff, CursorBlinkOn, CursorBlinkOff para ser utilizados en la función SetCursorLcd(), pudiendo ser usados de la siguiente forma

Código: C
  1. SetCursorLcd(CursorOff | CursorBlinkOff);
  2. SetCursorLcd(CursorOff | CursorBlinkOn);
  3. SetCursorLcd(CursorOn | CursorBlinkOff);
  4. SetCursorLcd(CursorOn | CursorBlinkOn);

  Y también definí los parámetros ShiftDisplay, ShiftCursor, ShiftRight y ShiftLeft para ser utilizados en la función LcdShift(), pudiendo ser usados de la siguiente forma

Código: C
  1. LcdShift(ShiftDisplay | ShiftRight);
  2. LcdShift(ShiftDisplay | ShiftLeft);
  3. LcdShift(ShiftCursor | ShiftRight);
  4. LcdShift(ShiftCursor | ShiftLeft);

  Al utilizar LcdShift (ShiftDisplay | ShiftRight) se desplaza el display a la derecha pero visualmente es el texto desplazándose a la izquierda.

  Como verán sigue siendo una librería básica, pero bueh, es hasta donde da mi cabeza  :oops:
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado LAFUMAT

  • PIC16
  • ***
  • Mensajes: 148
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #35 en: 04 de Abril de 2011, 02:14:14 »
vaya, vais muy rapido para mi... jeje :D

genial, probaremos la nueva libreria...


saludos

Desconectado LAFUMAT

  • PIC16
  • ***
  • Mensajes: 148
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #36 en: 07 de Abril de 2011, 03:43:10 »
hola:

yo sigo con lo mio angelgris, jeje, pasito a pasito.

he copiado tu ejemplo del ftoa y adapotado a mi programa.

me queda asi:

Código: [Seleccionar]
void SHOW_LCD(void)
{
char * SHOW_PRESS;
int * seba;
ClearLcd();
GotoxyLcd (1,1);
WriteStrLcd ("P= ");
//itoa(SHOW_PRESS,SENSOR_DATA,10);
SHOW_PRESS = ftoa (SENSOR_DATA, seba);
GotoxyLcd (4,1);
WriteStrLcd(SHOW_PRESS);
GotoxyLcd (1,2);
WriteStrLcd ("MODE: ");
GotoxyLcd (6,2);
WriteStrLcd (SHOW_MODE);
__delay_ms(200);

}


pero me da el siguiente error:

Error   [1098] C:\Archivos de programa\HI-TECH Software\PICC\9.80\sources\ftoa.c; 7. conflicting declarations for variable "_ftoa" (C:\pics\18_pruebas\pruebas.C:308)

y en la variables tengo asi:

Código: [Seleccionar]
float  SENSOR_DATA,POT_SER_DATA,POT_SEG_DATA,POT_MAX_DATA;
float SENSITIVITY = 0.009765625f;
char SHOW_PRESS[10];
char SHOW_MODE[10];



aparte que no entiendo muy bien el funcionamiento de ftoa, por el tema de los punteros.... (se agradece explicacion ;-))


saludos y mil gracias

Desconectado LAFUMAT

  • PIC16
  • ***
  • Mensajes: 148
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #37 en: 13 de Abril de 2011, 05:30:15 »
ok.

ya me voy poniendo al dia. lo voy viendo claro.

el caso es que al probar los comandos de como desplazar a la derecha, si veo que se ha desplazado, pero el efecto que quiero conseguir es que por ejemplo una linea (la 1 por ejemplo), le pongamos un texto mas largo de 16 caracteres y se desplace para ver el mensaje completo.

Entiendo ¡que el shiftright, es lo que hace ¿verdad?.


ahora probare lo que comentasteis sobre hacer simbolos...


saludos

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #38 en: 21 de Abril de 2011, 14:46:25 »
¿Alguien ha probado esta libreria con PIC18?  Yo he conseguido compilar el codigo, pero no escribe nada en el LCD.

Saludos.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #39 en: 21 de Abril de 2011, 15:52:57 »
  Intenté compilar y me tira algunos warning, posiblemente se deba al diferente manejo de la memoria entre los pic16 y los pic18.

  Por ejemplo, en los header de los 16 para definir cada bit del puerto dice algo como "volatile bit RB0 @ (unsigned)xxxxxx" y para los 18 dice algo como "extern volatile near bit RB0 @ (unsigned)xxxxxxxxxx"
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #40 en: 21 de Abril de 2011, 16:29:13 »
  Hola micro_pepe, ya encontré el problema  :-/ :-/ :-/

  El inconveniente está en como manejo los TRIS y los bits de los puertos, ya que en la librería los manejaba en base a la diferencia de direcciones entre el registro del puerto y el registro del tris. Para que se entienda mejor, en los 16F el PORTx tiene x dirección y la dirección de su TRIS correspondiente es la de PORTx + 0x80. Pero en el 18F452 esa diferencia es de 0x12, por ello no funcionaba.

Así estaba originalmente la librería...

Código: C
  1. volatile bit TRISLcdRW @ (unsigned)&LcdControlPort*8 +0x80*8 +LcdRWBit;
  2.   volatile bit TRISLcdRS @ (unsigned)&LcdControlPort*8 +0x80*8 +LcdRSBit;
  3.   volatile bit TRISLcdEN @ (unsigned)&LcdControlPort*8 +0x80*8 +LcdENBit;
  4.   volatile bit LcdRW @ (unsigned)&LcdControlPort*8 +LcdRWBit;
  5.   volatile bit LcdRS @ (unsigned)&LcdControlPort*8 +LcdRSBit;
  6.   volatile bit LcdEN @ (unsigned)&LcdControlPort*8 +LcdENBit;
  7.   volatile char TRISLcdData @ (unsigned)&LcdDataPort + 0x80;

Y estos son los cambios mencionados...

Código: C
  1. volatile near bit TRISLcdRW @ ((unsigned)&LcdControlPort*8 +0x12*8) +LcdRWBit;
  2.   volatile near bit TRISLcdRS @ ((unsigned)&LcdControlPort*8 +0x12*8) +LcdRSBit;
  3.   volatile near bit TRISLcdEN @ ((unsigned)&LcdControlPort*8 +0x12*8) +LcdENBit;
  4.   volatile near bit LcdRW @ ((unsigned)&LcdControlPort*8) +LcdRWBit;
  5.   volatile near bit LcdRS @ ((unsigned)&LcdControlPort*8) +LcdRSBit;
  6.   volatile near bit LcdEN @ ((unsigned)&LcdControlPort*8) +LcdENBit;
  7.   volatile near char TRISLcdData @ ((unsigned)&LcdDataPort) + 0x12;

  Para que se entienda mejor aún, observá estas dos líneas....

Código: C
  1. volatile char TRISLcdData @ (unsigned)&LcdDataPort + 0x80; // original para los 16F
  2. volatile near char TRISLcdData @ ((unsigned)&LcdDataPort) + 0x12; // modificacion para el 18F452

  Me voy a tener que poner a trabajar sobre la librería para que se la pueda utilizar en cualquier PIC  :5]
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #41 en: 21 de Abril de 2011, 20:53:14 »
  Hola micro_pepe, ya encontré el problema  :-/ :-/ :-/


Eres un genio  ;-) gracias por todo, ya tengo el pic18 funcionando.

Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado czeiss

  • PIC10
  • *
  • Mensajes: 5
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #42 en: 25 de Mayo de 2011, 05:59:09 »
Hola, a todos
Espero que me puedan ayudar.. ya que llevo bastante tiempo tratando de hacer funcionar un LCD, sin resultado. (En esto de programar en Hitech C, estoy comenzando)
Para acceder al LCD utilizo la libreria de Angel Gris. Y al realizar la simulacion en proteus, me reclama que el dispositivo LCD se encuentra ocupado.
Les adjunto el proyecto, haber si me pueden hechar una mano.
Desde ya gracias a todos.


Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #43 en: 25 de Mayo de 2011, 14:37:36 »
  Estoy mirando tu código y veo que en la configuración estás habilitando el debugger. Eso hace uso de los pines RB6 y RB7, ¿no estará generando inconvenientes? ¿Qué pasa si deshabilitas el debugger?
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado czeiss

  • PIC10
  • *
  • Mensajes: 5
Re: subo pequeña libreria para LCD en Hitech C
« Respuesta #44 en: 25 de Mayo de 2011, 19:49:26 »
Hola
Gracias por responder.
Voy a deshabilitar el debugger y te cuento.


 

anything