📄 ideio.c
字号:
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_write_byte(hdd_read_byte());
Usb_set_TXRDY();
Usb_select_ep(EP_IN);
while (!Usb_tx_complete());
Usb_clear_TXCMPL();
}
hdd_read_close();
return OK;
}
return KO;
}
/**********************************************************
*函数名称:bit hdd_write_open(Uint32 hdd_sector) *
*用途:写硬盘OPEN动作 *
***********************************************************/
bit hdd_write_open(Uint32 hdd_sector)
{
uchar head,cylinderh,cylinderl,sector;
head = ((Byte*)&hdd_sector)[0];
cylinderh = ((Byte*)&hdd_sector)[1];
cylinderl = ((Byte*)&hdd_sector)[2];
sector = ((Byte*)&hdd_sector)[3];
do{ACC = FILE7;} while(BSY);
FILE6 = (0xe0 | (head & 0x0f));
FILE5 = cylinderh; //high 2-bit cylinder
FILE4 = cylinderl;//low 8-bit cylinder
FILE3 = sector; //start sector
FILE2 = 1; //sector counter
WriteCommand(0x30);
do{ACC = FILE7;} while(BSY |! DRQ); //wait for noBUSY and data request
ACC = FILE7;
if (ERR)
return KO;
return OK;
}
/**********************************************************
*函数名称:bit hdd_write_byte(Byte hdd_data) *
*用途:写硬盘CLOSE动作 *
***********************************************************/
bit hdd_write_byte(Byte hdd_data)
{
gl_hdd_buffer[gl_hdd_buffer_ptr++] = hdd_data ;
return OK;
}
/**********************************************************
*函数名称:bit hdd_write_close(void) *
*用途:写硬盘CLOSE动作 *
***********************************************************/
bit hdd_write_close(void)
{uint i;
for(i = 0; i < 512; i+=2)
{
DAT16H = gl_hdd_buffer[i+1];
FILE0 = gl_hdd_buffer[i];
}
do{ACC = FILE7;} while(BSY);
return OK;
}
/**********************************************************
*函数名称:bit hdd_write_usb_sector(Uint32 hdd_sector) *
*用途:将USB接收到的一个扇区的数据写入硬盘 *
***********************************************************/
bit hdd_write_usb_sector(Uint32 hdd_sector)
{uchar j;
Usb_select_ep(EP_OUT);
gl_hdd_buffer_ptr = 0;
for (j = 0; j < 8; j++)
{
while(!Usb_rx_complete()); /* wait end of reception */
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
hdd_write_byte(Usb_read_byte());
Usb_clear_RXOUT_PP();
}
hdd_write_open(hdd_sector);
hdd_write_close();
return OK;
}
Uint32 hdd_read_long_big_endian()
{
Uint32 cluster;
((Byte*)&cluster)[3] = hdd_read_byte();
((Byte*)&cluster)[2] = hdd_read_byte();
((Byte*)&cluster)[1] = hdd_read_byte();
((Byte*)&cluster)[0] = hdd_read_byte();
return cluster;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -