Эта функция получает случайное число
*
*.Params int bound - верхняя граница для генерируемых
* случайных чисел.
**/
void rnd_set(int bound)
{
// Устанавливаем режим 3 для второго канала таймера
outp(0x43, 0xb6);
// Загружаем регистр счетчика таймера - сначала
// младший, затем старший байты
outp(0x42, bound & 0x00ff);
outp(0x42, (bound &0xff00) >> 8);
// Разрешаем работу канала
outp(0x61, inp(0x61) | 1);
}
/**
*.Name rnd_get
*.Title Получение от таймера случайного числа
*
*.Descr Эта функция получает случайное число от
* таймера, который был предварительно
* проинициализирован функцией rnd_set
*
*.Proto int rnd_get(void)
*
*.Params Отсутствуют.
*
*.Return Случайное число в диапазоне от 0, до
* уменьшенного на 1 значения, заданного в
* качестве параметра функции rnd_set().
**/
int rnd_get(void)
{
int i;
// Выдаем команду CLC для фиксирования
// текущего значения регистра канала 2 таймера
outp(0x43, 0x86);
// Вводим младший и старший байты счетчика
i = inp(0x42);
i = (inp(0x42) << 8) + i;
return(i);
}
Содержание Назад Вперед