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

📄 usb.c

📁 keil c 开发的USB芯片CH375的程序CPU 为c8051f340
💻 C
字号:
#include "C8051F340.h"
#include "intrins.h"
#include <PORTDEFINE.H>
#include <MCU.H>

unsigned char xdata CH375_CMD_PORT			_at_ 	  CH375_CMD_PORT_ADDR;
unsigned char xdata CH375_DAT_PORT			_at_ 	  CH375_DAT_PORT_ADDR;

void Delayus(unsigned char n)
{						         // 48Mhz  1us
	unsigned char i,j;
  	for(j=0; j<n; j++) 
	{
    	for(i=0; i<5; i++)
		{
      		_nop_(); 
      		_nop_(); 
      		_nop_();
      		_nop_(); 
      		_nop_(); 
     	 	_nop_();
	 	}
   	}
}

void Delayms(unsigned char n)
{
	unsigned int i;
	unsigned char j;
	for(j=0;j<n;j++)
	{
		for(i=0;i<3000;i++)
		{
			_nop_();
			_nop_();
			_nop_();
			_nop_();
			_nop_();
			_nop_();
			_nop_();
			_nop_();
			_nop_();
			_nop_();
		}				 
	}
}

void Selectchip(unsigned char ch,unsigned char mode) //ch为高位地址
{
	switch(mode)
	{
		case 0:		P2=ch&0x3f;					//选择液晶,高两位为00
  					STRCLK=0;
  					STRCLK=1;
					break;
		case 1:	   	P2=(ch&0x7f)|0x40;			//选择FLASH,高两位为01
					STRCLK=0;
					STRCLK=1;
					break;
		case 2:		P2=(ch|0x80)&0xbf;			//选择USB,高两位为10
					STRCLK=0;
					STRCLK=1;
					break;
		case 3:		P2=ch|0xc0;					//选择跳线,高两位为11
					STRCLK=0;
					STRCLK=1;
					break;
		default:	break;
	}		
}


void xWriteCH375Cmd(unsigned char cmd) 
{  //* 向CH375的命令端口写入命令,周期不小于4uS,如果单片机较快则延时
	Delayus(5);
	SelExRam();
	CH375_CMD_PORT=cmd;
	SelInRam();
	Delayus(5);
}

void xWriteCH375Data(unsigned char dat) 
{  //* 向CH375的数据端口写入数据,周期不小于1.5uS,如果单片机较快则延时
	
	Delayus(5);
	SelExRam();
	CH375_DAT_PORT=dat;
	SelInRam();
	Delayus(5);  //* 如果是MCS51单片机,因其较慢,所以实际上无需延时  
	
}																	   

unsigned char xReadCH375Data(void) 
{  //* 从CH375的数据端口读出数据,周期不小于1.5uS,如果单片机较快则延时
	unsigned char uc1;
	
	Delayus(5);  //* 如果是MCS51单片机,因其较慢,所以实际上无需延时 
	SelExRam();
	uc1=CH375_DAT_PORT;
	SelInRam();
	Delayus(5);
	
	return uc1;
}

void USB_RESET()
{
	USBRST=1;		//高电平复位
	Delayus(5);
	USBRST=0;
	Delayms(40);	//40ms完成硬件复位	
}

⌨️ 快捷键说明

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