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

📄 keyproc.c

📁 philip RTC 芯片的驱动程序 8563
💻 C
📖 第 1 页 / 共 2 页
字号:
			        display_48(m % 10);
				    display_maohao();								
				}	
				if((flash_counter > 280 ) && (flash_counter < 330))			
				clear_lcd();					
				if(flash_counter > 330) 
				flash_counter = 0;								
				DelayX1ms(255);	
				DelayX1ms(125);					
  			
				if(IR_KeyAct == 1 )
				{
					Current_Key  =  IR_KEY_TBL[Remote_Key];
					IR_KeyAct = 0;					
					if(Current_Key == VOLUME_UP_KEY) 
					{
						if(h < 13)
						{
							h++;
							if(h == 13)
							h = 1;							
							display_18(h / 10);			
			        		display_28(h % 10);	
							set_pcf8563(0x04,((h / 10)<<4)  | (h % 10)); 			
						}
					}
					if(Current_Key == VOLUME_DOWN_KEY)
					{
						if(m < 60)
						{					
						  	m++;
							if(m == 60)
							m = 0;							
					    	display_38(m / 10);			
				        	display_48(m % 10);
							set_pcf8563(0x03,((m / 10)<<4)  | (m % 10));						
						}
					}
					if(Current_Key == CLOCK_KEY) 
				    clock_flag = 0;		
				}										
      		}
  		}
		//add ir clock end		
		Current_Key = NO_KEY;	
		if(Need_Button_up == 0)
		{
			Keypointer = KeyBound_TBL;
			SendKeyToiPod();						
		}		
	}
}

			    
void	Panel_SearchKey()
{
	BYTE Key_Temp;	
	P3 |= 0xf0;
	_nop_();
	Key_Temp = P3 & 0xf0;
	if( Key_Temp == 0xf0)
	{
		Key_Rebound = 0;
		Key_LongTimer = 0;
		Key_ShortTimer = 0;
		Save_Key      = NO_KEY;
		return;
	}	
	DelayX1ms(15);
	P3 |= 0xf0;
	_nop_();
	
	Key_Temp = P3 & 0xf0;
	
	if( Key_Temp == 0xf0)
		return;
	
	if(Key_Rebound == 0)
	{
		Panel_KeyAct = 1;
		Key_Rebound  = 1;
		
		switch(Key_Temp)
		{
			case  0x70:
				  Panel_Key = POWER_KEY;
				  break;
			case  0xb0:
				  Panel_Key = Source_Select;
				  Save_Key  = Panel_Key;
				  Key_LongTimer = 1;
				  break;
			case  0xd0:
	              Panel_Key = VOLUME_DOWN_KEY;
				  Save_Key  = Panel_Key;
				  Key_LongTimer = 1;
				  break;
			case  0xe0:
 			      Panel_Key = VOLUME_UP_KEY;
				  Save_Key  = Panel_Key;
				  Key_LongTimer = 1;
				  break;
			default:
				  Panel_Key = NO_KEY;
				  Panel_KeyAct = 0;
				  break;
		}
	}
	else if(Key_Rebound == 1)
	{
		if((Key_LongTimer == 130)) //130
		{
			Key_Rebound = 2;
			Panel_KeyAct = 1;
			Panel_Key = Save_Key;
			Key_LongTimer = 0;
			Key_ShortTimer = 1;
		}
	}
	else if(Key_Rebound == 2)
	{
		if((Key_ShortTimer == 25))// 25
		{
			Panel_KeyAct = 1;
			Panel_Key = Save_Key;
			Key_ShortTimer = 1;
		}
	}
	
	//校时
	if(POWER_Status == 0)//关机状态校时
	{
		P3 |= 0xf0;	
		if((P3 & 0xf0) == 0xc0)
		{ 
  			adj_counter++;
	    	h = hour;
			m = minute;
		
			if(adj_counter > 80)	
			{
				adj_counter = 0;
				while((P3 & 0xf0) != 0xb0)//按source键退出
				{
					//set_pcf8563(0x02,0); //清零秒,()					
			        //对时闪烁
					if((flash_counter > 0 ) && (flash_counter < 280))
					{
				        display_18(h / 10);			
				        display_28(h % 10);	
					    display_38(m / 10);			
				        display_48(m % 10);
					    display_maohao();	
					
					}	
					if((flash_counter > 280 ) && (flash_counter < 330))			
					clear_lcd();					
					if(flash_counter > 330) 
					flash_counter = 0;								
					DelayX1ms(255);	
					DelayX1ms(125);	
		
					switch(P3 & 0xf0)
					{
						case 0xd0:    //调小时
						if(h < 13)
						{
							h++;
							if(h == 13)
							h = 1;							
							display_18(h / 10);			
			        		display_28(h % 10);	
							set_pcf8563(0x04,((h / 10)<<4)  | (h % 10)); 			
						}
						break;
						
						case 0xe0:     //调分钟
						if(m < 60)
						{					
						  	m++;
							if(m == 60)
							m = 0;							
					    	display_38(m / 10);			
				        	display_48(m % 10);
							set_pcf8563(0x03,((m / 10)<<4)  | (m % 10));						
						}
						break;
			
						default:					
					    break;	
				    }
				}
			}		
		}   
	}
}

void	SendKeyToiPod(void)
{
	BYTE   Command_length;
	BYTE   i;

	SBUF = 0xFF;
	while(TI == 0);
	TI = 0;
	DelayX1ms(20);

	SBUF = 0xFF;	
	while(TI == 0);
	TI = 0;
	SBUF = 0x55;
	while(TI == 0);
	TI = 0;
	
	Command_length = Keypointer[0] + 2;
	for(i = 0; i< Command_length; i++)
	{

		SBUF = *(Keypointer + i );
		while(TI == 0);
		TI = 0;		
		DelayX1ms(3);
	}
}

void Power_Proc()
{
	if(POWER_Status == on)//开机状态
	{		
		AV_MUTE = 1;		//静音防止开机噪音	
		DelayX1ms(255);
		Power_Pin = 1;
		DelayX1ms(20);
		Volume_Tune(0);	
		DelayX1ms(255);		
		AV_MUTE = 0;   
 	//	Current_Volume = I2C_GetByte(A24C02_WRITE,0);//读出上次音量值
		Current_Volume = byte_read(0x2000);

		if(Current_Volume > 50)//防止第一次开机显示音量错乱
		Current_Volume = 30;
		Volume_Tune(Current_Volume);
		LED_G = 0;
		lcd_light = 0;		
	
		//开机显示通道
		if (Channel_Select == 0)
			{				
			    Volume_Tune(0);	
				DelayX1ms(255);
				C4052_A = 1;
				C4052_B = 0;
				
				display_aux2();	//显示	
				P1_6 = 0;
				P3_3 = 1;
				P1_7 = 1;
			}		
	 	else if (Channel_Select == 1)
			{			
				Volume_Tune(0);	
				DelayX1ms(255);

				C4052_A = 0;
				C4052_B = 1;
				
				display_main();//显示		
	            P3_3 = 0;
				P1_6 = 1;
				P1_7 = 1;				
			}		
		else if (Channel_Select == 2)
			{				
				Volume_Tune(0);	
				DelayX1ms(255);

				C4052_A = 1;
				C4052_B = 1;
				display_aux1();//显示	
				P1_7 = 0;
				P1_6 = 1;
			    P3_3 = 1;			
			}
			Volume_Tune(Current_Volume);			
				
		//开机显示音量进度条
		switch(Current_Volume / 5)
		{
			case 0:
			display_0bar();			
			break;
			case 1:
			display_1bar();
			break;
			case 2:
			display_2bar();
			break;
			case 3:
			display_3bar();
			break;
			case 4:
			display_4bar();
			break;
			case 5:
			display_5bar();
			break;
			case 6:
			display_6bar();
			break;
			case 7:
			display_7bar();
			break;
			case 8:
			display_8bar();
			break;
			case 9:
			display_9bar();
			break;
			case 10:
			display_10bar();
			break;
			
			default:
			break;
		}
		//显示音量数码值	

		display_68(Current_Volume % 10 );
		display_58(Current_Volume / 10);
		POWER_Status = off;   		    
	}

	else if(POWER_Status == off)//关机状态
	{		
		AV_MUTE = 1;   //关机静音
		DelayX1ms(255);	
		mute_flag = 0;//如果静音则关机解除静音,为开机不静音准备
		P3_3	=	1;
		P1_6	=	1;
		P1_7	=	1;
//		I2C_PutByte(A24C02_WRITE, 0,Current_Volume);
		/* 扇区擦除 */
		sector_erase(0x2000);
		/* 字节编程 */
		byte_program(0x2000, Current_Volume);

		Power_Pin = 0;	
		LED_G  = off;
		lcd_light = off;    
	    
        display_0bar();	 //关机不显示bar
		display_offchanel();//关机不显示任何通道
		display_mute(lcd_unmute);//关机不显示MUTE

		lcd_wr_addr(0x03);
	    lcd_wr_data(0x0);//关机不显示第一个小8数码管
		lcd_wr_addr(0x02);
		lcd_wr_data(0x0);
	
		lcd_wr_addr(0x01);
	    lcd_wr_data(0x0);
		lcd_wr_addr(0x00);//关机不显示第二个小8数码管
		lcd_wr_data(0x0);
		
		C4052_A = 0;
		C4052_B = 0;//power off switch to void chanel.
		//关机时关闭IPOD
		{			 	
					Keypointer = POWER_OFF_TBL;
				 	SendKeyToiPod();						
		}

		POWER_Status = on;

	}
}


⌨️ 快捷键说明

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