📄 key.c
字号:
#ifndef _KEY_C_
#define _KEY_C_
#include "c8051f000.h"
#include "typedef.h"
#include "system.h"
#include "key.h"
//------------------------------------------------------------------------------------
// Scan keyboard Routines
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
// every 20ms
//------------------------------------------------------------------------------------
// This routine work as time stick every 10 ms
void fScanKeyPort(void)
{
//key1
if(!SW1)
{ if (uiSW1PressedTimerCounter++ > MacroConst_KeyIntervalTimer)
{ vKeyPressedFlag |= Key1;
vKeyBouncedFlag &= ~Key1;
uiSW1PressedTimerCounter--;
uiSW1BounceTimerCounter = 0;
}
}
else if ( uiSW1BounceTimerCounter++ > MacroConst_KeyIntervalTimer)
{ vKeyBouncedFlag |= Key1;
vKeyPressedFlag &= ~Key1;
uiSW1BounceTimerCounter--;
uiSW1PressedTimerCounter = 0;
}
//key2
if(!SW2)
{ if (uiSW2PressedTimerCounter++ > MacroConst_KeyIntervalTimer)
{ vKeyPressedFlag |= Key2;
vKeyBouncedFlag &= ~Key2;
uiSW2PressedTimerCounter--;
uiSW2BounceTimerCounter = 0;
}
}
else if ( uiSW2BounceTimerCounter++ > MacroConst_KeyIntervalTimer)
{ vKeyBouncedFlag |= Key2;
vKeyPressedFlag &= ~Key2;
uiSW2BounceTimerCounter--;
uiSW2PressedTimerCounter = 0;
}
//key3
if(!SW3)
{ if (uiSW3PressedTimerCounter++ > MacroConst_KeyIntervalTimer)
{ vKeyPressedFlag |= Key3;
vKeyBouncedFlag &= ~Key3;
uiSW3PressedTimerCounter--;
uiSW3BounceTimerCounter = 0;
}
}
else if ( uiSW3BounceTimerCounter++ > MacroConst_KeyIntervalTimer)
{ vKeyBouncedFlag |= Key3;
vKeyPressedFlag &= ~Key3;
uiSW3BounceTimerCounter--;
uiSW3PressedTimerCounter = 0;
}
//key4
if(!SW4)
{ if (uiSW4PressedTimerCounter++ > MacroConst_KeyIntervalTimer)
{ vKeyPressedFlag |= Key4;
vKeyBouncedFlag &= ~Key4;
uiSW4PressedTimerCounter--;
uiSW4BounceTimerCounter = 0;
}
}
else if ( uiSW4BounceTimerCounter++ > MacroConst_KeyIntervalTimer)
{ vKeyBouncedFlag |= Key4;
vKeyPressedFlag &= ~Key4;
uiSW4BounceTimerCounter--;
uiSW4PressedTimerCounter = 0;
}
}
void fKeyEnter(void)
{
vKeyEnterFlag = 0;
if(!(vKeyLastStateFlag & Key1) && (vKeyBouncedFlag & Key1)) vKeyEnterFlag |= Key1;
if(!(vKeyLastStateFlag & Key2) && (vKeyBouncedFlag & Key2)) vKeyEnterFlag |= Key2;
if(!(vKeyLastStateFlag & Key3) && (vKeyBouncedFlag & Key3)) vKeyEnterFlag |= Key3;
if(!(vKeyLastStateFlag & Key4) && (vKeyBouncedFlag & Key4)) vKeyEnterFlag |= Key4;
vKeyLastStateFlag = vKeyBouncedFlag;
if((vKeyEnterFlag & Key1) && (!vTaskProcedureFlag)) vTaskEnableFlag |= bEnableTask1; //enter key, start a new test procedure.
if(vKeyEnterFlag & Key2) vTaskEnableFlag = bEnableTask6; //cancle key, stop a test procedure.
if(vKeyEnterFlag & Key3); //reset.
if(vKeyEnterFlag & Key4);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -