é +- isso mesmo.
não se prenda às libs prontas do teu compilador. Esta tarefa é simples. Deixe as libs pra algo mais nobre. Seja macho e crie as tuas próprias. Ou bicha e copie esta.
Além do+, se um dia for trocar de MC, a transição é menos dolorida
Veja parte de alguns fontes. Imagine uma função lcd_write() que se LCD_RS=0, escreve comando no lcd e se =1 escreve caracter. Espero que se rebaixe a este nível de bits e visualize o hw.
- Código: Selecionar todos
#define lin1 0x80 //para display 16x2
#define lin2 0xc0
#define LCD_RS RA0 //PTA0, P00 etc
#define un s[0] //pra facilitar entendimento
#define dez s[1]
#define cen s[2]
#define mil s[3]
#define dmil s[4]
unsigned char s[5]; //global
void separa(unsigned int dado)
{
unsigned char i;
i=un=dez=cen=mil=dmil=0; // zerar antes
while(dado)
{
s[i]=dado%10;
dado/=10;
i++;
}
}
/**********************************************************************/
//posição xy, num de dígitos, dado até 65535
void Lcd_Custom_1_Out(unsigned char lin_col,unsigned char nd,unsigned int dado)
{
separa(dado);
LCD_RS=0;//comando
lcd_write(lin_col);//posiciona cursor
LCD_RS=1;//caracter
switch(nd) {
case 5: lcd_write(dmil+0x30);//break não. converte pra ascii.
case 4: lcd_write(mil+0x30);
case 3: lcd_write(cen+0x30);
case 2: lcd_write(dez+0x30);
case 1: lcd_write(un+0x30);
}
}
Sua (minha) função seria Lcd_Custom_1_Out(lin1+0,3,myIpAddr[x]) p.ex.
Se decidir por esta opção de macho e se precisar da lcd_write()... Ou aguarde uma opção alternativa de algum programador de mais alto nível
sucessos!