27,509
社区成员




//#include "*.h"
const unsigned char U8SENDSTATUS_INIT = 0;
const unsigned char U8SENDSTATUS_SEND_A = 1;
const unsigned char U8SENDSTATUS_SEND_B = 2;
const unsigned char U8SENDSTATUS_SEND_C = 3;
const unsigned char U8SENDSTATUS_SEND_F = 4;
unsigned char u8SendStatus = U8SENDSTATUS_INIT; //用来表示当前是要发哪个按键
unsigned char bSwitchShortPressFlag = 0;
unsigned char bSwitchLongPressFlag = 0;
unsigned char b10msFlag = 0; //启动一个定时器,产生10ms中断,在中断里将该标志设为1
void SendDataTask()
{
switch(u8SendStatus)
{
case U8SENDSTATUS_INIT:
{
if(bSwitchShortPressFlag)
{
bSwitchShortPressFlag = 0; //清除标志
sendData('A');
u8SendStatus = U8SENDSTATUS_SEND_A;
}
if(bSwitchLongPressFlag)
{
bSwitchLongPressFlag = 0; //清除标志
sendData('F');
u8SendStatus = U8SENDSTATUS_SEND_F;
}
break;
}
case U8SENDSTATUS_SEND_A:
{
if(bSwitchShortPressFlag)
{
bSwitchShortPressFlag = 0; //清除标志
sendData('B');
u8SendStatus = U8SENDSTATUS_SEND_B;
}
if(bSwitchLongPressFlag)
{
bSwitchLongPressFlag = 0; //清除标志
sendData('F');
u8SendStatus = U8SENDSTATUS_SEND_F;
}
break;
}
case U8SENDSTATUS_SEND_B:
{
//....
break;
}
case U8SENDSTATUS_SEND_C:
{
//....
break;
}
case U8SENDSTATUS_SEND_F:
{
if(bSwitchShortPressFlag)
{
bSwitchShortPressFlag = 0; //清除标志
sendData('A');
u8SendStatus = U8SENDSTATUS_SEND_A;
}
if(bSwitchLongPressFlag)
{
bSwitchLongPressFlag = 0; //清除标志
sendData('F');
}
break;
}
default:
{
break;
}
}
}
void sendData(char ch)
{
//发送A,B,C出去的函数
}
void ReadSwitchStatus()
{
//读取要采集按键的状态
}
void JudgeLongOrShortPress()
{
//判断按键是长按还是短按,设置标志 bSwitchShortPressFlag = 1或者bSwitchLongPressFlag = 1;
}
void main(void)
{
for(;;)
{
if(b10msFlag)
{
b10msFlag = 0;
ReadSwitchStatus()
JudgeLongOrShortPress()
SendDataTask();
}
}
}