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

📄 key.c

📁 image capture billing control system
💻 C
字号:
// 1/24MHz * 6 x 40000 = 10ms
#define	TIME0	(65535-20000)
//#define	OFF_TIME0	(65535-40000)
#define	Key_Input	LptDataIn

//Bit Key_Ready, Bass_Ready, Treble_Ready, Time0_Over;
//Bit Power_Off_Ready;

/*
void Off_Timer0_Start()
{
// 1/4 x 40000 = 10ms
	TMOD &= 0xf0;
	TMOD |= 0x01;	// b'xxxx0001' : Timer0 = mode1, 16-bit counter
	TH0 = TIME0/256;
	TL0 = TIME0%256;
	Time0 = 0;
	TR0 = 1;	// Timer0 start
	ET0 = 1;	// Timer0 interrupt enable
}
*/

/*
void Power_Off()
{
	return;
	Volume_Mute();
//	Red_On();
//	Delay_Sec(1);
//	Red_Off();
	Yellow_Off();
	Power_Down();
}
*/

void Timer0_Start(Word time)
{
// 1/24MHz * 6 x 40000 = 10ms
	Time0_Over=0;
	Time0_Turn = time;
	Time0 = 0;
	TMOD &= 0xf0;
	TMOD |= 0x01;	// b'xxxx0001' : Timer0 = mode1, 16-bit timer
	TH0 = TIME0/256;
	TL0 = TIME0%256;
	TR0 = 1;	// Timer0 start
	ET0 = 1;	// Timer0 interrupt enable
}

IntTimer0()	interrupt	1
{
	Time0++;

	if(Time0 == Time0_Turn)	// 10ms x 50 = 0.5sec
	{
		Time0_Over = 1;
		ET0 = 0;	// Timer0 interrupt disable
		return;
	}
	TH0 = TIME0/256;
	TL0 = TIME0%256;
}

Bool Timer0_Check(Byte time)
{
	if(Released)
	{
		Timer0_Start(time);
	}
	else if(Same_Key)
	{
		if(!Time0_Over) return(0);
		Timer0_Start(time);
	}
	else return(0);

	return(1);
}

void Init_Key()
{
//	KeyScan = 0;
//	FF_Cnt = 0;
//	Key_Cnt = 0;
	Key_Time = 0;
	Key_Code = NONE_KEY;
	Old_Key_Code = NONE_KEY;
	Old_Key_Input = NONE_KEY;
	Hold=0;
//	Start_Power_Off_Time();
}
	
void File_Num_Inc()
{
//	if(Total_Files==0) return;
//	File_Num = (File_Num==Total_Files) ? 1 : File_Num+1;
NEXT_INC:
	if(File_Num==Total_Files)
	{
		File_Num = 1;
		if( (Key_Input|REPEAT_KEY) != REPEAT_KEY )
		{
//			if( (SystemStatus==STATUS_PLAY)&&(!RW_Enable)&&(!FF_Enable) )
			if( (SystemStatus==STATUS_PLAY)&&(Old_Key_Code != RW_KEY)&&(Old_Key_Code != FF_KEY) )
			{
				Volume_Mute();
//				File_Reset();
				SystemStatus = STATUS_STOP;
//				Start_Power_Off_Time();
				Error = 1;
//				return;
			}
		}
//		Yellow_Off();
//		Green_Light(3,1);
	}
	else File_Num++;

	File_Reset();
	if(!Is_MP3) goto NEXT_INC;
}

void File_Num_Dec()
{
NEXT_DEC:
//	if(Total_Files==0) return;
	File_Num = (File_Num==1) ? Total_Files : File_Num-1;
/*
	if(File_Num==1)
	{
		Yellow_Off();
		Red_Light(3,1);
	}
	else File_Num--;
*/
	File_Reset();
	if(!Is_MP3) goto NEXT_DEC;
}

void Poll_Key()
{
//	Byte x;
//	Byte i;
	Byte key_input;

	if(SystemStatus == STATUS_DOWNLOAD) return;

	Old_Key_Code = Key_Code;

//	Key_Code = Key_Input;
	key_input = Key_Input|0xc0;


//Key testing
/*	if(key_input!=NONE_KEY)
	{
		Red_Light(1,5);
		for( i=0 ; i<8 ; i++)
		{
			x = 0x01<<i;
			if( !(key_input&x) )
			{
				Yellow_Light(i, 2);
			}
		}
	}
*/
	if(key_input == Old_Key_Input)
	{
		Key_Time++;
		if(Key_Time >= 20 )
		{
			Key_Code = key_input;
			Key_Time = 0;
		}
	}
	else
	{
		Old_Key_Input = key_input;
		Key_Time = 0;
	}

/*
	temp_key_code = Key_Input;
	temp_key_code = ~temp_key_code;


	switch(temp_key_code)
	{
// Key Definition
#define	NONE_KEY	0xff	// b'11111111'	0x00
#define	PLAY_KEY	0xfe	// b'11111110'	0x01
#define	STOP_KEY	0xfd	// b'11111101'	0x02
#define	FF_KEY		0xfb	// b'11111011'	0x04
#define	RW_KEY		0xf7	// b'11110111'	0x08
#define	BASS_KEY	0xef	// b'11101111'	0x10
#define	TREBLE_KEY	0xdf	// b'11011111'	0x20
#define	UP_KEY		0xbf	// b'10111111'	0x40
#define	DOWN_KEY	0x7f	// b'01111111'	0x80
		case 0xff:	Key_Code = NONE_KEY; break;
		case 0xff:	Key_Code = NONE_KEY; break;
		case 0xff:	Key_Code = NONE_KEY; break;
		case 0xff:	Key_Code = NONE_KEY; break;
		case 0xff:	Key_Code = NONE_KEY; break;
		case 0xff:	Key_Code = NONE_KEY; break;
*/

	Released = (Old_Key_Code==NONE_KEY)? 1 : 0;
	Same_Key = (Old_Key_Code==Key_Code)? 1 : 0;

	if(Hold)
	{
		if(Key_Code != BASS_KEY) return;
	}

	if(Key_Code != NONE_KEY) Power_Off_Time = 0;

	switch(Key_Code)
	{
		case NONE_KEY:

			if( (Power_Off_Time)&(Time0_Over) )
			{
				Red_Light(2,2);
				Power_Off();
			}

			if(Same_Key) return;

			switch(Old_Key_Code)
			{
/*
				case PLAY_KEY:
					if(MP3_Files==0) return;
//					VDD_On();
//					Delay_100ms(1);
//					Volume_Mute();
					switch(SystemStatus)
					{
						case STATUS_STOP:	// STOP -> PLAY
							Status_Change(STATUS_PLAY);
							break;
						case STATUS_PLAY:	// PLAY -> PAUSE
							Status_Change(STATUS_PAUSE);
//							VDD_Off();
							break;
						case STATUS_PAUSE:	// PAUSE -> PLAY
							Status_Change(STATUS_PLAY);
							break;
						default: break;
					}
					break;
*/
				case RW_KEY:
					if(MP3_Files==0) return;
					if(SystemStatus==STATUS_PLAY)
					{
						if(!Time0_Over)
						{
							Volume_Mute();
							File_Num_Dec();
							MMU_Reset();
							Play_Cnt=0;
						}
					}
					break;
				case FF_KEY:
					if(MP3_Files==0) return;
					if(SystemStatus==STATUS_PLAY)
					{
						if(!Time0_Over)
						{
							Volume_Mute();
							File_Num_Inc();
							MMU_Reset();
							Play_Cnt=0;
						}
					}
					break;
				case BASS_KEY:
					if(Hold_Changed)
					{
						Hold_Changed = 0;
						return;
					}

					switch(EQ_Mode)
					{
/*
						case NORMAL_MODE: Bass_Up_Mode(); break;
						case BASS_UP_MODE: Treble_Up_Mode(); break;
						case TREBLE_UP_MODE: Bass_Treble_Up_Mode(); break;
						case BASS_TREBLE_UP_MODE: Normal_Mode(); break;
						default: break;
*/
						case NORMAL_MODE: Set_EQ_Mode(BASS_UP_MODE); break;
						case BASS_UP_MODE: Set_EQ_Mode(TREBLE_UP_MODE); break;
						case TREBLE_UP_MODE: Set_EQ_Mode(BASS_TREBLE_UP_MODE); break;
						case BASS_TREBLE_UP_MODE: Set_EQ_Mode(NORMAL_MODE); break;
						default: break;
					}

					break;
				default: break;
			}

			RW_Enable=0;
			FF_Enable=0;
			Time0_Over = 0;
			if(SystemStatus != STATUS_PLAY) Start_Power_Off_Time();
			break;

		case PLAY_KEY:
//			Green_Light(1,2);
/*
			if(Released) Timer0_Start(250);
			else if(Same_Key)
			{
				if(Time0_Over) Power_Off();
			}
			break;
*/
			if(MP3_Files==0) return;

			if(~Released) return;
//					VDD_On();
//					Delay_100ms(1);
//					Volume_Mute();
			switch(SystemStatus)
			{
				case STATUS_STOP:	// STOP -> PLAY
					Status_Change(STATUS_PLAY);
					break;
				case STATUS_PLAY:	// PLAY -> PAUSE
					Status_Change(STATUS_PAUSE);
//							VDD_Off();
					break;
				case STATUS_PAUSE:	// PAUSE -> PLAY
					Status_Change(STATUS_PLAY);
					break;
				default: break;
			}
			break;
/*
		case STOP_KEY:
			if(Released)
			{
				Timer0_Start(200);
				if(SystemStatus != STATUS_STOP)
				{
					Status_Change(STATUS_STOP);
				}
			}
			else if(Same_Key)
			{
				if(Time0_Over) Power_Off();
			}

			break;
*/
		case RW_KEY:
			if(MP3_Files==0) return;

			if(SystemStatus==STATUS_PLAY)
			{
//				if(Timer0_Check(100)) RW_Enable=1;

				if(Released)
				{
					Timer0_Start(100);
				}
				else if(Same_Key)
				{
					if(Time0_Over)
					{
						RW_Enable=1;
					}
				}
			}
			else
			{
				if(!Timer0_Check(100)) return;
				File_Num_Dec();
			}
			break;

		case FF_KEY:
			if(MP3_Files==0) return;

			if(SystemStatus==STATUS_PLAY)
			{
//				if(Timer0_Check(100)) FF_Enable=1;

				if(Released)
				{
					Timer0_Start(100);
				}
				else if(Same_Key)
				{
					if(Time0_Over)
					{
						FF_Enable=1;
					}
				}

			}
			else
			{
				if(!Timer0_Check(100)) return;
				File_Num_Inc();
			}
			break;

		case BASS_KEY:
			if(Released) Timer0_Start(250);
			else if(Same_Key)
			{
				if(Time0_Over)
				{
//					Yellow_Light(1, 3);
					Hold = ~Hold;
					Hold_Changed=1;
					Time0_Over = 0;
				}
			}
/*
			if(Released)
			{
//				Red_Light(3, 1);
				switch(EQ_Mode)
				{
					case NORMAL_MODE: Bass_Up_Mode(); break;
					case BASS_UP_MODE: Treble_Up_Mode(); break;
					case TREBLE_UP_MODE: Bass_Treble_Up_Mode(); break;
					case BASS_TREBLE_UP_MODE: Normal_Mode(); break;
					default: break;
				}
			}
*/
			break;
/*
		case TREBLE_KEY:
			break;

*/
/*
		case BASS_KEY&UP_KEY:
			if(Old_Key_Code==BASS_KEY) Released=1;
			if(!Timer0_Check(50)) return;

			if(Bass == MAX_BASS) return;
			Bass++;
			Bass_Adj();
			break;

		case BASS_KEY&DOWN_KEY:
			if(Old_Key_Code==BASS_KEY) Released=1;
			if(!Timer0_Check(50)) return;

			if(Bass == 0) return;
			Bass--;
			Bass_Adj();
			break;
*/
/*
		case TREBLE_KEY&UP_KEY:
			if(Old_Key_Code==TREBLE_KEY) Released=1;
			if(!Timer0_Check()) return;

			if(Treble == MAX_TREBLE) return;
			Treble++;
			Treble_Adj();
			Poll_LCD();
			break;

		case TREBLE_KEY&DOWN_KEY:
			if(Old_Key_Code==TREBLE_KEY) Released=1;
			if(!Timer0_Check()) return;

			if(Treble == 0) return;
			Treble--;
			Treble_Adj();
			Poll_LCD();
			break;
*/
		case UP_KEY:
			if(!Timer0_Check(30)) return;

			if(Volume == MAX_VOLUME) return;
//			if(Volume<20) Volume++;
			Volume++;
//			if(SystemStatus==STATUS_PLAY) Volume_Adj();
			Volume_Adj();
			break;

		case DOWN_KEY:
			if(!Timer0_Check(30)) return;

			if(Volume == 0) return;
//			if(Volume<=20) Volume--;
			Volume--;
//			if(SystemStatus==STATUS_PLAY) Volume_Adj();
			Volume_Adj();
			break;

		default:
//			Yellow_On();
//			Yellow_Off();
			break;
	}
}

⌨️ 快捷键说明

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