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

📄 scsiwrite10.c

📁 在51下的外挂硬盘和FLASH的MP3方案程序以及原理图
💻 C
字号:
#ifndef _SCSI_DEFINE
 #include "SCSI.c"
#endif

void SCSIWrite10(void)
{
	register WORD i;
	register BYTE m,n,hi;
	xdata BYTE *sector;
	bit k;
	xdata struct SCSIWrite10Str *SCSICmdWrite10=SCSICBW->CBWCB;

	sector=(BYTE *)&SCSICmdWrite10->LBA;
//	printf("write sector:%08lx,%02bx...",*(DWORD *)sector,(BYTE)SCSICmdWrite10->Length);
	while (!IDEStatus(IDE_STATUS_BSY,IDE_WAIT,FALSE,255));
//	printf("BSY ok ");
	while (!IDEStatus(IDE_STATUS_DRDY,IDE_WAIT,TRUE,255));
//	printf("DRDY ok ");
	IDE_WRITE_LSB(IDE_ADDR_CMD_LBA0,sector[3]);
	IDE_WRITE_LSB(IDE_ADDR_CMD_LBA1,sector[2]);
	IDE_WRITE_LSB(IDE_ADDR_CMD_LBA2,sector[1]);
	IDE_WRITE_LSB(IDE_ADDR_CMD_LBA3,0xe0|(sector[0]&0x0f));
	IDE_WRITE_LSB(IDE_ADDR_CMD_SECCNT,(BYTE)(SCSICmdWrite10->Length));
	IDE_WRITE_LSB(IDE_ADDR_CMD_COMMAND,IDE_CMD_WRITE);
	while (!IDEStatus(IDE_STATUS_BSY,IDE_WAIT,FALSE,255));
//	printf("BSY ok ");
	while(!IDEStatus(IDE_STATUS_DRQ,IDE_WAIT,TRUE,255));
//	printf("DRQ ok \n");
	UEPNUM=0x01;
		while((UEPSTAX&(USB_INT_RXOUTB0|USB_INT_RXOUTB1))!=0x42);
		if (UEP_BIT_DTGL) k=1; else k=0;
	for(i=0;i<SCSICmdWrite10->Length;i++)
	{
		for(m=0;m<8;m++)
		{
//			if (UEP_BIT_DTGL)
			{
				while(!(UEPSTAX&(USB_INT_RXOUTB0|USB_INT_RXOUTB1)));
//				printf("RX%bd--%02bx-%02bx-%02bx ",k,UBYCTX,UEPSTAX,UEPCONX);
				for(n=0;n<UBYCTX;n+=2)
				{
					hi=UEPDATX;
//					lo=UEPDATX;
//					printf("%02bx %02bx ",hi,lo);
					IDE_WRITE_WORD(IDE_ADDR_CMD_DATA,hi,UEPDATX);
				}
//				printf("\n");
				if (k) CLEAR_BIT_6(UEPSTAX); else CLEAR_BIT_1(UEPSTAX);			//清RXOUTB0
				k=!k;
//				printf("RB0 CLEARED %04d,%02bd\n",k++,m);
			}
/*			else
			{
//			while(!UEPSTAX&USB_INT_RXOUTB1);
				printf("RX1--%02bx-%02bx-%02bx \n",UBYCTX,UEPSTAX,UEPCONX);
				for(n=0;n<UBYCTX;n+=2)
				{
					hi=UEPDATX;
					lo=UEPDATX;
//					printf("%02bx %02bx ",hi,lo);
//					IDE_WRITE_WORD(IDE_ADDR_CMD_DATA,hi,lo);
				}
				m++;
				CLEAR_BIT_1(UEPSTAX);				//清RXOUTB1
//				printf("RB1 CLEARED %04d,%02bd\n",k++,m);
			}*/
		}
	}
//	printf("write ok\n");
}

⌨️ 快捷键说明

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