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

📄 main.c.bak

📁 使用ch375和stc 51写的usb鼠标的代码
💻 BAK
字号:
#ifndef __MAIN_C__
#define __MAIN_C__
#endif

#include "head.h"
#include "usbdef.h"
#include "ch375inc.h"
#include "uart.h"
#include "mcuFun.h"
#include "ch375.h"

uint8 eaCount, debug;
uint16 tCount;
uint8 idata ep1Buf[8];

unsigned char RECV_LEN;       			// 刚接收到的数据的长度
unsigned char RECV_BUFFER[CH375_MAX_DATA_LEN];  // 数据缓冲区,用于保存接收到的下传数据,长度为0到64字节
unsigned char *cmd_buf;
unsigned char *ret_buf;
unsigned char mVarSetupRequest; 		// USB请求码
unsigned char mVarSetupLength; 			// 后续数据长度
unsigned char *VarSetupDescr; 			// 描述符偏移地址
unsigned char VarUsbAddress ; 			//USB设备地址
bit CH375FLAGERR; 									//错误清0
bit CH375CONFLAG; 									//配置标志
mREQUEST_PACKET  request;						//usb请求数据缓冲区

//我的连接
//CH375			51
//D0-7			P0.0-7
//A0				P2.6
//RD				RD
//WR				WR
//CS				P2.7
//INT				INT0
//故
//0x7fff		命令端口, A0=1
//0x3fff		数据端口, A0=0
sbit led = P1^0;
sbit CH375_INT_WIRE = P3^2; // CH375中断请求输出,低电平有效

//-----------------------------------
//串行数据接收程序
//-----------------------------------
void receive(void)
{
	unsigned int count;
	unsigned char buf;

	RECV_LEN=0;
	cmd_buf = RECV_BUFFER;  // 接收缓冲区
	while( 1 )
	{
		RI=0;
		*cmd_buf = SBUF;
		cmd_buf++;
		RECV_LEN++;
		if( RECV_LEN == 64 )
		{
			while( 1 )
			{
				count=10000;
				while( RI==0 )
				{
					count--;
					if( count==0 )
						return;
				}
				RI=0;
				buf=SBUF;
			}
		}
		count=10000;
		while( RI==0 )
		{
			count--;
			if( count==0 )
				return;
		}
	}
}

void main(void)
{
	tOut t;
	debug=0x00;
	eaCount=0;
	led = 0;
	ComInit();

	uartPutStr("///////////////////////////////////////////////////////////////////////////////\n\r");
	uartPutStr(__DATE__);
	uartPutStr("\n\r");
	uartPutStr(__TIME__);
	uartPutStr("\n\r");
	disConnect();
	CH375_Init( );  		// 初始化CH375
	uartPrint("ch375 inited!\n\r", NULL, 0);
	while ( 1 )
	{
		if(w(&t, 5))
		{
				ep1Buf[0]=0x02;
				ep1Buf[0]=0x00;
				ep1Buf[0]=0x00;
				reset(&t);
				led=!led;
				ep1Up(3);
		}
		if( RI==1 ) 		// 从串口接收到的数据
		{
			receive();
			uartPrint("uart rec!\n\r", NULL, 0);
		}

		CH375_INT_WIRE=1;
		if( CH375_INT_WIRE==0 ) // 从USB设备接收到数据
		{
			mCh375Interrupt();
			// 将从USB设备接收到的数据发送到串口
		}
	}
}

⌨️ 快捷键说明

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