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

📄 mainloop.c

📁 Philips公司的USB1.1器件D12的固件程序
💻 C
📖 第 1 页 / 共 3 页
字号:

    //MLsup_XferWordFrUSB2IDE();  //Word 0x1A

	c = *((INT8 xdata *)D12_data);  // read D12 for ATA_LByte
    c += (*((INT8 xdata *)D12_data) ) <<8;   // read D12 for ATA_HByte
    *((INT16 xdata *)ATAREG4OUT_DATA) = c ;

    //MLsup_XferWordFrUSB2IDE();  //Word 0x1B

	c = *((INT8 xdata *)D12_data);  // read D12 for ATA_LByte
    c += (*((INT8 xdata *)D12_data) ) <<8;   // read D12 for ATA_HByte
    *((INT16 xdata *)ATAREG4OUT_DATA) = c ;

    //MLsup_XferWordFrUSB2IDE();  //Word 0x1C

	c = *((INT8 xdata *)D12_data);  // read D12 for ATA_LByte
    c += (*((INT8 xdata *)D12_data) ) <<8;   // read D12 for ATA_HByte
    *((INT16 xdata *)ATAREG4OUT_DATA) = c ;

    //MLsup_XferWordFrUSB2IDE();  //Word 0x1D

	c = *((INT8 xdata *)D12_data);  // read D12 for ATA_LByte
    c += (*((INT8 xdata *)D12_data) ) <<8;   // read D12 for ATA_HByte
    *((INT16 xdata *)ATAREG4OUT_DATA) = c ;

    //MLsup_XferWordFrUSB2IDE();  //Word 0x1E

	c = *((INT8 xdata *)D12_data);  // read D12 for ATA_LByte
    c += (*((INT8 xdata *)D12_data) ) <<8;   // read D12 for ATA_HByte
    *((INT16 xdata *)ATAREG4OUT_DATA) = c ;

    //MLsup_XferWordFrUSB2IDE();  //Word 0x1F

	c = *((INT8 xdata *)D12_data);  // read D12 for ATA_LByte
    c += (*((INT8 xdata *)D12_data) ) <<8;   // read D12 for ATA_HByte
    *((INT16 xdata *)ATAREG4OUT_DATA) = c ;

// ==========================================================


#endif


    ATA_DATABUS_LO = 0xFF; // Give up DataBus, MCU_P2 = 0xFF;

    Hal4Sys_D12CmdPortOutB( 0xF2); //clear Buffer

    Hal4ATA_SectCntInBlk -- ;
    if( Hal4ATA_SectCntInBlk == 0)
    {
        Hal4ATA_SectCntInBlk = ATADevExt_IDData.MaximumBlockTransfer << BITNUM4EP2PKT_PER_SECTOR;
  //      Hal4ATA_WaitOnBusyNDrq();
 //  while(ATA_IORDY!=1);
  		  Hal4ATA_WaitOnBusy();
     }

}
#else
void MLsup_XferPktFrUSB2IDE(void)
{
    INT8    c0;

    for(c0=EP2_PACKET_SIZE/2 ; c0!=0; c0--)
        MLsup_XferWordFrUSB2IDE();

    //MCU_P1 = D12REG_ONLY;
   // ATA_DATABUS_LO = 0xFF; // Give up DataBus, MCU_P2 = 0xFF;

    Hal4Sys_D12CmdPortOutB( 0xF2); //clear Buffer

    Hal4ATA_SectCntInBlk -- ;
    if( Hal4ATA_SectCntInBlk == 0)
    {
        Hal4ATA_SectCntInBlk = ATADevExt_IDData.MaximumBlockTransfer << BITNUM4EP2PKT_PER_SECTOR;
//        Hal4ATA_WaitOnBusyNDrq();
        Hal4ATA_WaitOnBusy();
    }

}
#endif


#ifdef MAX_SPEED
	//unsigned char c;
void MLsup_XferPktFrIDE2USB(void)
{
INT16 c ;


	Hal4Sys_D12CmdPortOutB( 0xF0);// Write Buffer
	Hal4Sys_D12DataPortOutB(0);// HI BYTE of Buffer Len
	Hal4Sys_D12DataPortOutB(EP2_PACKET_SIZE);// LO BYTE of Buffer Len


    //MCU_P1 = ATAREG4IN_DATA;

#if(EP2_PACKET_SIZE == 8)
	;

#elif(EP2_PACKET_SIZE == 16)
	;

#elif(EP2_PACKET_SIZE == 32)
	;

#elif(EP2_PACKET_SIZE == 64)

    //MLsup_XferWordFrIDE2USB();  //Word 0x00

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c >>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x01

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x02

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x03

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x04

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x05

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x06

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x07

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x08

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x09

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x0A

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x0B

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x0C

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x0D

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x0E

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x0F

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;
    //MLsup_XferWordFrIDE2USB();  //Word 0x10

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x11
    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;
    //MLsup_XferWordFrIDE2USB();  //Word 0x12

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x13

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x14

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x15

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x16

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x17

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x18

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;
    //MLsup_XferWordFrIDE2USB();  //Word 0x19

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;
    //MLsup_XferWordFrIDE2USB();  //Word 0x1A

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x1B

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x1C

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x1D

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;
    //MLsup_XferWordFrIDE2USB();  //Word 0x1E

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

    //MLsup_XferWordFrIDE2USB();  //Word 0x1F

    c = *((INT16 xdata *)ATAREG4IN_DATA);
    *((INT8 xdata *)D12_data) = c;
	*((INT8 xdata *)D12_data) = c>>8;

#endif

    //MCU_P1 = D12REG_ONLY;
    Hal4Sys_D12CmdPortOutB( 0xFA); //valid Buffer

    Hal4ATA_SectCntInBlk -- ;
    if( Hal4ATA_SectCntInBlk == 0)
    {
        Hal4ATA_SectCntInBlk = ATADevExt_IDData.MaximumBlockTransfer << BITNUM4EP2PKT_PER_SECTOR;
     //   Hal4ATA_WaitOnBusyNDrq();
     Hal4ATA_WaitOnBusy();
    }
}
#else
void MLsup_XferPktFrIDE2USB(void)
{

    INT8 c0;

	Hal4Sys_D12CmdPortOutB( 0xF0);// Write Buffer
	Hal4Sys_D12DataPortOutB(0);// HI BYTE of Buffer Len
	Hal4Sys_D12DataPortOutB(EP2_PACKET_SIZE);// LO BYTE of Buffer Len

   // MCU_P1 = ATAREG4IN_DATA;

    for(c0=EP2_PACKET_SIZE/2 ; c0!=0; c0--)
        MLsup_XferWordFrIDE2USB();

     Hal4Sys_D12CmdPortOutB( 0xFA); //valid Buffer

    Hal4ATA_SectCntInBlk -- ;
    if( Hal4ATA_SectCntInBlk == 0)
    {
        Hal4ATA_SectCntInBlk = ATADevExt_IDData.MaximumBlockTransfer << BITNUM4EP2PKT_PER_SECTOR;
        Hal4ATA_WaitOnBusy();
    }
}
#endif

#ifndef MAX_SPEED
void MLsup_XferWordFrUSB2IDE(void)
{
	INT16 c;
	c = *((INT16 xdata *)D12_data);  // read D12 for ATA_LByte
    *((INT8 xdata *)ATAREG4OUT_DATA) = c ;
    *((INT8 xdata *)ATAREG4OUT_DATA+1) = c >>8 ;
}

void MLsup_XferWordFrIDE2USB(void)
{
//	INT16 c;
//    c = *((INT16 xdata *)ATAREG4IN_DATA);
//     *((INT8 xdata *)D12_data) = c;
//	 *((INT8 xdata *)D12_data) = c>>8;

//		INT8 c;
	    *((INT8 xdata *)ATARead2BWriteD12_1B) =0xFF;
	    *((INT8 xdata *)ATARead0BWriteD12_2B) = 0xFF;


}
#endif

⌨️ 快捷键说明

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