void delay(DWORD nTimeMs)
{
	MSG msg;
    DWORD endTick;
    endTick = GetTickCount() + nTimeMs;
    while(GetTickCount() < endTick)
    {
    	if(PeekMessage(&msg, NULL, 0, 0, TRUE))
        {
          	TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
	}
	return;
}

BYTE WriteRead(DWORD Bits, int TClck = 1);

BYTE WriteRead(DWORD Bits, int TClck)
{
	char		ByteToSend	= NULL		;
	//DWORD		Bits		= 0xAC530000;
	char		BitCount	= 0			;
	const DWORD One			= 1			;
	BYTE		DataIn		= NULL		;
	BYTE		DataRec		= NULL		;
	//char		str[100];
	for(BitCount=31;BitCount>=0;BitCount--)
	{
		ByteToSend = ((One<<BitCount) & Bits)?1:0;	// Get Current Bit
		ByteToSend <<= 3;							// Shift Current Bit to data.3 = pin 5
		Out32(888,ByteToSend);
		ByteToSend |= 16;							// Turn On CLOCK IN. Data.4 is pin 6.
		Out32(888,ByteToSend);
		delay(TClck);									// 1 ms delay
		if(BitCount<=7)
		{
			DataIn = Inp32(889);					//Read From Status Register
			DataIn &= 64;
			DataRec <<= 1;
			if(DataIn)
				DataRec |=1;
		}
		ByteToSend &= 0xEF;							// Brink down CLOCK IN
		Out32(888,ByteToSend);
		delay(TClck);
	}
	return DataRec;
}

void Write(DWORD Bits, int TClck = 1);

void Write(DWORD Bits, int TClck)
{
	char		ByteToSend	= NULL		;
	//DWORD		Bits		= 0xAC530000;
	char		BitCount	= 0			;
	const DWORD One			= 1			;
	//BYTE		DataIn		= NULL		;
	//BYTE		DataRec		= NULL		;
	//char		str[100];
	for(BitCount=31;BitCount>=0;BitCount--)
	{
		ByteToSend = ((One<<BitCount) & Bits)?1:0;	// Get Current Bit
		ByteToSend <<= 3;							// Shift Current Bit to data.3 = pin 5
		Out32(888,ByteToSend);
		ByteToSend |= 16;							// Turn On CLOCK IN. Data.4 is pin 6.
		Out32(888,ByteToSend);
		delay(TClck);									// 1 ms delay
		ByteToSend &= 0xEF;							// Brink down CLOCK IN
		Out32(888,ByteToSend);
		delay(TClck);
	}
}

void CMy8051Dlg::OnBnClickedButton2()
{
	WriteRead(0xAC530000);
	Write(0xAC800000);
	Write(0x400000AA);
	BYTE dat = WriteRead(0x20000000);
	char str[20];
	sprintf_s(str,20,"%x",dat);
	MessageBox(str);
	
}

