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

📄 key.c

📁 采用四端法测试欧姆电阻
💻 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 + -