MegaJohn (28.11.2006 16:31, просмотров: 1) ответил POV на Вопрос к спецам в Си...
в догонку, меня это тоже интересует, а конкретно взаимодействие между к примеру ползьовательской main и готовым драйвером. [+] в данный момент сделано так
**************************
********* main.c *********
**************************
u8 ps2_incoming = 0, ps2_scancode;
while (true)
{
if (ps2_incoming) //Если установлен флаг то принят байт и следует его обработать
ps2_incoming_decode (ps2_scancode);
}
**************************
********* keyb.c *********
**************************
extern u8 incoming, scancode;
void ps2_incoming_decode (u8 scancode) {...};
вектор прерывания
{
scancode = data;
incoming = 1;
}
Пояснение: в main.c обявлена переменная incoming, scancode. при приёме данного в векторе прерывания, который описан в keyb.c в scancode пишется пришедший байт, а в incoming пишется еденица как признак что что-то пришло
в main в цикле проверяется флаг и если он установлен то вызывается из луниюс функция разбора. Вообщем так. Хочется отвязатся от extern или как-то почеловечески, общеупотребительно