📄 getromunit.pas
字号:
unit GetRomUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TGetRomForm = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
Memo5: TMemo;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
address,data:integer;
function inttobinstr(int:integer;len:integer):string;
public
{ Public declarations }
end;
var
GetRomForm: TGetRomForm;
implementation
{$R *.dfm}
procedure TGetRomForm.Button2Click(Sender: TObject);
begin
close;
end;
function TGetRomForm.inttobinstr(int:integer;len:integer):string;
var
tmp:integer;
tout:string;
i:integer;
begin
tout:='';
tmp:=int;
while tmp<>0 do
begin
tout:=inttostr((tmp-(tmp div 2)*2))+tout;
tmp:=tmp div 2;
end;
for i:=0 to len-length(tout)-1 do
tout:='0'+tout;
result:=tout;
end;
procedure TGetRomForm.Button1Click(Sender: TObject);
var
i:integer;
maxaddlen,maxdatalen:integer;
realadd,realdata,maxdata,mindata:double;
intdata,intadd:integer;
pi:double;
str:string;
begin
if (edit1.text='0') or (edit2.text='0') then exit;
pi:=3.1415926;
address:=strtoint(edit1.text);
data:=strtoint(edit2.text);
maxaddlen:=1;
for i:=0 to address-1 do
maxaddlen:=maxaddlen*2;
maxaddlen:=maxaddlen-1;
maxdatalen:=1;
for i:=0 to data-1 do
maxdatalen:=maxdatalen*2;
maxdatalen:=maxdatalen-1;
memo1.Clear;
memo2.Clear;
memo3.Clear;
memo4.Clear;
memo5.Clear;
str:='';
maxdata:=0;
mindata:=0;
for i:=0 to maxaddlen do
begin
realadd:=2*pi*i/(maxaddlen+1);
realdata:=cos(realadd)*cos(realadd*8);
if realdata>maxdata then maxdata:=realdata;
if realdata<mindata then mindata:=realdata;
end;
for i:=0 to maxaddlen do
begin
realadd:=2*pi*i/(maxaddlen+1);
realdata:=cos(realadd)*cos(realadd*8);
intdata:=strtoint(formatfloat('0',(realdata-mindata)/(maxdata-mindata)*maxdatalen));
intadd:=i;
str:=str+' "'+inttobinstr(intdata,data)+'"'+' '+'WHEN address<='+'"'+inttobinstr(intadd,address)+'"'+' '+'ElSE';
memo1.Lines.Add(str);
str:='';
str:=str+' "'+inttostr(intdata)+'"'+' '+'WHEN address<='+'"'+inttostr(intadd)+'"'+' '+'ElSE';
memo3.Lines.Add(str);
str:='';
str:=' WHEN '+'"'+inttostr(intadd)+'"'+' => '+'MCData<='+'"'+inttostr(intdata)+'";';
memo5.Lines.Add(inttostr(intdata)+',');;
memo4.Lines.Add(str);
str:='';
str:=' WHEN '+'"'+inttobinstr(intadd,address)+'"'+' => '+'MCData<='+'"'+inttobinstr(intdata,data)+'";';
memo2.Lines.Add(str);
str:='';
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -