Eliminar funciones no usadas es parte de optimizar un programa, pero principalmente se debe tener cuidado con el tamaño de las variables.
Muchas veces usan funciones de 16 bits para retornar valores de 8 bits y eso no está bien.
El uso de "printf" consume mucha ROM y usar cadenas largas y repetitivas, también.
Eso fue una suposición, se necesitaría estudiar la rutina de escritura para hacer que funcione con pantallas de 20 letras.
No tengo idea. No conozco ese chip ni he leído la hoja de datos.
Las funciones de lectura y escritura del chip están en el archivo "
KT_Comm.c" y las definiciones de registros están en el archivo "
KT_Comm.h"
Ahí se puede ver que para la escritura y la lectura se han definido dos constantes:
#define WRITE_COMMAND 0x7C
#define READ_COMMAND 0x7D
Por lo general
en I2C, el comando de lectura es un bit más al de escritura. (Incluye dirección del chip)
Los registros se encuentran enseguida:
#define REG_00 0x00
#define REG_01 0x01
#define REG_02 0x02
#define REG_04 0x04
#define REG_13 0x13
Para entender cómo funciona el protocolo I2C necesitas estudiarlo.
Es muy sencillo y su funcionamiento fue muy bien explicado por su creador. Philips.
Documento adjunto, cortesía de mcc-us
Las instrucciones básicas en PIC C Compiler para usar I2C, son las siguientes:
i2c_start();
i2c_write();
i2c_read();
i2c_stop();
En PIC C de CCS para hacer un Restart, se hace otro i2c_start(); antes de detener la transmisión.
El resto es estudiar para comprender el programa.