Генерировать ноту МИ пока не будет нажата клавиша 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);
  }
4.1 Вариант 1. Генерировать ноту МИ пока не будет нажата клавиша Y на клавиатуре. 4.2 Вариант 2. Генерировать ноты ДО, СИ, пока не будет нажата любая клавиша. 4.3 Вариант 3. Используя PPI генерировать звук. 4.4 Вариант 4. Используя таймер генерировать ноты ДО, РЕ, МИ, пока не будет нажата любая клавиша. 4.5 Вариант 5. При нажатии клавиши Y начать генерировать звук, до тех пор, пока не будет нажата клавиша N. 4.6 Вариант 6. Генерировать ноты ФА, СОЛЬ, пока не будет нажата любая клавиша. 4.7 Вариант 7. Генерировать звук, изменяя частоту и длительность звучания, пока не будет нажата любая клавиша.

Решение задачи: «Генерировать ноту МИ пока не будет нажата клавиша 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы