⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 单片机编程的一款好软件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
                 n:=n+9;
                 xa:=x;
                 for i:=0 to nk-1 do
                   begin
                      yi:=y+i;
                      if yi+1>16 then begin yi:=yi-16; xa:=x+1; end;
                      StringGrid1.Cells[yi+1,xa+1]:=buf[n+2*i]+buf[n+2*i+1];
                   end;
                 n:=n+2*nk+4;
                 if buf[n+1]+buf[n+2]='00' then Break;
               end;
             Stringgrid1.RowCount :=xa+2;
           end ;
        0: begin
             x:=0; y:=0;
             N13.Enabled :=False; ToolButton6.Enabled:=False;
             while n<file1.Size do
               begin
                 if buf[n]=':' then
                   if buf[n+1]='1' then nk:=16
                   else nk:=StrToInt('$'+(buf[n+2]));
                 x:=x+1;
                 Stringgrid1.Cells[0,x]:=buf[n+3]+buf[n+4]+buf[n+5]+buf[n+6];
                 n:=n+9;
                 for i:=0 to nk-1 do
                   StringGrid1.Cells[y+1+i,x]:=buf[n+2*i]+buf[n+2*i+1] ;
                 n:=n+2*nk+4;
               end;
             Stringgrid1.RowCount :=x+2;
           end;
        2: begin
             x:=0;
             while n<file1.Size do
               begin
                 x:=x+1; nk:=15;
                 if file1.Size-n<15 then nk:=file1.Size-n ;
                 for i:=0 to nk do
                   StringGrid1.Cells[i+1,x]:=IntToHex(Word(buf[n+i]),2);
                 n:=n+16;
               end;
             Stringgrid1.RowCount :=x+1;
           end;
        3: begin
             x:=0;
             while n<file1.Size do
               begin
                 x:=x+1; nk:=15;
                 if file1.Size-n<15 then nk:=file1.Size-n ;
                 for i:=0 to nk do
                   StringGrid1.Cells[i+1,x]:=buf[n+2*i]+buf[n+2*i+1] ;
                 n:=n+32;
               end;
             Stringgrid1.RowCount :=x+1;
           end;
        4: begin
             x:=StrToInt('$'+buf[1]+buf[2]+buf[3]);
             y:=StrToInt('$'+(buf[4]));
             m:=StrToInt('$'+buf[5]+buf[6]+buf[7]+buf[8]);
             for i:=1 to 2*m do buf[i]:=buf[i+8];
             while n<m do
               begin ;
                 x:=x+1; nk:=15;
                 if m-n<15 then nk:=m-n  ;
                 for i:=0 to nk do
                   StringGrid1.Cells[i+1,x]:=buf[n+2*i]+buf[n+2*i+1] ;
                 n:=n+32;
               end;
             Stringgrid1.RowCount :=x+1;
           end;
      end;
      LL:=x*16;
      LL:=LL+y+nk;
      if (LL mod 16)<>0 then LL:=(LL div 16)*16+16;
      sz:=IntToHex(LL,4);
      Edit1.Text :='装入字节数: '+sz;
      file1.Free;
    end;
end;
{------------------------------------------------------------------------------}
procedure TF_Main.N3Click(Sender: TObject);      // <保存>菜单处理事件
var
  i,j:Integer;
  bufa:array[0..2]of Char;
begin
  if SaveDialog1.Execute then
    begin
      file2:=TFilestream.Create(SaveDialog1.FileName, fmopenwrite or fmcreate);
      for i:=1 to StringGrid1.RowCount-1 do
        for j:=1 to 16 do
          begin
            if StringGrid1.Cells[j,i]<>'' then
              Strpcopy(bufa,StringGrid1.Cells[j,i])
            else  bufa:='  ';
            if Radiogroup2.ItemIndex=2 then
              begin
                bufa[0]:=Char(StrToInt('$'+bufa[0]+bufa[1]));
                file2.Write(bufa,1)
              end
            else file2.Write(bufa,2);
          end;
    end;
  file2.Free ;
end;
{------------------------------------------------------------------------------}
procedure TF_Main.N5Click(Sender: TObject);      // <退出>菜单处理事件
begin
  COMM1.StopComm;
  myini.Writeinteger('芯片选择','型号',Radiogroup1.ItemIndex);
  myini.Writeinteger('文件格式','类型',Radiogroup2.ItemIndex);
  Application.Terminate;
end;

{------------------------------------------------------------------------------}
{--------------------------------- 操作菜单  ----------------------------------}
procedure TF_Main.N7Click(Sender: TObject);      // <清空程序存储器>菜单处理事件
var
  i,j:Integer;
begin
  for i:=1 to StringGrid1.RowCount do
    for j:=1 to 17 do
      if Radiobutton1.Checked then StringGrid1.Cells[j,i]:='FF'
      else StringGrid1.Cells[j,i]:='00';
end;
{------------------------------------------------------------------------------}
procedure TF_Main.E1Click(Sender: TObject);      // <擦除芯片>菜单处理事件
begin
  Read:=False;  s:=Char($88);
  case RadioGroup1.ItemIndex of
    0: s:=Char($27);     //2051
    1: s:=Char($25);     //89c51
    2: s:=Char($25);     //89c52
    3: s:=Char($24);     //89s51
    4: s:=Char($24);     //89s52
    5: s:=Char($24);     //89s53
  end;
  Comm1.WriteCommData(pchar(s),1);
end;
{------------------------------------------------------------------------------}
procedure TF_Main.N8Click(Sender: TObject);      // <读取芯片>菜单处理事件
begin
  Comp:=False;
  Read:=True; ja:=1; ia:=1;
  case RadioGroup1.ItemIndex of
    0: begin s:=Char($07); sz:='0800' end;    //2051
    1: begin s:=Char($05); sz:='1000' end;    //89c51
    2: begin s:=Char($06); sz:='2000' end;    //89c52
    3: begin s:=Char($05); sz:='1000' end;    //89s51
    4: begin s:=Char($06); sz:='2000' end;    //89s52
    5: begin s:=Char($08); sz:='4000' end;    //89s53
    6: begin s:=Char($01); sz:='2000' end;    //2764
    7: begin s:=Char($01); sz:='2000' end;    //2864
    8: begin s:=Char($03); sz:='2000' end;    //new
    9: begin s:=Char($09); sz:='2000' end;    //new1
  end;
  LL:= StrToInt('$'+sz);  w:=LL;
  Comm1.WriteCommData(pchar(s),1);            //发出控制码
  Progressbar1.Min :=0;                       //最小值
  Progressbar1.Max :=LL;                      //最大值
  Progressbar1.step:=256;                     //步进
  Progressbar1.Position:=0 ;
end;
{------------------------------------------------------------------------------}
procedure TF_Main.N13Click(Sender: TObject);     // <写入芯片>菜单处理事件
begin
  Read:=false; ia:=1;  ja:=1;
  if Stringgrid1.Cells[1,1]='' then Showmessage('没有装入数据。')
  else
    begin
      Progressbar1.Min :=0;                          //最小值
      Progressbar1.Max :=LL;                         //最大值
      Progressbar1.step:=16;                         //步进
      Progressbar1.Position:=0 ;
      case RadioGroup1.ItemIndex of
        0: begin s:=Char($17); end;    //2051
        1: begin s:=Char($15); end;    //89c51
        2: begin s:=Char($15); end;    //89c52
        3: begin s:=Char($14); end;    //89s51
        4: begin s:=Char($14); end;    //89s52
        5: begin s:=Char($18); end;    //89s53
        6: begin s:=Char($12); end;    //2864
        7: begin s:=Char($11); end;    //2764
        8: begin s:=Char($13); end;    //new
        9: begin s:=Char($19); end;    //new1
      end;
      Comm1.WriteCommData(pchar(s),1);
    end ;
end;
{------------------------------------------------------------------------------}
procedure TF_Main.N9Click(Sender: TObject);      // <开始校验>菜单处理事件
begin
  Comp:=True;
  Read:=True; ja:=1; ia:=1;
  case RadioGroup1.ItemIndex of
    0: begin s:=Char($07); sz:='0800' end;    //2051
    1: begin s:=Char($05); sz:='1000' end;    //89c51
    2: begin s:=Char($06); sz:='2000' end;    //89c52
    3: begin s:=Char($05); sz:='1000' end;    //89s51
    4: begin s:=Char($06); sz:='2000' end;    //89s52
    5: begin s:=Char($08); sz:='4000' end;    //89s53
    6: begin s:=Char($01); sz:='2000' end;    //2764
    7: begin s:=Char($01); sz:='2000' end;    //2864
    8: begin s:=Char($03); sz:='2000' end;    //new 新开发的芯片   ???
    9: begin s:=Char($09); sz:='2000' end;    //new1               ???
  end;
  LL:= StrToInt('$'+sz);  w:=LL;
  Comm1.WriteCommData(pchar(s),1);            //发出控制码
  Progressbar1.Min :=0;                       //最小值
  Progressbar1.Max :=LL;                      //最大值
  Progressbar1.step:=256;                     //步进
  Progressbar1.Position:=0 ;
end;
{------------------------------------------------------------------------------}
{--------------------------------- 帮助菜单  ----------------------------------}
procedure TF_Main.H1Click(Sender: TObject);      // <帮助>菜单处理事件
begin F_Help.ShowModal; end;                     // 显示帮助对话框
{------------------------------------------------------------------------------}
procedure TF_Main.A1Click(Sender: TObject);      // <关于>菜单处理事件
begin F_About.ShowModal; end;                   // 显示关于对话框
{------------------------------------------------------------------------------}

{==============================================================================}
/////////////////////////////////// 程序结束 ///////////////////////////////////
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -