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

📄 unit1.cpp

📁 CMOS数据的写程序
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "WinRing.hpp"

#include "Unit1.h"
#include "stdio.h"
#include "mem.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------Z------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)
{
        ShowTimer(NULL);
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
        OpenWinRing();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
        CloseWinRing();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ReadRTC(void)
{
        BYTE Val, Index;
        asm cli;
        for (int i=0;i<3; i++)
        {
          Index=i*2;
          asm{
            mov al, Index
            out 0x70, al
            in al, 0x71
            mov Val, al}
            Timer[i]=Val;
        }
        asm sti;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ShowTimer(TObject *Sender)
{
        ProcessRing0(ReadRTC);

        String Str;
        Str.sprintf("%.2X", Timer[2]);
        Edit1->Text=Str;
        Str.sprintf("%.2X", Timer[1]);
        Edit2->Text=Str;
        Str.sprintf("%.2X", Timer[0]);
        Edit3->Text=Str;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ReadComs(void)
{
        BYTE Val, Index;
        asm cli;
        for (int i=0;i<128; i++)
        {
          Index=i;
          asm{
            mov al, Index
            out 0x70, al
            in al, 0x71
            mov Val, al}
            CMOSData[i]=Val;
        }
        asm sti;
}
//---------------------------------------------------------------------------
void __fastcall  TForm1::WriteComs(void)
{
        BYTE Val, Index;
        asm cli;
        for (int i=0x10;i<128; i++)
        {
          Index=i;
          Val=CMOSData[i];
          asm{
            mov al, Index
            out 0x70, al
            mov al, Val
            out 0x71, al}
        }
        asm sti;
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   FILE* fp;
   String fn;
   ProcessRing0(ReadComs);
   Sleep(10);
   TDateTime  dt=Time();
   fn="cmos_" + dt.FormatString("HHMMSS")+".hex";
   fp=fopen(fn.c_str(),"wb+");
   fwrite(CMOSData,sizeof(BYTE),128,fp);
   fclose(fp);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
   FILE* fp;
   String fn;
   memset(CMOSData,0,128);
   if(dlgOpen1->Execute())
      fn=dlgOpen1->FileName;
   else
       return;
   fp=fopen(fn.c_str(),"rb");
   if(fp)
   {
     fread(CMOSData,sizeof(BYTE),128,fp);
     fclose(fp);
   }
   else
   {
     Application->MessageBox("文件打开失败,没有找到数据文件或文件正在被使用!", "出错", MB_OK + MB_ICONWARNING);
     return;
   }
   ProcessRing0(WriteComs);
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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