Генерировать ноту МИ пока не будет нажата клавиша Y на клавиатуре - C (СИ)
Формулировка задачи:
#include <dos.h>
main() {
unsigned int gamma[] = /* Коэффициенты деления для нот */
{ 912,813,724,678,609,542,483 };
char *gnames[] = /* Названия нот */
{ "до","ре","ми","фа","соль","ля","си" };
int i;
for(i=0; i<7; i++) { /* Перебор нот */
printf("%s ",gnames[i]);
tone(gamma[i]); /* Звучание ноты */
delay(700); /* Задержка на звучание 700 мсек */
silence(); /* Выключение звука */
delay(50); /* Пауза 50 мсек */
}
printf("\n");
}
/*==== Звучание ноты. Аргумент a - коэфф.деления ====*/
tone(unsigned int a) {
outportb(0x43,0xb6); /* Запись управляющего байта
(выбор канала 2) */
outportb(0x42,a&0x00ff); /* Младший байт счетчика
записывается в порт данных канала 2 */
outportb(0x42,a>>8); /* Старший байт счетчика */
/* Включение динамика. Читается содержимое порта, в него
записываются 1 в разряды 0, 1, затем пишется в порт */
outportb(0x61,inportb(0x61)|0x03);
}
/*==== Выключение звука ====*/
silence() {
/* записываются 0 в разряды 0, 1 порта 0x61 */
outportb(0x61,inportb(0x61)&0xfc);
}Решение задачи: «Генерировать ноту МИ пока не будет нажата клавиша Y на клавиатуре»
textual
Листинг программы
D:\BC31\BIN>bcc -ID:\BC31\INCLUDE -LD:\BC31\LIB b.c Borland C++ Version 3.1 Copyright (c) 1992 Borland International b.c: Warning b.c 9: Call to function 'printf' with no prototype in function main Warning b.c 10: Call to function 'tone' with no prototype in function main Warning b.c 12: Call to function 'silence' with no prototype in function main Warning b.c 15: Call to function 'printf' with no prototype in function main Warning b.c 16: Function should return a value in function main Warning b.c 27: Function should return a value in function tone Warning b.c 32: Function should return a value in function silence Turbo Link Version 5.1 Copyright (c) 1992 Borland International Available memory 4187016