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

📄 key_3.c

📁 2005年电子设计竞赛悬挂运动控制系统源码
💻 C
字号:
//******************************************//
//	源 文 件:KEY_3.C						//
//	描    述:键盘控制相关函数				//
//	主要功能:61学习板s2,s3,s4三键控制		//
//	编写作者:王蓓颖							//
//  编写日期:2005-09-07						//
//  整理日期:2005-10-30						//
//******************************************//
#include "SPCE061V004.H"

#define UP 1
#define DOWN 0

extern SetX_flag;
extern SetY_flag;
extern X_Disp[2];
extern X_Coordinate;
extern Y_Disp[3];
extern Y_Coordinate;
extern MODE_FLAG;

//=======================================================
//函数:Init_Key_3()
//描述:初始化s2,s3,s4三键
//参数:void
//返回:无
//=======================================================
void Init_Key_3()
{
	*P_IOA_Dir &= 0xfff8;
	*P_IOA_Attrib &= 0xfff8;
	//*P_IOA_Attrib |= 0x0007;
	*P_IOA_Data &= 0xfff8;
}

//=======================================================
//函数:KeyProess()
//描述:s2,s3,s4三键控制处理
//参数:void
//返回:键值
//=======================================================
unsigned int KeyProess()
{
	//unsigned int M=MODE_FLAG;
	unsigned int key,tkey;
	unsigned long int count = 0;
	key = 0;
	key = *P_IOA_Data & 0x0007;
	tkey = key;
	while(tkey != 0)
	{
		*P_Watchdog_Clear = 1;
		tkey = *P_IOA_Data & 0x0007;
		count += 1;
	}
	
	if(count >0xffffff)
	{
		key |= 0x80;
	}
	Delay(2);
	if(MODE_FLAG == 0)
	{
		switch(key)
		{
			case 0x01:		//up
				Select(UP);
				break;
			case 0x02:		//down
				Select(DOWN);
				break;
			case 0x04:		//ok
				Decide();
				break;
			default:
				break;
		}
	}
	if(MODE_FLAG == 5)
	{
		switch(key)
		{
			case 0x01:		//left
				SelectLR(1);
				break;
			case 0x02:		//right
				SelectLR(0);
				break;
			case 0x04:		//ok
				
				Chose();
				break;
			default:
				break;
		}
	}
	if((MODE_FLAG == 1) || (MODE_FLAG == 2) || (MODE_FLAG == 4))
	{
		if(SetY_flag == 1)
		{
			switch(key)
			{
				case 0x01:
					Y_Coordinate +=1;	//add
					if(Y_Coordinate > 100)
					{
						Y_Coordinate = 0;
					}
					Y_Disp[0] += 1;
					if(Y_Disp[0] == 10)
					{
						Y_Disp[1] += 1;
						Y_Disp[0] = 0;
						if(Y_Disp[1] == 10)
						{
							Y_Disp[2] += 1;
							Y_Disp[1] = 0;
						}
					}
					if((Y_Disp[2] == 1) & (Y_Disp[0] == 1))
					{
						Y_Disp[2] = 0;
						Y_Disp[1] = 0; 
						Y_Disp[0] = 0;
					}
					break;
				case 0x02:
					Y_Coordinate -=1;	//add
					if(Y_Coordinate < 0)
					{
						Y_Coordinate = 100;
					}
					Y_Disp[0] -= 1;
					if(Y_Disp[0] <0)
					{
						Y_Disp[1] -= 1;
						Y_Disp[0] = 9;
						if(Y_Disp[1]<0)
						{
							Y_Disp[2] -= 1;
							Y_Disp[1] = 9;
						}
					}//abstrust
					if(Y_Disp[2] < 0)
					{
						Y_Disp[2] = 1;
						Y_Disp[1] = 0;
						Y_Disp[0] = 0; 
					}
					break;
				case 0x04:
					SetY_flag = 0;
					break;
				case 0x84:
					//flag_exit = 1;
					break;
				default:
					break;
			}
		}	
		if(SetX_flag == 1)
		{
			switch(key)
			{
				case 0x01:
					X_Coordinate +=1;	//add
					if(X_Coordinate > 80)
					{
						X_Coordinate = 0;
					}
					X_Disp[0] += 1;
					if(X_Disp[0] == 10)
					{
						X_Disp[1] += 1;
						X_Disp[0] = 0;
					}
					if((X_Disp[1] == 8) & (X_Disp[0] == 1))
					{
						X_Disp[1] = 0; 
						X_Disp[0] = 0;
					}
					break;
				case 0x02:
					X_Coordinate -=1;	//add
					if(X_Coordinate < 0)
					{
						X_Coordinate = 80;
					}
					X_Disp[0] -= 1;
					if(X_Disp[0] <0)
					{
						X_Disp[1] -= 1;
						X_Disp[0] = 9;
					}//abstrust
					if(X_Disp[1] < 0)
					{
						X_Disp[1] = 8;
						X_Disp[0] = 0; 
					}
					break;
				case 0x04:
					SetX_flag = 0;
					SetY_flag = 1;
					break;
				case 0x84:
					//flag_exit = 1;
					break;
				default:
					break;
			}
		}
	}

	return key;
}

⌨️ 快捷键说明

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