📄 atmelusbci.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 "atmelusbci.h"
#define OSCclk 16
int AtmelUSBInit(unsigned char NDIV,unsigned int RDIV,unsigned char USBCD)
{
int i;
//set PLL CLK
// PLLclk=(OSCclk*(RDIV+1))/(int)(NDIV+1);
// USBclk=PLLclk/(int)(USBCD+1);
CKCON|=X2;//Set to select 6 clock periods per machine cycle
PLLNDIV = 0x7f&NDIV;//set NDIV
PLLCON |= (0x3&RDIV)<<6;//set RDIV
PLLRDIV = (0x3ff&RDIV)>>2;
USBCLK=USBCD&0x03;
PLLCON&=(~PLLRES);//Enable PLL
PLLCON|=PLLEN;
//USBCON Register
USBCON&=(~USBE);
for(i=0;i<3000;i++)
USBCON|=USBE;
return(0);
}
void EpEnable(void)
{
UEPNUM=0x00;//Ep0 as control Endpoint
UEPCONX=0x80;
UEPNUM=0x01;//Ep1 as Bulk-in Endpoint
UEPCONX=0x86;
UEPNUM=0x02;//Ep2 as Bulk-out Endpoint
UEPCONX=0x82;
UEPRST=0x07;//rest FIFO
UEPRST=0x00;
UEPIEN=0x07;//Endpoint Interrupt Enable
USBIEN|=EEOFINT;
USBADDR=FEN;//Function Enable
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -