Системный таймер

Содержание

Слайд 2

К теме: Системный таймер. Динамик

ЦЕЛЬ РАБОТЫ
Получить навыки программирования и изучить возможности использования системного

К теме: Системный таймер. Динамик ЦЕЛЬ РАБОТЫ Получить навыки программирования и изучить
таймера 8254.
Продолжительность работы - 4 часа.

Слайд 3

Системный таймер

Системный таймер

Слайд 4

Задание

Под MS DOS написать программу, которая:
1) c помощью системного таймера генерирует звук

Задание Под MS DOS написать программу, которая: 1) c помощью системного таймера
заданной частоты (по вариантам);

Слайд 5

Задание

Под MS DOS написать программу, которая:
1) c помощью системного таймера генерирует звук

Задание Под MS DOS написать программу, которая: 1) c помощью системного таймера
заданной частоты (по вариантам);
2) выводит слово состояния для каждого канала в двоичном виде;

Слайд 6

Задание

Под MS DOS написать программу, которая:
1) c помощью системного таймера генерирует звук

Задание Под MS DOS написать программу, которая: 1) c помощью системного таймера
заданной частоты (по вариантам);
2) выводит слово состояния для каждого канала в двоичном виде;
3) определяет коэффициент деления для каждого канала в 16-ричном виде.

Слайд 7

Задание

Под MS DOS написать программу, которая:
1) c помощью системного таймера генерирует звук

Задание Под MS DOS написать программу, которая: 1) c помощью системного таймера
заданной частоты (по вариантам);
2) выводит слово состояния для каждого канала в двоичном виде;
3) определяет коэффициент деления для каждого канала в 16-ричном виде.
*Реализовать генератор случайных чисел от нуля до заданного с клавиатуры числа.

Слайд 8

//Настроить канал 2
outp(0x43,0xB6);
kd = base/frequency;
outp(0x42,kd%256); //Low
kd /= 256; //Do smth for

//Настроить канал 2 outp(0x43,0xB6); kd = base/frequency; outp(0x42,kd%256); //Low kd /= 256;
pause
outp(0x42,kd); //High

Генерация звука

//0x61 - ??????11

outp(0x61, inp(0x61)&0xFC); //turn OFF

outp(0x61, inp(0x61)|3); //turn ON
delay(100); //wait

//0x61 - ??????00

Слайд 9

//Для каждого канала
for(iChannel = 0; iChannel < 3; iChannel++)
{
//select a channel

//Для каждого канала for(iChannel = 0; iChannel { //select a channel outp(0x43,
outp(0x43, 11 10 К2 К1 К0 0);
//read
state = inp(0x40 / 0x41 / 0x42);
//make binary …
}

Слово состояния

Слайд 10

//Для каждого канала
for(iChan = 0; iChan < 3; iChan++){
//init, turn

//Для каждого канала for(iChan = 0; iChan //init, turn ON for kd2
ON for kd2 (0х61)
for(j = 0; j < nTimes; j++) {
//select a channel
outp(0x43, КК 00 0000);
kdLow = inp(0x40 / 0x41 / 0x42);
kdHigh = inp(0x40 / 0x41 / 0x42);
kd = kdHigh*256 + kdLow;
//Find MAX …
}
}

Коэффициент деления

Слайд 11

Использовать канал 2.
Выбрать режим работы.
Задать КД (как для части со звуком).
Включить

Использовать канал 2. Выбрать режим работы. Задать КД (как для части со
канал, не включая динамик.
Считывание:
Выбрать канал 2.
Считать число (как при поиске КД).

*Генератор чисел