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

📄 remote1.c

📁 单片机做遥控器代码
💻 C
📖 第 1 页 / 共 4 页
字号:
                             while( !display( nextpage,0 ) )
                             {
                                     readaddr = page_flag * param_size + disp_base_addr + 10*(12+curr_param_file_info.code_length) + 1;
                                     nextpage = FLASH_read_B( readaddr );
                                     clear( );
                                     if( nextpage==0 )
                                     {
                                             display( nextpage,1 );
                                             if(!page_kind)
                                             {
                                                     open_cursor();
                                                     set_cursor(0,3);
				                                     old_key_value = 0;
                                                     in_enable = 1;
                                             }
                                             break;
                                     }
                             }
                             roll_station = 0xff;
                      }
                      else if( page_kind == 0 )
                      {
                             clear( );
                             old_page_flag = page_flag;
                             if( curr_param_file_info.set_disp_num )
                             {
                                    display( curr_param_file_info.work_disp_num,0 );
                                    roll_station = 0xff;
                             }
                      }
                      break;

                      case 0x81://下翻屏
                      old_page_flag = page_flag;
                      readaddr = page_flag * param_size + disp_base_addr + 10*(12+curr_param_file_info.code_length) + 1;
                      nextpage = FLASH_read_B( readaddr );
                      clear( );
                      while( !display( nextpage,0 ) )
                      {
                             readaddr = page_flag * param_size + disp_base_addr + 10*(12+curr_param_file_info.code_length) + 1;
                             nextpage = FLASH_read_B( readaddr );
                             clear( );
                      }
                      roll_station = 0xff;
                      break;

                      case 0x82://上翻屏
                      old_page_flag = page_flag;
                      readaddr = page_flag * param_size + disp_base_addr + 10*(12+curr_param_file_info.code_length) + 2;
                      nextpage = FLASH_read_B( readaddr );
                      clear( );
                      while( !display( nextpage,0 ) )
                      {
                             readaddr = page_flag * param_size + disp_base_addr + 10*(12+curr_param_file_info.code_length) + 2;
                             nextpage = FLASH_read_B( readaddr );
                             clear( );
                      }
                      roll_station = 0xff;
                      break; 
                     
                      case 0xe1://选择滚动下
                      if(roll_station==0xff)//when the first for rolling
                      {
                             roll_station = 0;
                             for( ; ;roll_station++ )
                             {
                                    for(j=0;j<10;j++)
                                    {
                                           if( (param[roll_station][j]!=0)&&(param[roll_station][j]!=32) )
                                                  break;
                                    }
                                    if(j<10)
                                           break;
                             }
                             if(page_kind)
                                    display_hanzi_str(param[roll_station], roll_station, 0, 1);
                             else
                                    disp_string(param[roll_station], roll_station, 3, 1);
                      }
                      else
                      {
                             //when not the first roll key
                             if(page_kind)
                             {
                                    display_hanzi_str(param[roll_station], roll_station, 0, 0);
                                    //search for the valid item
                                    if( roll_station==9 )
                                           roll_station = 0;
                                    else
                                           roll_station++;
                                    for( ;roll_station<=9;roll_station++ )
                                    {
                                           for(j=0;j<10;j++)
                                           {
                                                  if( (param[roll_station][j]!=0)&&(param[roll_station][j]!=32) )
                                                         break;
                                           }
                                           if(j<10)
                                                  break;
                                    }
                                    if(roll_station==10)
                                    {
                                           roll_station = 0;
                                           for( ; ;roll_station++ )
                                           {
                                                  for(j=0;j<10;j++)
                                                  {
                                                         if( (param[roll_station][j]!=0)&&(param[roll_station][j]!=32) )
                                                                break;
                                                  }
                                                  if(j<10)
                                                         break;
                                           }
                                    }
                                    display_hanzi_str(param[roll_station], roll_station, 0, 1);
                             }
                             else
                             {
                                    disp_string(param[roll_station], roll_station, 3, 0); 
                                    //search for the valid item                        
                                    if( roll_station==9 )
                                           roll_station = 0;
                                    else
                                           roll_station++;
                                    for( ;roll_station<=9;roll_station++ )
                                    {
                                           for(j=0;j<10;j++)
                                           {
                                                  if( (param[roll_station][j]!=0)&&(param[roll_station][j]!=32) )
                                                         break;
                                           }
                                           if(j<10)
                                                  break;
                                    }
                                    if(roll_station==10)
                                    {
                                           roll_station = 0;
                                           for( ; ;roll_station++ )
                                           {
                                                  for(j=0;j<10;j++)
                                                  {
                                                         if( (param[roll_station][j]!=0)&&(param[roll_station][j]!=32) )
                                                                break;
                                                  }
                                                  if(j<10)
                                                         break;
                                           }
                                    }
                                    disp_string(param[roll_station], roll_station, 3, 1);
                             }
                      }
                      break;
 
                      case 0xe2://选择滚动上
                      if(roll_station==0xff)
                      {
                             roll_station = 9;
                             for( ; ;roll_station-- )
                             {
                                    for(j=0;j<10;j++)
                                    {
                                           if( (param[roll_station][j]!=0)&&(param[roll_station][j]!=32) )
                                                  break;
                                    }
                                    if(j<10)
                                           break;
                             }
                             if(page_kind)
                                    display_hanzi_str(param[roll_station], roll_station, 0, 1);
                             else
                                    disp_string(param[roll_station], roll_station, 3, 1);
                      }
                      else
                      {
                             
                             if(page_kind)
                             {
                                    display_hanzi_str(param[roll_station], roll_station, 0, 0);
                                    if( roll_station==0 )
                                           roll_station = 9;
                                    else
                                           roll_station--;
                                    for( ; ;roll_station-- )
                                    {
                                           for(j=0;j<10;j++)
                                           {
                                                  if( (param[roll_station][j]!=0)&&(param[roll_station][j]!=32) )
                                                         break;
                                           }
                                           if(j<10)
                                                  break;
                                           if(roll_station==0)
                                                  roll_station = 10;
                                    }
                                    display_hanzi_str(param[roll_station], roll_station, 0, 1);
                             }
                             else
                             {
                                    disp_string(param[roll_station], roll_station, 3, 0);
                                    if( roll_station==0 )
                                           roll_station = 9;
                                    else
                                           roll_station--;
                                    for( ; ;roll_station-- )
                                    {
                                           for(j=0;j<10;j++)
                                           {
                                                  if( (param[roll_station][j]!=0)&&(param[roll_station][j]!=32) )
                                                         break;
                                           }
                                           if(j<10)
                                                  break;
                                           if(roll_station==0)
                                                  roll_station = 10;
                                    }
                                    disp_string(param[roll_station], roll_station, 3, 1);
                             }
                      }
                      break; 

                      case 0xc8://确认键
                      if( roll_station<10 ) 
                      {
                             if(page_kind)
                                   display_hanzi_str(param[roll_station], roll_station, 0, 0);
                             else
                                   disp_string(param[roll_station], roll_station, 3, 0);
                             NumKey_handle( roll_station );
                             roll_station = 0xff;
                      }
                      break;
               
                      case 0xe5://输入模式
                      if(!page_kind)
                      {
                             TR0 = 0;
                             old_key_value = 0;
                             m = curr_chan/10;
                             old_page_flag = page_flag;
                             clear( );
                             display( m,1 );
                             open_cursor( );
                             m = curr_chan%10;
                             set_cursor( m,3 );
                             in_enable = 1;
                      }
                      break;

                      case 0xe9://设备选择键
                      old_page_flag = page_flag;
                      clear( );
                      roll_station = 0xff;
                      dev_select( );
                      break;
	          }
       }       
}
/**************************************************************************\
*
* 函数名   :void NumKey_handle( uint baddr )
*
* 功  能   :key handle
*
* 参  数   :baddr
*			
* 返回值   : none
* 
\**************************************************************************/
void NumKey_handle( uchar Num )
{
       uchar i;
       uchar IRcode;     
       uchar Nmode;
       uchar m;
       uint  readaddr;
       uint  funcodeaddr;
       uint  numcodeaddr;

       funcodeaddr = curr_device.param_addr + 7;//function key code address
       numcodeaddr = curr_device.param_addr + 7 + 10*curr_param_file_info.code_length;//number key code address
       readaddr = page_flag * param_size + disp_base_addr;
       readaddr = (12+curr_param_file_info.code_length)*Num + 10 + readaddr;      
	   fun_ctrlL = FLASH_read_B( readaddr++ );  //read function contrl infomation
	   fun_ctrlH = FLASH_read_B( readaddr++ );
       if( !page_kind )//when TV select channel display
       { 
              IRcode = FLASH_read_B( readaddr );
              curr_chan = IRcode;
			  if( IRcode/10 ) //when the channel over than 10
			  {
			          if( incept_state == 1 )
					  {
					           readaddr = funcodeaddr + 6 * curr_param_file_info.code_length;
						       code_handle( readaddr, curr_param_file_info.code_type );
                               incept_state = 2;
                               for(i=0;i<100;i++)
			                          dlms( );
					  }
			          readaddr = numcodeaddr + (IRcode/10)* curr_param_file_info.code_length;
			          code_handle( readaddr, curr_param_file_info.code_type );
                      for(i=0;i<100;i++)
			                   dlms( );
                      readaddr = numcodeaddr + (IRcode%10)* curr_param_file_info.code_length;
			          code_handle( readaddr, curr_param_file_info.code_type );					  
			  }
			  else
			  {
			          if( incept_state == 2 )
					  {
					           readaddr = funcodeaddr + 6 * curr_param_file_info.code_length;
						       code_handle( readaddr, curr_param_file_info.code_type );
                               incept_state = 1;

⌨️ 快捷键说明

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