unsigned char const Msg1[]={"Digite a senha."};
O CW aloca essa constante no enderço 0xDE48.
Se eu tentar usar a bilbliteca de LCD do livro HC908Q do Fábio Pereira:
- Código: Selecionar todos
void lcd_escreve_string (char *c)
{
while (*c)
{
lcd_escreve_char(*c);
c++;
}
}
O compliador não repassa o ponteiro certo pra a função.
Tente forcar isso com *far e não deu certo.
A unica forma que consegui foi usar:
- Código: Selecionar todos
lcd_escreve_char(Msg1[0]);
lcd_escreve_char(Msg1[1]);
lcd_escreve_char(Msg1[2]);
lcd_escreve_char(Msg1[3]);
lcd_escreve_char(Msg1[4]);
Pois nesse caso a rotina do Fábio Pereira não usa ponteiros:
- Código: Selecionar todos
void lcd_escreve_char(char c)
// envia um caractere para o display
{
switch (c)
{
case '\f' : lcd_envia_byte(0,1);
delay_ms(5);
break;
case '\n' :
case '\r' : lcd_pos_xy(1,2);
break;
default : lcd_envia_byte(1,c);
}
}
Mas isso não ficou prático. Como faço para passar o ponteiro de 16 bits para a função lcd_escreve_string?