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

📄 main.c

📁 利用MCS-51单片机和USB接口芯片
💻 C
字号:
#include "common.H"
#include "SL811.H"
#include "TPBULK.H"
#include "HAL.H"
#include "HPI.H"
#include "FAT.H"
#include "FAT32.H"
#include "HPI32.H"

FLAGS bdata bFlags;
extern unsigned char xdata DBUF[BUFFER_LENGTH];
/////////////////////////////////////////////////
extern unsigned long xdata DirStartCluster,DirStartCluster32;
extern unsigned char xdata UARTBUF[UARTBUF_LENGTH];
extern Command_Def xdata Command;//结构图
extern SYS_INFO_BLOCK xdata DeviceInfo;	//结构图
extern FILE_INFO xdata ThisFile;
//////////////////////////////////////////

void Init_SpecialInterrupts(void)
{
	IT0 = 0;
	EX0 = 1;
}

void Init_Port()
{
	P0 = 0xFF;
	P1 = 0xFF;
	P2 = 0xFF;
	P3 = 0xFF;
	SL811_CS=0;
}

/*Serial Port */
/*Mode            = 1  /8-bit UART
  Serial Port Interrupt    = Disabled         */
/*Receive         = Enabled   */
/*Auto Addressing    = Disabled   */
void Init_COMM(void)
{
	TMOD=0x11;
	SCON = 0x53;
	PCON = 0x80 | PCON;
	T2CON=0x30;
	RCAP2H=0xFF;		// 57600 @ 21.1184MHz: 24000000/(32*(65536-(RCAP2H,RCAP2L)))
	RCAP2L=0xF4;
	TI=0;
	RI=0;
	TR2=1;
	ES = 1;
}

void main(void)
{
	unsigned char temp;
	unsigned int time_count;

	SL811_RST=0;
	DelayMs(250);
	SL811_RST=1;

	Init_SpecialInterrupts();
	Init_Port();
       Init_COMM();
	SL811_Init();

	bFlags.bits.bUartInDone=0;	
	DirStartCluster=0;
	DirStartCluster32=0;
	

	for(temp=0;temp<64;temp++)
		DBUF[temp]=0;

	ENABLE_INTERRUPTS;
	
	while(TRUE)
	{
        time_count++;		
		if (time_count>1000)
			{
			DISABLE_INTERRUPTS;
			time_count = 0;
			ENABLE_INTERRUPTS;	
			check_key_LED();			
			}
		if(bFlags.bits.SLAVE_FOUND){
			DISABLE_INTERRUPTS;
			bFlags.bits.SLAVE_FOUND=FALSE;
 		    DelayMs(250);
			if(EnumUsbDev(1))				// enumerate USB device, assign USB address = #1
			{
			   	bFlags.bits.SLAVE_ENUMERATED = TRUE;	// Set slave USB device enumerated flag	
		   		DirStartCluster=0;
				DirStartCluster32=0;
				ThisFile.FatSectorPointer=0;
				MCU_LED1=0;
			}	
			ENABLE_INTERRUPTS;	
			}
		if(bFlags.bits.SLAVE_REMOVED){
			DISABLE_INTERRUPTS;
			bFlags.bits.SLAVE_REMOVED=FALSE;
			bFlags.bits.SLAVE_ENUMERATED = FALSE;
			bFlags.bits.SLAVE_IS_ATTACHED = FALSE;
			MCU_LED1=1;MCU_LED2=1;
			ENABLE_INTERRUPTS;	
			}
		if(bFlags.bits.bUartInDone){
			DISABLE_INTERRUPTS;
			bFlags.bits.bUartInDone=0;

			if(DeviceInfo.FAT)	//FAT32
				UartHandler32();
			else
				UartHandler();	//FAT16
			
			ENABLE_INTERRUPTS;	
			}
		if(bFlags.bits.bMassDevice){
			DISABLE_INTERRUPTS;
			bFlags.bits.bMassDevice=FALSE;
			if(EnumMassDev())
				{
				bFlags.bits.SLAVE_IS_ATTACHED = TRUE;				
				MCU_LED2=0;	
				}
			else
				{				
				bFlags.bits.SLAVE_IS_ATTACHED = FALSE;				
				temp=SL811Read(IntStatus);
				if(!(temp & 0x40))	bFlags.bits.SLAVE_FOUND=TRUE;
				}		
				ENABLE_INTERRUPTS;	
			}	
		
	}
    	
}

⌨️ 快捷键说明

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