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

📄 main.#3

📁 本程序是基于单片机C8051F020上使用SL811 USB 总线接口实现检测U 盘的功能。插上U 盘
💻 #3
字号:

#include "common.h"

#define sl811_addr 0x8800


/***********************************************************************************
* 函数名称:SYSCLK_Init;
*
* 函数功能描述:系统时钟初始化,使用外部22.1184MHz晶振作为时钟源;
*              
* 输入参数:none;
*
* 返回数据:none;
*
* 注意:    none;
************************************************************************************/

void SYSCLK_Init (void)
{
   int i;                              // 延时计数器

   OSCXCN = 0x67;                      // 使用外部22.1184MHz晶振

   for(i=0; i<256; i++);               // 等待1ms
    
   while(!(OSCXCN & 0x80));            // 等待外部振荡器稳定

   OSCICN = 0x88;                      // 切换到外部晶振
}

/***********************************************************************************
* 函数名称:PORT_Init;
*
* 函数功能描述:配置端口初始化,配置交叉开关和端口;
*              
* 输入参数:none;
*
* 返回数据:none;
*
* 注意:    none;
************************************************************************************/

void PORT_Init (void)
{

 	XBR0   =   0x07;                    //设置XBR0
// 	XBR1   =   0x1e;                    //设置XBR1 
	XBR2   =   0x44;                    //打开交叉开关和弱上拉
//  P3MDOUT = 0xff;						//设置P3口全部推挽输出
    P74OUT  = 0xfb;						//设置P4-P7口输出
    P4 = 0xe0;

						//外部存储器时序控制
    EMI0CF=0x24;
 	EMI0TC=0x21;
}


/************************************************************************************
//  主循环程序
*************************************************************************************/
void main(void)
{ 
	unsigned char temp;
	unsigned char flag = 0;

	WDTCN = 0xde;
   	WDTCN = 0xad;

	SYSCLK_Init();
	PORT_Init();
 
	Uart0_Init(BaudRate_115200);
	Uart0_SendString("System started!\n");
 	
	flag=0;	
	while(1)
	{
		USBhard_Reset();		
		temp=SL811Read(IntStatus);
		_nop_();
		if ((temp&0x80)==0x80)
		{	
			if (flag==0)
				Uart0_SendString("Find U Disk!\n");			
			flag = 1;
		}
		else
		{
			if (flag==1)
				Uart0_SendString("U Disk removed!\n");			
			flag = 0;
		}

	}
 /*		
	if ((temp&0x80)==0)
	{
		SL811Write(0x0e,0xff);
		SL811Write(0x0e,0x0e);
		SL811Write(0x05,0x21);
	}
	else if ((temp&0x80)==0x80)
	{
		SL811Write(0x0e,0xae);
		SL811Write(0x0e,0x0e);
		SL811Write(0x05,0x05);
	}
	else
	    SL811Write(0x0d,0xff);

 	SL811Write(0x00,0x50);
	SL811Write(0x04,0x00);
	SL811Write(0x00,0x01);
	DelayMs(10);
 	//	sl811_init();
 
	while(1)
	{

	}
*/	
}

⌨️ 快捷键说明

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