Всем откликнувшимся спасибо!
Насчет логического сложения вместо арифметического, это дело, если для IBM совместимой на время выполнения может и не сильно повлияет, то для МК это будет выход из положения. Всеравно попробую.
Строку
Код:
clk = ((inportb(0x40))) + (inportb(0x40)<<8);
Менят на
Код:
clk = inportb(0x40) * 0x101;
нельзя, я забыл предупредить что нужно читать вначале младший байт, затем старший.
Склоняюсь все же записать:
Код:
clk = inportb(0x40);
clk |= inportb(0x40) << 8;
это будет действительно, правильно.
Ну а на счет
Код:
clk_sum += clk <= clk_1 ? clk_1 - clk : clk_1 + 0xFFFF - clk;
нужно подумать, а точнее попробовать (пишу на Borland C++ v3.1 под DOS).