Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
:"d"(port)
)
#define IN_P_W(val,port)
asm(
"inw %%dx, %%ax"
:"=a"(val)
:"d"(port)
)
Макрос OUT_P_B осуществляет запись байта в порт, макросы IN_P_B и IN_P_W – чтения байта/слова из порта.
Для работы с устройством определим несколько функций.
Функция проверки статуса устройства (занято/свободно):
void hd_busy()
{
unsigned char status;
do {
IN_P_B(status,HD_STATUS);
} while (status & 0x80);
return;
}
Проверка статуса устройства осуществляется проверкой значения бита 7 (BSY) регистра состояния. Если бит сброшен, устройство свободно и регистры контроллера доступны.
Функция проверки готовности устройства к восприятию команд:
void hd_ready()
{
unsigned char status;
do {
IN_P_B(status,HD_STATUS);
} while (!(status & 0x40));
return;
}
Устройство готово, если бит 6 (DRDY) регистра состояния установлен.
Функция проверки готовности устройства к обмену данными:
int hd_data_request()
{
unsigned char status;
IN_P_B(status,HD_STATUS);
if(status & 0x8) return 1;
return 0;
}