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

📄 unit1.~cpp

📁 并口的EPP模式模拟IIC接口
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TSimI2CForm *SimI2CForm;
#define READ_COMMAND 0x9d//d1;//9D;//D1;
WORD WRITE_COMMAND=0x9c;//d0;//9C;//D0;
WORD PMU_ADDR_READ_COMMAND=0X9D;
WORD PMU_ADDR_WRITE_COMMAND=0X9D;
WORD PMU_ADDR_IRQ=0X60;
#define PMU_ADDR_IRQM 0x62
#define PMU_ADDR_ON/OFF1 0x64
#define PMU_ADDR_ON/OFF2 0x66
#define PMU_ADDR_ON/OFF3 0x68
#define PMU_ADDR_OUT1 0x70
#define PMU_ADDR_OUT2 0x72
#define PMU_ADDR_OUT3 0x74
#define PMU_ADDR_CHARGER 0x78
#define PMU_ADDR_MISC 0x80
#define PMU_ADDR_TEST1 0x86
#define PMU_ADDR_TEST2 0x88

//---------------------------------------------------------------------------
__fastcall TSimI2CForm::TSimI2CForm(TComponent* Owner)
        : TForm(Owner)
{
        SCL=0X01;
        SDO=0X02;
        SDI=0X08;
        DVDD=0X04; 
}
//---------------------------------------------------------------------------

void __fastcall TSimI2CForm::ExecutiveClick(TObject *Sender)
{
        bool rlst;
        WORD addr,data;
        BYTE addr_msb,addr_lsb;
        addr=StrToInt("0x"+Address->Text);
        data=StrToInt("0x"+Data->Text);
        addr_msb=(addr&0xFF00)>>8;
        addr_lsb=addr&0x00FE;
        my_bus.Mem_Reset();
        my_bus.Start();
        if(RadioWrite->Checked) {
        //my_bus.WriteBit(0x80);
        //my_bus.WriteBit(0x00);//to verify the SDA and SCL


                // Write operation
                my_bus.WriteByte(WRITE_COMMAND);
                rlst=my_bus.WaitACK();
               // my_bus.WriteByte(addr_msb);
                //rlst=my_bus.WaitACK();
                my_bus.WriteByte(addr_lsb);
                rlst=my_bus.WaitACK();
                my_bus.WriteByte(data);
                rlst=my_bus.WaitACK();
        }
        else {
                // Read operation
                my_bus.WriteByte(WRITE_COMMAND);
               // rlst=my_bus.ReadBit();//=my_bus.WaitACK();
               // my_bus.WriteByte(addr_msb);
                rlst=my_bus.WaitACK();
                my_bus.WriteByte(addr_lsb);
                rlst=my_bus.WaitACK();
   //             my_bus.Stop();
                my_bus.Start();
                my_bus.WriteByte(READ_COMMAND);
                rlst=my_bus.WaitACK();
                data=my_bus.ReadByte();
                //rlst=my_bus.WaitACK();//
                Data->Text=IntToHex(data,2);
        }
        my_bus.Stop();
        if(rlst)
                LED->Brush->Color=clLime;
        else
                LED->Brush->Color=clRed;
}
//---------------------------------------------------------------------------

void __fastcall TSimI2CForm::ProcessClick(TObject *Sender)
{
        my_bus.Start();
        my_bus.WriteByte(0x9E);
        my_bus.WaitACK();
        my_bus.Stop();

        my_bus.Start();
        my_bus.WriteByte(0x9C);
        my_bus.WaitACK();
        my_bus.Stop();

        my_bus.Start();
        my_bus.WriteByte(0x00);
        my_bus.WaitACK();
        my_bus.Stop();
}
//---------------------------------------------------------------------------








void __fastcall TSimI2CForm::I2CBusSetClick(TObject *Sender)
{
    TPinSet *My_Pin=new TPinSet(Application);//this->Owner);//=NULL;//=new TPinSet;
    My_Pin->Show();
   // My_Pin->OnGetSDA();
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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