Ты что наделал Блейн!!! Ты зачем функцию скукожил??? Нука раскукожь ее
обратно! У меня теперь функция беби сайз!!! Ну, а теперь, для сравнения,
поглядим, как это сделано в LCD.c Весь исходник я сюда копировать не
буду, только то, что сделано у меня, ну и всю условную компиляцию я тоже
выкину.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
void lcdControlWrite(u08 data)
{
lcdBusyWait();
cbi(LCD_CTRL_PORT, LCD_CTRL_RS);
cbi(LCD_CTRL_PORT, LCD_CTRL_RW);
sbi(LCD_CTRL_PORT, LCD_CTRL_E);
outb(LCD_DATA_DDR, 0xFF);
outb(LCD_DATA_POUT, data);
LCD_DELAY;
LCD_DELAY;
cbi(LCD_CTRL_PORT, LCD_CTRL_E);
outb(LCD_DATA_DDR, 0x00);
outb(LCD_DATA_POUT, 0xFF);
}
void lcdDataWrite(u08 data)
{
lcdBusyWait();
sbi(LCD_CTRL_PORT, LCD_CTRL_RS);
cbi(LCD_CTRL_PORT, LCD_CTRL_RW);
sbi(LCD_CTRL_PORT, LCD_CTRL_E);
outb(LCD_DATA_DDR, 0xFF);
outb(LCD_DATA_POUT, data);
LCD_DELAY;
LCD_DELAY;
cbi(LCD_CTRL_PORT, LCD_CTRL_E);
outb(LCD_DATA_DDR, 0x00);
outb(LCD_DATA_POUT, 0xFF);
}
Собственно, строчка в строчку — те же яйца только в профиль.
Что подтверждает, сказанный мной в первом посте, тезис, что не важно на
каком языке писать, на си или на ассемблере — главное знать что в какие
порты пихать.