Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ № 3
"Ознайомлення з програмною моделлю таймера ПК
та стандартним системним звуковим каналом".
Сигнал для управления динамиком формируется в результате совместной работы микросхем:
- программируемого периферийного интерфейса і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 значение, соответствующее высоте тона.
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 сек |
для генерации звука с заданными значениями частот, определяемых идентификаторами:
1 |
С0=65 Гц, |
D0=74 Гц |
|
2 |
E0=82 Гц, |
F0=87 Гц |
|
3 |
G0=98 Гц, |
A0=110 Гц |
|
4 |
В0=116 Гц, |
Н0=124 Гц |
|
5 |
С=130 Гц, |
D=148 Гц |
|
6 |
E=164 Гц, |
F=174 Гц |
|
7 |
G=196 Гц, |
A=220 Гц |
|
8 |
B=232 Гц, |
H=248 Гц |
|
9 |
C1=260 Гц, |
D1=296 Гц |
|
10 |
E1=328 Гц, |
F1=348 Гц |
|
11 |
G1=392 Гц, |
A1=440 Гц |
|
12 |
B1=464 Гц, |
H1=496 Гц |
|
13 |
C0D=69 Гц, |
D0D=78 Гц |
|
14 |
F0D=92 Гц, |
G0D=104 Гц |
|
15 |
CD=138 Гц, |
D0=156 Гц |
|
16 |
FD=184 Гц, |
GD=208 Гц |
|
17 |
C2=520 Гц, |
D2=592 Гц |
|
18 |
E2= 656 Гц, |
F2=696 Гц |
|
19 |
G2=784 Гц, |
A2=880 Гц |
|
20 |
B2=928 Гц, |
H2=992 Гц |
|
21 |
C1D=276 Гц, |
D1D=312 Гц |
|
22 |
F1D=368 Гц, |
G1D=416 Гц |
|
23 |
C2D=552 Гц, |
D2D=624 Гц |
|
24 |
F2D=736 Гц, |
G2D=832 Гц |
|
25 |
C3=1040 Гц, |
D3=1184 Гц |
|
26 |
E3=1312 Гц, |
F3=1392 Гц |
|
27 |
G3=1568 Гц, |
A3=1760 Гц |
и функцию паузы вида void P (unsigned int Tn).
Таблица 2. Частота нот хроматической гаммы
До |
До# |
Ре |
Ре# |
Ми |
Фа |
Фа# |
Соль |
Соль# |
Ля |
Ля# |
Си |
Октава |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Контроктава |
33 |
35 |
37 |
39 |
41 |
44 |
46 |
49 |
52 |
55 |
58 |
62 |
|
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
Большая |
65 |
69 |
73 |
78 |
82 |
87 |
92 |
98 |
104 |
110 |
117 |
123 |
|
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
Малая |
131 |
139 |
147 |
156 |
165 |
175 |
185 |
196 |
208 |
220 |
233 |
247 |
|
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
Первая |
262 |
277 |
294 |
311 |
330 |
349 |
370 |
392 |
415 |
440 |
466 |
494 |
|
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
Вторая |
523 |
554 |
587 |
622 |
659 |
698 |
740 |
784 |
831 |
880 |
932 |
988 |
|
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
Третья |
1047 |
1109 |
1175 |
1245 |
1319 |
1397 |
1480 |
1568 |
1661 |
1760 |
1865 |
1976 |
|
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
Четвертая |
2093 |
2217 |
2349 |
2489 |
2637 |
2794 |
2960 |
3136 |
3322 |
3520 |
3729 |
3951 |
Точка рядом с нотой увеличивает ее длительность на половину.
Требования к оформлению лабораторной работы
Работа должна быть оформлена как в виде твердой копии, так и в электронном варианте (на диске). На диске должны быть представлены файлы с исходными программными кодами и соответствующий компилированный вариант (.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), необходимо сохранить исходное состояние битов регистра во временной переменной для их последующего восстановления в заключительной части программного кода.
Мелодии.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.