📄 main.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 + -