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

📄 t10a2_main.c

📁 AVR单片机基础程序实例! 十个程序源代码。
💻 C
📖 第 1 页 / 共 5 页
字号:
						//if (Detect_Signal_Timer < 200)
						//{
						//	if(Detect_Signal_Timer%30==0)
						//	{
						//		if(!(bdata0_flag&BIT(RUN_F)))
								//input_select++;//注意,开了机选择输入不加
						//		{input_select_autojia();}
						//		if(input_select==7)input_select=0;
						//		input_select_disposal();/*inputselect send data*/
						//	}							
						//	Detect_Signal_Timer++;
						//}
						//else
						//{
					
								//if (Detect_Signal_Timer > 200)
								//{
									
									if(bdata0_flag&BIT(CHECK_SINGLE_ALLOW))
									{
										switch(input_select)//检测信号开机暂时只用7个,OK信号与最后一个通道同时检
										{
											//case 0:
											//		if(!(PING&BIT(SPDIF_DET)))single_counter++;
											//if((PINA&BIT(OK_INSERT_DET)))ok_single_counter++;
											//		break;
											case 2:
											case 3:
											case 5:
											case 6:
											if(!(PINC&BIT(CHECK_SINGLE)))
											{
												single_counter++;
											}
											break;
											case 0:
											case 1:
											case 4:
											if(!(PING&BIT(SPDIF_DET)))
											{
												single_counter++;//暂不用,外面没有下拉
											}
											break;
											case 7:
											case 8://不可能到8,9,应该
											case 9:
											//if(cd_input_f&BIT(USB_INSERT_F))single_counter=16;//马上开机
											break;
											case 10:
											case 11:
											case 12:
											//if(cd_input_f&BIT(CARD_INSERT_F))single_counter=16;
											break;
											default:
											break;
										}
										counter1_10ms++;
				
										if(counter1_10ms<70)
										{
											if(single_counter>50)
											{
												if(input_select<4)	//备份
												ht_input_select=input_select;
												else if(input_select<7)
												tv_input_select=input_select;
												else
												cd_input_select=input_select-7;
                                                                                                Signal_Detect_OK = 1;
												turn_on_init();//检测开机
											}	
                                                                                        else
                                                                                        {
                                                                                         Signal_Detect_OK = 0;
                                                                                        }
										}							
										else
										{
										
											counter1_10ms=0;
											single_counter=0;
											if(!(bdata0_flag&BIT(RUN_F)))
											//input_select++;//注意,开了机选择输入不加
											{input_select_autojia();}
											if(input_select==7)input_select=0;
											input_select_disposal();/*inputselect send data*/
										}
				
									}
									else
									{
										if(!(PINC&BIT(CHECK_SINGLE)))counter_1s_check++;
										//input_select_autojia();
										//input_select_disposal();/*这里要修改,暂屏蔽,切换通道前input_select要送*/
									}
							//	}
							//	else
							//	{
							//		Detect_Signal_Timer++;
							//	}


				//}
				
						counter_karaok_10ms++;
				if(bdata3_flag&BIT(OK1_INSERT_FLAG))
				{
					if(!(PINF&BIT(MICIN_1)))no_ok1single_counter++;//ok 拔出
					if((no_ok1single_counter>15)&&(counter_karaok_10ms<20))//新加ok检测,待修改
					{
						bdata3_flag&=~BIT(OK1_INSERT_FLAG);
						MIC_Signal_OK = 0;
						no_ok1single_counter=0;
						
						//王明文添加
						state_counter=6;
						Disp_Type = MIC_1;
						VFD_Variable = MIC_Pullout;
						Display_Proc(MIC_Connect_DisMode);
						Flg_MIC_Disp = 1;
					}
				}
				else	
				{
					if(PINF&BIT(MICIN_1))ok1_single_counter++;//KARA OK检测放到外面处理
					if((ok1_single_counter>15)&&(counter_karaok_10ms<20))//新加ok检测,待修改
					{
						bdata3_flag|=BIT(OK1_INSERT_FLAG);
//						bdata7_flag&=~BIT(decode_mute);
						ok1_single_counter=0;	//MIC1 INSERT
						
						//王明文添加
						state_counter=6;
						Disp_Type = MIC_1;
						VFD_Variable = MIC_Insert;
						Display_Proc(MIC_Connect_DisMode);
						Flg_MIC_Disp = 1;		
					}
				}
				if(bdata3_flag&BIT(OK1_INSERT_FLAG) && MIC_Signal_OK == 0)
				{
						MIC_Signal_OK = 1;
					//	input_select=0;
					input_select=input_select_bak;
					if(input_select<4)
					ht_input_select=input_select;
					else if(input_select<7)
					tv_input_select=input_select;
					//else if(input_select<10)
					//{if(!(cd_input_f&BIT(USB_INSERT_F)))input_select=0;}
					//else if(input_select<13)
					//{if(!(cd_input_f&BIT(CARD_INSERT_F)))input_select=0;}
					else    //asm("nop");
					{
						input_select=0;
						ht_input_select=0;
					}
						input_select_disposal();
			//			write_data_display(0,13,mic_insert_display);
						turn_on_init();
				}
			
			if(counter_karaok_10ms>=20)
			{
				counter_karaok_10ms=0;
				no_ok1single_counter=0;
				ok1_single_counter=0;
			}
		}
				

				
		//		if(bdata6_flag&BIT(TOUCH_6930_FLAG))//控制触摸亮灯时间
		//		{led_6930_100ms++;
		//			if(led_6930_100ms>2)
		//			{led_6930_100ms=0;
		//				bdata6_flag&=~BIT(TOUCH_6930_FLAG);
		//			}
		//		}
		//		else	led_6930_100ms=0;
			}
			if(time_flag&BIT(FLAG_10MS))//FLAG_10MS 处理
			{
				time_flag&=~BIT(FLAG_10MS);
				


				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
							{	
								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);
					}
				}
	
			
			
				if(touch_counter<250)
				{touch_counter++;}
				if(touch_counter>=5)
				{
					touch_counter1=0;
					touch_value_bak=0xff;
					led=0;
				}//按键松开;
			}
			
			if(bdata2_flag&BIT(EEPROM_SAVE_F))
			{
				bdata2_flag&=~BIT(EEPROM_SAVE_F);
				j=SREG;
				CLI();
				
				if (ram[0]>35)ram[0]=35;
				if (ram[0]<15)ram[0]=15;
				
				for(i=1;i<114;i++)
				{
					__EEPUT(i,ram[i-1]);
				}
				for(i=114;i<118;i++)
				{
					__EEPUT(i,ram_2[i-114]);
				}
				for(i=121;i<176;i++)
				{
					__EEPUT(i,ram_ht[i-121]);
				}
				for(i=176;i<189;i++)
				{
					__EEPUT(i,ram_cd[i-176]);
				}
				__EEPUT(189,kalaok_mode);
				__EEPUT(190,Speaker_Mode);
				__EEPUT(191,Cn_En_Mode);
				
				SEI();
				SREG=j;
				//write_data_display(0,13,&long_avlight[13]);//新加待机显示
				//display_state=3;//显示慢显
//				write_data_display(0,13,blank);//2007/3/26
				display_state=1;//由于取消慢显
				disp_reg_line=0;
				disp_line=41;

				move_line=0;
				bdata4_flag|=BIT(DISPLAY_SLOW_F);
			}

		//	touch_disposal();//按键处理
			/************解码板发送接收数据处理**************/
			if(bdata3_flag&BIT(TWI_RECEIVED_F))
			{
				bdata3_flag&=~BIT(TWI_RECEIVED_F);
				transfer_data_display[4]=transfer_data_display[2];
				transfer_data_display[5]=transfer_data_display[3];
				transfer_data_display[3]=transfer_data_display[1];
				transfer_data_display[2]=transfer_data_display[0];
				transfer_data_display[0]=receive_data[0];
				transfer_data_display[1]=receive_data[1];
				twi_receive_data_disposal();/*i2c接收数据*/
			}
		}
		/**********************************RUN_F=1 开机循环运行*************************/
		/*******************************************************************************/
		else
		{
			if(standby_led==0){standby_led=0x40;}//新加常亮待机亮
			/************解码板发送接收数据处理**************/
			if(bdata3_flag&BIT(TWI_RECEIVED_F))
			{bdata3_flag&=~BIT(TWI_RECEIVED_F);
				transfer_data_display[4]=transfer_data_display[2];
				transfer_data_display[5]=transfer_data_display[3];
				transfer_data_display[3]=transfer_data_display[1];
				transfer_data_display[2]=transfer_data_display[0];
				transfer_data_display[0]=receive_data[0];
				transfer_data_display[1]=receive_data[1];
				twi_receive_data_disposal();/*i2c接收数据*/
			}
			if(time_flag&BIT(FLAG_500MS))//FLAG_500MS
			{
				time_flag&=~BIT(FLAG_500MS);
				
				Temperature_Detect();
				
				if(auto_search_counter!=0)
				auto_search_counter--;
				else
				{
					if(bdata4_flag&BIT(AUTO_SEARCH_F))
					{
						bdata4_flag&=~BIT(AUTO_SEARCH_F);
						if(theatre_mode==0)
						{
							input_select=tv_input_select;//手动从上次TV通道开始切换
						///	if(input_select==4)
						///521	bdata3_flag|=BIT(DECODER_START);
							input_select_init();
						}
						else if(theatre_mode==1)
						{
							input_select=ht_input_select;//0
							///if((input_select==0)||(input_select==1))
							///521 bdata3_flag|=BIT(DECODER_START);//在切选择时启动
							input_select_init();
						}
						state_reg=0x32;
						state_counter=6;
						//if(input_select>7)
						//{write_data_display(0,13,allinput_select_disp[input_select]);}
//						write_data_display(0,13,allinput_select_disp[input_select]);

						
						//王明文添加
						VFD_Variable = input_select;
						Display_Proc(Source_DisMode);	
					}
				}
				if(bdata4_flag&BIT(RESET_FLAG))
				{
					counter_500ms_reset++;
					if(counter_500ms_reset>3)//新加,出厂设置恢复,待确?
					{
						counter_500ms_reset=0;
						bdata4_flag&=~BIT(RESET_FLAG);
						menu_address=0x33;
						state_reg=0x17;
						bdata3_flag|=BIT(MENU_OPEN_F);//新加,打开菜单,改
						osd_byte[0]=menu_address;
						osd_byte[1]=0;
						osd_tiaoshi_display();//osd_tiaoshi	附加显示
						remote_usbcard_on_disposal_1();
						state_counter=6;
					}
				}
				if(!(bdata2_flag&BIT(TURN_OFF_F)))
				{
					
					Temportect_disposal();//温度保护
					
					Shortportect_disposal();
					single_1s_counter++;
					if(single_1s_counter>1220)single_1s_counter=0;//先计1分钟
					if(!(PINC&BIT(CHECK_SINGLE)))
					counter_1s_check++;//有信号加一
					single_check_turnoff();//无信号定时关机, 与下面的重复所以屏蔽					
					if(bdata3_flag&BIT(OK1_INSERT_FLAG))   //有MIC插着时不关机
					{
						single_1s_counter=0;
						counter_1s_check=0;
					}
					if((cd_input_f!=0)&&(bdata3_flag&BIT(USB_CARD_PLAYER_F)))//有USB,CARD在播放时不让它关机
					{
						single_1s_counter=0;
						counter_1s_check=0;
					}
				}//短路保护	,静音时老出现
				counter_500ms_mute++;
				
				if(counter_500ms_mute>1)
				{
					counter_500ms_mute=0;
					if(bdata0_flag&BIT(FLAG_1HZ))
					bdata0_flag&=~BIT(FLAG_1HZ);
					else 	bdata0_flag|=BIT(FLAG_1HZ);
				}
				if(state_counter1>0)//状态定时
				state_counter1--;
				else
					{
						if(menu_address!=0)//菜单退出
						{
							bdata3_flag&=~BIT(MENU_OPEN_F);
							menu_address=0;
							osd_byte[0]=0;//菜单送数清零
							osd_byte[1]=0;
							remote_usbcard_on_disposal_1();
							state_counter=0;//因为上面又送了一次数
							if(theatre_mode==0)
								video_select=3;//新加视频切换
							else if(theatre_mode==1)
								video_select=1;
							else
								video_select=2;
							video_disposal();
						}
					}
				if(state_counter>0)//状态定时
				state_counter--;
				else
				{
					Flg_Invalid_OS = 0;

					if (Flg_MIC_Disp == 1)
					{
						Flg_MIC_Disp = 0;
						Disp_Type = MIC_1;
						state_counter=3;
						Display_Proc(MIC_Connect_DisMode);
						
						if (bdata3_flag&BIT(OK1_INSERT_FLAG))
						{							
							VFD_Variable = MIC_Insert;
						}
						else
						{
							VFD_Variable = MIC_Pullout;
						}
					}
					else
					{
						
						
						if(!(bdata3_flag&BIT(STATIC_STATE_F)))
						{
							//if(bdata0_flag&BIT(MUTE_F))
							//	display_state=2;
							//else	
							//{
								//Display_Proc(Frequency_DisMode);
							//}
							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;
								}
							}
	
							state_reg=0;						
							Disp_Register = 0;
						}
						bdata6_flag&=~BIT(TOUCH_6930_FLAG);
						bdata2_flag&=~BIT(SHAN_DONG_F);//闪动清0
		//				data_4094&=~BIT(led_blue);
		//				data_4094|=BIT(led_green);	
		//				write4094(data_4094);
						led=0;
		
					}				
				}
			}
			if(time_flag&BIT(FLAG_200MS))
			{
				time_flag&=~BIT(FLAG_200MS);
				if (touch_flag&BIT(autofit))
				{
					fshizhen();
				}
				sshizhen();
			}
			if(time_flag&BIT(FLAG_100MS))//FLAG_100MS 处理
			{

⌨️ 快捷键说明

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