logo
несколько программ / bsp33

ПрограммаKbdled

Приведем пример простейшей программы KBDLED, управляющей светодиодами, расположенными на лицевой панели клавиатуры (листинг 2.1). Такое управление может выполняться только при использовании порта 60h, так как BIOS не содержит никаких подходящих для этого функций. Наша программа после запуска включит все светодиоды и будет ожидать, пока вы не нажмете любую клавишу. Затем программа выключит светодиоды.

Заметим, что программа KBDLED может не работать на виртуальной машине DOS, создаваемой, например, в операционной системеMicrosoft Windows NT.

Листинг 2.1. Файлkbdled\kbdled.c

// =====================================================

// Переключение светодиодов на клавиатуре

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW: http://www.glasnet.ru/~frolov

// или

// http://www.dials.ccas.ru/frolov

// =====================================================

#include <stdio.h>

#include <conio.h>

int main(void)

{

int i;

printf("KBDLED, (c) A. Frolov, 1997\n");

// Посылаем процессору клавиатуры

// команду управления светодиодами

outp(0x60,0xed);

// Перед посылкой второго байта команды

// выполняем небольшую задержку

for(i=0; i<4000; i++);

// Выводим второй байт команды, младшие три бита

// которого определяют состояние светодиодов

// на лицевой панели клавиатуры

outp(0x60,7);

printf("Нажмите любую клавишу для выключения "

"светодиодов\n");

// Задерживаем выполнение программы, пока

// пользователь не нажмет на любую клавишу

getch();

// Выключаем все светодиоды

outp(0x60,0xed);

for(i=0; i<4000; i++);

outp(0x60,0);

return 0;

}