Вообщем, вот окончательный вариант, если кому пригодится, правда без русских букв ёЁ, но это 2-мя отдельными if-ами. Вывожу на 16-знаковый ЖКИ hd44780r, проверил в железе, работает.
Код
const unsigned char rusTable[64]= {
0x41, 0xA0, 0x42, 0xA1, 0xE0, 0x45, 0xA3, 0xA4, 0xA5, 0xA6, 0x4B, 0xA7, 0x4D, 0x48, 0x4F, 0xA8,
0x50, 0x43, 0x54, 0xA9, 0xAA, 0x58, 0xE1, 0xAB, 0xAC, 0xE2, 0xAD, 0xAE, 0xAD, 0xAF, 0xB0, 0xB1,
0x61, 0xB2, 0xB3, 0xB4, 0xE3, 0x65, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0x6F, 0xBE,
0x70, 0x63, 0xBF, 0x79, 0xE4, 0x78, 0xE5, 0xC0, 0xC1, 0xE6, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7};
const unsigned char Message[16]= {"Привет,мир World"};
main() {
unsigned char i,currentPOS;
TRISB=0x00;
di();
//---------инициализация lcd-----------
lcd=0;
delay(1300);
lcd=0x30;
bitset (lcd, en); bitclr (lcd, en);// _/\_
delay(7);
bitset (lcd, en); bitclr (lcd, en);// _/\_
delay(230);
wr_command_lcd(0x20);
wr_command_lcd(0x28);
wr_command_lcd(0x0C);
wr_command_lcd(0x06);
wr_command_lcd(0x01);
delay(230);
//----------Загрузка строки --------
wr_command_lcd(0x80);
for (i=0;i<8;i++) {
currentPOS= Message[i];
if (currentPOS > 0x7F) currentPOS=rusTable[Message[i]-0xC0];
wr_data_lcd(currentPOS); }
wr_command_lcd(0xC0);
for (i=8;i<16;i++) {
currentPOS= Message[i];
if (currentPOS > 0x7F) currentPOS=rusTable[Message[i]-0xC0];
wr_data_lcd(currentPOS); }