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

📄 epmain.c

📁 我改了一部分别人的USB,原来的不方便看逻辑
💻 C
字号:
#include"mytype.h"
#include"d12_command.h"
#include"regx51.h"
#include"uar.h"
#include"key.h"
 
uint8 idata buffer[16];
uint8 idata InBuffer[16];
extern volatile uint8 idata KeyCurrent,KeyOld,KeyNoChangedTime;
extern volatile uint8 idata KeyPress;
extern volatile uint8 idata KeyDown,KeyUp,KeyLast;
extern volatile uint8 KeyCanChange;


void dma_eot(void)
{;
}
void ep1_in(void)
{}
void ep1_out(void)
{}
void ep2_in(void)
{uint8 i;
 
// Prints("端点2输入.\r\n");
 for(i=0;i<4;i++)
  {
   InBuffer[i]=0;
  }
 KeyCanChange=0;  //禁止修改按键值
  
 if((KeyPress&(~0xC0))||(KeyUp&0xC0)||KeyDown&0xC0) //如果有按键按住或者有按键值变化
 {
  KeyUp=0;
  KeyDown=0;
  if(KeyPress&KEY1)  //往左移(X减小)
  {
   InBuffer[1]=-1;
  }
  else
  {
  }
  
  if(KeyPress&KEY2)   //往右移(X轴增加)
  {
   InBuffer[1]=1;
  }
  else
  {
  }  
  
  if(KeyPress&KEY3)  //往上移(Y减小)
  {
   InBuffer[2]=-1;
  }
  else
  {
  }

  if(KeyPress&KEY4)  //向下移(Y轴增加)
  {
   InBuffer[2]=1;
  }
  else
  {
  }  
 
  if(KeyPress&KEY5)  //滚轮下滚
  {
   InBuffer[3]=-1;
  }
  else
  {
  }

  if(KeyPress&KEY6)  //滚轮上滚
  {
   InBuffer[3]=1;
  }
  else
  {
  }
  
  if(KeyPress&KEY7) //左键
  {
   InBuffer[0]|=0x01;
  }
  else
  {
  }
    
  if(KeyPress&KEY8)
  {
   InBuffer[0]|=0x02;  //右键
  }
  else
  {
  }
/*
//EDN USB板键盘不够,没有中键  
  if(KeyMapOk&(1<<1))   //中键
  {
   InBuffer[0]|=0x04;
  }
  else
  {
  }
*/

 //返回4个字节数据
 write_endpoint_buff(5,4,InBuffer);
 }
 else //如果无按键按下或者按键动作,则不返回数据
 {
 }
 KeyCanChange=1; //允许修改按键值


}
void ep2_out(void)
{ uint8 i,j;

 j=read_endpoint_buff(4,16,buffer);
 P2=~buffer[0];
 Prints("端点2输出.\r\n");
 Prints("    端点2的数据是  ");
 for(i=0;i<j;i++)
  {
   PrintHex(buffer[i]);
   if(i==16)Prints("\r\n");
  }
 Prints("\r\n");
 }

⌨️ 快捷键说明

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