📄 all_test.c
字号:
#include "nRF2401_Personal.h"
#define Signal_A P2_0 //滚轮A //注意:已经修改
#define Signal_B P2_1 //滚轮B
#define L_Key P2_2
#define M_Key P2_3
#define R_Key P2_4
#define XLay_L P3_5
#define XLay_R P3_6
#define YLay_U P3_4
#define YLay_D P3_7
bit prev_A=0,prev_B=0; //认为一开始,电平为低
bit prev_XL=0,prev_XR=0; //X方向左右先前状态
bit prev_YU=0,prev_YD=0; //Y方向左右先前状态
bit prev_L=1,prev_M=1,prev_R=1; //按键先前的状态被上拉为1
//----------------边沿检测-------------------//
//对于A、B来说,没有电平变化时,返回0
//A电平变化时,返回1
//B电平变化时,返回2
uchar Edge_Check(bit state_A, bit state_B, bit state_L, bit state_M, bit state_R,bit state_XL,bit state_XR,bit state_YU,bit state_YD)
{
if(Signal_A^state_A)
{
delayUS(5);
if(Signal_A^state_A)
{
if(state_A)
prev_A=0;
else
prev_A=1;
return(1);
}
}
if(Signal_B^state_B)
{
delayUS(5);
if(Signal_B^state_B)
{
if(state_B)
prev_B=0;
else
prev_B=1;
return(2);
}
}
//---------以下添加对鼠标的左、中、右键的支持--------//
if(L_Key^state_L)
{
delayUS(3);
if(L_Key^state_L)
{
if(state_L)
prev_L=0;
else
prev_L=1;
return(3);
}
}
if(M_Key^state_M)
{
delayUS(3);
if(M_Key^state_M)
{
if(state_M)
prev_M=0;
else
prev_M=1;
return(4);
}
}
if(R_Key^state_R)
{
delayUS(3);
if(R_Key^state_R)
{
if(state_R)
prev_R=0;
else
prev_R=1;
return(5);
}
}
if(XLay_L^state_XL)
{
delayUS(5);
if(XLay_L^state_XL)
{
if(state_XL)
prev_XL=0;
else
prev_XL=1;
return(6);
}
}
if(XLay_R^state_XR)
{
delayUS(5);
if(XLay_R^state_XR)
{
if(state_XR)
prev_XR=0;
else
prev_XR=1;
return(7);
}
}
if(YLay_U^state_YU)
{
delayUS(5);
if(YLay_U^state_YU)
{
if(state_YU)
prev_YU=0;
else
prev_YU=1;
return(8);
}
}
if(YLay_D^state_YD)
{
delayUS(5);
if(YLay_D^state_YD)
{
if(state_YD)
prev_YD=0;
else
prev_YD=1;
return(9);
}
}
//---------------------------------------------------//
return(0);
}
void EN_TX(void)
{
switch(Edge_Check(prev_A,prev_B,prev_L,prev_M,prev_R,prev_XL,prev_XR,prev_YU,prev_YD))
{
case 1:
//-------添加滚轮发送A的数据-----//
TxBuf[0]=0x12;
nRF2401_SendData();
//===============================//
break;
case 2:
//-------添加滚轮发送B的数据-----//
TxBuf[0]=0x14;
nRF2401_SendData();
//===============================//
break;
case 3:
TxBuf[0]=0x23; //仅使用一个字节数据
nRF2401_SendData();
break;
case 4:
TxBuf[0]=0x34; //仅使用一个字节数据
nRF2401_SendData();
break;
case 5:
TxBuf[0]=0x45; //仅使用一个字节数据
nRF2401_SendData();
break;
case 6:
TxBuf[0]=0x48; //仅使用一个字节数据
nRF2401_SendData();
break;
case 7:
TxBuf[0]=0x50; //仅使用一个字节数据
nRF2401_SendData();
break;
case 8:
TxBuf[0]=0x52; //仅使用一个字节数据
nRF2401_SendData();
break;
case 9:
TxBuf[0]=0x55; //仅使用一个字节数据
nRF2401_SendData();
break;
default: break;
}
}
void main(void)
{
L_Key=1;
M_Key=1;
R_Key=1;
nRF2401_Inti();
while(1)
{
EN_TX();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -