Autor Tema: Mejorando driver lcd.c de ccs  (Leído 1505 veces)

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

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Mejorando driver lcd.c de ccs
« en: 29 de Enero de 2010, 01:12:53 »
Revisando la librería de ccs para manejar el lcd he encontrado que se le pueden hacer las siguientes mejoras.

Las siguientes líneas

Código: [Seleccionar]
     lcd_send_nibble(n >> 4);
      lcd_send_nibble(n & 0xf);

pueden ser cambiadas por estas

Código: [Seleccionar]
  lcd_send_nibble(swap(n));
   lcd_send_nibble(swap(n));

Las líneas anteriores producen un ahorro de 6 líneas en assambler.

Y las siguientes lineas

Código: [Seleccionar]
void lcd_gotoxy(BYTE x, BYTE y)
{
   BYTE address;

   if(y!=1)
      address=LCD_LINE_TWO;
   else
      address=0;
    
   address+=x-1;
   lcd_send_byte(0,0x80|address);
}

pueden ser cambiadas por estas

Código: [Seleccionar]
#define lcd_gotoxy(x,y)  lcd_send_byte(0,0x80+ 0x40 * ( #if y < 3 y-1) #else y-3) + 0x14 #endif +(x-1))

La línea anterior es un macro que nos permite trabajar con lcd de 4 lineas, y ahorraremos como 20 lineas en assambler, pero tiene la desventaja que tenemos que modificar la funcion getc cambiando la linea

Código: [Seleccionar]
lcd_gotoxy(x,y);
por las siguientes líneas

Código: [Seleccionar]
   if(y<3)
      y=0x40 *(y-1);
   else
      y=0x40 * (y-3) + 0x14;
   lcd_send_byte(0,0x80+ y +(x-1));

Pero siempre obtendremos un ahorro de código y por lo tanto una mejora en el rendimiento del programa.
« Última modificación: 29 de Enero de 2010, 01:56:48 por bigluis »
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA