art_zh
1. Полностью с тобой согласен, для GMON нужен драйвер и ф.62 должна быть заткнута.
2. Колибри хороша тем, что кардинальные изменения достигаются лёгким движением руки.
Открываем taskman.inc, находим строку
На качественно организованном производстве
переходник RS232/RS485 встречается не реже,
чем персональный компьютер.
Операционные системы приходят и уходят, а последовательный
порт почему-то остаётся.
Следующей идеей у меня было -
подцепить какой-нть RS-485 девайс
(в том же ключе, как на LPTе - светодиоды).
Last edited by VitZ on Sun Jul 28, 2013 4:39 pm, edited 3 times in total.
Устройство двоичного вывода (0 - 24 В) i7042
попытаемся подключить к $3F0 - адресу
на скорости 115200, с 8мью битами данных,
без проверки на чётность и с минимальным количеством стоповых битов.
Last edited by VitZ on Fri Jul 05, 2013 11:41 am, edited 5 times in total.
Устройство i7042 подключаем к компу через переходник i7520;
если (как у меня получалось раньше - из DOS'а) удастся послать
в пром-линию через com-порт строку '$01M',
то устройство (в данном случае i7042)
пришлёт своё имя (i7042 в данном случае
должно иметь в пром-линии адрес 01 и
настройку на скорость 115200) ...
Last edited by VitZ on Sun Nov 02, 2014 2:23 pm, edited 5 times in total.
procedure zapis_v_port(pb1, pb2, b: byte);
begin asm
mov eax, 43
mov bl,b
mov ch, pb1
mov cl, pb2
int $40;
end; end;
...
if key=7 then zapis_v_port($3, $78, 255);
if key=8 then zapis_v_port($3, $78, 0);
, а как в ассемблере записать в регистр (ecx) для номера
порта сразу 2а байта=word (888>255)
(может какие-то квадратные скобочки рядом с ecx использовать
или адрес этой переменной и указать количество её байт) ?
VitZ
Размерность регистра и операнда должны совпадать для команды mov.
Если хочешь записать именно word в ecx можешь воспользоваться к примеру командой movzx.
Не пиши никогда идентификаторы, комментарии и т.д. транслитом, используй английский язык.
Это вроде как Pascal с BASM'ом?
Вместо кучи однотипных if лучше использовать конструкцию case of.
procedure zapis_v_port(pdw:dword; b:byte);
begin asm
mov eax,43
mov bl,b
mov ecx,pdw
int $40
end; end;
...
if key=7 then zapis_v_port(888,255);
if key=8 then zapis_v_port(888,0);
... а транслитом я уже
больше думаю, чем пишу.
Last edited by VitZ on Mon Aug 26, 2013 8:13 pm, edited 1 time in total.
Драйвер нашего com-порта
будет содержать 8 процедур:
zachvat_portov, otdatj_porti, open_com,
zapis_v_port(pdw,b), chtenie_iz_porta(pdw,b), delay(ms),
sc(s1), rc(s2).
Последние две - это:
послать команду в com-порт (строка) и
принять команду из com-порта (строка) соответственно.
Last edited by VitZ on Sun Jun 02, 2013 7:50 pm, edited 1 time in total.
Я предлагаю перенумеровать через randomize все 8 процедур
и продолжить написание кода драйвера по-сути;
например:
p9358765,
p2089764,
...
p7848933.
(Естественно, надо будет проверить -
чтобы не было двух совпадающих имён)