Требования к оформлению лабораторной работы
ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ № 3
Quot;Ознайомлення з програмною моделлю таймера ПК
Та стандартним системним звуковим каналом".
Сигнал для управления динамиком формируется в результате совместной работы микросхем:
- программируемого периферийного интерфейса і8255 (для ХТ) и і8242 (для АТ);
- таймера і8253.
Основная генерация звука производится микросхемой таймера, имеющей три канала с одинаковой структурой и принципом работы. На каналы таймера подаются импульсы от микросхемы системных часов с частотой 1,19 МГц. Каждый канал имеет два входа и один выход. Канал 0 замкнут на контроллер прерываний и является источником аппаратного прерывания от таймера, возникающего 18,2 раза в секунду. Канал 1 связан с микросхемой прямого доступа к памяти. Канал 2 выходит на динамик компьютера. В состав каждого канала входят:
- регистр ввода-вывода разрядностью 8 бит,
- регистр-защелка (16 бит),
- регистр-счетчик (16 бит).
Каждый регистр ввода-вывода имеет адрес в адресном пространстве ввода-вывода (номер порта ввода-вывода). Регистр ввода-вывода канала 2 имеет номер порта ввода-вывода 42h. Помещаемые в него значения немедленно попадают в регистр-защелку, где значение сохраняется, пока в регистр ввода-вывода не будет записано новое значение. Выбор канала осуществляется обращением к регистру управления (порту 43h), входящему в состав таймера и содержащему слово состояния следующей структуры:
- бит 0 - тип константы пересчета (0 - двоичное число, 1 - двоично-десятичное);
- биты 1-3 - режим работы таймера (в данной работе использовать режим 3);
- биты 4-5 - 00-передать значение счетчика в регистр-защелку; 01-записать в регистр-защелку младший байт; 10-записать в регистр-защелку старший байт; 11-записать в регистр-защелку сначала старший байт, а затем - младший (в данной работе использовать значение 11);
- биты 6-7 определяют номер канала (в данной работе использовать значение 10).
Подачей тока на динамик управляет бит 1 порта 61h. Бит 0 порта 61h открывает или закрывает выход канала.
Для генерации (второй канал таймера прямоугольных импульсов, загружаемые в порт 42 значения (value) должны быть четными:
Value = 1193181/f (f - частота звукового сигнала)
Таким образом, для программирования звукового канала таймера необходимо:
- посредством порта 43h выбрать канал, задать режим работы и тип операции передачи значения в канал;
- подать ток на динамик установив в 1 бит 1 порта 61h;
- поместить в порт 42h значение, соответствующее высоте тона.
Частоты звучания нот
Частота, Гц | Суб-контp- | Контp- | Большая | Малая | 1.00 | 2.00 | 3.00 | 4.00 | 5.00 | |
Hота | октава | октава | октава | октава | октава | октава | октава | октава | октава | |
До | C | 32.70 | 65.41 | 130.82 | 261.63 | 523.25 | 1046.50 | 2093.00 | 4186.00 | |
До-диез | C | 34.65 | 69.30 | 138.59 | 277.18 | 554.36 | 1108.70 | 2217.40 | 4434.80 | |
Ре | D | 36.95 | 73.91 | 147.83 | 293.66 | 587.32 | 1174.60 | 2349.20 | 4698.40 | |
Ре-диез | D | 38.88 | 77.78 | 155.56 | 311.13 | 622.26 | 1244.50 | 2489.00 | 4978.00 | |
Ми | E | 20.61 | 41.21 | 82.41 | 164.81 | 329.63 | 659.26 | 1318.50 | 2637.00 | 5274.00 |
Фа | F | 21.82 | 43.65 | 87.31 | 174.62 | 349.23 | 698.46 | 1396.90 | 2793.80 | |
Фа-диез | F | 23.12 | 46.25 | 92.50 | 185.00 | 369.99 | 739.98 | 1480.00 | 2960.00 | |
Соль | G | 24.50 | 49.00 | 98.00 | 196.00 | 392.00 | 784.00 | 1568.00 | 3136.00 | |
Соль-диез | G | 25.95 | 51.90 | 103.80 | 207.00 | 415.30 | 830.60 | 1661.20 | 3332.40 | |
Ля | A | 27.50 | 55.00 | 110.00 | 220.00 | 440.00 | 880.00 | 1720.00 | 3440.00 | |
Си-бемоль | B | 29.13 | 58.26 | 116.54 | 233.08 | 466.16 | 932.32 | 1864.60 | 3729.20 | |
Си | H | 30.87 | 61.74 | 123.48 | 246.96 | 493.88 | 987.75 | 1975.50 | 3951.00 |
1. Составить две функции: вида void идентификатор (unsignedint Tn),где Tn – продолжительность звучания (или паузы) представлена рядом констант:
Tn=T0=4 сек |
Tn=T0T=6 сек |
Tn=T2=2 сек |
Tn=T2T=3 сек |
Tn=T4=1 сек |
Tn=T4T=1,5 сек |
Tn=T8=0,5 сек |
Tn=T8T=0,75 сек |
Tn=T16=0,25 сек |
Tn=T16T=0,375 сек |
Tn=T32=0,125 сек |
Tn=T32T=0,187 сек |
Tn=T64=0,062 сек |
Tn=T128=0,031 сек |
для генерации звука с заданными значениями частот, определяемых идентификаторами:
С0=65 Гц, | D0=74 Гц | ||
E0=82 Гц, | F0=87 Гц | ||
G0=98 Гц, | A0=110 Гц | ||
В0=116 Гц, | Н0=124 Гц | ||
С=130 Гц, | D=148 Гц | ||
E=164 Гц, | F=174 Гц | ||
G=196 Гц, | A=220 Гц | ||
B=232 Гц, | H=248 Гц | ||
C1=260 Гц, | D1=296 Гц | ||
E1=328 Гц, | F1=348 Гц | ||
G1=392 Гц, | A1=440 Гц | ||
B1=464 Гц, | H1=496 Гц | ||
C0D=69 Гц, | D0D=78 Гц | ||
F0D=92 Гц, | G0D=104 Гц | ||
CD=138 Гц, | D0=156 Гц | ||
FD=184 Гц, | GD=208 Гц | ||
C2=520 Гц, | D2=592 Гц | ||
E2= 656 Гц, | F2=696 Гц | ||
G2=784 Гц, | A2=880 Гц | ||
B2=928 Гц, | H2=992 Гц | ||
C1D=276 Гц, | D1D=312 Гц | ||
F1D=368 Гц, | G1D=416 Гц | ||
C2D=552 Гц, | D2D=624 Гц | ||
F2D=736 Гц, | G2D=832 Гц | ||
C3=1040 Гц, | D3=1184 Гц | ||
E3=1312 Гц, | F3=1392 Гц | ||
G3=1568 Гц, | A3=1760 Гц |
и функцию паузы вида void P (unsigned int Tn).
Требования к оформлению лабораторной работы
Работа должна быть оформлена как в виде твердой копии, так и в электронном варианте (на диске). На диске должны быть представлены файлы с исходными программными кодами и соответствующий компилированный вариант (.exe). Исходный код должен содержать краткие комментарии и соответствовать требованиям “хорошего стиля” программирования.
Работа выполняется в тетради и содержит описание хода выполнения задания (назначение разрабатываемой программы в целом и ее функциональных модулей-функций, описание работы программы и ее функциональных модулей, полный исходный код программы на алгоритмическом языке высокого уровня С/С++.
Пример записи исходного программного кода:
# include <заголовочный файл>
# define T0 // описательные
......................................
# define T128 // константы (14 - значений )
void E (...);
void E2 (...); // объявление прототипов функций
void P (...);
void main ( )
{
E(T0); P(T32); E2(T4); E(T0); P(T4); и т.д. последовательно из 10-12 составленных Вами функций
}
void E (...)
{ }
void E2 (...) // определение функций
{ }
void P(...)
{ }
К заданию 2 предъявляются аналогичные требования. В задании 2 необходимо продемонстрировать сравнительное звучание системного звукового сигнала со звуком с определенной Вами частотой.
Некоторые замечания. При модификации битовых значений регистров-портов, допускающих чтение и запись (R/W), необходимо сохранить исходное состояние битов регистра во временной переменной для их последующего восстановления в заключительной части программного кода.