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

📄 main.c

📁 ls811的USB FAT文件系统
💻 C
字号:
/*******************************Copyright (c)***************************************

                              桑海为实业发展有限公司
                         自  动  化  钢  琴  研  究  所
                           http://www.pianoshw.com
                           E-mail:shw@pianoshw.com

----------------------------------文件信息-------------------------------------------

文  件  名 : MAIN.C
创  建  人 : 吴应斌
创 建 日 期: 2004-6-7 9:36
功 能 描 述: USB接口主程序

************************************************************************************/
#include <AT89X52.H>
#include <COMMON.H>
#include <SL811.H>
#include <TPBULK.H>
#include <HAL.H>
#include <HPI.H>
/*---------------------------------------------------------------------------------*/

XXGFLAGS bdata bXXGFlags;						//声明系统标志
extern unsigned char xdata DBUF[BUFFER_LENGTH];	//长度512字节

/*-----------------------------------------------------------------------------------
名称: void Init_Timer0(void)
功能: 定时器0初始设定(使能T0).
-----------------------------------------------------------------------------------*/
void Init_Timer0(void)
{
	TMOD &= 0xF0;       
	TMOD  |= 0x1;	//16位元定时器
	TL0 = 0x00;         
	TH0 = 0x00;         
	ET0 = 1;           
	TR0 = 1;           
}

/*-----------------------------------------------------------------------------------
名称: void Init_SpecialInterrupts(void)
功能: 外部中断0初始设定(使能EX0).
-----------------------------------------------------------------------------------*/
void Init_SpecialInterrupts(void)
{
	IT0 = 0;	//低电平触发
	EX0 = 1;
}

/*-----------------------------------------------------------------------------------
名称: void Init_Port(void)
功能: 端口初始设定.
-----------------------------------------------------------------------------------*/
void Init_Port(void)
{
	P0 = 0xFF;
	P1 = 0xFF;
	P2 = 0xFF;
	P3 = 0xFF;
}

/*-----------------------------------------------------------------------------------
名称: void Init_COMM(void)
功能: 串口初始设定(波特率=57600,由T2定时).
-----------------------------------------------------------------------------------*/
void Init_COMM(void)
{
	SCON = 0x53;
	PCON = 0x80|PCON;
	T2CON=0x30;
	RCAP2H=0xFF;		// 57600 @ 24MHz: 24000000/(32*(65536-(RCAP2H,RCAP2L)))
	RCAP2L=0xF3;
	TI=0;
	RI=0;
	TR2=1;
	ES = 1;
}

/*-----------------------------------------------------------------------------------
名称: void main(void)
功能: USB接口主循环.
-----------------------------------------------------------------------------------*/
void main(void)
{
	unsigned char temp;
	
	Init_Timer0();
	Init_SpecialInterrupts();
	Init_Port();
	Init_COMM();
	
	MCU_LED0=1;
	MCU_LED1=1;
	MCU_LED2=1;
	MCU_LED3=0;
	
	DelayMs(254);								//254*0.5ms=127mS
	bXXGFlags.bits.bUartInDone=0;	
		
	SL811_Init();
	
	for(temp=0;temp<64;temp++)
		DBUF[temp]=0;
	
	ENABLE_INTERRUPTS;
	
	while(1)
	{
		if (bXXGFlags.bits.bTimer)				//定时器0时间到
		{
			DISABLE_INTERRUPTS;
			bXXGFlags.bits.bTimer = 0;
			ENABLE_INTERRUPTS;

			check_key_LED();					//检测磁盘状态
		}
		
		if (bXXGFlags.bits.bCOM_ERR)			//串口故障标志
		{
			bXXGFlags.bits.bCOM_ERR=0;
			ComErrRsp(COMERC_CMDERR);
		}
		
		if(bXXGFlags.bits.SLAVE_FOUND)			//创建磁盘连接
		{
			DISABLE_INTERRUPTS;
			bXXGFlags.bits.SLAVE_FOUND=FALSE;
			DelayMs(250);
			
			if(EnumUsbDev(1))					//磁盘列举成功			
			{
			   	bXXGFlags.bits.SLAVE_ENUMERATED = TRUE;	
			   	MCU_LED0=0;
			}	
			ENABLE_INTERRUPTS;
		}
		
		if(bXXGFlags.bits.SLAVE_REMOVED)		//移除磁盘连接
		{
			DISABLE_INTERRUPTS;
			bXXGFlags.bits.SLAVE_REMOVED=FALSE;
			MCU_LED0=1;
			MCU_LED1=1;
			bXXGFlags.bits.SLAVE_ENUMERATED = FALSE;
			bXXGFlags.bits.SLAVE_IS_ATTACHED= FALSE;
			ENABLE_INTERRUPTS;
		}
		
		if(bXXGFlags.bits.bMassDevice)
		{
			DISABLE_INTERRUPTS;
			bXXGFlags.bits.bMassDevice=FALSE;
			
			if(EnumMassDev())
			{
				bXXGFlags.bits.SLAVE_IS_ATTACHED = TRUE;
				MCU_LED1=0;
			}
			else
			{
				MCU_LED1=1;
				bXXGFlags.bits.SLAVE_IS_ATTACHED = FALSE;
			}		
			ENABLE_INTERRUPTS;
		}
		
		if(bXXGFlags.bits.bUartInDone)			//串口收到有效命令
		{
			DISABLE_INTERRUPTS;
			bXXGFlags.bits.bUartInDone=0;	
			UartHandler();						//命令处理
			ENABLE_INTERRUPTS;	
		}
	}
}

⌨️ 快捷键说明

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