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

📄 t10a2_main.c

📁 AVR单片机基础程序实例! 十个程序源代码。
💻 C
📖 第 1 页 / 共 5 页
字号:
				time_flag&=~BIT(FLAG_100MS);
				counter2_100ms++;
				if(counter2_100ms>1)
				{counter2_100ms=0;
					if(touch_flag&BIT(TOUCH_100MS_F))
					touch_flag&=~BIT(TOUCH_100MS_F);
					else 	touch_flag|=BIT(TOUCH_100MS_F);
				}
				
				if(I2C_counter==0)//放到上面蔽开同时发生
				{
					if(bdata4_flag&BIT(MENU_INIT_F))//改
					{
						bdata4_flag&=~BIT(MENU_INIT_F);
						menu_address=0;
						bdata3_flag&=~BIT(MENU_OPEN_F);
						osd_byte[0]=0;
						osd_byte[1]=0;
						remote_usbcard_on_disposal_1();
					}
					
					else if(bdata3_flag&BIT(DECODER_START))	//加
					{
						if((input_select==0)||(input_select==1)||(input_select==4))
						{
							
								decode_counter=0x00;	
								bdata7_flag|=BIT(decode_mute);		//2007/05/18
						}
						bdata3_flag&=~BIT(DECODER_START);//由于前面加一0x01,0xXX,命令,所以推后,如需改回,只要将上面的子程序删?
						osd_byte[0]=0xa1;//启动解码板
						osd_byte[1]=0x01;
						remote_usbcard_on_disposal_1();
						if((input_select==4)||(input_select<2))
							bdata5_flag|=BIT(DECODER_OUTPUT_F);//启动解码之后,发送需要的输出状态.
						I2C_counter=20;//作延时用,
					}
					else if(bdata5_flag&BIT(OSD_DELAY_F))//发送延时
					{
						bdata5_flag&=~BIT(OSD_DELAY_F);
						osd_byte[0]=osd_byte_bak[0];
						osd_byte[1]=osd_byte_bak[1];
						remote_usbcard_on_disposal_1();
					}
					else if(bdata5_flag&BIT(DECODER_OUTPUT_F))//发送PrologicII,Downmix,standard,deBT_Sel输出
					{
						bdata5_flag&=~BIT(DECODER_OUTPUT_F);//待验证
						if(bdata6_flag&BIT(OUT_PUT_FLAG0))
						{
							bdata6_flag&=~BIT(OUT_PUT_FLAG0);
							output_disposal();//暂不用
					
						}
					}
					else asm("nop");
				}
				if(I2C_counter!=0)
				I2C_counter--;/*新加*/
				if(I2C_counter==0)
				{
					PORTC&=~BIT(TWI_TRANS_F);
				}
				if(touch_flag&BIT(CONTINUE_F))//按键连续,清0,
				{
					if((touch_value_bak==0)||(touch_value_bak==1))
					{
						touch_counter1++;
						if(touch_counter1>4)
						{
							touch_value_bak=0xff;
							touch_counter1=5;
						}
					}
				}
				counter1_100ms++;
				if(counter1_100ms>1)
				{
					counter1_100ms=0;
					if(time_flag&BIT(FLAG_5HZ)) //取反
					time_flag&=~BIT(FLAG_5HZ);
					else 	time_flag|=BIT(FLAG_5HZ);
				}
				//if(disp_line<40)//40
				//{write_data_display_1(0,13,&disp_buffer[disp_line]);}//流动
				if((disp_line==12)||(disp_line==25)||(disp_line==38))counter0_100ms=5;//12,25,39
				if(disp_line<41)//41
				{
					if((disp_line==13)||(disp_line==26)||(disp_line==39))
					{
						if(counter0_100ms==0)
						disp_line+=1;
					}
					else
					disp_line+=1;
				}

				if(counter0_100ms>0)counter0_100ms--;
				if((bdata2_flag&BIT(TURN_OFF_F))&&(state_counter==0))//TURN_OFF_F=1
				{
				//	PORTA|=BIT(STB);
//					write_data_display(0,13,blank);	//关机清零
					
					//王明文添加
					CLEAR_VFD();
					VFD_Display_Mode = Initial_DisMode;
					//Flg_Standby_SW = 0;

					Signal_Detect_OK = 0;

					data_4094&=~BIT(led_green);
					data_4094&=~BIT(led_blue);
					data_4094&=~BIT(MUTE_SURROUND);
					data_4094&=~BIT(MUTE_ALL);
					write4094(data_4094);
					
					delay_ms(50);
					
					bdata2_flag&=~BIT(TURN_OFF_F);//TURN_OFF_F=0;
					//turn_off_init();	不能用,修改
					//bdata0_flag&=~BIT(CHECK_SINGLE_ALLOW); //暂时不允许检测信号
					bdata0_flag&=~BIT(RUN_F);//RUN_F=0;
					bdata2_flag|=BIT(STANDBY_F);//STANDBY_F=1;
					
					bdata7_flag|=BIT(mute_off_f);
				//	delay_us(5);
				//	PORTC|=BIT(POWER_DECODER);	////解码板关闭
				//	PORTC&=~BIT(POWER_DECODER);//解码板打开
					cd_input_f=0;//2007/4/10待机后清USB CARD标志
				//	PORTD|=BIT(STANDBY_SWITCH);

					standby_led=0x40;
				}
			//	bdata7_flag&=~BIT(mode_adj_f);
			}
			if(time_flag&BIT(FLAG_5MS))//FLAG_5MS 处理
			{
				time_flag&=~BIT(FLAG_5MS);
				//Lighten_VFD();
			}
			if(time_flag&BIT(FLAG_10MS))//FLAG_10MS 处理
			{
				time_flag&=~BIT(FLAG_10MS);

				VFD_Display();
				Dcportect_disposal();

				//检测信号
				Signal_Detect_Time++;
				if(!(PINC&BIT(CHECK_SINGLE)))
				{
					Signal_Detect_Time1++;
				}
				else
				{
					Signal_Detect_Time2++;
				}	
				if (Signal_Detect_Time > 25)
				{
					if (Signal_Detect_Time1>15)
					{
						Signal_Detect_OK = 1;
					}					
					else //if (Signal_Detect_Time2>70)
					{
						Signal_Detect_OK = 0;
					}
					
					Signal_Detect_Time = 0;
					Signal_Detect_Time1 = 0;
					Signal_Detect_Time2 = 0;
				}
				//信号检测结素			
				
				if(touch_flag&BIT(fai_autosearch_tv))
					{
						touch_flag&=~BIT(fai_autosearch_tv);
						ai_autosearch_tv();	
					}
				if(bdata7_flag&BIT(keyai))
					{
						ai_single_counter1++;
						if(!(PINC&BIT(CHECK_SINGLE)))ai_single_counter2++;
						if(ai_single_counter1>20)
							{
								ai_single_counter1=0x00;
								bdata7_flag&=~BIT(keyai);
								if(ai_single_counter2>10)
									{
										ai_single_counter2=0x00;
										if(!(bdata3_flag&BIT(MENU_OPEN_F)))
										{
											
											state_counter=6;	

											if(Disp_Register==0x50)
											{
												//王明文添加
												if (bdata7_flag&BIT(ai_on))
												{
													bdata7_flag &=~ BIT(ai_on);
													
												}
												else
												{
													bdata7_flag |= BIT(ai_on);		
												}							
											}
											else	
											{
												Disp_Register=0x50; 							
												state_reg = 0;
											}

											
											if(bdata7_flag&BIT(ai_on))
											{
												VFD_Variable = SW_OFF;
											}
											else	
											{
												VFD_Variable = SW_ON;
											}
										
											Display_Proc(AI_DisMode);	

											
										  	//bit_eor(bdata7_flag,ai_on);
										  	sendbyte1_r2s15902();
										  	//display ai; ai_on=1,开启,

										}
									}
								else
									{
										ai_single_counter2=0x00;
										bdata7_flag|=BIT(ai_autosearch);	
										if(menu_address!=0)
										{	
									  	bdata3_flag&=~BIT(MENU_OPEN_F);
								 		  menu_address=0;
										  osd_byte[0]=0;//菜单送数清零
										  osd_byte[1]=0;			
										}
										ai_autosearch_ht();		
										touch_flag&=~BIT(fai_autosearch_tv);				
									}	
							}
					}

				if (bdata7_flag&BIT(decode_mute))
				{
					if(!(PINC&BIT(CHECK_SINGLE)))
					{
						decode_counter++;
						if(decode_counter>350)
						{
							bdata7_flag&=~BIT(kaiji);
							bdata7_flag&=~BIT(decode_mute);
							bdata3_flag&=~BIT(DECODER_START);
							if(!(bdata0_flag&BIT(MUTE_F)))
							{
								fl_vol_bak=0;	
								fr_vol_bak=0;	
								sl_vol_bak=0;		
								sr_vol_bak=0;
								ce_vol_bak=0;
								bdata2_flag|=BIT(VOL_CHANGE_F);
								sendbyte2_r2s15902();//fl,fr
								sendbyte3_r2s15902();//cen,sw,
								sendbyte4_r2s15902();//sl,sr
								delay_ms(150);

							
								data_4094|=BIT(MUTE_ALL);
								if(bdata1_flag&BIT(CHANNLE_2AND5_F))
								data_4094|=BIT(MUTE_SURROUND);		
								write4094(data_4094);
								bdata0_flag|=BIT(VOL_UP_FLAG);//VOL_UP_FLAG=1;
								bdata5_flag|=BIT(VOL_FLAG);
							}
						}
					}

				}
				else
				{
					if(bdata7_flag&BIT(kaiji) && ((input_select!=0)&&(input_select!=1)&&(input_select!=4)))
					{
						if(!(PINC&BIT(CHECK_SINGLE)))
						{
							decode_counter++;
							if(decode_counter>100)
							{
								bdata7_flag&=~BIT(kaiji);
							//	bdata7_flag&=~BIT(decode_mute);
								bdata3_flag&=~BIT(DECODER_START);
								if(!(bdata0_flag&BIT(MUTE_F)))
								{
									fl_vol_bak=0;	
									fr_vol_bak=0;	
									sl_vol_bak=0;		
									sr_vol_bak=0;
									ce_vol_bak=0;
									bdata2_flag|=BIT(VOL_CHANGE_F);
									sendbyte2_r2s15902();//fl,fr
									sendbyte3_r2s15902();//cen,sw,
									sendbyte4_r2s15902();//sl,sr
									delay_ms(150);
									
									data_4094|=BIT(MUTE_ALL);
									if(bdata1_flag&BIT(CHANNLE_2AND5_F))
									data_4094|=BIT(MUTE_SURROUND);		
									write4094(data_4094);
									bdata0_flag|=BIT(VOL_UP_FLAG);//VOL_UP_FLAG=1;
									bdata5_flag|=BIT(VOL_FLAG);
								}
							}
						}

					}
				}

				counter_cm6930_10ms++;
				if(counter_cm6930_10ms>=3)
				{counter_cm6930_10ms=0;
			
					touch_cm6930_buffer_bak[1]=key_cm6930();
					if(touch_cm6930_buffer_bak[0]==touch_cm6930_buffer_bak[1])
					{
						touch_cm6930_line++;
						if(touch_cm6930_line>3)
						{
						touch_cm6930_buffer=touch_cm6930_buffer_bak[0];
						touch_cm6930_line=0;
						if(touch_cm6930_buffer==0x00)
							{
								data_4094|=BIT(led_blue);
								data_4094&=~BIT(led_green);	
								write4094(data_4094);
								touch_flag&=~BIT(TOUCH_cm6930_CONTINUE_F);
							}
						else
							{
									if(!(bdata2_flag&BIT(TURN_OFF_F)))
											{
												if(bdata3_flag&BIT(MENU_OPEN_F))
														{
															data_4094&=~BIT(led_blue);
															data_4094|=BIT(led_green);	
															write4094(data_4094);
														}
												else
														{
															touch_cm6930_disposal();
														}	
											}
							}	
						}
					}
					else
					{
						touch_cm6930_line=0;
						touch_cm6930_buffer_bak[0]=touch_cm6930_buffer_bak[1];
						touch_flag&=~BIT(TOUCH_cm6930_CONTINUE_F);
					}
				}
				karaok_insert_pullout_disposal();//卡拉OK插入,拔出处理,改
				/****************按影院自动搜索通道****************************/
				auto_search_channel_theatre();
				/**************************************************************/
				/*ad_gain_counter++;
				if(ad_gain_counter>100)ad_gain_counter=0;
		//		ad_gain_coutrol_disposal();//增益自动调节
				//dispose_qidian();
				static_counter_10ms++;
				if(static_counter_10ms>250)static_counter_10ms=0;
				if(static_counter_10ms<2)
				{static_state_counter=0;
				no_static_state_counter=0;}
				
				if(bdata3_flag&BIT(STATIC_STATE_F))//2007/3/29 修改
				{
					if(!(PINC&BIT(CHECK_SINGLE)))
						no_static_state_counter++;//无信号检测共用一个状态计数器,注意
					if(no_static_state_counter>30)
					{
						no_static_state_counter=0;
						static_state_counter=0;
						bdata3_flag&=~BIT(STATIC_STATE_F);
						
						if(bdata0_flag&BIT(MUTE_F))
							{display_state=2;}
						else 	//display_state=0;
						{
							disp_line=41;
//							write_data_display(0,13,allinput_select_disp[input_select]);//&long_avlight[13]
							display_state=1;
							
							//王明文添加
							//VFD_Variable = input_select;
							//Display_Proc(Source_DisMode);	
						}
						state_reg=0;
					}
				}
				else
				{
					if(PINC&BIT(CHECK_SINGLE))
					static_state_counter++;
					if(static_state_counter>200)
					{static_state_counter=0;
						no_static_state_counter=0;
						bdata3_flag|=BIT(STATIC_STATE_F);
					}
				}*/
					
				if(theatre_mode==2)
					bdata3_flag&=~BIT(STATIC_STATE_F);
				//static_state_disposal();//无信号静态显示
				//if((bdata3_flag&BIT(STATIC_STATE_F))&&(!(bdata0_flag&BIT(MUTE_F))))//待机时流动显示,暂屏蔽
				if(bdata3_flag&BIT(STATIC_STATE_F))
				{//bdata3_flag&=~BIT(STATIC_STATE_F);
					//static_state_counter=3000;//注意
					//static_counter_10ms=2800;//第二次进待机时间只有30S
					if(state_counter==0)
					{
//						write_data_display(0,13,blank);
						
						//王明文添加
						//CLEAR_VFD();
						
						state_reg=0x25;
						state_counter=10;//控制时间	,要调试	上次是1
						display_state=1;
						//暂换成另外一种待机
						switch(theatre_mode)
						{
							case 0:	disp_line=0;
				//			if((input_select==6)&&(ram[10*pingduan+7]>5)) //(bdata5_flag&BIT(TV2_SINGLE)))
				//			SendDataToDisp_Buffer(blank,avlight,allinput_select_disp[input_select],mode[ram[10*pingduan+7]+6]);//静态时
				//			else
				//			SendDataToDisp_Buffer(blank,avlight,allinput_select_disp[input_select],mode[ram[10*pingduan+7]]);//静态时
							
							//王明文添加
							if(!(bdata4_flag&BIT(AUTO_SEARCH_F)))
							{
								//if (!(PINC&BIT(CHECK_SINGLE)))
								if (Signal_Detect_OK == 1)
								{
									Display_Proc(Frequency_DisMode);
                                                                        state_counter=6;
								}
								else
								{								
									Display_Proc(Normal_DisMode);	
                                                                        state_counter=1;
								}
							}
							//Display_Proc(Frequency_DisMode);
							break;
							case 1:	disp_line=0;
					//		SendDataToDisp_Buffer(blank,avlight,allinput_select_disp[input_select],mode[mode_select_ht+5]);//静态时
							
							//王明文添加
							if(!(bdata4_flag&BIT(AUTO_SEARCH_F)))
							{
								//if (!(PINC&BIT(CHECK_SINGLE)))
								if (Signal_Detect_OK == 1)
								{
									Display_Proc(Frequency_DisMode);
                                                                        state_counter=6;
								}
								else
								{								
									Display_Proc(Normal_DisMode);	
                                                                        state_counter=1;
								}
							}
							//Display_Proc(Frequency_DisMode);
						
							break;
							case 2: //SendDataToDisp_Buffer(blank,avlight,mplayer,allinput_select_disp[inp

⌨️ 快捷键说明

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