Звук через BEEPER в Delphi

Вот пример для доступа к системному динамику:

// Вывод в порт внешнего устройства с адресом-ADR, байта-data 
procedure OutPort(adr: word; data: byte);
begin
  asm
    mov dx,adr 
    mov al,data 
    out dx,al
  end; 
end;
 
// Ввод из порта внешнего устройства с адресом-ADR
function InPort(adr: word):byte; 
begin
  asm
    mov dx,adr 
    in al,dx 
    mov @result,al 
  end; 
end; 
 
// Процедура доступа до системного динамика и организация beep.   
// Организуя задержку, независимую от скорости процессора, например
//через функцию GetTickCount, можно сделать все более корректно. 
procedure TForm1.Button1Click(Sender: TObject); 
var
  b: byte;  
  n,m: word; 
begin
  b:=Inport($61); 
  for n:=1 to 200 do
  begin
    {n:=200 - длительность звучания}
    {m:=700 - частота звучания}
    for m:=1 to 700 do
      Outport($61,b and not(2)); 
    {установить 2-ой бит в 0}
    for m:=1 to 700 do
      Outport($61,b or 2); 
    {установить 2-ой бит в 1}
  end; 
end;
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (10 оценок, среднее: 5,00 из 5)
Загрузка...
Добавить комментарий