Страница 1 из 1

флоп

Добавлено: 10 дек 2006, 14:39
blick
нужно по нажатию клавиши включать или выключать моторчик...а вот как-не знаю,но очень надо!

Re: флоп

Добавлено: 11 дек 2006, 11:04
somewhere
Придется программировать контроллер НГМД - 8272A.

Вот его основные порты:

3F2h - программирование режима работы контролера
3F4h - чтение регистра состояния контроллера
3F5h - порт данных (чтение, запись), передача комманд, чтение их результатов

Порт 3F2h:

Биты 0-1 : выбор накопителя (00 - первый, 01 - второй и т.д.)
Биты 2 и 3 : нам не интересны
Биты 4 - 7 : Включение моторов, каждый бит отвечает за конкретный дисковод, если установлен - включить, если нет - выключить.
4 бит - мотор первого накопителя
5 бит - мотор второго и т.д.

Теперь включаем мотор :

Код: Выделить всё

mov dx, 3F2h
in al, dx
and al, 00001100h
or al, 00010000h
out dx, al

Re: флоп

Добавлено: 11 дек 2006, 13:09
blick
говорит,что выполнил недопустимую инструкцию :( что делать?

Re: флоп

Добавлено: 11 дек 2006, 21:17
somewhere
Видимо пишешь в Windows. Значит есть три пути:
1. Установить уровень привелегий для проги 0 или 1. (не стоит заморачиваться)
2. Использовать WinAPI для управления дисководом (хотя насчет мотрчика незнаю)
3. Использовать стандартную спецификацию по работе с портами. (наиболее предпочтительно, но тут все от среды программирования зависит)