Обработчик прерываний таймера - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Нужна помощь в написании проги на паскале в пределах операционной среды MS DOS разработать обработчик прерываний таймера,который после своей установки каждую секунду меняет показания цифровых часов, изображенного на графическом экране. (использовать графический режим 640Х480Х16)

Решение задачи: «Обработчик прерываний таймера»

textual
Листинг программы
{.$M $1000,0,0}
Uses Graph, Crt, Dos;
Var
  OldVect: pointer;
  TimerVect: Procedure;
  hr, min, sec, hund: word;
  second_call: boolean;
 
const
  tm = '00:00:00';
 
Function Beauty(n: Word): String;
var s: string;
begin
  str(n, s);
  while length(s) < 2 do s := '0' + s;
  Beauty := s;
end;
Procedure PrintTime;
begin
  bar(getmaxx div 2 - textwidth(tm) div 2, getmaxy div 2 - textheight(tm),
  getmaxx div 2 + textwidth(tm) div 2, getmaxy div 2 + textheight(tm));
  outtextxy(getmaxx div 2, getmaxy div 2, Beauty(hr)+':'+Beauty(min)+':'+Beauty(sec));
End;
{$F+}
Procedure MyTimer; interrupt;
begin
  if second_call then begin
    inc(hund, 11);
    if hund >= 100 then begin
      dec(hund, 100); inc(sec);
      if sec >= 60 then begin
        dec(sec, 60); inc(min);
        if min >= 60 then begin
          dec(min, 60); inc(hr);
          if hr >= 24 then dec(hr, 24);
        end;
      end;
      printtime;
    end;
  end;
  Inline ($9C);
  TimerVect;
  second_call := not second_call;
end;
{$F-}
var gd, gm, err : integer;
begin
  { GetTime(hr, min, sec, hund); }
  gd := Detect;
  initgraph(gd, gm, '');
  err := graphresult;
 
  if err <> grOk then
  begin
    writeln('error : ' + grapherrormsg(err));
    halt(1);
  end;
  setfillstyle(solidfill, getbkcolor);
  settextjustify(centertext, centertext);
 
  hr := 0; min := 0; sec := 0; hund := 0;
  second_call := false;
  GetIntVec ($8, @TimerVect);
  GetIntVec ($8, OldVect);
  SetIntVec ($8, Addr (myTimer));
 
  repeat delay(10); until keypressed;
  while keypressed do readkey;
 
  SetIntVec ($8, OldVect);
  closegraph;
end.

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


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

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

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