key.c

来自「2407嵌入式系统程序(c语言)」· C语言 代码 · 共 413 行

C
413
字号
#include "f2407_c.h"
#include "global.h"
#include "key.h"

int KEY_SCAN(void)
{	int key_value=0x0000;
	KEY_UP=0x0000;
	KEY_DOWN=0x0000;
	KEY_LEFT=0x0000;
	KEY_RIGHT=0x0000;
	KEY_SURE=0x0000;
	key_value=(*PEDATDIR)&0x0002;
	if(key_value!=0)
		{	Delay50uS();
			Delay50uS();
			key_value=*PEDATDIR&0x0002;
			if(key_value!=0)
				{	KEY_LEFT=0x0001;
					return 1;
				};
		};
	key_value=(*PEDATDIR)&0x0004;
	if(key_value!=0)
		{	Delay50uS();
			Delay50uS();
			key_value=*PEDATDIR&0x0004;
			if(key_value!=0)
				{	KEY_SURE=0x0001;
					return 1;
				};
		};
	key_value=(*PEDATDIR)&0x0008;
	if(key_value!=0)
		{	Delay50uS();
			Delay50uS();
			key_value=*PEDATDIR&0x0008;
			if(key_value!=0)
				{	KEY_RIGHT=0x0001;
					return 1;
				};
		};
	key_value=(*PEDATDIR)&0x0010;
	if(key_value!=0)
		{	Delay50uS();
			Delay50uS();
			key_value=*PEDATDIR&0x0010;
			if(key_value!=0)
				{	KEY_UP=0x0001;
					return 1;
				};
		};
	key_value=(*PEDATDIR)&0x0001;
	if(key_value!=0)
		{	Delay50uS();
			Delay50uS();
			key_value=*PEDATDIR&0x0001;
			if(key_value!=0)
				{	KEY_DOWN=0x0001;
					return 1;
				};
		};
	return 0;
}
int KEY_HANDLE(void)
{	 if(KEY_RIGHT==0)
		if(KEY_LEFT==0)
			if(KEY_SURE==0)
				return 0;
			 else 
			 	switch(MAINMEAUFLAG)
			 		 {case 1:return 1;
			 		 case 2:LCD_CLEAR();
			 		 		LCD_SUBMEAU2('2');
			 		 		LCD_SUBMEAU2('3');
			 		 		LCD_SUBMEAU2('5');
			 		 		LCD_SUBMEAU2('7');
			 		 		LCD_SUBMEAU2('9');
			 		 		SUBBAR2('1');
			 		 		SUBMEAU2FLAG=0x0001;
			 		 		return 1;
			 		 case 3:LCD_CLEAR();
			 		 		LCD_SUBMEAU3('2');
			 		 		LCD_SUBMEAU3('3');
			 		 		LCD_SUBMEAU3('5');
			 		 		SUBBAR3('1');
			 		 		SUBMEAU3FLAG=0x0001;
			 		 		return 1;
			 		 case 4:LCD_CLEAR();
			 		 		LCD_SUBMEAU4('2');
			 		 		LCD_SUBMEAU4('3');
			 		 		LCD_SUBMEAU4('5');
			 		 		LCD_SUBMEAU4('7');
			 		 		SUBBAR4('1');
			 		 		SUBMEAU4FLAG=0x0001;
			 		 		return 1;
			 		 case 5:return 1;
			 		}		
		  else
		  	switch(MAINMEAUFLAG)
			 	{
			 	case 1: LCD_STARTMEAU('1');
			 			LCD_STARTMEAU('10');
			 			CLEAR_BAR();
			 			MAINBAR('5');
			 			return 1;
			 	 case 2:LCD_STARTMEAU('3');
			 			LCD_STARTMEAU('2');
			 			CLEAR_BAR();
			 			MAINBAR('1');
			 			return 1;
			 	 case 3:LCD_STARTMEAU('5');
			 			LCD_STARTMEAU('4');
			 			CLEAR_BAR();
			 			MAINBAR('2');
			 			return 1;
			 	 case 4:LCD_STARTMEAU('7');
			 			LCD_STARTMEAU('6');
			 			CLEAR_BAR();
			 			MAINBAR('3');
			 			return 1;
			 	 case 5:LCD_STARTMEAU('9');
			 			LCD_STARTMEAU('8');
			 			CLEAR_BAR();
			 			MAINBAR('4');
			 			return 1;
			 	 }	 
	  else
	  	switch(MAINMEAUFLAG)
	  		{case 1:LCD_STARTMEAU('1');
			 		LCD_STARTMEAU('4');
			 		CLEAR_BAR();
			 		MAINBAR('2');
			 		return 1;
	  		 case 2:LCD_STARTMEAU('3');
			 		LCD_STARTMEAU('6');
			 		CLEAR_BAR();
			 		MAINBAR('3');
			 		return 1;
	  		 case 3:LCD_STARTMEAU('5');
			 		LCD_STARTMEAU('8');
			 		CLEAR_BAR();
			 		MAINBAR('4');
			 		return 1;
	  		 case 4:LCD_STARTMEAU('7');
			 		LCD_STARTMEAU('10');
			 		CLEAR_BAR();
			 		MAINBAR('5');
			 		return 1;
	  		 case 5:LCD_STARTMEAU('9');
			 		LCD_STARTMEAU('2');
			 		CLEAR_BAR();
			 		MAINBAR('1');
			 		return 1;
	  		  }
	  	
}    

int KEY_SUBMEAU2(void)
{	if(KEY_RIGHT==0)
		{if(KEY_LEFT==0)
			{if(KEY_SURE==0)
				{if(KEY_UP==0)
					return 0;
				 else
				 	{	LCD_CLEAR();			  		
			 		    LCD_STARTMEAU('1');
			 	        LCD_STARTMEAU('4');
			            LCD_STARTMEAU('5');
		                LCD_STARTMEAU('7');
	                    LCD_STARTMEAU('9');
			            MAINBAR('2');
				        SUBMEAU2FLAG=0x0000;
				        return 1;
				    }
				 }
			else
				{switch(SUBMEAU2FLAG)
					{	case 1:	LCD_CLEAR();
								SURESUBMEAU2('1');
								return 1;	
						case 2:	LCD_CLEAR();
								SURESUBMEAU2('2');
								return 1;
						case 3: LCD_CLEAR();
								SURESUBMEAU2('3');
								return 1;
						case 4: LCD_CLEAR();
								SURESUBMEAU2('4');
								return 1;
						case 5:	LCD_CLEAR();
								SURESUBMEAU2('5');
								return 1;
					}
				}
			}
		else
			{switch(SUBMEAU2FLAG)
				{	case 1:	LCD_SUBMEAU2('1');
							LCD_SUBMEAU2('10');
							CLEAR_BAR();
							SUBBAR2('5');
							return 1;
					case 2: LCD_SUBMEAU2('3');
							LCD_SUBMEAU2('2');
							CLEAR_BAR();
							SUBBAR2('1');
							return 1;
					case 3: LCD_SUBMEAU2('5');
							LCD_SUBMEAU2('4');
							CLEAR_BAR();
							SUBBAR2('2');
							return 1;
					case 4: LCD_SUBMEAU2('7');
							LCD_SUBMEAU2('6');
							CLEAR_BAR();
							SUBBAR2('3');
							return 1;
					case 5: LCD_SUBMEAU2('9');
							LCD_SUBMEAU2('8');
							CLEAR_BAR();
							SUBBAR2('4');
							return 1;
				}
			} 
		}
	else
		{switch(SUBMEAU2FLAG)
			{	case 1:	LCD_SUBMEAU2('1');
						LCD_SUBMEAU2('4');
						CLEAR_BAR();
						SUBBAR2('2');
						return 1;
				case 2: LCD_SUBMEAU2('3');
						LCD_SUBMEAU2('6');
						CLEAR_BAR();
						SUBBAR2('3');
						return 1;
				case 3: LCD_SUBMEAU2('5');
						LCD_SUBMEAU2('8');
						CLEAR_BAR();
						SUBBAR2('4');
						return 1;
				case 4: LCD_SUBMEAU2('7');
						LCD_SUBMEAU2('10');
						CLEAR_BAR();
						SUBBAR2('5');
						return 1;
				case 5: LCD_SUBMEAU2('9');
						LCD_SUBMEAU2('2');
						CLEAR_BAR();
						SUBBAR2('1');
						return 1;
			}
		}
}
int KEY_SUBMEAU3(void)
{	if(KEY_RIGHT==0)
		{if(KEY_LEFT==0)
			{if(KEY_SURE==0)
				{if(KEY_UP==0)
					return 0;
				 else
				 	{	LCD_CLEAR();			  		
			 		    LCD_STARTMEAU('1');
			 	        LCD_STARTMEAU('4');
			            LCD_STARTMEAU('5');
		                LCD_STARTMEAU('7');
	                    LCD_STARTMEAU('9');
			            MAINBAR('2');
				        SUBMEAU3FLAG=0x0000;
				        return 1;
				    }
				 }
			else
				{switch(SUBMEAU3FLAG)
					{	case 1:	LCD_CLEAR();
								SURESUBMEAU3('1');
								return 1;	
						case 2:	LCD_CLEAR();
								SURESUBMEAU3('2');
								return 1;
						case 3: LCD_CLEAR();
								SURESUBMEAU3('3');
								return 1;
					}
				}
			}
		else
			{switch(SUBMEAU3FLAG)
				{	case 1:	LCD_SUBMEAU3('1');
							LCD_SUBMEAU3('6');
							CLEAR_BAR();
							SUBBAR3('3');
							return 1;
					case 2: LCD_SUBMEAU3('3');
							LCD_SUBMEAU3('2');
							CLEAR_BAR();
							SUBBAR3('1');
							return 1;
					case 3: LCD_SUBMEAU3('5');
							LCD_SUBMEAU3('4');
							CLEAR_BAR();
							SUBBAR3('2');
							return 1;
				}
			} 
		}
	else
		{switch(SUBMEAU3FLAG)
			{	case 1:	LCD_SUBMEAU3('1');
						LCD_SUBMEAU3('4');
						CLEAR_BAR();
						SUBBAR3('2');
						return 1;
				case 2: LCD_SUBMEAU3('3');
						LCD_SUBMEAU3('6');
						CLEAR_BAR();
						SUBBAR3('3');
						return 1;
				case 3: LCD_SUBMEAU3('5');
						LCD_SUBMEAU3('2');
						CLEAR_BAR();
						SUBBAR3('1');
						return 1;
			}
		}
}
/***************************************************/ 
int KEY_SUBMEAU4(void)
{	if(KEY_RIGHT==0)
		if(KEY_LEFT==0)
			if(KEY_SURE==0)
				if(KEY_UP==0)
					return 0;
				 else
				 	{	LCD_CLEAR();			  		
			 		    LCD_STARTMEAU('1');
			 	        LCD_STARTMEAU('4');
			            LCD_STARTMEAU('5');
		                LCD_STARTMEAU('7');
	                    LCD_STARTMEAU('9');
			            MAINBAR('2');
				        SUBMEAU4FLAG=0x0000;
				        return 1;
				    }	 
			else
				{switch(SUBMEAU4FLAG)
						{case 1:	LCD_CLEAR();
								SURESUBMEAU4('1');
								return 1;	
						case 2:	LCD_CLEAR();
								SURESUBMEAU4('2');
								return 1;
						case 3: LCD_CLEAR();
								SURESUBMEAU4('3');
								return 1;
						case 4: LCD_CLEAR();
								SURESUBMEAU4('4');
								return 1;
						}
				}	
		else
			{switch(SUBMEAU4FLAG)
				{	case 1:	LCD_SUBMEAU4('1');
							LCD_SUBMEAU4('8');
							CLEAR_BAR();
							SUBBAR4('4');
							return 1;
					case 2: LCD_SUBMEAU4('3');
							LCD_SUBMEAU4('2');
							CLEAR_BAR();
							SUBBAR4('1');
							return 1;
					case 3: LCD_SUBMEAU4('5');
							LCD_SUBMEAU4('4');
							CLEAR_BAR();
							SUBBAR4('2');
							return 1;
					case 4: LCD_SUBMEAU4('7');
							LCD_SUBMEAU4('6');
							CLEAR_BAR();
							SUBBAR4('3');
							return 1;
				}
			}	
	else
		{switch(SUBMEAU4FLAG)
			{	case 1:	LCD_SUBMEAU4('1');
						LCD_SUBMEAU4('4');
						CLEAR_BAR();
						SUBBAR4('2');
						return 1;
				case 2:  LCD_SUBMEAU4('3');
						 LCD_SUBMEAU4('6');
						 CLEAR_BAR();
						 SUBBAR4('3');  
						return 1;
				case 3: LCD_SUBMEAU4('5');
						LCD_SUBMEAU4('8');
						CLEAR_BAR();
						SUBBAR4('4');
						return 1;
				case 4: LCD_SUBMEAU4('7');
						LCD_SUBMEAU4('2');
						CLEAR_BAR();
						SUBBAR4('1');
						return 1;
			}
		}	
}


													

⌨️ 快捷键说明

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