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

📄 main.c

📁 用89C51SND1C实现的USB存储器的代码,包括USB通信和FLASH的读写操作.
💻 C
字号:
/****************************************************************/
/*					UP-MP3DIY100								*/
/*		Beijing Universal Pioneering Technology Co., LTD		*/
/*		CopyRighted,All right Reserved	www.up-tech.com			*/
/*						July,2003								*/
/*				010-62387873  62381842							*/
/****************************************************************/

#include <REGSND1.H>
#include "uart.h"
#include "atmelusbci.h"
#include "main.h"

unsigned char ReadEp(unsigned char EpNum,unsigned char *Data)
{
	unsigned char i=0,nLength;
	UEPNUM=EpNum;

	nLength=UBYCTX;
	while(nLength--) {Data[i++]=UEPDATX;/*printuf("%x ",Data[i]);*/}

	UEPSTAX&=~(RXOUTB0|RXOUTB1|RXSETUP);
	return(i);
}

void Get_Status()
{
	printu("Get_Status\n");
}
void Clear_Feature()
{
	printu("Clear_Feature\n");
}
void Set_Feature()
{
	printu("Set_Feature\n");
}
void Set_Address(unsigned char EpNum)
{
	printu("Set_Address\n");
}
void Get_Descriptor(unsigned char DesType,unsigned char nLength)
{
	printu("Get_Descriptor\n");
}
void Get_Configuration()
{
	printu("Get_Configuration\n");
}
void Set_Configuration(unsigned char wValue)
{
	printu("Set_Configuration\n");
}
void Get_Interface()
{
	printu("Get_Interface\n");
}
void Set_Interface()
{
	printu("Set_Interface\n");
}
void Reserved()
{
}

void Ep0Int()
{
	unsigned char i,j;
	unsigned char ControlData[32]={0,};
//	printu("\nEp0 Interrrupted!");
	i=ReadEp(0,ControlData);//读端点0数据
    for(j=0;j<i;j++) printuf("%x ",ControlData[j]);
	j=ControlData[0]&0x60;	//判断是否是USB标准请求
	if((j==0)&&i){			//如果端点0数据长度非零且为标准请求
		switch(ControlData[1]){	//分支处理
				case get_status			:	Get_Status();break;
				case clear_feature 		:	Clear_Feature();break;
	
				case set_feature		:	Set_Feature();break;
	
				case set_address		:	Set_Address(ControlData[2]);break;
				case get_descriptor		:	Get_Descriptor(ControlData[3],ControlData[6]);break;
	
				case get_configuration	:	Get_Configuration();break;
				case set_configuration	:	Set_Configuration(ControlData[2]);break;
				case get_interface		:	Get_Interface();break;
				case set_interface		:	Set_Interface();break;
				default					:	Reserved();break;
			}
	}
}

void main_txdone()
{}
void main_rxdone()
{}
void main()
{
	printu("Test Ep0 Intterupt\n");
	AtmelUSBInit(0,2,0);
	EpEnable();
	while(1){
		if(UEPINT&EP0INT) Ep0Int();
		if(UEPINT&EP1INT) main_txdone();
		if(UEPINT&EP2INT) main_rxdone();
		UEPINT=0;
	}
}



⌨️ 快捷键说明

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