Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2014, 12:48   #1
Novichek5695
Новичок
Джуниор
 
Регистрация: 01.12.2014
Сообщений: 1
По умолчанию Работа портами ввода вывода...

В общем было задание написать программу бегущий огонь (бегущая единица) на тестере LPT порта, программу написал( программу представлю ниже). Теперь задание изменить ее так, чтобы горели например 2 лампочки вместе и через одну бежали. И сделать это же отражение в делфи, на shape.
что изменить в программе и как привязать это к spape?
Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls;

  function Inp32(PortAdr:word): byte; stdcall; external 'inpout32.dll';
  function Out32(PortAdr:word; Data: byte): byte; stdcall; external 'inpout32.dll';

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Timer1: TTimer;
    TrackBar1: TTrackBar;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Dir: boolean;
  Fire: integer=$01;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=false;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Dir:=not Dir;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
Data: byte;
begin
Data:=not Fire;
Edit1.Text:=Inttostr(not data);
Out32($378,Data);
If Dir=true then
begin
If Fire=$80 then Fire:=$01
else Fire:=Fire*2; end;

If Dir=false then
begin
If Fire=$01 then Fire:=$80 else Fire:=Fire div 2; end;
end;


procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Timer1.Interval:=TrackBar1.Position;
end;



end.

Последний раз редактировалось Stilet; 01.12.2014 в 13:26.
Novichek5695 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с стандартными библиотеками ввода-вывода C++ Pet61 Общие вопросы C/C++ 1 01.07.2013 16:28
работа с портом ввода вывода Assemblerru Общие вопросы C/C++ 5 25.04.2012 01:33
Работа с платой ввода/вывода PCI-1762 Денис_83 Общие вопросы Delphi 4 28.07.2011 19:50
работа с протами ввода вывода Assemblerru Win Api 4 05.03.2010 20:53