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

📄 usb.c

📁 此文件是USB接口芯片CH371的接口驱动程序! 直接将编译生成的HEX文件烧录就可实现PC与下位机的通信!
💻 C
字号:
#include<AT89X51.h>

/*

char *xdata a; 
char xdata *a;
char data *xdata a;
上面3个指针,我概念比较混乱,看了书后也不是特别明白。还请高手帮忙给通俗地解释解释。谢谢!

xdata: 存储在外部RAM 
data:存储在内部RAM
要存储的内容:
1.指针char *a指向的Byte串,2.指针本身,一般要3Byte
如果没有指定存储的地方(哪种RAM),按编译模式设定,一般是存储在data (small模式)。这样
char *xdata a
char data *xdata a
是相同的,都是表示指针本身存储在外部RAM,指针指向的数据存储在内部RAM
char xdata *a指指针本身3Byte存储在内部RAM,指针指向的Byte串存储在外部RAM XDATA。
一般尽量用内部RAM,data 数组的数据大,内部RAM放不下,用外部RAM保持数组内容
char xdata *a
这时指针本身的3Byte还是在内部RAM中;内部RAM不够用,可以把这3Byte也放倒外部RAM
char xdata *xdata a	

*/


#define CH371_PAGE 0
#define CH371_SYSTEM (unsigned char xdata *)2
#define CH371_CONFIG (unsigned char xdata *)2
#define CH371_INT_SET (unsigned char xdata*)6
#define CH371_STATUS (unsigned char xdata*)6
#define CH371_LENGTH (unsigned char xdata*)7
#define CH371_BUFFER (unsigned char xdata*)8

unsigned char save_status;
unsigned char save_length;
unsigned char save_buffer[8]={0};
unsigned char *temp;
unsigned char counter;
bit ReceiveFlag;
void Init(void)
{
	*CH371_LENGTH=15;
	save_length=0;
	IT0=1;		
	IE0=0;
	PX0=1;
	EX0=1; 
	EA=1;	 

}

void UpLoad(unsigned char *pBuffer,unsigned len)
{
	   temp=CH371_BUFFER;
	for(counter=0;counter<len;counter++)
	{
		*temp++=*pBuffer++;

	}

	*CH371_LENGTH=len;

}

void ExtInt0() interrupt 0
{
	   save_status=*CH371_STATUS;
	   if(save_status&0x01)
	   {
	   	 *CH371_LENGTH=15;
	   }
	   else{
	   		
			P1=0xff;
		 temp=CH371_BUFFER;
	   	 save_length=*CH371_LENGTH;
		 for(counter=0;counter<save_length;counter++)
		  {save_buffer[counter]=*temp++;
		   ReceiveFlag=1;
		  }
		  	   
	   }

}
 
 void main(){			 
 
 	  temp=0;
	  counter=0;
	  ReceiveFlag=0;
	  P1=0;
	  Init();

	  while(1)
	  {
	  	if(ReceiveFlag==1)
	  	{
	  		if(save_buffer[0]==0x90)
			{
			   save_buffer[0]=~save_buffer[0];
			   save_buffer[1]=~save_buffer[1];
			   save_buffer[2]=~save_buffer[2];
			   UpLoad(save_buffer,8);

			}
			ReceiveFlag=0;
	  
	  	}
 
	  }
 }

⌨️ 快捷键说明

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